Hat man sich erst mal davon überzeugt, dass die eigene Web-Seite mit Schadsoftware infiziert wurde, muss diese gefunden und bereinigt werden. In diesem Artikel möchten wir Ihnen zeigen, wie Sie ohne zusätzliche Antiviren-Software Schädlinge finden und eliminieren können.
Wichtig: Diese Hinweise dienen nur der „Ersten Hilfe“ und ersetzen nicht die Arbeit eines Systemadministrators oder Sicherheitstechnikers. Sollte Ihre Web-Seite gehackt worden sein, empfehlen wir in jedem Fall das Hinzuziehen von professioneller Hilfe.
Malware bei WordPress und anderen CMS entfernen (ohne zusätzliche Antivirus-Software)
Die nachfolgenden Tipps setzen voraus, dass Sie Zugriff auf Ihren Hosting-Server bzw. auf dessen Linux-Shell haben. Sofern Sie Ihren Server nicht selber administrieren, sondern ein Managed-Hosting Produkt verwenden, können Sie meist trotzdem von Ihrem Hosting-Provider einen Shell-Zugang erhalten.
Hinweis: Bevor Sie mit den nachfolgenden Schritten beginnen, sollten Sie eine Sicherung Ihrer Daten anlegen!
Dateien auf Änderungen überprüfen
Zuerst können Sie prüfen, welche Dateien zuletzt verändert wurden. Der nachfolgende Befehl listet alle Dateien auf, welche in den letzten sieben Tagen verändert wurden und dessen Dateiendung mit „ph“ beginnt (um .php und .phtml abzudecken).
find . -name ‘*.ph*’-mtime -7
Natürlich kann ein Angreifer Ihnen auch zuvorkommen und die Attribute der Dateien zurücksetzen. Um sich alle Dateien auszugeben zu lassen, bei denen die Attribute in den letzten sieben Tagen verändert wurden, können Sie den nachfolgenden Befehl verwenden.
find . -name '*.ph*' -ctime -7
Möchten Sie einen anderen Zeitraum überprüfen, können Sie diesen wie folgt angeben. Im nachfolgenden Beispiel wird der Zeitraum zwischen dem 25. und 30. Januar 2019 abgefragt.
find . -name '*.ph*' -newermt 2019-01-25 ! -newermt 2019-01-30 -ls
Manchmal kann es hilfreich sein, nach bestimmten Inhalten in Ihren Dateien zu suchen, um Schädlinge ausfindig zu machen. Mit dem folgenden Befehl können Sie prüfen, ob Ihre Dateien einen bestimmten String enthalten (beispielsweise eine URL).
grep -ril 'example.com/google-analytics/jquery-1.6.5.min.js' *
Berechtigungen überprüfen
Ein Angreifer könnte die Datei-Berechtigungen manipuliert haben. Daher empfiehlt es sich, zu überprüfen, ob alle Dateien und Verzeichnisse die Berechtigungen haben, welche sie haben sollen. Hier kann es hilfreich sein, wenn Sie die Ergebnisse mit einer früheren Sicherung abgleichen können. Mit dem nachfolgenden Befehl können Sie nach Dateien suchen, welche nicht die Berechtigung 644 (Chmod) haben.
find . ! -perm 644 -type f
Ob alle Verzeichnisse die Berechtigung 755 haben, können Sie wie folgt überprüfen. Es werden Ihnen alle Verzeichnisse ausgegeben, welche nicht die Berechtigungen 755 haben.
find . ! -perm 755 -type d
Aktive Prozesse überprüfen
Ein Blick auf die aktiven Prozesse gibt Aufschluss darüber, welche Skripts gerade ausgeführt werden. Dies kann Ihnen helfen, verdächtige Aktivitäten zu identifizieren. Mit dem folgenden Befehl können Sie sich alle laufenden PHP-Prozesse ausgeben lassen.
ps -ax | grep php
Verzeichnisinhalte überprüfen
Sie sollten überprüfen, ob die Verzeichnisinhalte schlüssig sind. Beispielsweise sollten in einem Verzeichnis für Bilder keine PHP-Dateien zu finden sein. Auch sollten Sie einen Blick in Systemverzeichnisse wie cache, tmp, backup, log usw. werfen. Solche Verzeichnisse werden häufig nicht beachtet und sind daher der ideale Ort für Hacker, um Schadsoftware zu verstecken. Mit dem nachfolgenden Befehl lässt sich beispielsweise herausfinden, ob in dem Bilder-Verzeichnis /images PHP-Dateien enthalten sind.
find ./images -name '*.ph*'
Dateien mit unspezifischen Namen
Achten Sie auf Dateien mit merkwürdigen Namen. Dateien mit unspezifischen Bezeichnungen sollten Sie unbedingt genauer ansehen. Nachfolgend ein paar Beispiele für solche Datei-Namen, welche Ihre Aufmerksamkeit erregen sollten:
- hqqfqz.php
- ath.php
- kirill.php
- a468rg.php.php (doppelte Dateiendung)
- tryag.php
- php (keine Dateiendung)
Tipp: Bereits beim Überprüfen der aktiven Prozesse sollten Sie auf solche Bezeichnungen achten.
Außerdem sollten Sie nach Dateien schauen, welche Kopien von anderen Dateien darstellen sollen. Folgende Beispiele wären einen Blick wert:
- index9.php
- wp3-login.php
Dateien mit ungewöhnlichen Dateiendungen
Bei CMS, die auf PHP basieren wie WordPress oder Joomla, sollten Sie vor allem Dateien mit der Endung .php auf Ihrem Webspace finden. Inhalte mit anderen Dateiendungen sollten Sie dagegen überprüfen. Die folgenden Dateiendungen wären eher untypisch für solch eine Web-Seite:
- .py (Python Dateiendung)
- .rb (Ruby Dateiendung)
- .pl (Perl Dateiendung)
- .cgi (CGI Dateiendung)
- .so (Shared object Dateiendung)
Sie können auch hier mit dem nachfolgenden Befehl nach Dateien suchen, welche nicht auf .php enden.
find . -name ‘*.ph*’
Dateiattribute die vom Standard abweichen
Neben den Dateiberechtigungen, sollten Sie auch andere Attribute wie Besitzer und Gruppe einer Datei überprüfen. Diese sollten nicht vom Standard Ihres Web-Servers abweichen. Auch sollten Sie das Erstellungsdatum von Dateien prüfen. Hier wäre auffällig, wenn ein solches Datum vor Erstellung der eigentlichen Web-Seite liegt.
Server-Logs auswerten
Die Auswertung von Log-Dateien ist ein wirksames Mittel, um Schadsoftware zu finden. Außerdem können die Aufzeichnungen Hinweise darauf geben, wie ein Angreifer eingedrungen sein könnte. Folgende Informationen können aus den Server-Logs unter anderem entnommen werden:
- Die access_log und error_log Dateien können Aufschlüsse darüber geben, wie ein Angreifer eingedrungen sein könnte. Wenn Sie bereits schädliche Dateien auf Ihrem Webspace gefunden haben, können Sie das Erstellungsdatum dieser Dateien als Anhaltspunkt für die Suche in den Log-Files verwenden.
- In den Mail-Logs können Informationen darüber zu finden sein, ob Spam über Ihren Server versendet wird.
- Mit der richtigen PHP-Konfiguration, können Sie Skripte auf Ihrem Server ausfindig machen, über die E-mails gesendet werden. Mehr dazu finden Sie hier.
- Die Log-Files geben Aufschluss darüber, welche FTP-Operationen durchgeführt wurden (xferlog).
Datenintegrität überprüfen
Um die Integrität Ihrer Daten zu prüfen, gibt es verschiedene Möglichkeiten. Ein einfaches Mittel wäre das händische Abgleichen von Änderungen auf Ihrem Webspace. Mit dem nachfolgenden Befehl können Sie eine Textdatei anlegen, welche alle Dateien Ihres Webspaces auflistet. Den Inhalt der Datei können Sie später gegen den Inhalt einer neueren Version abgleichen (beispielsweise mit diff).
ls -lahR > original_file.txt
Der Nachteil an dieser Methode ist, dass Sie nicht automatisch über Änderungen informiert werden. Die bessere Lösung wäre die Implementation einer Sicherheitslösung zur Datenintegrität, welche Änderungen überwacht und Sie darüber informiert. Für Linux gibt es dafür verschiedene Lösungen:
Um solche Lösungen zu verwenden ist allerdings ein Server-Zugang erforderlich, welchen Sie nicht immer haben (beispielsweise bei Shared-Hosting). Als Alternative bietet sich die Verwendung von CMS-Plugings an, welche Änderungen überwachen. Solche Plugins gibt es für viele gängige CMS wie WordPress, Joomla usw.
Gehackte Web-Seite bereinigen mit Malware-Scanner
Eine große Hilfe bei der Suche nach Schadsoftware können Malware-Scanner sein. Auch wenn diese keinen hundertprozentigen Schutz bieten können, sind moderne Lösungen in der Lage, bekannte Bedrohungen zuverlässig zu erkennen und ggf. auch automatisch zu bereinigen. Wir verwenden bei unseren Web-Hosting und Managed-Server Produkten den Antivirus- und Malware-Scanner ImunifyAV, welcher kostenfrei allen Kunden zur Verfügung steht. Mehr zu diesem Thema finden Sie hier.