Ausschnitt aus einer PHP-Malware

Ein typischer Block Schadcode in PHP

Es gibt Tage, da möchte man als Blogbetreiber am liebsten alles hinwerfen und seinen Internetzugang sofort kündigen. Auslöser für solche Frust-Erlebnisse ist meist eine mehr oder weniger ausgefeilte Infektion des Blogs mit Malware – im besten Fall wird nur Google ein Haufen Spam-Links untergejubelt, im schlimmsten Fall aber werden Blog-Besucher erfolgreich mit extrem aggressiven Trojanern infiziert. Da dies auch haftungsrechtliche Konsequenzen haben kann, ist jeder Blogbetreiber gut damit beraten, möglichst regelmäßig sein Blog auf Unregelmäßigkeiten zu überprüfen – im Idealfall täglich.

Ein wirklich nützliches Werkzeug für diese Überprüfung ist der Malware-Scanner von sucuri.net mit dem sich schnell feststellen lässt, ob Besucher oder die Suchmaschinen selbst dubiose Inhalte vorgesetzt bekommen. Schlägt der Malware-Scanner Alarm, sollte das Blog umgehend untersucht und gesäubert werden. Wer sich diese Arbeiten nicht selbst zutraut, kann einen erfahrenen Experten zu Rate ziehen – das spart Zeit und Nerven. Die generelle Vorgehensweise ist dabei praktisch immer gleich:

  1. Blog sicherheitshalber vorübergehend sperren. Je nach Infektion kann die Nutzung eines Plugins wie WP Maintenance Mode ausreichend sein, besser ist es jedoch, das Blog mittels einer .htaccess-Datei komplett zu sperren. Dazu muss eigentlich nur dieser kurze Absatz in der Datei eingetragen werden:

    deny from all

    Vorher sollte die ggf. existierende .htaccess-Datei umbenannt werden, um deren Inhalt später analysieren zu können – auch über diese Datei kann Schaden angerichtet werden, doch dazu in einem späteren Artikel mehr.

  2. Ändern aller Passwörter: WordPress-Nutzer, Datenbank, FTP-Account, E-Mail, etc. – Im Zweifelsfalle muss davon ausgegangen werden, dass der Angreifer diese Passwörter abgreifen konnte.
  3. Zur genaueren Untersuchung alle Dateien vom Webspace in ein leeres Verzeichnis herunterladen. Falls vom Hoster Logdateien mit Web- und FTP-Zugriffen bereitgestellt werden, können diese weitere Hinweise zum Vorgehen des Angreifers liefern – sie sollten also ebenfalls lokal gesichert werden.
  4. Ebenso empfiehlt sich – vorsichtshalber – ein Download der WordPress-Datenbank, auch Dump genannt. In der Regel ist die Datenbank über ein Werkzeug namens PHPMyAdmin zugänglich, das die entsprechende Export-Funktion bietet. Als Format sollte dabei „SQL“ gewählt werden.
  5. Nun geht es ans Eingemachte: Es ergibt wenig Sinn, einfach nur die Infektion zu beseitigen ohne den Weg des Angreifers zu kennen. Das Blog wird sonst nach kurzer Zeit erneut infiziert sein. Wichtige Fragen in diesem Zusammenhang sind:
    • Sind alle Passwörter ausreichend stark (Nutzung von Groß- und Kleinbuchstaben, Ziffern und erlaubten Sonderzeichen, ausreichende Länge)?
    • Wird jedes Passwort nur an einer Stelle verwendet? Mehrfach verwendete Passwörter erhöhen das Risiko weiterer Infektionen erheblich.
    • Gab es in letzter Zeit einen Virus- oder Trojanerbefall des eigenen Rechners? Hierbei fallen den Angreifern häufig auch auf dem PC gespeicherte Passwörter und Logindaten in die Hände.
    • Gibt es in den Logdateien Auffälligkeiten? Extrem häufige Aufrufe von wp-login.php deuten beispielsweise auf einen Brute-Force-Angriff hin. Auch hier lässt sich ein Riegel vorschieben.
    • Welche Dateien wurden verändert, wie ist der zeitliche Ablauf?
    • Ist WordPress aktuell? Sind alle Plugins auf dem neuesten Stand? Sind die üblichen Maßnahmen zur Härtung der Installation durchgeführt worden?

    Dieser Teil der Arbeit erfordert regelmäßig einige Zeit, ein waches Auge und gute Kombinationsgabe. Wie immer gilt: Im Zweifelsfalle hilft der Experte weiter.

  6. Wenn klar ist, auf welchem Weg der erfolgreiche Angriff stattfand, kann diese Lücke gestopft werden und der Webspace nach Bereinigung mit einer frischen WordPress-Installation beschickt werden. Sicherheitshalber sollte dabei die gleiche Version von WordPress verwendet werden, wie sie vorher installiert war. Denn die Inhalte der Datenbank sollen ja auch übernommen werden – andernfalls müssten alle Einstellungen erneut vorgenommen werden und auch alle Artikel und Seiten neu erstellt werden. Bevor die Datenbank aber wieder importiert wird, sollten alle Plugins und Themes eingespielt werden. Nun steht dem Import des anfangs erstellten SQL-Dumps nichts mehr im Wege. Danach sollte unbedingt sofort WordPress samt aller Plugins und Themes aktualisiert werden. Die in Schritt 1 angelegte .htaccess Datei muss natürlich entfernt werden, damit der Zugriff auf WordPress und das Dashboard überhaupt wieder möglich wird.
  7. Um erneute Infektionen zu vermeiden sollten nun zusätzliche Sicherheitsmaßnahmen ergriffen werden. Die Abschottung des Adminbereiches durch eine .htaccess Datei ist zwar lästig, da man sich nun zweimal einloggen muss, dafür wird es Angreifern damit aber praktisch unmöglich gemacht, Lücken im Adminbereich auszunutzen.

Wichtig ist, sich zu verdeutlichen dass Sicherheit nicht mit einer einzelnen Maßnahme erreicht werden kann. Ein vernünftiges Sicherheitskonzept besteht immer aus vielen Bausteinen, die im Zusammenspiel das Ziel erreichbar machen: Möglichst wenig Angriffsfläche für Schadsoftware zu bieten, sowohl im Internet als auch auf dem eigenen Rechner. Hundertprozentige Sicherheit ist dabei nie erreichbar, auch das leuchtet ein. Trotzdem lohnt es sich, die Latte für Eindringlinge möglichst hoch zu legen. Wie das gelingt, dazu in Kürze mehr in diesem Blog.

Über den Autor

André Tertling ist unabhängiger Softwareentwickler und EDV-Berater. Von seinem Büro in der Nähe von Heidelberg aus betreut er Klienten im deutschsprachigen Raum und den USA. Sein Hauptaugenmerk liegt auf pragmatischen Lösungen und der Vermittlung von Wissen an seine Kunden, damit diese in die Lage versetzt werden, Sicherheitslücken und Angriffe besser zu erkennen und ihnen auszuweichen.

Bitte beachten Sie auch unseren Warnhinweis.

Advertisements