Shellshock Analyse mit Elasticsearch, Logstash und Kibana
In diesem Blog Post will ich zeigen, wie einfach man Logdateien eines Webservers mit Elasticsearch, Logstash und Kibana (dem ELK Stack [1]) untersuchen kann. Dabei analysiere ich Angriffe, die die im September 2014 veröffentlichte Sicherheitslücke Shellshock [2] versuchen auszunutzen. Shellshock Angriffe machen sich eine Sicherheitslücke in der Bash Shell zu nutze. Über einen Webserver lässt sich die Lücke durch CGI-Skripte ausnutzen. Üblicherweise wird dabei der vom Client angegebene User-Agent manipuliert. Das Ergebnis möchte ich anhand der IP-Adressen geografisch sortieren und visualisieren.
Vorbereitung
Zuerst werden alle verfügbaren Logdateien vom Server geladen und zu einer großen Datei zusammengefügt. Der ELK-Stack ist bereits vorhanden. Mit der folgenden Konfigurationsdatei legen wir einen neuen Index an und lesen unsere Logdatei mit Logstash ein.
input {
file {
path => "access.log"
start_position => "beginning"
sincedb_path => ".sincedb_access_log"
}
}
filter {
urldecode {}
grok {
match => ["message", "%{COMBINEDAPACHELOG}"]
}
date {
match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
}
geoip {
source => "clientip"
}
}
output {
elasticsearch {
host => "localhost"
port => 9201
protocol => http
index => "myIndex"
template_name => "template"
template => "template.json"
template_overwrite => true
}
}
Der Aufruf von Logstash zum Einlesen der Logdatei geschieht mit dem Kommando:
./logstash agent --verbose -f elasticsearch.conf
Die Konfigurationsdatei wendet im grok-Filter das Muster COMBINEDAPACHELOG auf jede Zeile der Logdatei an. Danach wird das Format des Zeitstempels vereinheitlicht und am Ende wird die Client IP aus der Logdatei geokodiert. Damit kann in Kibana auf die geoip-Felder zugegriffen werden. Die Daten stehen in Kibana im Index myIndex zur Verfügung.
Angriffsversuche finden
Bei der abgebildeten Suche wird nach agent: \/bin gesucht, da viele Angriffe einen Befehl aus /bin versuchen zu starten.
Fazit
Mit dem ELK-Stack hat man ein mächtiges Tool zur Hand, mit dem sich sehr einfach die Logdateien eines Webservers analysieren lassen. Damit ist man in der Lage schnell und flexibel auf aktuelle Situationen zu reagieren.
In meinem Beispiel habe ich den ELK-Stack als Tool zur gelegentlichen Verwendung eingesetzt. Viel ratsamer ist natürlich die Einrichtung als Dienst im Intranet, welcher Loginformationen von allen zu überwachenden Systemen kontinuierlich sammelt.