Eine gründliche Malware-Bereinigung folgt einem festen Ablauf, nicht dem Bauchgefühl. Nach einem Hack ist der Reflex, schnell „die eine böse Datei“ zu löschen. Fast immer hinterlassen Angreifer aber mehrere Backdoors. Wer nicht gründlich vorgeht, ist nach wenigen Tagen wieder infiziert.
1. Eindämmen
- Site in den Wartungsmodus setzen oder per Webserver/WAF für Besucher sperren (ausser eigene IP), wenn Besucher gefährdet sind (Weiterleitungen, Skimmer).
- Bei Shops: Zahlungsanbieter informieren, wenn ein Skimmer möglich ist.
- Keine weiteren Logins mit Admin-Konten von evtl. kompromittierten Rechnern.
2. Beweise sichern
tar czf /root/incident/files-$(date +%F).tgz /var/www/example
wp db export /root/incident/db-$(date +%F).sql
cp /var/log/nginx/*access* /var/log/php*-fpm* /root/incident/
Kopie ausserhalb des Webroots und möglichst ausserhalb des Servers ablegen. Die Logs werden für die Ursachenanalyse gebraucht.
3. Entscheiden: Restore oder Bereinigen
Gibt es ein Backup von vor der Kompromittierung, ist ein Restore meist schneller und sicherer. Aber: Die Lücke, die zum Hack führte, ist im Backup noch vorhanden. Sie muss vor dem erneuten Online-Gehen geschlossen werden. Zwischenzeitliche Inhalte und Bestellungen müssen ggf. manuell übernommen werden.
4. Dateien bereinigen
Bewährt hat sich: alles Bekannte neu installieren, nur Unbekanntes prüfen.
- Core ersetzen:
wp core download --force --skip-content(Version passend) und danach Dateien im Webroot entfernen, die nicht zum Core gehören. - Plugins und Themes aus offiziellen Quellen frisch installieren (Verzeichnisse löschen und neu herunterladen), nicht „updaten“.
- uploads/: alle PHP-, PHTML-, PHAR- und unerwarteten Dateien entfernen;
.htaccess-Dateien prüfen. - mu-plugins/,
wp-content/-Root (z. B.advanced-cache.php,object-cache.php,db.php),wp-config.phpund.htaccessZeile für Zeile prüfen. - Eigener Code mit Git abgleichen:
git status,git diff. - Scanner als Ergänzung (Wordfence CLI, Sucuri SiteCheck, Imunify/Maldet auf Server-Ebene), aber nicht als einzige Prüfung.
5. Datenbank bereinigen
- Unbekannte Admins und Benutzer entfernen; Capabilities in
wp_usermetaprüfen. - Injizierte Skripte in Beiträgen, Widgets und Options entfernen (
wp db search). - Unbekannte Cron-Events löschen.
- Kritische Optionen prüfen:
siteurl,home,admin_email,default_role,users_can_register,active_plugins.
6. Alle Zugangsdaten erneuern
- Passwörter aller WordPress-Benutzer mit erhöhten Rechten, Sessions beenden
- Salts:
wp config shuffle-salts - Datenbank-Passwort, SFTP/SSH (inkl.
authorized_keysprüfen), Hosting-Panel - Application Passwords widerrufen
- API-Keys (Zahlung, Mail, KI-Anbieter, Cloud-Speicher), die auf dem Server gespeichert waren
7. Lücke schliessen und wieder online gehen
Ursache gemäss Nach dem Hack: Ursachenanalyse und Prävention ermitteln, betroffene Plugins aktualisieren oder ersetzen, Härtung umsetzen, WAF aktivieren. Danach freischalten und eng überwachen.
8. Nachbereitung
- Google Search Console: Sicherheitsproblem als behoben melden, Spam-URLs entfernen lassen.
- Blacklist-Entfernung beantragen.
- Prüfen, ob Personendaten betroffen sind: Je nach Fall besteht nach nDSG eine Meldepflicht an den EDÖB bzw. nach DSGVO an die Aufsichtsbehörde.
Weiterführende Artikel
- Anzeichen einer kompromittierten WordPress-Site
- Nach dem Hack: Ursachenanalyse und Prävention
- Backup-Konzept nach 3-2-1 inklusive Restore-Tests