Meine Webseite wurde gehackt, was nun?

Zuletzt aktualisiert am 25. Dezember 2023 von Lars

website-gehackt

Wenn deine Website gehackt wurde und sich nun plötzlich Schadcode darauf befindet, gilt es einiges zu beachten. In diesem Artikel zeige ich dir, was du wissen und tun musst, wenn deine Webseite gehackt wurde. Besten Dank an Manuel von der nexcon ag, der mir viele entscheidende Hinweise gab.

Einen Hack feststellen

Viele Webprovider scannen ihre Server regelmässig auf Schadsoftware. Insofern sollte man von seinem Provider gewarnt werden. Allerdings ist es auch schon vorgekommen, dass der Scanner eines Providers nicht den ganzen Schadcode feststellen konnte. Verlasse dich daher nicht blindlings auf eine vom Provider übergebene Dateiliste.

Andere Anzeichen können sein:

  • Veränderte Seiten
  • Erhöhter Traffic

Wenn du deine Seite bei den Google Webmaster Tools registriert hast, erhältst du möglicherweise auch von dort eine Warnung. Dann liegt der Befall aber meistens länger zurück.

Infektion durch geknacktes Passwort V 1.0

Untersuche deinen Rechner auf Viren und halte deinen Virenscanner stets aktuell.

Viele Viren und Würmer haben auch Password-Logger mit an Bord. Also Software, die Passwörter aufzeichnet und an einen Server des Angreifers schickt. Das kann natürlich auch dein FTP-Passwort oder das Passwort deines CMS sein.

Bei einem Befall musst du daher sicherstellen können, dass dein lokaler PC nicht verseucht ist und sämtliche Passwörter an die Hacker sendet. Zum "Entseuchen" sind auf it-zeugs.de Artikel erschienen. Schau dir z.B. den Artikel Schädlingsbekämpfung per Hand an.

Lass diesen Infektionsweg nicht aussen vor. Nicht, dass du zuerst deine Webseite bereinigst, neue Passwörter setzt und deine Webseite sofort wieder verseucht bist.

Infektion durch geknacktes Passwort V 2.0

Nutze immer verschiedene komplexe Passwörter.

Es gibt sogenannte Botnets. Das sind virtuelle Netzwerke von verseuchten Rechnern, die über das Internet vernetzt sind. Sie werden von Hackern unter anderem dazu benutzt werden, CMS-Passwörter (vor allem WordPress) mit gesteuerten Passwortversuchen zu knacken. Da die Anfragen von verschiedenen IPs kommen, ist es nicht so einfach möglich, diese abzuwehren.

So oder so ist es sinnvoll, nach einem Befall alle Passwörter zu ändern.

Infektion durch Injection Flaws

Halte dein CMS aktuell und verwende nur Plugins aus sicherer Quelle.

Injecton Flaws entstehen immer dann, wenn z.B. Formulare übermittelten Programmcode ungeprüft ausgeben. Bei SQL-Injections wird SQL-Code übergeben, um an Datenbankinhalte zu kommen, die ein 'normaler User' nicht sehen sollte. SQL ist eine Programmiersprache, mit der man Datenbankabfragen macht. Bei Webscript Injections versucht ein Angreifer dem Webserver Schadcode (z.B. PHP) zur Ausführung unterzujubeln.

Daher solltest du dein CMS aktuell halten und nur Plugins aus sicherer Quelle verwenden.

Infektion durch Cross-Site-Scripting

Halte dein CMS aktuell und verwende nur Plugins aus sicherer Quelle.

Hier wird einer Web-Anwendung falscher Code übergeben. Ohne entsprechende Absicherung wird dieser dann ausgeführt. Beispielsweise könnte man einem Suchformular Javascript-Code übergeben.

Weitere Infos hierzu findest du unter dem Artikel Cross-Site Scripting auf Webmasterpro.

Auf Youtube finden sich viele Tutorials zu dem Thema. Die Zeiten, in denen kleine Seiten von Hack-Angriffen verschont bleiben, sind also entgültig vorbei.

Infektion durch Man-in-the-Middle-Attacke

Sichere deine Webseite möglichst mit SSL ab, das verbessert nebenbei auch dein Ranking, also deine Position im Ergebnis bei der Suche mit einer Suchmaschine wie Google.

Bei der Man-in-the-Middle-Attacke versucht der Angreifer die Kommunikation zweier Partner abzuhören oder  zu manipulieren.

Zugriff auf betroffene Dateien sperren

Wenn deine Webseite gehackt wurde, dann verhindere den Zugriff auf den Schadcode oder nimm die Seite vorübergehend komplett offline.

Wurde die eigene Website gehackt, dann heisst es zum einen kühlen Kopf bewahren, aber auch recht zügig handeln. Fangen sich User über deine Website Schadcode ein, kann dies zu einem massiven Trafficabfall und Vertrauensverlust führen.

Falls vom Provider nicht bereits erfolgt, solltest du den Zugriff auf die befallenen Dateien via Änderung der Berechtigungen verhindern. Falls du unsicher bist, welche Dateien betroffen sind, dann nimm sicherheitshalber die komplette Seite offline.

Die meisten Provider bieten die Möglichkeit, eine Website mit einem Verzeichnisschutz zu versehen. Das ist am schnellsten gemacht.

Überprüfen des eigenen Rechners auf Viren und / oder Trojaner

Prüfe spätestens jetzt deinen Rechner bzw. alle Rechner, mit denen du jemals auf deine Webseite zugegriffen hast, auf Schadsoftware. Falls du nicht weisst wie, schau dir den Artikel Schädlingsbekämpfung per Hand an.

Passwörter ändern

Ändere alle Passwörter und benutze verschiedene komplexe Passwörter.

Nach einem Befall musst Du sicherheitshalber alle Passwörter ändern. Das betrifft insbesondere:

  • FTP
  • CMS
  • Datenbank

Keinesfalls solltest du hierfür überall das gleiche verwenden. Falls es der Provider anbietet, solltest du ausserdem auf SFTP umstellen. So kann der FTP-Verkehr nicht mehr abgehört werden.

Analyse der Logfiles

Versuche anhand der vom Provider übergebenen Daten und der Logfiles den Infektionsweg festzustellen. Leider sind die Logfiles bei jedem Provider anders aufgebaut. In der Regel sind diese via FTP oder über die Administrationsoberfläche downloadbar.

Beispiele:

xferlog_regular.processed 

...enthält das Logfile von archiviertem FTP-Verkehr

error.log 

...enthält Log der Zugriffsfehler.

access_log.stat

...enthält Log der Zugriffe auf den Webspace. Die letztere ist eigentlich mit die interessanteste, da hier recht gut auf seltsame Zugriffe geprüft werden kann. Auffällig sind z.B. "POST" von anderen IPs als der eigenen, aber auch "HEAD". Mit der POST-Methode wird der Webserver angewiesen, Daten zur Speicherung entgegenzunehmen. Aber auch andere Zugriffe sollte man kritisch prüfen, wenn z.B. auf ein Pluginverzeichnis sehr häufig zugegriffen wurde. Als Einstiger hat man es hier leider nicht gerade leicht. Seltsame Einträge können leider einfach auch "nur" Log-SPAM sein. Kommt ein Zugriff sehr häufig vor, wird er in den Logs, die man per Web aufrufen kann, mit einem Link aufgeführt. So kommt der Spamer zu einem Backlink, von dem er hofft, dass dieser seine eigene Seite weiter nach oben bringt (was aber nicht stimmt).

Beispiele

nnn.nnn.nnn.nnn - - [03/Sep/2014:01:22:08 +0200] "POST /golf/Vuissens/Fotogallerie/zoom/Vuissens/a6db048d41.php 
HTTP/1.1" 200 435 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; 
Trident/5.0)"
nnn.nnn.nnn.nnn - - [10/Nov/2014:03:07:56 +0100] "HEAD /admin/fckeditor/editor/filemanager/connectors/asp/upload.asp 
HTTP/1.1" 401 346 "-" "-"

Gezielt suchen sollte man nach POST-Aufrufen. Alle Zeilen mit einem 200 nach dem Dateinamen wurden extern ohne Fehler aufgerufen. Also können diese Skripte attackierbar oder infiziert sein.

Datenbank überprüfen

Ich hatte bisher den Fall noch nie, aber Schadcode kann sich auch in der Datenbank verstecken. Normalerweise sollte dieser mit folgender SQL-Abfrage gefunden werden können:

SELECT * FROM tabelle WHERE plugincode LIKE '%base64%'

-tabelle- musst du durch den Namen sämtlicher relevanten Tabellen ersetzten.

Applikationen aktualisieren

Sind alle Applikationen auf der Website aktuell? Dies betrifft insbesondere das CMS. Falls nicht, aktualisiere alles. Schau dich aber auch in den einschlägigen Foren um, ob nicht bereits Lücken von neuen Versionen bekannt sind.

"Tante" Google fragen

Gibt es andere Betroffene? Dank Google habe ich in einem Fall z.B. Hinweise gefunden, dass auch in der aktuellsten Version eines CMS ein Plugin Sicherheitsrisiken beinhaltet.

Vorkehrungen für die Zukunft

Sofortmassnahmen

  • Entsprechende Beweise sichern (bei PHP-Schadcode sollte man die recht gefahrlos auf einen Rechner sichern können, auf dem kein PHP läuft)
  • Backup vor der Infektion einspielen

Abweichung von Standards

Schau, dass du möglichst nirgendwo den Standard-Admin-User verwendest, sondern einen eigenen User (z.B. MySecUser - nein den verwende ich selbst nirgends) verwenden.

Internetpräsenz regelmässig auf veraltete Systeme prüfen

Aktualisiere alles, was du aktualisieren kannst. In der Regel ist das CMS hier der erste Ansatzpunkt. Prüfe, ob es eine neue Version gibt und installiere diese. Überprüfe das zukünftig regelmässig, auch ohne Befall der Webpräsenz! Falls dein CMS eine automatische Update-Funktion hat, aktiviere diese.

htaccess Magic

Über die .htacces-Datei kann man einige tolle Dinge anstellen, die zur weiteren Absicherung dienen.

Mit...

  order allow,deny 
  deny from nnn.nnn.nnn.nnn 
  allow from all

...wird die IP-Adresse nnn.nnn.nnn.nnn vom Zugriff ausgeschlossen. Gegen Botnets hilft das allerdings nicht viel, da diese von unterschiedlichen IPs kontrolliert angreifen.

Mit

order allow,deny
deny from 192.168
allow from all 

...wird ein ganze IP-Bereich gesperrt.

Mit

<FilesMatch ".php$">
Order Allow,Deny
Deny from all
</FilesMatch>
<FilesMatch "index[0-9]?.php$">
Order Allow,Deny
Allow from all
</FilesMatch>
<FilesMatch "veriword[0-9]?.php$">
Order Allow,Deny
Allow from all
</FilesMatch>

...wird der Zugriff auf alle php-Dateien ausser index.php und veriword.php gesperrt.

Für das CMS MODX braucht es noch die Freischaltung der login.processor.php, daher noch folgendes ergänzen:

<FilesMatch "login.processor[0-9]?.php$">
Order Allow,Deny
Allow from all
</FilesMatch>

Berechtigungen

In der Regel liegen Webpräsenzen auf einem Unix-artigen Betriebssystem, wie z.B: Linux, Solars, FreeBSD. Die Berechtigungen werden hier über 3 oktale Zahlen definiert. In Filezilla sieht man die Berechtigung, wenn man mit der rechten Taste auf eine Datei klickt und "Dateiberechtigungen..." wählt.

  • Die erste (vorderste) Zahl zeigt, was der Eigentümer darf
  • Die zweite Zahl zeigt, was die besitzende Gruppe darf
  • Die dritte Zahl zeigt, was alle übrigen dürfen
  • 4 - lesen
  • 5 - lesen und ausführen
  • 6 - lesen und schreiben
  • 7 - lesen, schreiben und ausführen

Bei den meisten Hostern läuft das Web unter dem FTP-Account. Auf solchen Systemen kann man für Dateien 644 und Verzeichnisse 755 als Berechtigungen setzen. Auf keinen Falls sollte 777 als Berechtigungen gesetzt werden, da sonst über ein gehackten Account auf dem gleichen Server (der gar nichts mit deiner Webpräsenz zu tun haben muss), Dateien verändert werden können.

Und sonst?

Bei einigen Providern kann man einstellen, dass per http von PHP-Skripts aus keine Dateien hochgeladen werden dürfen, was die Sicherheit ebenfalls vergrössert.

Ich checke es nicht!

Das Bereinigen einer gehackten Website ist leider keine triviale Angelegenheit und es bedarf einigen Zeitaufwand, sich hier reinzudenken. Wenn du hier nicht klar kommst, ist es ratsam, sich die Unterstützung eines Webmasters zu holen.

Es gibt auch Firmen wie sucuri, die sich auf die Bereinigungen von Websites spezialisiert haben. Ich selbst habe nichts mit sucuri zu tun und bekomme nichts für diesen Link. Nachdem, was ich gehört habe, machen die aber wohl einen guten Job.

Quellen, weitere Infos

Du willst meine Arbeit unterstützen? Dann freue ich mich über eine kleine Spende!

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert