vielen Dank für Ihre E-Mail, gerne helfe ich Ihnen weiter.
Häufig ist grundlegender Mechanismus eines Hackingangriffs auf einen Server die Nutzung einer sogenannten PHP-Shell. Eine PHP-Shell ermöglicht den Zugriff auf den Server, um zum Beispiel Daten auf den Server zu laden oder andere Administrationsarbeiten vorzunehmen.
Ursprünglich wurden PHP Shells entwickelt, um Administrationsarbeiten auf dem Server zu vereinfachen. Die PHP-Shell ist vergleichbar mit einem SSH-Zugang, mit dem man sich auf den Server verbinden kann, oder der Windows Eingabeaufforderung, mit der es auch möglich ist, Daten zu verwalten. Leider werden diese PHP-Shells oft von Hackern genutzt, um sich Zugriff auf dem Server zu verschaffen und Daten zu manipulieren, oder die Ordnerhierarchie zu verändern. PHP-Shells können beispielsweise aufgerufen werden, wenn einem unsicheren Skript auf dem Server eine URL als Parameter übergeben wird, die das unsichere Skript dann lädt und innerhalb des eigenen Codes ausführt, da somit das Nachladen von Quellcode auf externen Servern möglich ist. Ein solcher Aufruf könnte beispielsweise so aussehen:
http://www.ihre-domain.tld/index.php...tld/skript.txt
Wir stellen Ihnen jedoch auch Möglichkeiten zur Verfügung, um Ihre Skripte abzusichern. Um den Zugriff auf den Webspace und den Missbrauch Ihrer Skripte um einen hohen Faktor zu erschweren empfehlen wir Ihnen, die Variablen "register_globals" und "allow_url_fopen" in Ihren PHP-Einstellungen auf "off" zu setzen. Sie können dies über den php.ini-Editor in ihrem dF-Kundenmenü ändern.
Ein nützliches Werkzeug zur Analyse von Angriffen sind die in Ihrem Verzeichnis ./logs/ liegenden Logfiles des Webservers. Hier soll am Beispiel eines sehr einfachen Seitenaufrufes erläutert werden, welche Informationen diese Dateien enthalten. Nachfolgend sind zwei Logfile-Einträge aufgeführt, die erscheinen, wenn folgender beispielhafter Seitenaufruf gemacht wird:
http://ihre.domain.tld/test.html
Die Datei test.html sieht folgendermaßen aus:
<html>
<img src="./test.gif">
</html>
ihre-domain.tld 127.0.0.1 - - [26/Aug/2008:10:07:24 +0200] "GET /test.html HTTP/1.1" 200 40 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1"
ihre-domain.tld 127.0.0.1 - - [26/Aug/2008:10:07:24 +0200] "GET /test.gif HTTP/1.1" 404 1502 "http://ihre-domain.tld/test.html"
"Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.1)
Gecko/2008070208 Firefox/3.0.1"
Das erste Feld "ihre-domain.tld" beinhaltet die aufgerufene Domain. Im darauffolgenden Feld steht die IP-Adresse des Rechners, das diesen HTTP-Request ("Anfrage") an den Server gestellt hat, in diesem Fall ist dies 127.0.0.1.
Darauf folgt ein Zeitstempel des Aufrufes mit Angabe der Abweichung von der Koordinierten Weltzeit (UTC). In diesem Fall wurde der Aufruf am 26.
August 2008 um 10:07:24 mitteleuropäischer Sommerzeit ausgeführt. Die hier angegebene Zeit ist immer die Zeit, die auf dem Server eingestellt ist.
Anschließend folgt das wichtigste Feld, dieses enthält nämlich die eigentliche Anfrage an den Webserver. In der ersten Zeile wurde die Datei "test.html" aufgerufen, in der Zweiten die eingebundene Bilddatei "test.gif".
Das darauffolgende Feld enthält den HTTP-Status-Code der Anfrage. Der Wert "200" in der ersten Zeile sagt aus, dass der Server die Anfrage fehlerfrei bearbeiten konnte und die Datei test.html an den anfragenden Rechner übermittelt. Die "404" in der zweiten Zeile besagt, dass die Datei "test.gif" nicht auf dem Server gefunden und die Anfrage daher mit einem Fehler abgewiesen wurde. Eine Übersicht über weitere HTTP-Status-Codes finden Sie unter
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html.
Das folgende Feld enthält die Menge der an den Client übermittelten Daten in Bytes.
Das vorletzte Feld beinhaltet den Referer, das heißt die Seite von der aus der Request initiiert wurde. Da der zweite Request aufgrund der Einbindung der Datei "test.gif" in die "test.html" getätigt wurde, enthält der zweite Eintrag "http://ihre-domain.tld/test.html". Das letzte Feld schließlich enthält den User Agent. Dies ist das Programm, mit welchem der Aufruf getätigt wurde und zusätzlich weitere Informationen zu dem aufrufenden System. In diesem Fall handelt es sich um den Firefox in der Version 3.0.1 auf einem Computer mit Windows XP SP2.
Zur Auswertung eines Hacking-Angriffes können Sie zunächst die Logdatei nach verdächtigen Requests durchsuchen. Häufig enthalten solche Requests den Aufruf einer PHP-Datei mit einer URL als zusätzlichen Parameter, z.B. "/index.php?url=http://andere.tld/skript.txt".
Nicht selten sind verdächtige Requests auch daran zu erkennen, dass das User-Agent-Feld "libwww" enthält. Weiterhin ist darauf zu achten, dass die Anfrage auch mit dem Status 200 ausgeführt wurde. Häufig werden von Hackern derartige Requests "auf gut Glück" auf viele Seiten ausgeführt, um evtl. ein paar wenige zu finden, die Skripte mit Sicherheitslücken enthalten. Besonders wenn Anfragen mit dem Status 404 beendet wurden, handelt es sich nicht um einen erfolgreichen Hacking-Angriff.
Zusätzlich werden häufig auch POST-Requests für Hackingangriffe benutzt.
Hierbei werden Daten von dem Client an den Server übermittelt (z.B. in
Formularen) und somit evtl. schadhafte Informationen vom Server verarbeitet. Da hier jedoch die übermittelten Daten nicht in der Logdatei erscheinen, ist nicht direkt nachprüfbar, ob ein Request verdächtig ist. Hier lassen sich jedoch auch Hinweise darauf finden, welche Skripte POST-Daten verarbeiten, die dann gezielt überprüft werden können.
Anhand dieser Informationen lässt sich ggf. herausfinden, welches Ihrer Skripte verdächtige Aufrufe zulässt und evtl. auf Sicherheitslücken geprüft werden sollte.
Bitte zögern Sie nicht, sich bei Rückfragen oder Problemen jederzeit gerne erneut an uns zu wenden. Denn wir sind immer für Sie da.
Mit freundlichen Grüßen
Lesezeichen