Was eine Web Shell ist
Ein Webserver führt Skripte aus, etwa PHP-Dateien, um Seiten zu erzeugen. Eine Web Shell ist ein solches Skript, nur mit anderem Zweck: Es nimmt Befehle entgegen, die über eine normale Webadresse geschickt werden, und führt sie auf dem Server aus. Damit kann der Angreifer Dateien lesen und ändern, Datenbanken auslesen, weitere Schadsoftware nachladen oder den Server für Spam und Angriffe auf andere nutzen.
Der amerikanische Geheimdienst NSA und die australische Behörde ASD haben 2020 einen gemeinsamen Leitfaden dazu veröffentlicht. Darin beschreiben sie Web Shells als eine der verbreitetsten Formen, sich dauerhaft auf einem angegriffenen Server festzusetzen. Sie betonen auch, dass nicht nur öffentliche Webseiten betroffen sind, sondern ebenso interne Anwendungen und Verwaltungsoberflächen von Netzwerkgeräten.
Wie sie auf den Server kommt
- Sicherheitslücken in Erweiterungen. Bei WordPress und anderen Systemen sind veraltete Plugins und Themes der häufigste Weg. Eine Lücke erlaubt es, eine Datei hochzuladen oder Code auszuführen.
- Ungeschützte Upload-Funktionen. Ein Formular, das Bilder annimmt, aber den Dateityp nicht prüft, nimmt auch ein PHP-Skript an.
- Gestohlene Zugangsdaten. Mit einem FTP-, SFTP- oder Admin-Passwort lässt sich eine Datei einfach ablegen.
- Nachbarn auf demselben Server. Teilen sich mehrere Webseiten ein Benutzerkonto, kann ein Befall von einer Seite auf alle übergreifen.
Wie sie sich tarnt
Web Shells sind selten als solche zu erkennen. Übliche Tricks:
- Dateinamen, die nach Systemdateien klingen, etwa in Ordnern für Plugins, Caches oder Hochladungen,
- verschleierter Code: Befehle werden kodiert, zerlegt oder erst zur Laufzeit zusammengesetzt,
- Einbau in eine bestehende, echte Datei statt einer neuen Datei,
- gefälschte Änderungsdaten, damit die Datei so alt aussieht wie ihre Nachbarn. Der Leitfaden von NSA und ASD warnt ausdrücklich davor, sich auf Zeitstempel zu verlassen,
- mehrere Hintertüren an verschiedenen Stellen, damit nach dem Entfernen einer Datei noch andere bleiben.
Woran man sie erkennt
Vergleich mit einem bekannten sauberen Stand. Die zuverlässigste Methode ist laut NSA und ASD der Abgleich der Dateien auf dem Server mit einer geprüften, sauberen Fassung. Jede Datei, die dort fehlt oder abweicht, ist verdächtig. Bei WordPress lassen sich Kern-Dateien gegen die offiziellen Prüfsummen abgleichen.
Auffälligkeiten in den Zugriffsprotokollen. Aufrufe von Dateien, die sonst niemand aufruft, ungewöhnliche Anfragen mit langen Parametern, Zugriffe zu ungewöhnlichen Zeiten.
Auffälliges Verhalten des Servers. Plötzlicher Mailversand, unerwartete Prozesse, Verbindungen zu fremden Adressen, neue Admin-Konten, Weiterleitungen nur für Besucher von Suchmaschinen.
Suchmuster. Werkzeuge suchen nach typischen Bausteinen, etwa Funktionen, die Code zur Laufzeit ausführen. Das findet viele, aber nicht alle Varianten, weil Angreifer ihren Code laufend abwandeln.
Was nach einem Fund zu tun ist
Der häufigste Fehler ist, die gefundene Datei zu löschen und den Fall für erledigt zu halten. Eine Web Shell ist das Ergebnis eines Einbruchs, nicht seine Ursache. Sinnvoll ist diese Reihenfolge:
- Zustand sichern, bevor etwas geändert wird: Dateien, Datenbank und Protokolle. Sonst lässt sich später nicht mehr klären, wie der Angreifer hereinkam.
- Eintrittsweg finden. Welche Lücke, welches Konto? Solange diese offen ist, kommt der Angreifer zurück.
- Von einem sauberen Stand neu aufbauen, statt den befallenen Bestand zu putzen: Systemdateien und Erweiterungen frisch aus offizieller Quelle, eigene Inhalte geprüft übernehmen.
- Alle Zugänge ändern: Admin-Konten, FTP, Datenbank, Hosting, und die geheimen Schlüssel der Anwendung.
- Beobachten. Protokolle in den Wochen danach gezielt auf Wiederkehr prüfen.
Wird dieselbe Seite ein zweites Mal befallen, ist ein vollständiger Neuaufbau in der Regel die bessere Wahl als eine weitere Bereinigung.
Vorbeugen
- System, Plugins und Themes aktuell halten, Unbenutztes löschen statt nur deaktivieren,
- in Upload-Ordnern die Ausführung von Skripten auf dem Server verbieten,
- jeder Webseite ein eigenes Benutzerkonto geben, damit ein Befall nicht übergreift,
- Zwei-Faktor-Anmeldung für Administratoren, keine geteilten Passwörter,
- regelmäßige Sicherungen, die außerhalb des Servers liegen und einen sauberen Vergleichsstand bieten.
Fazit
Eine Web Shell ist klein, unauffällig und gibt einem Angreifer die volle Kontrolle über die Webseite. Wer eine findet, sollte von weiteren ausgehen und den Eintrittsweg schließen. Der wichtigste Schutz ist ein sauberer, geprüfter Vergleichsstand: Ohne ihn lässt sich weder ein Befall sicher erkennen noch eine Seite verlässlich wiederherstellen.
Quellen
- National Security Agency und Australian Signals Directorate: Detect and Prevent Web Shell Malware, Cybersecurity Information Sheet, April 2020.
- Google Search Central: Spam-Richtlinien, Abschnitt zu gehackten Inhalten.