Benutzer-Werkzeuge

Webseiten-Werkzeuge


cookbook:logs

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
cookbook:logs [2014/09/24 18:02]
shadowcat [access.log auswerten]
cookbook:logs [2014/09/24 00:00] (aktuell)
Zeile 36: Zeile 36:
  
  
 +==== User-Agents auswerten ====
  
 +Was für die Statuscodes geht, geht auch für die User-Agents (Browser):
  
-===== Links =====+    "​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
  
-http://technet.microsoft.com/en-us/library/ee692937.aspx+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  
 + 
 +==== Hacker-Angriffe entdecken ==== 
 + 
 +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 
 + 
 +==== Ausgabe als HTML ==== 
 + 
 +Im Gegensatz zu den meisten anderen Formaten ist die Ausgabe als HTML etwas komplizierter. LogParser benötigt hierzu ein Template, in das es seine ermittelten Daten einfüllen kann. Wer aber BC-Templates kennt, kann auch hiermit umgehen. :) 
 + 
 +Nehmen wir als Beispiel unsere Suche nach dem potentiell "​bösen"​ Querystring mit "​SELECT"​. Diesen möchten wir als HTML-Tabelle ausgeben und diese auch ein wenig '​hübsch machen'​. 
 + 
 +Also bauen wir uns zunächst mal unsere Vorlage: 
 + 
 +<sxh html> 
 +<​lpheader>​ 
 +<​html>​ 
 +    <​head>​ 
 +        <​title>​Potentiell böse Querystrings</​title>​ 
 +        <style type="​text/​css">​ 
 +        body{background-color:#​fff;​} 
 +        table{border-collapse:​collapse;​} 
 +        th,​td{border:​1px solid #000;} 
 +        th{background-color:#​ccc;​} 
 +        </​style>​ 
 +    </​head>​ 
 +    <​body>​ 
 +        <​table>​ 
 +            <​thead>​ 
 +                <​tr>​ 
 +                    <​th>​Anzahl</​th>​ 
 +                    <​th>​Remote Host</​th>​ 
 +                    <​th>​Query</​th>​ 
 +                </​tr>​ 
 +            </​thead>​ 
 +            <​tbody>​ 
 +</​lpheader>​ 
 +<​lpbody>​ 
 +            <​tr>​ 
 +                <​td>​%Anzahl%</​td>​ 
 +                <​td>​%remotehostname%</​td>​ 
 +                <​td>​%request%</​td>​ 
 +            </​tr>​ 
 +</​lpbody>​ 
 +<​lpfooter>​ 
 +        </​tbody>​ 
 +    </​table>​ 
 +</​body>​ 
 +</​html>​ 
 +</​lpfooter>​ 
 +</​sxh>​ 
 + 
 +Die Markups <​LPHEADER>,​ <​LPBODY>​ und <​LPFOOTER>​ dienen dem LogParser dazu, die einzelnen Bereiche des Templates zu erkennen. <​LPBODY>​ wird für jede Zeile der Ausgabe wiederholt, beinhaltet daher also auch die Platzhalter für die Werte. Die Platzhalter entsprechen hierbei den "​Spaltennamen"​. 
 + 
 +Speichern wir nun diese Datei als ''​querystrings.tpl''​. Der Aufruf für den LogParser muß nun um zwei Werte erweitert werden: 
 + 
 +  * Den Namen der HTML-Datei (sonst wird alles auf der Kommandozeile ausgegeben) 
 +  * Den Namen des Templates 
 + 
 +Außerdem ändern wir das Ausgabeformat in ''​-o:​TPL''​ 
 + 
 + 
 +"​c:​\Program Files (x86)\Log Parser 2.2\LogParser.exe"​ "​select count(*) as Anzahl, remotehostname,​ request FROM d:​\xampp\apache\logs\access.log TO output.html WHERE request LIKE '​%select%'​ GROUP BY remotehostname,​request ORDER BY Anzahl DESC" -i:NCSA -o:TPL -tpl:​querystrings.tpl 
 + 
 +Ergebnis ist nun eine Datei ''​output.html''​ mit einer Tabelle, die nach Remote Host und Querystring gruppiert und nach Anzahl sortiert die potentiellen Angriffe auflistet. 
 + 
 +Natürlich ist hier noch etwas Feintuning am Template und ggfs. auch an der Abfrage denkbar;) 
 +===== Links =====
  
 +http://​technet.microsoft.com/​en-us/​library/​ee692937.aspx\\  ​
 +http://​mlichtenberg.wordpress.com/​2011/​02/​03/​log-parser-rocks-more-than-50-examples/​
cookbook/logs.1411574546.txt.gz · Zuletzt geändert: 2014/09/24 00:00 (Externe Bearbeitung)