Ubuntu Rechner/VNC gehacked

Hallo die Herren.

Ich habe bei meinen Eltern einen Server stehen (Ubuntu 10.04), der mir einige Dienste bereitstellt wenn ich unterwegs bin.

Folgendes Szenario:

Habe mich am 30. Mai abends per openvpn (zertifikatbasiert) zum Server verbunden und bin mit TightVNC dann auf den Rechner drauf.

Dabei habe ich ein offenes Terminal bemerkt.
Jmd hat versucht einen IRC Client zu installieren.
Habe erstmal alles runtergefahren und bin jetzt vor Ort.

Die Terminal history zeigt, der Angreifer hat per wget mehrere gepackte archive runtergeladen und per skript Konfigurationen für mehrere IRC Bots erstellt. Die Dateien hat er dankenswerterweise auf dem Rechner belassen :D (habe mir die skripte angeschaut)

Die Ausgabe im Terminal (habe leider den Rechner aus Panik zu shcnell runergefahren) besagte dass er nicht genügend Rechte habe für seine letzten Aktionen.

Jetzt bin ich dabei herauszufinden, wie der Angreifer auf den Rechner gekommen ist.

Da ein Terminal offen war, deutet dies auf VNC hin. (Der Vino VNC-Server ist nur aus dem LAN erreichbar, leider kein Passwort das ermöglichte den Zugang :()
Die Meldungen zu den Berechtigungen deuten darauf hin dass er keine Rootrechte hatte.

Im Netz ist noch eine Dreambox, deren Webinterface PW geschützt ist und vom Netz erreichbar ist
Auf dem Rechner läuft ein Apache,ssh server, openvpn server, vino vnc server und svn server.

Router ist ein WRT54gl mit tomato.

die Dienste sind am router per Port forwarding weitergeleitet (BIS AUF DEN VNC SERVER).

Habe bereits einige Logs kontrolliert.
Die Logs zeigen ab 12 Uhr 30. Mai einen minütlich ablaufenden Cron job, der die Childprozesse des irc clients killt.
(dies lässt sich auch anhand der skripte auf dem Rechner nachvollziehen)

Router:
Die Logs zeigen keinen zusätzlichen Rechner ausser die Dreambox im LAN (sowohl eigene Rechner als auch Fremdrechner)

ssh:
Niemand hat sich zu dem Zeitpunkt eingeloggt.
(Meldungen zu mangelnden Berechtigung deuten auch darauf hin)

openvpn:
Da Debian ja Probleme mit der Zufallszahlenerzeugung hatte, dachte ich hier hat sich jmd eingewählt.
Hier hat sich aber auch niemand eingewählt.

vino-vnc-server:
Der Server loggt leider nicht :(
Bin aber sehr sicher dass das der Übeltäter ist.


Wie ist er also in das LAN gekommen?
Wo kann ich noch nachschauen?
Wie kann ich sichergehen, dass da nicht noch etwas läuft?
 
Ich würde als Infektionsherd eher den Apache in den Verdacht nehmen. Welche Webapps laufen da drauf? Zeigen die access.log's irgendwelche Auffälligkeiten für den Zeitpunkt des Angriffs? Der sollte sich ja relativ genau durch das Erstellungsdatum der nachgeladenen Dateien ermitteln lassen. Ausserdem solltest du mal dein System mit rkhunter prüfen ob ggf. weitere Programme im System verändert wurden. Und auch ein genauer Blick in's Temp-Verzeichnis des Webservers und vom evtl. installierten PHP sollte riskiert werden, da dort häufig die Bots und Rootkits landen, die den Rest der Arbeit übernehmen.
 
Also der Apache läuft nur wegen svn.
Sonst ist nichts zusätzlich installiert.
PHP ist nicht installiert, jedenfalls nicht zusätzlich.

Deine restlichen Tips werde ich jetzt mal beherzigen.
 
Wenn der Apache für SVN läuft, hat er ja vermutlich ein WebDAV-Modul aktiv. Wenn ich mich recht entsinne gab es vor einiger Zeit eine Sicherheitslücke im WebDAV von Apache2.
 
Webdav ist aktiv.
Die Skripts die ausgeführt wurden, fragen auch als allererstes die ip des systems mittels regulären ausdrücken ab und gehen auch von mehreren ips aus. So wurde allerdings nur die lokale ip ermittelt.
Das deutet ja daraufhin, dass der Angreifer sich auf einem rootserver waehnte.

Hier ist zum einen die access.log

Code:
82.145.32.50 - - [30/May/2011:02:48:58 +0200] "GET /admin/phpmyadmin/scripts/setup.php HTTP/1.1" 404 479 "-" "Mozilla/4.0 (compatible; MSIE $
82.145.32.50 - - [30/May/2011:02:48:58 +0200] "GET /admin/pma/scripts/setup.php HTTP/1.1" 404 477 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Wi$
82.145.32.50 - - [30/May/2011:02:48:58 +0200] "GET /admin/scripts/setup.php HTTP/1.1" 404 474 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Window$
82.145.32.50 - - [30/May/2011:02:48:59 +0200] "GET /db/scripts/setup.php HTTP/1.1" 404 471 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 9$
82.145.32.50 - - [30/May/2011:02:48:59 +0200] "GET /dbadmin/scripts/setup.php HTTP/1.1" 404 476 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Wind$
82.145.32.50 - - [30/May/2011:02:48:59 +0200] "GET /myadmin/scripts/setup.php HTTP/1.1" 404 476 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Wind$
82.145.32.50 - - [30/May/2011:02:49:00 +0200] "GET /mysql/scripts/setup.php HTTP/1.1" 404 475 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Window$
82.145.32.50 - - [30/May/2011:02:49:00 +0200] "GET /mysqladmin/scripts/setup.php HTTP/1.1" 404 479 "-" "Mozilla/4.0 (compatible; MSIE 6.0; W$
82.145.32.50 - - [30/May/2011:02:49:00 +0200] "GET /phpMyAdmin/scripts/setup.php HTTP/1.1" 404 478 "-" "Mozilla/4.0 (compatible; MSIE 6.0; W$
82.145.32.50 - - [30/May/2011:02:49:00 +0200] "GET /phpadmin/scripts/setup.php HTTP/1.1" 404 476 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Win$
82.145.32.50 - - [30/May/2011:02:49:01 +0200] "GET /phpmyadmin/scripts/setup.php HTTP/1.1" 404 478 "-" "Mozilla/4.0 (compatible; MSIE 6.0; W$
82.145.32.50 - - [30/May/2011:02:49:01 +0200] "GET /pma/scripts/setup.php HTTP/1.1" 404 473 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows $
82.145.32.50 - - [30/May/2011:02:49:01 +0200] "GET /scripts/setup.php HTTP/1.1" 404 470 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)"
82.145.32.50 - - [30/May/2011:02:49:01 +0200] "GET /sqlweb/scripts/setup.php HTTP/1.1" 404 475 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windo$
82.145.32.50 - - [30/May/2011:02:49:02 +0200] "GET /web/phpMyAdmin/scripts/setup.php HTTP/1.1" 404 480 "-" "Mozilla/4.0 (compatible; MSIE 6.$
82.145.32.50 - - [30/May/2011:02:49:02 +0200] "GET /web/phpmyadmin/scripts/setup.php HTTP/1.1" 404 480 "-" "Mozilla/4.0 (compatible; MSIE 6.$
82.145.32.50 - - [30/May/2011:02:49:02 +0200] "GET /web/scripts/setup.php HTTP/1.1" 404 473 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows $
82.145.32.50 - - [30/May/2011:02:49:02 +0200] "GET /webadmin/scripts/setup.php HTTP/1.1" 404 477 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Win$
82.145.32.50 - - [30/May/2011:02:49:02 +0200] "GET /webdb/scripts/setup.php HTTP/1.1" 404 474 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Window$
82.145.32.50 - - [30/May/2011:02:49:03 +0200] "GET /websql/scripts/setup.php HTTP/1.1" 404 475 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windo$

und die error.log

Code:
[Sun May 29 06:38:04 2011] [notice] Apache/2.2.14 (Ubuntu) DAV/2 SVN/1.6.6 configured -- resuming normal operations
[Mon May 30 02:48:58 2011] [error] [client 82.145.32.50] File does not exist: /var/www/admin
[Mon May 30 02:48:58 2011] [error] [client 82.145.32.50] File does not exist: /var/www/admin
[Mon May 30 02:48:58 2011] [error] [client 82.145.32.50] File does not exist: /var/www/admin
[Mon May 30 02:48:59 2011] [error] [client 82.145.32.50] File does not exist: /var/www/db
[Mon May 30 02:48:59 2011] [error] [client 82.145.32.50] File does not exist: /var/www/dbadmin
[Mon May 30 02:48:59 2011] [error] [client 82.145.32.50] File does not exist: /var/www/myadmin
[Mon May 30 02:49:00 2011] [error] [client 82.145.32.50] File does not exist: /var/www/mysql
[Mon May 30 02:49:00 2011] [error] [client 82.145.32.50] File does not exist: /var/www/mysqladmin
[Mon May 30 02:49:00 2011] [error] [client 82.145.32.50] File does not exist: /var/www/phpMyAdmin
[Mon May 30 02:49:00 2011] [error] [client 82.145.32.50] File does not exist: /var/www/phpadmin
[Mon May 30 02:49:01 2011] [error] [client 82.145.32.50] File does not exist: /var/www/phpmyadmin
[Mon May 30 02:49:01 2011] [error] [client 82.145.32.50] File does not exist: /var/www/pma
[Mon May 30 02:49:01 2011] [error] [client 82.145.32.50] File does not exist: /var/www/scripts
[Mon May 30 02:49:01 2011] [error] [client 82.145.32.50] File does not exist: /var/www/sqlweb
[Mon May 30 02:49:02 2011] [error] [client 82.145.32.50] File does not exist: /var/www/web
[Mon May 30 02:49:02 2011] [error] [client 82.145.32.50] File does not exist: /var/www/web
[Mon May 30 02:49:02 2011] [error] [client 82.145.32.50] File does not exist: /var/www/web
[Mon May 30 02:49:02 2011] [error] [client 82.145.32.50] File does not exist: /var/www/webadmin
[Mon May 30 02:49:02 2011] [error] [client 82.145.32.50] File does not exist: /var/www/webdb
[Mon May 30 02:49:03 2011] [error] [client 82.145.32.50] File does not exist: /var/www/websql
[Mon May 30 22:28:48 2011] [notice] caught SIGTERM, shutting down
[Wed Jun 01 22:35:51 2011] [notice] Apache/2.2.14 (Ubuntu) DAV/2 SVN/1.6.6 configured -- resuming normal operations
[Thu Jun 02 02:06:35 2011] [notice] caught SIGTERM, shutting down
[Thu Jun 02 15:07:57 2011] [notice] Apache/2.2.14 (Ubuntu) DAV/2 SVN/1.6.6 configured -- resuming normal operations
[Thu Jun 02 19:15:58 2011] [notice] caught SIGTERM, shutting down
[Thu Jun 02 19:17:18 2011] [notice] Apache/2.2.14 (Ubuntu) DAV/2 SVN/1.6.6 configured -- resuming normal operations

Es hat also einer versucht drauf zu zu greifen.
Der cronjob der hinzugefuegt wurde beginnt allerdings um 12 Uhr am 30. Mai also passt dsa zeitlich nicht ganz.

Kanns sein, dass die Logs unterschiedliche Zeiten verwenden und das tatsächlich der Angreifer ist?

Die IP,die da zugreift ist eine Adresse in Cornwall UK (wahrscheinlich auch ne entführte Maschine).
Die Skripte, die da ausgeführt wurden sind allerdings auf rumänisch kommentiert.
Wenn man prägnante Sätze aus den Kommentaren sucht dann landet man auf dem kippo ssh honeypot (?)

Irgendwie scheint dass alles zusammen zu hängen.
rkhunter hat nichts ergeben.
Werde es wenn ich Zeit habe mal von einer Live CD ausführen.
 
Die Scans nach phpmyadmin sind typisch für Botnetze, die neue Ziele/Bothosts suchen. Die findet man auf jedem Webserver zuhauf in den Logs, da phpmyadmin in diversen Versionen Lücken enthielt um Remote Code Executions oder File Uploads umzusetzen. Solange aber kein PHPMyAdmin läuft, ist es eher unwahrscheinlich, dass das mit dem Angriff zusammenhängt.
 
Ganz nebenbei würde ich mal auf ein anderes Betriebssystem umsteigen.

Man muss heutzutage nicht mehr gehackt werden - ausser man will das.

OT/
 
Nimm dir ein BSD wie FreeBSD oder OpenBSD oder schau dir mal OpenIndiana (Solaris) an. Diese Systeme bieten per Default schon eine wesentlich bessere Sicherheit als Linux, da z.B. Dinge wie RBAC und MAC dort per Default zur Verfügung stehen, wodurch sie für Server wesentlich besser geeignet sind.
 
[...] Dinge wie RBAC und MAC dort per Default zur Verfügung stehen, wodurch sie für Server wesentlich besser geeignet sind.
Hat Windows auch. Ich würde eher darauf achten, dass von System genutzte Programme und Bibliotheken Anti-Exploittechniken wie DEP, ASLR, Stackcookies, SEH... per Default nutzen (OS X hat sowas zB nicht, bzw. sehr schlecht implementiert - daher ist es auch so leicht anzugreifen ;)). Für Windows gibt es außerdem noch das Enhanced Mitigation Experience Toolkit mit dem man andere Programme dazu zwingen kann ebenfalls diese Techniken zu nutzen.
 
@xrayn: Hier geht es aber um ein System, das als Server genutzt werden soll und ich denke kaum, dass der TE bereit ist für einen privaten Server die Lizenzgebühren für einen Win-Server zu investieren. Die Desktop-Varianten sind aber sicherheitstechnisch nicht auf Serverbetrieb ausgelegt. Entsprechend dürfte er mit einem freien Unix besser fahren.
 
Bin genau so angegriffen worden

Habe gerade in meinen logs auch einen Angriff von 82.145.32.50 gefunden.
Und den gleichen dann später von einer anderen IP, 85.25.137.69.
Sind aber beide in meiner "Defence" hängengebllieben.
Und zwar habe ich "blockhosts" installiert, mit einer Regel zur Erkennung vom solchen Meldungen wie:
Jun 7 18:00:31 myserver httpd2-prefork[3692]: [error] [client 85.25.137.69] File does not exist:

Muß aber natürlich mehrfach passieren. Dann wird die IP über iptables geblockt.

Sucht mal nach "blockhosts", ist ganz praktisch als eine der "Verteidigungslinien", denn es blockt auch geloggte login-Fehler von ssh etc.
 
Solche Tools gibt es zuhauf. Weitaus etablierter als blockhosts ist fail2ban, das im Gegensatz zu blockhosts nicht nur die hosts.deny-Datei verwendet, sondern entsprechende IPTables-Regeln aufbaut, da nicht alle Dienste auf die hosts.deny/hosts.allow-Dateien achten.

Edit: Ich sehe gerade, dass blockhosts mittlerweile auch mit iptables und route umgehen kann. Gut zu wissen. Dann ist das tatsächlich mal wieder einen Blick wert. :)
 
"Mittlerweile" ist gut :)

Kann mich gar nicht erinnern, daß blockhosts das nicht kann. Aber egal.
Wichtig is halt, daß beides nützliche tools sind, welche IPTables effektiv verwenden. Außerdem gibt es in IPTables so nützliche features wie conn-limit (Begrenzung der Anzahl Verbindungen von einer IP) etc., sodaß ich mich wirklich sehr wundern muß, daß es hier Leute gibt, die den Sinn von IPT bezweifeln.
Das erinnert mich sehr daran, daß ein kommerzielles W2k-System von mir, installiert zu Steuerungszwecken in einem Stahlwek, eines der sehr wenigen Systeme im Werksnetz war, welches NICHT durch einen bestimmten Wurm/Virus befallen wurde. Weil eine firewall installiert war.
In deren Logs konnte ich später das "Anklopfen" des Wurms demonstrieren.
 
Was soll das ?

Ich habe nicht behauptet, IPT (oder eine andere Firewall) sei ein Allheilmittel. Allerdings zwei praktische Beispiele aus eigener Erfahrung gegeben, in welcher IPT bzw. eine Win-Firewall nachweislich größeres Unheil verhindert haben.
Und auf meinen LINUX root-servern habe ich demgegenüber bisher noch kein Self-DOS erlebt.

Im Auto benutzt man auch Sicherheitsgurte. Obwohl es durch diese durchaus Fälle von Strangulierungen gegeben haben soll.
 
Es trägt zwar zur eigentlichen Problemlösung nicht bei aber die IP gehört nicht zu einer entführten maschiene sondern zu einem offenen SOCKS v5 Proxy.

Das deutet darauf hin, das der Angreifer von seiner lokalen Maschine aus gearbeitet hat oder einen seiner Schläfer zusätzlich schützen wollte.

Wie gesagt löst das nicht das Problem aber ich dachte mir es ist vilt. nice to know. Ich nehme regelmäßig solche open proxys in meine IP-Blacklists auf, da sie von ScriptKiddies gern genutzt wwerden um ihre "hammer" Tools zu testen ;)

LG

WhiTeY
 
Zurück
Oben