Spam sendende PHP Skripte identifizieren
Vor kurzem rief mich ein Bekannter völlig verzweifelt an: „Unser Server versendet SPAM und wir sind geblacklistet. Kannst du mal schauen“. Zu diesem Zeitpunkt wusste ich noch nicht dass mich das Problem noch einige Wochen verfolgen wird.
Am Anfang war es noch einfach
Ich konnte relativ schnell ausschließen dass der SPAM nicht über ein SMTP Konto verschickt wurde. Mir war klar, eigentlich kann es jetzt nur noch der Apache sein. Ein kurzer Blick in die DocRoots der Webseiten brachte es dann auch direkt zu Tage. Dort lagen etliche Dateien welche sich auf den ersten Blick als Spam-Schleuder entpuppten. Nebenbei wurden diese auch durch ClamAV entdeckt. Ein kleines Script informierte mich sobald eine neue Infektion aufgetreten ist.
Was tun wenn es nicht offensichtlich ist?
Nach dem löschen der Dateien war dann erstmal ruhe. Bis der Server auf einmal wieder auf der Blacklist gelandet ist. ClamAV spuckte nichts aus, auch in den DocRoots war nichts zu finden. Ich bin nun auf eine seit PHP 5.3 vorhandene Funktion gestoßen welche über PHP gesendete E-Mails in ein Logfile schreibt und im Mailheader einen vermerk unterbringt. Hierzu müssen die folgenden beiden Zeilen in der php.ini eingefügt werden.
mail.add_x_header = On
mail.log = /var/log/phpmail.log
Mit diesen Zeilen wird ein Header mit folgendem Muster geschrieben
X-PHP-Originating-Script: 33:ok.php
bzw. der Versand nach folgendem Muster in ein LogFile geschrieben:
mail() on [/home/domain.de/public_html/ ./rushhour2.doc/gmail.php:12]: To: joregeer@hotmail.com — Headers: From: GoogleDoc<smtp@me.docs.google.com>
Wie man sieht hat der Angreifer sich wirklich mühe gegeben die Files zu verstecken.
Genau was ich suchte. Vielen Dank!