← AEU Hosting Blog

Heimtückische WordPress-Malware versteckt Admin über Must-Use-Plugin

2026-10-06

Heimtückische WordPress-Malware versteckt Admin über Must-Use-Plugin

Ein neu dokumentiertes WordPress-Malware-Beispiel zeigt, wie ein bösartiges Must-Use-Plugin, eine spezielle Datei, die bei jeder WordPress-Anfrage automatisch ausgeführt wird und sich nicht über die normale Plugin-Liste deaktivieren lässt, ein betrügerisches Administrator-Konto verstecken, Anmelde-Passwörter abgreifen und sich nach dem Löschen selbst wiederherstellen kann. Das Wordfence Threat Intelligence Team identifizierte die Probe Mitte Juni während einer Website-Bereinigung. Die Malware nutzt Etherhiding, eine Technik, die den Standort der Angreifer-Server hinter einem Smart Contract auf der Ethereum-Blockchain verbirgt, wodurch der Befehls-Kanal schwer abzuschalten ist. Wordfence entwickelte und veröffentlichte nach seinem Frage-und-Antwort-Prüfprozess am 23. Juni 2026 eine Malware-Erkennungssignatur. Wordfence Premium-, Wordfence Care- und Wordfence Response-Kunden erhielten die Signatur sofort, während kostenlose Versionen sie nach der üblichen 30-Tage-Verzögerung erhielten. Wordfence gibt an, dass sein Plugin-Scanner bei Verwendung des Premium-Signatursatzes über 99 Prozent der Proben und Kompromittierungsindikatoren erkennt und seine Threat-Intelligence-Datenbank mehr als 4,4 Millionen einzigartige bösartige Proben enthält.

Must-Use-Plugins liegen außerhalb des regulären Plugin-Systems, was sie für Angreifer attraktiv macht: Sie werden vor normalen Plugins ausgeführt und sind nicht in der regulären Plugin-Liste aufgeführt. Wordfence berichtet, dass diese spezielle Probe als automatisiertes Health-Check- und Reporting-Tool getarnt war, komplett mit einem plausiblen Autorennamen und einem Link zu einem Code-Repository. Über alle Erkennungen hinweg trat die Malware unter mehr als 4.000 verschiedenen Dateinamen auf. Die häufigsten waren legitim aussehende WordPress-Drop-ins wie advanced-cache.php und db.php sowie die functions.php eines Themes. Name, Autor und URI des Plugins variieren ebenfalls zwischen den Proben, sodass diese Metadaten keine zuverlässigen Erkennungsindikatoren sind.

Um Analyse und Aufmerksamkeit des Administrators zu vermeiden, verwendet die Malware ein eigenes String-Verschleierungsschema. Anders als übliche WordPress-Malware, die erkennbare Muster wie eval(base64_decode(...)) verwendet, hält diese Probe gewöhnliche WordPress-API-Aufrufe wie add_action() und get_option() sichtbar, verbirgt aber die übergebenen Werte, einschließlich Hook-Namen, Optionsnamen, Konstanten und Dateipfaden, hinter einem eigenen Decoder. Der Decoder basiert auf zwei Funktionen: Eine speichert eine große Nachschlagetabelle kodierter Strings, und die andere ruft bei Bedarf einen String ab und dekodiert ihn. Der Trick ist eine einfache Substitutions-Chiffre: Zwei Alphabete werden Zeichen für Zeichen ausgerichtet, und jedes Zeichen im verschlüsselten String wird durch das Zeichen an derselben Position im echten Alphabet ersetzt. Zum Beispiel dekodiert der kodierte String gw|hIW|'Il zu get_option. Einige SQL-Anweisungen werden ebenfalls versteckt, indem einzelne Zeichen durch Hexadezimalcodes ersetzt werden, die PHP zur Laufzeit korrekt interpretiert, sodass Datenbankabfragen normal ausgeführt werden; die Hexadezimalsequenz \x55\x50\x44\x41\x54\x45 wird von PHP als UPDATE gelesen. Darüber hinaus hängt die Malware mehrere Filter ein und verwendet zusätzliche Techniken, um sich vom WordPress-Dashboard fernzuhalten. Sie hängt den Filter show_advanced_plugins ein und entfernt das bösartige Plugin aus der Must-Use-Plugin-Liste, bevor WordPress die Seite rendert, und sie versteckt das Plugin auch vor der regulären Plugin-Seite, Update-Benachrichtigungen und dem Site-Health-Bildschirm.

Die Persistenz beginnt mit Administrator-Zugriff. Die Malware prüft zunächst, ob sie bereits ein Admin-Konto erstellt hat, indem sie einen Benutzernamen aus einer Option liest, die unter dem Schlüssel `bu` gespeichert ist. Wenn ein Zielkonto existiert, setzt sie das Passwort dieses Kontos zurück und übernimmt dessen Anmeldung, sodass die Gesamtzahl der Benutzer unverändert bleibt. Wenn kein Konto existiert, erstellt sie einen Benutzernamen aus einem Pool von vier Präfixen, admin_, adm_, administrator_ und backup_, und hängt einen zufälligen sechsstelligen Suffix an. Dann erstellt sie das Konto mit der Administrator-Rolle und einem zufällig generierten Passwort und schreibt den Benutzernamen und das Passwort zurück in ihre eigenen WordPress-Optionen namens bu und bp. Um zu verhindern, dass das betrügerische Konto entdeckt wird, hängt die Malware drei Filter ein. Der erste modifiziert die Abfrage, die WordPress vor der Auflistung von Benutzern ausführt, und fügt eine Bedingung hinzu, die den versteckten Benutzernamen ausschließt. Der zweite wendet denselben Ausschluss über den Parameter login__not_in auf die REST-API an. Der dritte zieht eins von den angezeigten Zählern für die Ansichten Alle und Administrator ab, sodass die Gesamtzahlen mit der gefilterten Liste übereinstimmen. Da das Konto sowohl vor dem Dashboard als auch vor REST-API-Auflistungen versteckt ist, stellt Wordfence fest, dass die direkte Inspektion der Datenbank der zuverlässige Weg ist, um das Konto zu sehen.

Die Malware sammelt auch Administrator-Passwörter im Klartext. Sie hängt den WordPress-authenticate-Filter ein, der nach jeder Anmeldung ausgelöst wird und das authentifizierte Benutzerobjekt, den Benutzernamen und das Klartext-Passwort direkt von WordPress erhält. Der Handler agiert nur bei Konten mit Administrator-Berechtigung und speichert das Klartext-Passwort in einer WordPress-Option namens `ic`, verschlüsselt nach Benutzername. Das bedeutet, dass jede erfolgreiche Administrator-Anmeldung im Klartext in der Datenbank aufgezeichnet wird, was dem Angreifer einen stetigen Strom von Anmeldedaten liefert.

Selbstheilung und Selbstreaktivierung erschweren die Bereinigung. Die Malware registriert ihre Wiederherstellungsroutine auf plugins_loaded mit Priorität 0, sodass sie bei jeder WordPress-Anfrage früh ausgeführt wird. Ein Transient begrenzt die Prüfung auf einmal pro Stunde. Wenn die Plugin-Datei fehlt oder kleiner als 5.000 Bytes ist, ruft die Routine eine gespeicherte Kopie aus der Option `src` ab und schreibt sie zurück auf die Festplatte. Dann verwendet sie touch(), um die Änderungszeit zurückzudatieren, und chmod(), um den Dateimodus auf 0444 zu setzen, wodurch die wiederhergestellte Datei alt und schreibgeschützt erscheint. Separat schreibt sich das Plugin auch direkt in die Option active_plugins zurück und umgeht damit den normalen Plugin-Aktivierungsprozess von WordPress. Es liest wp-config.php, um den Datenbanknamen und das Tabellenpräfix zu erhalten, erstellt den qualifizierten Namen der Optionstabelle und hängt sich unter einer gesperrten Transaktion an die Option active_plugins an. Dieser Mechanismus gilt für Kopien, die im Standardverzeichnis wp-content/plugins platziert sind.

Schließlich verbreitet sich die Malware auf andere WordPress-Installationen auf demselben Server. Sie durchsucht das Dateisystem nach WordPress-Installationen und zielt auf gängige Webserver-Roots wie /home, /var/www, /var/www/vhosts, /var/www/html, /srv/www, /srv/users und /usr/local/www sowie auf Pfade relativ zu ihrem eigenen Standort. Die Verbreitungsroutine läuft höchstens einmal alle drei Tage, gesteuert durch einen Transienten namens sc_spread_interval. Sie liest ihren eigenen Quellcode und schreibt eine Kopie in jede zugängliche Installation. In einer Shared-Hosting-Umgebung, in der mehrere Sites denselben Server teilen, kann sich eine einzelne Infektion still über alle verbreiten.

Website-Betreiber sollten dies als Erinnerung betrachten, dass versteckte Administrator-Konten und Must-Use-Plugin-Ordner regelmäßige manuelle Überprüfung verdienen, nicht nur Dashboard-Blicke. Wordfences Signatur steht seinen Benutzern zur Verfügung, und seine Premium-Dienste umfassen Malware-Entfernung und Incident Response. Für die breitere WordPress-Community skizzieren die folgenden praktischen Schritte, wie man auf diese Art von Infektion prüft. Verwaltetes WordPress-Hosting wie AEU Hosting, das automatische Backups, Sicherheits-Härtung und Experten-Support umfasst, gibt Website-Betreibern einen schnelleren Wiederherstellungspfad, wenn versteckte Malware gefunden wird, aber der erste Instinkt sollte immer noch sein, die Datenbank und das Dateisystem auf alles zu überprüfen, was dort nicht sein sollte.