WordPress-Backdoor als Ersatzschlüssel zur Website
← Blog

WordPress-Backdoor finden und entfernen

Aktualisiert Ivan Pantić

Es gibt ein Szenario, das sich so oft wiederholt, dass wir es erkennen, bevor der Mensch den Satz zu Ende gesprochen hat. Die Website war infiziert. Jemand hat sie bereinigt, oder der Eigentümer hat selbst gelöscht, was verdächtig wirkte. Eine oder zwei Wochen war alles in Ordnung. Dann kam alles zurück, genau wie zuvor.

Kurz gesagt: kehrt die Infektion zurück, gibt es fast immer einen Backdoor oder offenen Eingang. Finden Sie den Reserveeingang, schließen Sie die Lücke, dann beobachten Sie die Website in den nächsten Tagen.

Wenn die Infektion nach der Bereinigung zurückkehrt, ist der Grund in neun von zehn Fällen derselbe: Es gibt einen WordPress-Backdoor, den niemand gefunden hat. Die Bereinigung hat entfernt, was sichtbar war, und gelassen, was dem Angreifer erlaubte, zurückzukehren, wann immer er wollte.

In diesem Text erklären wir, was ein WordPress-Backdoor genau tut, warum er schwer zu bemerken ist, wo er sich am häufigsten versteckt, wie er aussieht, wenn Sie ihn öffnen, und in welcher Reihenfolge die Suche sinnvoll ist.

Was ein Backdoor tatsächlich tut

Der einfachste Vergleich ist ein Schlüssel. Stellen Sie sich vor, jemand nimmt Ihren Wohnungsschlüssel, macht eine Kopie und legt das Original zurück, sodass Sie nie merken, dass er fehlte. Sie können das Schloss an der Eingangstür so oft wechseln, wie Sie wollen. Die Kopie öffnet weiterhin eine Seitentür, deren Existenz Sie vergessen haben.

Seitentür als Bild für einen unbemerkten Serverzugang

Technisch ist jeder Backdoor eine Datei, die Befehle von außen entgegennimmt und auf Ihrem Server ausführt. Manche sind buchstäblich ein paar Zeilen Code: Sie nehmen den Inhalt eines Parameters in der Adresse und führen ihn aus. Andere sind ausgefeilter, mit eigenem Passwort und einer Oberfläche, die wie ein echter Dateimanager aussieht und nur dem zugänglich ist, der den genauen Pfad kennt.

Was sie alle verbindet: Der Zugang, den sie geben, hängt von nichts ab, das Sie aus der WordPress-Administration steuern. Sie können das Passwort ändern, die Zwei-Faktor-Anmeldung einschalten, ein verdächtiges Admin-Konto löschen, das Sie bemerkt haben. Steht die Backdoor-Datei weiterhin irgendwo auf dem Server, kommt der Angreifer trotzdem rein, wann er will.

Das ist der Unterschied, den viele beim ersten Kontakt mit einer Infektion übersehen. Das Entfernen sichtbarer Folgen (Spam-Inhalt, seltsame Weiterleitung, verdächtiger Benutzer) ist nicht dasselbe wie das Entfernen der Ursache.

Warum er schwer zu bemerken ist

Eine durchschnittliche WordPress-Installation hat mehrere tausend Dateien. Core, Theme, Dutzende Plugins, jedes mit eigener Ordnerstruktur. Niemand öffnet realistisch jede Datei, um zu sehen, was darin steht. Angreifer wissen das und schreiben Code so, dass er genau die Art Prüfung übersteht, die Sie wahrscheinlich machen.

Der Name wirkt, als gehöre er zum System

Statt eines offensichtlichen Namens heißt eine solche Datei oft etwas wie wp-cache-config.php, class-wp-utils.php oder admin-functions-backup.php. Beim Durchscrollen der Dateiliste weckt so ein Name keinen Verdacht.

Der Code ist absichtlich unleserlich

Der Inhalt ist oft so geschrieben, dass er erst zur Laufzeit dekodiert wird. Öffnen Sie eine solche Datei, sehen Sie eine lange Zeichenkette aus Buchstaben und Zahlen ohne ein einziges erkennbares Wort. Das ist zugleich Versteck und das zuverlässigste Zeichen, dass etwas nicht stimmt, denn legitimer Code hat keinen Grund, unleserlich zu sein.

Bösartige Datei mit falschem Namen und absichtlich unlesbarem Code

Das Änderungsdatum ist gefälscht

Ein üblicher erster Reflex ist, den Ordner nach Änderungsdatum zu sortieren und zu schauen, was zuletzt hinzukam. Angreifer erwarten das und setzen das Dateidatum manchmal so, dass es zu den umliegenden, legitimen Dateien passt. Diese Spur verschwindet damit.

Die Datei tut nichts, bis sie den richtigen Aufruf erhält

Ein ausgefeilterer Backdoor reagiert erst, wenn er ein bestimmtes Passwort oder einen Parameter erhält. Öffnen Sie ihn nur im Browser, zeigt er eine leere Seite oder einen Fehler und wirkt harmlos. Er wartet einfach auf den Aufruf, den nur kennt, wer ihn platziert hat.

Er wurde in eine bestehende, legitime Datei eingefügt

Das ist die schwierigste Variante. Es gibt keine neue Datei, die auffallen würde. Es gibt nur eine zusätzliche Zeile in einer Datei, die dort ohnehin hingehört, oft ganz am Ende, hinter vielen Leerzeilen, außerhalb dessen, was Sie ohne Scrollen sehen.

Wo er sich am häufigsten versteckt

Einige Orte wiederholen sich von Fall zu Fall, und jeder hat seinen Grund.

Uploads-Ordner

Der Ordner wp-content/uploads ist für Bilder und Dokumente gedacht. Eine Datei mit der Endung .php sollte dort nie liegen. Angreifer mögen ihn genau deshalb, weil die meisten Menschen dort gar nicht an ausführbaren Code denken, weil „dort ohnehin kein Code ist“.

MU-Plugins

Den Ordner wp-content/mu-plugins lädt WordPress automatisch, vor allen anderen Plugins. Sein Inhalt erscheint in der Plugin-Liste nicht wie gewöhnliche Plugins, und viele Seitenbetreiber wissen nicht einmal, dass dieser Ordner existiert. Ein idealer Ort für etwas, das leise laufen und das Entfernen des Übrigen überleben soll.

Im Theme oder Plugin

Entweder als eigene Datei unter Dutzenden vorhandenen, oder als zusätzliche Zeile in einer Datei, die dort hingehört. Besonders oft wird die Datei functions.php des aktiven Themes genutzt, weil sie auf jeder Seite lädt.

Häufige Verstecke: Uploads, MU-Plugins und Datenbank

In der Datenbank

Dieser Ort wird am häufigsten übersehen, weil er keine Datei ist. Code kann in der Tabelle wp_options stehen, in Feldern, die bei jeder Anfrage geladen werden. Reinigen Sie nur Dateien, kommt alles zurück, sobald die Seite erneut geöffnet wird.

Als geplanter Auftrag

Ein Angreifer kann einen WordPress-Auftrag planen, der den Backdoor einige Tage nach dem Löschen erneut einsetzt. Das erklärt Fälle, in denen der Eigentümer die Datei löscht und die Datei von selbst zurückkehrt.

Als verstecktes Admin-Konto

Es ist keine Datei, funktioniert aber nach demselben Prinzip. Ein zusätzliches Konto mit Admin-Rechten, oft mit einem Namen, der systemisch wirkt, gibt Zugang auch nach allen Passwortänderungen.

Warum die gewöhnliche Plugin-Prüfung nicht reicht

Der übliche Reflex bei Verdacht auf Infektion ist, die Liste installierter Plugins zu öffnen und zu löschen, was verdächtig wirkt. Das Problem: Ein Backdoor existiert dort fast nie als eigenes, benanntes Plugin.

Plugin-Liste zeigt keine PHP-Datei im Uploads-Ordner

Eine Datei im Uploads-Ordner erscheint dort nie, weil WordPress diese Liste aus Ordnerstruktur und Dateiköpfen baut, die ein Backdoor absichtlich nicht hat. Dasselbe gilt für Code innerhalb eines legitimen Plugins, das Sie keinen Grund haben zu verdächtigen.

Deshalb wirkt das Szenario aus der Einleitung dieses Textes, als gäbe es keine Erklärung. Der Eigentümer löscht ein paar Plugins, die Site wirkt vorübergehend sauber, dann kommt alles zurück. Der echte Eingang wurde nie berührt.

Wie ein Backdoor wirklich gefunden wird

Da die manuelle Prüfung tausender Dateien nicht machbar ist, beruht zuverlässiges Suchen auf drei Ansätzen, die zusammenwirken.

Vergleich mit offiziellen Versionen

WordPress-Core und jedes Plugin aus dem offiziellen Repository haben eine bekannte, öffentlich verfügbare Version. Der Vergleich der Dateien auf der Site mit dieser Version zeigt sofort zwei Dinge: welche bestehende Datei geändert wurde, und welche Datei gar nicht zu diesem Paket gehört. Das hängt nicht vom Erkennen des Inhalts ab und fängt auch völlig neue Muster, die noch niemand kennt.

Dateivergleich enthüllt eine Datei, die nicht zum Paket gehört

Prüfung von Orten, an denen ausführbarer Code nicht hingehört

Jede PHP-Datei im Uploads-Ordner ist per Definition verdächtig, unabhängig von Name und Inhalt. Dasselbe gilt für unerwartete Dateien im MU-Plugins-Ordner. Diese Prüfung ist einfach und in der Praxis äußerst wirksam.

Erkennen von Mustern im Code

Es gibt Funktionskombinationen, die in legitimem WordPress-Code praktisch nicht vorkommen und für schädlichen Code typisch sind. Ihr Vorhandensein ist fast immer ein zuverlässiges Signal, auch wenn man nicht versteht, was der dekodierte Inhalt genau tut.

Alle drei Prüfungen zusammen, automatisch und nach Plan ausgeführt, liefern ein weit zuverlässigeres Ergebnis als jede einmalige manuelle Prüfung. Einfach weil der Umfang (tausende Dateien bei jedem Scan) etwas ist, das man nicht von Hand erledigen kann.

Wie ein typischer Fall von Anfang bis Ende aussieht

Damit die ganze Geschichte konkreter wird, hier die Reihenfolge, die sich in der Praxis mit kleinen Variationen wiederholt.

Ein automatisiertes Skript findet eine Schwachstelle in einem Plugin, das seit mehreren Monaten nicht aktualisiert wurde. Darüber legt es eine Backdoor-Datei im Uploads-Ordner ab. Das ist der erste Schritt, und in diesem Moment ist von außen nichts zu sehen. Die Site läuft normal, die Geschwindigkeit ist gleich, es gibt kein einziges Zeichen.

Einige Tage später wird über diesen Backdoor eingefügt, was dem Angreifer wirklich Geld bringt: Spam-Inhalt, Weiterleitung von Besuchern oder ein Versandskript. Das ist der erste Moment, in dem der Seitenbetreiber etwas bemerkt, meist über die Meldung eines anderen oder eine Warnung in der Suche.

Der Eigentümer reagiert auf das, was er sieht. Er aktualisiert das verwundbare Plugin und schließt damit das ursprüngliche Loch. Er ändert das Passwort. Er löscht Spam-Seiten von Hand. Die Site wirkt wieder ordentlich und scheint erledigt.

Die Backdoor-Datei aus dem ersten Schritt hat niemand gesucht, weil niemand wusste, dass sie existiert. Wochen vergehen. Dann kehrt ohne neuen Angriff alles zurück. Manchmal, weil der Angreifer dieselbe Kampagne erneut startet, manchmal, weil der Zugang unterdessen an jemand anderen verkauft wurde.

Der Eigentümer schließt in dem Moment, dass die Bereinigung nicht funktioniert, oder der Hoster schuld ist, oder die Site „verflucht“ sei. Nichts davon stimmt. Das Problem war nie gelöst. Es hat nur vorübergehend aufgehört, sichtbar zu sein.

Wie lange ein Backdoor unbemerkt bleiben kann

Die Antwort, die die meisten nicht erwarten: so lange, wie nötig. Es gibt keinen Mechanismus, der ihn von selbst entdecken würde.

Anders als Spam oder eine Weiterleitung erzeugt ein Backdoor selbst keinen sichtbaren Effekt. Er verlangsamt die Site nicht, weil er nicht ausgeführt wird, bis ihn jemand aufruft. Er ändert keinen Inhalt. Er sendet nichts. Er erscheint nicht in der Suche. Er verbraucht keine Ressourcen, die der Hoster bemerken würde.

Ruhender Backdoor, der monatelang wartet bevor er aktiv wird

Das bedeutet: Eine Site kann monatelang vollkommen ordentlich wirken, während der Zugang weiter besteht. Wir haben Fälle gesehen, in denen eine Datei ein Jahr vor der Nutzung platziert wurde, einfach weil das dem Angreifer so passte.

Die praktische Folge: Das Fehlen von Symptomen ist kein Beweis, dass kein Problem besteht. Deshalb hat Überwachung auch dann Sinn, wenn alles ruhig ist, denn genau in diesen ruhigen Phasen wird platziert, was später aktiviert wird.

Was tun, wenn Sie ihn finden

Zuerst eine Kopie erstellen

Eine vollständige Kopie von Dateien und Datenbank vor jeder Änderung, auch wenn infiziert. Das ist der einzige Schutz, falls etwas schiefgeht, und die einzige Datenquelle für spätere Rekonstruktion.

Die Datei ansehen, bevor Sie sie löschen

Erstellungsdatum und Inhalt sagen oft, wann sie platziert wurde und durch welches Loch sie kam. Ohne das beheben Sie die Folge und warten auf die Wiederholung.

Fragen, wie sie dorthin kam

Das ist wichtiger als das Entfernen selbst. Bleibt die ursprüngliche Schwachstelle offen (veraltetes Plugin, schwaches Passwort, Theme aus inoffizieller Quelle), ist der nächste Backdoor nur eine Frage der Zeit.

Annehmen, dass er nicht der einzige ist

Angreifer hinterlassen in der Regel mehr als einen Eingang, weil sie damit rechnen, dass der erste gefunden wird. Wenn Sie einen finden, ist das ein Grund weiterzusuchen, nicht aufzuhören.

Alle Passwörter ändern

WordPress-Admin, Datenbank, Hosting-Panel, FTP- und SSH-Zugang. Solange der Backdoor aktiv war, konnte der Angreifer diese Daten vermutlich auch auslesen, also behandeln Sie sie als kompromittiert.

Bestehende Sitzungen ungültig machen

Eine Passwortänderung macht bereits offene Sitzungen nicht immer ungültig. Hat der Angreifer ein Login-Cookie gestohlen und nicht nur das Passwort, ist er weiterhin drinnen. Das Ungültigmachen aller aktiven Sitzungen schließt auch diesen Weg.

Die Site in der nächsten Woche beobachten

Nach der Bereinigung lohnt verstärkte Beobachtung für mindestens sieben bis zehn Tage. Das ist der Zeitraum, in dem man am häufigsten sieht, ob etwas übersehen wurde, weil geplante Aufgaben und Reserveeingänge meist verzögert wirken. Passiert in diesem Fenster nichts, sind die Chancen, dass die Arbeit erledigt ist, deutlich höher als am ersten Tag.

So verhindern Sie eine Wiederholung

Die zuverlässigste Verteidigung ist keine einmalige Bereinigung, sondern kontinuierliche Überwachung. Das folgt direkt aus allem oben Beschriebenen: Ein Backdoor ist absichtlich so gebaut, dass er eine manuelle Prüfung übersteht. Der einzige Weg, ihn rechtzeitig zu fangen, ist etwas, das regelmäßig und automatisch den aktuellen Zustand von Dateien und Datenbank mit dem vorherigen vergleicht.

Dazu kommen die Grundlagen, die die meisten Eingänge schließen, bevor sie sich überhaupt öffnen. Regelmäßige Updates von Core, Theme und Plugins. Entfernen von allem Ungenutzten, denn ein inaktives Plugin mit Schwachstelle ist weiterhin verwundbar. Starke, einzigartige Passwörter mit Zwei-Faktor-Anmeldung. Verbot der PHP-Ausführung im Uploads-Ordner auf Serverebene, wodurch eine ganze Klasse von Backdoor-Dateien nicht mehr funktioniert, selbst wenn eine Datei irgendwie landet.

So prüfen Sie, wo Sie jetzt stehen

Wenn Sie einen WordPress-Backdoor vermuten oder die Infektion nach der Bereinigung schon einmal zurückgekehrt ist, muss der erste Schritt nichts kosten. Sie können Ihre WordPress-Site auf Backdoors prüfen lassen: der Check sucht im öffentlich erreichbaren Inhalt nach bekannten Malware-Mustern, versteckten Skripten und verdächtigen Weiterleitungen. Kein Konto, keine Installation, meist unter einer Minute.

Die Grenze dieser Prüfung sollte man offen sagen, denn bei diesem Thema ist sie entscheidend. Eine Fernprüfung sieht nur, was öffentlich über das Internet erreichbar ist. Ein Backdoor, der still in einer Datei auf den Aufruf wartet, ist nicht öffentlich sichtbar, und eine solche Prüfung findet ihn in der Regel nicht. Ein sauberes Ergebnis ist ein gutes Zeichen für die Oberfläche, aber kein Beweis, dass kein Backdoor existiert.

Für eine zuverlässige Antwort muss man die Dateien und die Datenbank auf der Site selbst ansehen, denn dort allein liegt er. Wenn Sie diesen Einblick wollen, oder wenn das Problem schon zurückgekehrt ist und Sie nicht raten möchten, können Sie die Website professionell bereinigen lassen. Senden Sie die Adresse der Website und eine kurze Beschreibung, was passiert ist, und wir sagen Ihnen, welcher nächste Schritt sinnvoll ist.

Fragen

Häufige Fragen

Kurze Antworten zu diesem Artikel. Wenn Ihre Frage hier fehlt, schreiben Sie uns über den Kontakt.

Was macht ein WordPress-Backdoor tatsächlich?

Es ist ein Reserveeingang: eine Datei oder ein Code, der dem Angreifer erlaubt, jederzeit zurückzukehren - auch nach Passwortwechsel und Löschen sichtbarer Malware. Für sich allein tut er oft nichts Sichtbares, bis er den genauen Aufruf erhält.

Warum sehe ich ihn nicht in der Plugin-Liste?

Oft ist er kein Plugin. Er sitzt in uploads als PHP, in mu-plugins (WordPress lädt ihn, zeigt ihn aber nicht als normales Plugin), in einem legitimen Theme, in der Datenbank, als Cron oder als verstecktes Admin-Konto. Die Liste aktiver Plugins zeigt das nicht.

Wie findet man einen Backdoor wirklich?

Durch Vergleich von Core-/Theme-/Plugin-Dateien mit offiziellen Versionen, Prüfung von Orten wo PHP nicht hingehört (z. B. uploads) und Erkennen absichtlich unlesbaren Codes (lange kodierte Strings, eval, base64). Ein einmaliges „schau was seltsam wirkt“ reicht selten.

Wie lange kann er unbemerkt bleiben?

Wochen oder Monate. Er verlangsamt die Site nicht, erscheint nicht in der Suche und ändert das Aussehen nicht, bis der Angreifer ihn aufruft. Betreiber merken oft erst etwas, wenn über den Backdoor Spam, Weiterleitung oder ein Versandskript kommt.

Was tun, sobald Sie ihn gefunden haben?

Zuerst eine Kopie machen, dann die Datei ansehen bevor Sie löschen (hilft zu klären, wie sie hingekommen ist). Annehmen, dass er nicht der einzige ist, die ursprüngliche Lücke schließen, Passwörter ändern, Sitzungen ungültig machen und die Site die nächsten Tage beobachten.