Maschine teilweise gehackt Beispiel vom 29/09/2004



Was bedeutet "teilweise gehackt"? Dies bedeutet daß die Maschine nicht neu installiert werden muss, da der Hacker keinen root-Zugriff erlangen konnte. Man kann also (mit einem gewissen Restrisiko...) davon ausgehen daß, da der Hacker nicht als root verbunden war, er das System auch nicht verändern konnte.

Warum "vom 29/09/2004"?

Ganz einfach weil an diesem Tag gehackte Server einen Angriff mit 1 Gbit/s Bandbreite gegen einen Nutzer gerichtet haben, der sich sehr wahrscheinlich nicht darüber gefreut hat...


Wie kann man das erkennen?


# ls -aul /proc/*/exe 2>/dev/null | grep deleted
lrwxrwxrwx 1 nobody nobody 0 sep 29 11:24 /proc/5910/exe -> /tmp/upxCKRKOKLAPA4 (deleted)


oder

# find /proc -name exe -ls 2>/dev/null | grep deleted


Wir sehen daß ein Prozess, dessen original Binärdatei gelöscht wurde, im Kontext des Benutzers nobody, Gruppe nobody gestartet wurde. Wenn dieser Befehl keine Ausgabe gibt, dann wurden Sie nicht gehackt. Es kann jedoch sein daß wir bereits aufgeräumt haben und Sie deshalb bereits kontaktiert haben. Sie können einen grep der Apache-Logs machen um dies zu überprüfen.

# cat /proc/5910/cmdline
/usr/local/apache/bin/httpd


Der Trick des Hackers ist daß er seinen Prozess in "/usr/local/apache/bin/httpd" umbenannt hat um nicht aufzufallen.

Der Angriff an diesem Tag wurde von folgender IP-Adresse aus geführt::
# host 210.169.91.66
66.91.169.210.in-addr.arpa is an alias for 66.64.91.169.210.in-addr.arpa.
66.64.91.169.210.in-addr.arpa domain name pointer january.medical9.gr.jp.


Um das Skript zu finden in dem sich die Sicherheitslücke befindet, machen Sie ein grep nach dieser IP in Ihren Apache-Logs (Achtung, manche Maschinen sind seit längerer Zeit gehackt (log im .gz Format)).

Hinweis: Wenn die Maschine bereits gesäubert wurde kann Ihnen nur noch die Analyse der Logs Informationen zu dem Hack liefern.


Die Sicherheitslücke


Dieser Hack basiert auf einem Programmierfehler in PHP. Ein "include" nimmt als Parameter die zu includende Datei. include sucht dann die Datei und führt sie auf dem Server aus. Die Sicherheitslücke ist daß PHP es erlaubt, diese Datei von einer entfernten URL zu laden; der Programmierfehler ist, daß die Datei eigentlich eine Variable ist. Diese Variable wird bestimmt durch eine Information, die beim Laden der Seite übergeben wird. Der Hacker hat also ganz einfach diese Variable mit einem Link zu seinem Hacker-Skript auf einer anderen Webseite beschrieben.


Aufräumen:


Hinweise für das Aufräumen finden Sie hier: MaschineGehackt2