Dies ist eine alte Version des Dokuments!
Ich zeige hier ein paar Möglichkeiten der Logdatei-Analyse mit Microsoft's LogParser 2.2 (kostenlos). Der LogParser ist hierbei in den Standardpfad installiert, XAMPP auf D:.
Hiermit ist das access.log
des Webservers gemeint. In den Beispielen benutze ich eine XAMPP-Installation als Quelle, man kann sich aber auch das access.log vom Webspace bei einem Provider runterladen und dieses auswerten. Natürlich immer vorausgesetzt, man hat Zugriff darauf.
Folgende „Spalten“ können abgefragt werden (auch über LogParser.exe -h -i:NCSA
zu ermitteln):
LogFilename (S) LogRow (I) RemoteHostName (S) RemoteLogName (S) UserName (S) DateTime (T) Request (S) StatusCode (I) BytesSent (I) Referer (S) User-Agent (S) Cookie (S)
(S) steht für String, (I) für Integer, (T) für Timestamp.
"c:\Program Files (x86)\Log Parser 2.2\LogParser.exe" "select statuscode, count(*) as Anzahl FROM d:\xampp\apache\logs\access.log GROUP BY statuscode ORDER BY Anzahl DESC" -i:NCSA
Ergebnis (beispielhaft):
StatusCode Anzahl ---------- ------ 200 36146 500 513 301 430 404 67 302 5 403 1 Statistics: ----------- Elements processed: 37162 Elements output: 6 Execution time: 0.05 seconds
Was für die Statuscodes geht, geht auch für die User-Agents (Browser):
"c:\Program Files (x86)\Log Parser 2.2\LogParser.exe" "select user-agent, count(*) as Anzahl FROM d:\xampp\apache\logs\access.log GROUP BY user-agent ORDER BY Anzahl DESC" -i:NCSA
Will man das nicht im Konsolenfenster, sondern z.B. als CSV, gibt man das mit dem Parameter -o an:
"c:\Program Files (x86)\Log Parser 2.2\LogParser.exe" "select user-agent, count(*) as Anzahl FROM d:\xampp\apache\logs\access.log GROUP BY user-agent ORDER BY Anzahl DESC" -i:NCSA -o:CSV > output.csv
Man kann den Namen der Datei auch innerhalb des SELECT-Befehls angeben:
"c:\Program Files (x86)\Log Parser 2.2\LogParser.exe" "select user-agent, count(*) as Anzahl INTO output.csv FROM d:\xampp\apache\logs\access.log GROUP BY user-agent ORDER BY Anzahl DESC" -i:NCSA -o:CSV
Hier gibt es furchtbar viele Varianten. Hacker versuchen oft, URLs zu mißbrauchen, die Parameter haben, z.B.
http://www.whatever.com/page/mypage.php?id=5
An diese werden dann diverse Zeichenketten angehängt, um beispielsweise ein Login-Fenster zu umgehen oder Informationen über die Datenbank zu erhalten. Ein potentiell suspekter String ist 'SELECT'.
"c:\Program Files (x86)\Log Parser 2.2\LogParser.exe" "select count(*) as Anzahl, remotehostname, user-agent FROM d:\xampp\apache\logs\access.log WHERE request LIKE '%select%' GROUP BY user-agent, remotehostname ORDER BY Anzahl DESC" -i:NCSA
Anzahl RemoteHostName User-Agent ------ -------------- ---------------------------------------------- 600 127.0.0.1 python-requests/2.0.0 CPython/2.7.5 Windows/7 14 127.0.0.1 - 1 127.0.0.1 Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)
Auch ein leerer User-Agent könnte (muß aber nicht) ein Hinweis sein.
"c:\Program Files (x86)\Log Parser 2.2\LogParser.exe" "select statuscode,remotehostname FROM d:\xampp\apache\logs\access.log WHERE user-agent is null order by statuscode asc" -i:NCSA -o:datagrid