The saga continues… (siehe voriges Post)
Nachdem der Server nun gesäubert und unter genauer Beobachtung steht, konnten wir heute früh sehr zeitnah einen der Hacks verfolgen. Leider ist immer noch nicht klar, wie die Angreifer es schaffen, Dateien auf dem Server zu plazieren oder zu modifizieren, aber jetzt ist klarer, wie der Angriff (oder zumindest eine Variation) läuft.
Innerhalb von wenigen Sekunden wurden innerhalb der htroot zwei php Dateien in unterschiedlichen Verzeichnissen erzeugt, die harmlos-nichtssagende Namen haben und wahrscheinlich bei oberflächlicher Betrachtung nicht weiter auffallen würden, eine "common.php" gibts ja immer irgendwo ;-). Diese Dateien enthielten nichts weiter als mit eval(base64_decode(gzinflate(...)));
bzw preg_replace(...);
verschleierten Code.
Mehr oder weniger zeitgleich wurde die .htaccess in der htroot verändert - hier wurde eine rewrite Regel angelegt, die *alle* Zugriffe auf die Domain, sofern der Referer von google, yahoo oder msn kommt und die angeforderte Datei *nicht* common.php ist, auf eben diese common.php umleitet.
Der Code in der common.php scheint dann dafür zu sorgen, dass die eigentlich angeforderte Seite abgefragt und ausgewertet wird, und sämtliche Links in Viagra etc Links umgewandelt werden und die so veränderte Seite dann an den Betrachter ausgeliefert wird.
Interessant ist die zweite Datei mit dem tollen Namen "warning_buffering.php".
Würde man die Datei direkt aufrufen, erhält man eine mächtige Shell, die allerlei Krams wie Passworte und Datenbanken etc auslesen zu versucht. Hier mal ein *kleiner* Ausschnitt, was das Ding versucht, zu finden:
"List dir" => "ls -lha", "list file attributes on a Linux second extended file system" => "lsattr -va", "show opened ports" => "netstat -an | grep -i listen", "process status" => "ps aux", "Find" => "", "find all suid files" => "find / -type f -perm -04000 -ls", "find suid files in current dir" => "find . -type f -perm -04000 -ls", "find all sgid files" => "find / -type f -perm -02000 -ls", "find sgid files in current dir" => "find . -type f -perm -02000 -ls", "find config.inc.php files" => "find / -type f -name config.inc.php", "find config* files" => "find / -type f -name \"config*\"", "find config* files in current dir" => "find . -type f -name \"config*\"", "find all writable folders and files" => "find / -perm -2 -ls", "find all writable folders and files in current dir" => "find . -perm -2 -ls", "find all service.pwd files" => "find / -type f -name service.pwd", "find service.pwd files in current dir" => "find . -type f -name service.pwd", "find all .htpasswd files" => "find / -type f -name .htpasswd", "find .htpasswd files in current dir" => "find . -type f -name .htpasswd", "find all .bash_history files" => "find / -type f -name .bash_history", "find .bash_history files in current dir" => "find . -type f -name .bash_history", "find all .fetchmailrc files" => "find / -type f -name .fetchmailrc", "find .fetchmailrc files in current dir" => "find . -type f -name .fetchmailrc", "Locate" => "", "locate httpd.conf files" => "locate httpd.conf", "locate vhosts.conf files" => "locate vhosts.conf", "locate proftpd.conf files" => "locate proftpd.conf", "locate psybnc.conf files" => "locate psybnc.conf", "locate my.conf files" => "locate my.conf", "locate admin.php files" =>"locate admin.php", "locate cfg.php files" => "locate cfg.php", "locate conf.php files" => "locate conf.php", "locate config.dat files" => "locate config.dat", "locate config.php files" => "locate config.php", "locate config.inc files" => "locate config.inc", "locate config.inc.php" => "locate config.inc.php", "locate config.default.php files" => "locate config.default.php", "locate config* files " => "locate config", "locate .conf files"=>"locate '.conf'", "locate .pwd files" => "locate '.pwd'", "locate .sql files" => "locate '.sql'", "locate .htpasswd files" => "locate '.htpasswd'", "locate .bash_history files" => "locate '.bash_history'", "locate .mysql_history files" => "locate '.mysql_history'", "locate .fetchmailrc files" => "locate '.fetchmailrc'", "locate backup files" => "locate backup", "locate dump files" => "locate dump", "locate priv files" => "locate priv" |
Das ist aber noch nicht alles, da geht noch einiges mehr. Wer möchte, kann sich das Teil hier mal zu Gemüte führen. O_o
Interessant ist, dass im fraglichen Zeitraum keinerlei auffällige Einträge in den Logs stehen und auch keine versuchten Zugriffe auf die injizierten Dateien verzeichnet sind.
Es bleibt spannend.