Malware entfernen

Eine gute Nachricht vorweg: Wer seine Seite aktuell hält und einige elementare Vorkehrungen zur Sicherheit beachtet, braucht sich vor Script Kiddies nicht zu fürchten. Die Seite ist sicher und es geschieht selten, dass ein Angreifer trotzdem etwas auf den Kopf stellen kann! Bevor hier einige Tipps zum Erkennen und Entfernen von Malware besprochen werden, müssen die wichtigsten Vorsichtsmassnahmen vorgestellt werden.

Wenn etwas im folgenden Text besonders wichtig ist oder näher erläutert werden will, dann ist es mit zwei Bierkrügen hervorgehoben!

Was genau ist eigentlich «Malware»?

Malware ist ein Sammelbegriff für Schadsoftware aller Art! Die Schadsoftware wird auf dem Server ausgeführt oder auch in Ihrem Webbrowser.

Es gibt eine ganze Reihe von Schadprogrammen, die ein Angreifer gerne auf Ihre schöne WordPress Seite einschleusen möchte. Er tut dies durch eine Sicherheitslücke, die er in WordPress findet, in einem Plugin, einem Theme oder auf einem ungenügend gewarteten Server. Der Angreifer ist weniger an Ihren Daten interessiert, vielmehr will er an die Ressourcen Ihrer Webseite: Rechnerleistung, Speicherplatz, Mailversand, etc. Typische Beispiele für Malware sind dementsprechend: Scripts, die Spam versenden, eingeschleuste Seiten für Phishing Betrug, Umleitungen auf andere Webseiten mit mehr als zweifelhaften Angeboten, etc. Kurz: Alles Dinge, die Sie nicht haben möchten!

Nun aber zurück zu den Sicherheitsvorkehrungen.

Teil 1: Absichern

Automatisches Update aktivieren

Dies ist die vermutlich grösste Sicherheitslücke bei WordPress: Veraltete Kernsoftware, Plugins und Themes, die nicht aktualisiert werden, eventuell weitere Komponenten, die nicht zu WordPress gehören oder veraltet sind. In mehr als 35% aller Fälle ist dies der Grund für einen Befall mit Malware. Dies kann aber leicht vermieden werden. Denn seit einigen Jahren bietet WordPress eine zuverlässige Auto-Update Funktion, die Sie unbedingt nutzen sollten.

  • WordPress System. Hier können Sie festlegen, ob jede neue Version automatisch installiert wird – oder nur Sicherheits- und Wartungs Updates. Wählen Sie im Dashboard den Menupunkt Aktualisierungen, sie sehen dann den folgenden Hinweis:

    Diese Website wird automatisch mit jeder neuen Version von WordPress auf den aktuellsten Stand gebracht. Wechsle auf automatische Aktualisierungen nur für Wartungs- und Sicherheits-Updates.

    Ich empfehle Ihnen, alle neuen Versionen einzuspielen. Dies ist bei neuen WordPress Installationen auch die Vorgabe. Natürlich ist das Risiko etwas grösser, dass nach einem Update etwas nicht mehr funktioniert. Aber die Entwickler arbeiten diesbezüglich sehr vorsichtig. Mir ist bis heute kein Fall bekannt, bei dem es nach dem Update einer Major Version Probleme gegeben hätte. Und: Nach jedem Update werden Sie per Mail beachrichtigt und können sofort nachprüfen, ob alles noch im Lot ist!
  • Plugins. Kontrollieren Sie als nächstes Ihre Plugins. In der Übersicht, die im Dashboard alle Plugins anzeigt, gibt es rechts in der Auflistung eine Option Automatische Aktualisierung. Stellen Sie sicher, dass alle Plugins automatisch aktualisiert werden. Die Wahrscheinlichkeit, dass ein Plugin-Update Ihre Seite lahmlegt, ist klein. Wie beim Kernsystem erhalten Sie zudem per Mail eine Nachricht, wenn gerade ein Plugin aktualisiert wurde.
  • Themes. Auch hier: Aktivieren Sie für jedes Theme die automatische Aktualisierung.

Website Zustand kontrollieren

Website Zustand

WordPress bietet Ihnen ein praktisches Tool, das den Zustand Ihrer Webseite prüft, auch und vor allem in bezug auf die Sicherheit. So können Sie es aufrufen: Wählen Sie im Dashboard: Werkzeuge >> Website Zustand. Es kann nun einen Moment dauern, bis Ihnen WordPress eine Einschätzung Ihrer Seite liefert. Häufige Probleme sind: Inaktive Themes oder Plugins, keine gesicherte Verbindung (https) oder eine veraltete PHP Version. Nehmen Sie sich hier etwas Zeit und beheben Sie alle aufgelisteten Mängel – es lohnt sich!

Wichtig: Wird ein Plugin deaktiviert, dann wird es nur von WordPress nicht mehr genutzt. Es kann aber weiterhin von Angreifern aufgerufen werden, so wie auch ungenutzte Themes.

Nutzen Sie die Backup- und Sicherheitsfunktionen Ihres Providers

Wenn Sie schon gerade dabei sind, schauen Sie auch bei Ihrem Hosting Provider nach. Manche bieten Sicherheitsfunktionen an, wie etwa eine Web Access Firewall (WAF). Andere haben für die Webseite einen Mute Schalter, der jegliche Schreibzugriffe auf der Seite verunmöglicht. Und nahezu alle Provider bieten für Ihre Seite Backup Funktionen. Ziehen Sie für Ihre Seite regelmässig Backups. Oder, noch besser: Automatisieren Sie diesen Prozess. Achten Sie auch darauf, dass auch die MySQL Datebank gesichert wird.

Backups sind das A & O für eine sichere Seite. Sie geben Ihnen die Gewissheit, dass Ihre Arbeit in jedem Fall wiederhergestellt werden kann. Erstellen Sie wie folgt Backups: Für jeden der vergangenen 10 Tage, 8 Wochen und drei Monate. So haben Sie die Gewähr, dass Sie über einen längeren Zeitraum Sicherungen verfügbar haben. Etwas weiter unten erkläre ich noch, warum gerade das wichtig ist!

Teil 2: Reparieren

Schadsoftware vorhanden?

Und dann, trotz aller Sicherheitsvorkehrungen, geschieht es doch: Auf der Seite wurde Schadsoftware eingeschleust. Sobald dies zur Gewissheit wird, sind meiner Meinung nach die folgende Punkte wichtig: A. Entstellte WordPress Webseiten können immer repariert werden. Und B. Die Reparatur ist keine Raketenwissenschaft. Die folgenden Abschnitte zeigen, wie’s gemacht wird. Und: Für den schlimmsten Fall (der in meiner Praxis noch nie eingetreten ist) haben Sie ja Backups. Die Seite kann dank Backup in jedem Fall vollständig wiederhergestellt werden.

Wie erkennen Sie, ob Ihre Seite «gehackt» wurde? Es könnte sein, dass nur noch Fehler angezeigt werden oder – in eher seltenen Fällen – eine in allen möglichen Farben schillernde Meldung zu sehen ist: «This Site proudly owned by…». Wer aber Schadsoftware einschleust, will möglichst lange unerkannt bleiben. Frühzeitig auffliegen ist schliesslich schlecht fürs Geschäft! Es ist deshalb denkbar, dass Sie von Schadsoftware betroffen sind, dies aber nicht bemerken …vorerst jedenfalls nicht. Irgendwann wird Sie ihr Provider informieren, weil über Ihre Seite Spam versandt wurde. Die folgenden Informationen möchten Ihnen helfen, die Schadsoftware rasch zu finden und zu entfernen, ohne dass Ihre Seite dabei Schaden nimmt.

Zugriff beschränken

Ich empfehle Ihnen, den Zugriff auf Ihre Seite zu beschränken, solange bis alle Malware weg ist. Denn solange Ihre Seite global abrufbar bleibt, können die eingeschleusten Bots jederzeit aktiv werden und weiteres Unheil anrichten! Der schnellste Weg besteht darin, die Datei .htaccess im Stammordner Ihrer Seite anzupassen. Sie benötigen dazu ein FTP Programm wie Filezilla oder Cyberduck. Bei Plesk können Sie auch direkt auf Ihre Dateien zugreifen. Wenn Sie diese Datei nicht sehen, aktivieren Sie die Option zur Anzeige verborgener Dateien. Machen Sie nun folgendes:

  1. Öffnen Sie die Seite www.whatsmyip.org. Sie zeigt Ihnen an, mit welcher IP Adresse Sie im Internet unterwegs sind. Merken Sie sich diese IP. Beachten Sie, dass je nach Anschluss diese Adresse ändern kann.
  2. Öffnen Sie die Datei .htaccess in einem Editor und schreiben Sie folgendes in die erste Zeile: Require ip (Notierte IP Adresse):
    Eine typische WordPress .htaccess Datei sieht anschliessend wie folgt aus:
Geänderte .htaccess Datei, anklicken für Vergrösserung

Wenn Sie diese Änderung speichern, ist die Seite weltweit gesperrt und Aufrufe werden mit einem freundlichen «Access Denied» beantwortet. Als nächstes können Sie sich um die Bereinigung kümmern. Vergessen Sie nicht, die Anpassung in der .htaccess Datei rückgängig zu machen, wenn Sie mit allem fertig sind!

Erscheint nach der Anpassung der .htaccess Datei nur noch eine Fehlermeldung «Internal Server Error»? Dann verwendet Ihr Hoster vermutlich eine ältere Version von Apache (heisst: 2.2 statt 2.4 oder neuer). Das ist kein Beinbruch. Versuchen Sie es mit den folgenden Anweisungen:

Order Deny, Allow
Deny from all
Allow from (Notierte IP Adresse)

Nun also muss die Schadsoftware entsorgt werden! Es gibt dazu grundsätzlich zwei Wege: Einen der zahlreich verfügbaren Malware Scanner verwenden; oder aber: Alles in Handarbeit erledigen. Letzteres ist zwar aufwendiger, dafür aber gründlich! Ich schlage Ihnen deshalb folgendes Vorgehen vor: Installieren Sie als erstes einen Malware Scanner. Findet dieser nichts, dann gehen Sie den manuellen Weg. Ich werde im Folgenden beide Optionen vorstellen.

Malware mit Scanner entfernen

Es gibt eine ganze Reihe guter Scanner, die schnell und einfach als Plugin installiert und gestartet werden können. Wordfence, Sucuri und MalCare sind nur einige der Bekanntesten. Sie machen alle – mehr oder weniger – dasselbe: Analysieren aller Dateien, suchen nach bekannten Mustern bei Schadsoftware, Dateien finden, die nicht zur verwendeten WordPress Distribution gehören, etc. Die Scanner leisten dabei eine erstaunlich gute Arbeit. Im Folgenden verwende ich den Scanner Bulletproof Security. Warum gerade dieser? Weil er kostenlos ist, schnell arbeitet und bei meinen Tests bisher alle Schadsoftware erkannt hat!

Zugegeben, die Bedienung von Bulletproof ist etwas gewöhnungsbedürftig und der Scanner liefert fast immer einige «False positives». Aber er hat mich in den letzten Monaten überzeugt, weil er sehr gründlich zur Sache geht!

Und so scannen Sie ihre Seite mit Bulletproof:

  1. Installieren Sie das Plugin Bulletproof Security: Im Dashboard die Option Plugins wählen, dann ein neues Plugin installieren und nach Bulletproof suchen. Sobald das Plugin installiert ist, aktivieren Sie es und klicken dann auf Setup Wizard.
  2. Der Setup Wizard erstellt einige Standardeinstellungen für den ersten Durchlauf. Dabei kontrolliert er auch die Eigenschaften Ihres Servers, resp. Ihrer WordPress Installation. Kontrollieren Sie bitte, ob vom Setup Wizard Fehlermeldungen angezeigt werden.
  3. Das wars auch schon mit den Vorbereitungen, Sie können jetzt den ersten Scan Durchlauf starten. Wählen Sie im Dashboard BPS Security >> MScan, wählen Sie dann die Schaltfläche Start Scan.
    Beim erstmaligen Durchlauf erstellt Bulletproof ein Abbild aller Dateien Ihrer Webseite, das kann unter Umständen einen Moment dauern… Ein Fenster informiert Sie über den Fortschritt.
  4. Klicken Sie noch einmal auf Start Scan. Nun gleicht Bulletproof Ihre Seite ab mit den aktuellen Versionen aller aktiven Komponenten (WordPress, Plugins, Themes). Gibt es Veränderungen? Oder Dateien, die nicht zur Distribution passen wollen? Oder Dateien mit auffälligen Mustern?
Bulletproof Übersicht

Wenn etwas Verdächtiges gefunden wird, erscheint bereits beim Scannen ein Hinweis. Gewissheit erhalten Sie, wenn Sie nach erfolgtem Scan auf View Report klicken. Damit werden alle Dateien aufgelistet, an denen BulletProof etwas zu bemängeln hat. Kontrollieren Sie jede dieser Dateien genau; öffnen Sie sie ggf. einem Texteditor und überprüfen Sie den Inhalt.

Tipp: Wenn Sie Schadsoftware gefunden haben, löschen Sie diese nicht sofort. Besser ist es, die inkriminierten Scripts in einen Ordner zu verschieben, der ausserhalb des Webseiten-Bereiches liegt. Sie können die Dateien vorübergehend auch in einen Ordner auf Ihrem PC/Mac verschieben. Sollte sich herausstellen, dass es sich um eine reguläre Datei handelt, kann diese rasch wiederhergestellt werden, ohne das Backup zu bemühen.

Wie sieht Schadsoftware aus? Hier einige Beispiele: Zu Beginn der Datei gibt es keine Hinweise auf die Verwendung oder Urheberschaft! Die Datei besteht aus einer einzigen Zeile. Funktions- und Variablen bestehen aus zufälligen Folgen von Zeichen und Zahlen (Selbstverschlüsselung). Keine oder unverständliche Kommentare.

WordPress manuell neu installieren

Sie können nun Ihre Seite wieder für alle Besucher freischalten. Oder, wenn Sie zu 100% sicher sein wollen, dass Ihre Seite wieder «sauber» ist, die folgenden manuellen Bereinigungen durchführen. Gerade beim Abgleichen der Plugin- und Theme-Dateien kann dies einige Zeit in Anspruch nehmen. Aber meiner Meinung nach lohnt es sich!

Die folgende Anleitung zum manuellen Aktualisieren von WordPress erfordert nun doch einiges Fachweissen in bezug auf Unix Dateien, MySQL Datenbanken und Ordnerstrukturen. Wenn Sie nicht sicher sind, ob Sie das richtige tun, lassen Sie sich bitte von einem Fachmann oder einer Fachfrau helfen.

Die Schritte um WordPress manuell neu zu installieren, sind auf der offiziellen Dokumentation von WordPress detailliert beschrieben: Manually update WordPress. Lassen Sich sich nicht vom Titel beirren: Eine manuelle Neuinstallation und ein manuelles Update sind dasselbe!

Was bei der manuellen Installation wichtig ist: Die Ordner wp-admin und wp-includes werden dabei komplett gelöscht. Dies ist ein wichtiger Schritt, da hiermit nicht nur dis bisherige WordPress Version gelöscht wird, sondern auch alle Dateien, die später in diese beiden Ordner gelangt sind.

Themes und Plugins prüfen

Angreifer wollen unentdeckt bleiben, deshalb verstecken sie Ihr Machwerk gerne in den Ordnern der Themes oder Plugins – und verwenden dabei gerne unauffällige Dateinamen wie zum Beispiel constants.php oder public-key.php. Sie zu finden kann leider zur Sisyphos-Aufgabe werden. Bewährt hat sich die folgende Vorgehensweise:

  1. Aktualisieren Sie jedes Theme/Plugin oder installieren Sie es komplett neu. Kontrollieren Sie anschliessend mit Ihrem FTP Client das Datum aller Dateien. Gibt es Dateien, bei denen das Created/Modified Datum nicht tagesaktuell ist, sollten genau hingesehen werden. Es handelt sich vermutlich um einen Datei, die nicht zur Distribution dieser Komponente gehört.
  2. Wiederholen Sie den ersten Schritt für jedes Plugin und jedes Theme, das Sie verwenden. Empfehlung: Löschen Sie alle Themes und Plugins, die Sie nicht benötigen.

Der Schritt zum Aktualisieren oder zur Neuinstallation ist sehr wichtig und sollte beim Prüfen für alle Komponenten gemacht werden. Es können sein, dass sich Schadsoftware in einer bestehenden, regulären Theme- oder Plugin Datei einfügt. Beispielsweise in der Datei hello.php, die das Hello Dolly Plugin enthält und mit jeder WordPress Version mit installiert wird.

Ganzen Ordner wp-content inspizieren

Die folgenden Ordner sind unter wp-content immer zu finden: themes, plugins und uploads. Die Themes und Plugins haben wir bereits besprochen.

Richten Sie Ihr Augenmerk nun auf den Ordner uploads. Dieser enthält alle Dateien, die via Mediathek auf den Server geladen wurden. Zumeist sind dies Bilder und Photos, aber auch PDF Dateien oder Videos. Dateien mit der Endung .php haben hier aber nichts zu suchen. Wenn Sie eine Datei mit der Namensendung .php finden, dann können Sie 10:1 darauf wetten, dass es nichts Gutes ist!

Gleiches gilt für .htaccess Dateien. Mit diesen können Eigenschaften des Webservers verändert werden. Beispielsweise kann bestimmt werden, dass Bilddateien (Jpef, Gif, Png) als Scripts (!) ausgeführt werden. Wenn Sie also im Ordner uploads .htaccess Dateien finden, dann entfernen sie diese nach einer Durchsicht.

Auf einem Rechner läuft gerade wieder der Wordfence Malware Scanner (CLI) und sucht nach Treffern auf dem Rechner eines Kunden. Da dort noch eine alte WordPress Version lief, war es dringend angezeigt, alle Dateien zu durchsuchen. Und tatsächlich wurde Wordfence fündig. Hier sind ein par typische und ganz aktuelle (November 2023) Muster für WordPress Malware:

  • Oft verstecken sich Bots in Dateien, die eigentlich leer sein sollten. Typisch sind die index.php Dateien in den Ordnern plugins und themes. Sie sind als Platzhalter gedacht, die verhindern sollen, dass der Ordnerinhalt nicht angezeigt wird. Deshalb enthalten sie auch nur einen simplen Kommentar: // Silence is golden. Findige Bot-Programmierer platzieren ihren Code genau hier! Ist so eine Datei grösser als ca 30 Bytes, dann enthält sie definitiv etwas, was da nicht sein soll. Kontrollieren Sie diese Dateien und löschen den gesamten Inhalt bis auf den originalen Kommentar.
  • Hello Dolly: Das kleine Plugin von Matt Mullenweg ist bei jeder neuen WordPress Installation mit im Gepäck und zeigt im Dashboard oben rechts Teile des bekannten Kindergedichts an. Leider ist es zur Zielscheibe von Malware geworden, die sich in diesem Plugin geschickt verbirgt und einen Backdoor öffnet. Tipp: Nach der Installation das Hello Dolly Plugin entfernen.
  • functions.php: Viele Templates enthalten diese Datei, die Template-spezifische Funktionen und Trigger enthält. Leider wird gerne und oft Schadsoftware in diese Datei eingeschleust. Dabei bleibt die Datei erhalten und funktioniert wie gehabt. Aber bei jedem Aufruf wird eine Schadsoftware aktiviert!
  • Dateien im WordPress Upload Ordner: PHP Dateien haben in diesem Ordner (wp-content/uploads) nichtz zu suchen. Wenn hier PHP Dateien auftauchen, können Sie 10:1 wetten, dass es sich um Schadsoftware handelt.
  • options.php: Diese Datei existiert in genau zwei Ordners bei einer Neuinstallation von WordPress: wp-admin und wp-admin/includes. Taucht sie noch in einem weiteren Ordner oder gar im Stammordner von WordPress auf, sollte genau hingesehen werden. Ganz allgemein gilt: Bots verwenden Dateinamen, die vertraut klingen, um sich zu tarnen: api.php, keysec.php, edit.php, etc.

Zur Illustration folgen hier ein paar Screenshots:

Ein typischer Upload Bot mit Tarnung. Aus der Funktion create_function() entsteht hier ein kurzes Code Fragement, mit dem weitere Scripts von einer beliebigen Quelle nachgeladen werden können.

Ein Fragment, das diesem hier ähnlich sieht, findet sich manchmal im Plugin „Hello Dolly“. Das Hello Dolly Plugin gehört zu jeder Installation von WordPress und ist nach der Installation aktiv. Viele Benutzer deaktivieren oder löschen es nicht. Deshalb ist es ein beliebter Ort, um Schadcode zu verstecken. Unsere Empfehlung lautet: Dieses Plugin nach der Installation löschen. Wichtig: Nur deaktivieren genügt nicht.