Facebook
Twitter
Google+
Kommentare
0

Manipulationen erkennen – Bemerken dass man gehackt wurde

In viele Webseiten wird heutzutage eingebrochen und es werden Änderungen an der Webseite durchgeführt. Das kann die selbst programmierte Webseite sein bei der man eine Lücke eingebaut hat, das kann aber auch ein installiertes WordPress oder Joomla sein.

Häufig sind solche Angriffe nicht geziehlt, sondern werden mittels automatischer Scripte durchgeführt, die dann auf allen anfälligen Servern kleine Änderungen an den Dateien durchführen:

– Phishing Webseiten werden auf den Server gelegt
– in die Webseite wird bösartiger Code eingebaut der mittels Flash, Javascript, Windows Media Player oder anderen Techniken versucht einen Drive-By-Download bei den Besuchern zu platzieren
– die Webseite wird “nur” defaced, sprich ein witziges Bild wird auf die Webseite gesetzt die den Besitzer blossstellen soll
– an strategisch gut platzierte Stellen im Code werden mail() Aufrufe eingefügt die beispielsweise die Klartextpasswörter an den Angreifer senden
– es werden kleine Scripte abgelegt wie beispielsweise PHProxy oder ein Spam-Mail-Script
– heutzutage wird auch gern die .htaccess Datei verändert, mit der der Suchmachinen-Traffic auf eine andere Seite umgeleitet wird, beispielsweise so:

RewriteEngine On
RewriteCond %{HTTP_REFERER} .*google.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*ask.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*yahoo.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*altavista.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*msn.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*netscape.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*aol.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*lycos.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*search.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*metacrawler.*$ [NC,OR]
RewriteRule .* http://hackerwebseite.de [R,L]

Falls die Angreifer Dateien verändern oder hinzufügen können wir das mit einem geeigneten Programm erkennen. Falls der bösartige Code in die Datenbank geschrieben wird hilft die hier vorstellte Lösung nicht.

Die strategisch beste Lösung ist die Überwachung auf Betriebssystemebene. Dazu gibt es Programme wie die unten aufgeführten die eine Liste von Dateien und Ordnern abarbeiten und die Dateien auf Veränderungen prüfen. Standardmäßig sind das Dateien in denen häufig Rootkits installiert werden wie /usr/bin/sh, /usr/bin/ls, /usr/bin/ps usw. aber auch eigene Ordner können auf Änderungen überwacht werden. Bekannte Programme sind Tripwire, AIDE, Osiris, Samhain, iWatch, und OSSEC.

Was aber macht man wenn man ein Webhosting-Paket hat? In diesen Fällen kann man sein Webverzeichnis nicht von solchen Programmen überwachen lassen, sondern muss sich selbst darum kümmern, mit natürlich einigen Nachteilen.

Ich habe auf GitHub das Projekt FileWatcher gestartet, eine PHP Klasse die Dateien und Ordner auf Änderungen überprüfen kann, und bei Änderungen Alarm schlägt. Wird dann so genutzt:

<?php

require_once 'FileWatcher.php';

$fileWatcher = new FileWatcher();
$fileWatcher->readConfig('FileWatcher.config.php')
            ->checkNow();

Die Konfiguration könnte beispielsweise so aussehen (hier für ein Windows-System):

$config = array(
    'password'              => 'secretPassword',
    'includePaths'          => array('C:\\Temp', 'D:\\temp'),
    'excludeFolderList'     => array('C:\\Temp\\projekt'),
    'excludeExtensionList'  => array('jpg', 'png', 'pdf'),

    'hashMasterFilename'    => 'FileWatcher.MasterHashes.txt',
    'logFilename'           => 'FileWatcher.log',
    'overwriteMasterFile'   => true,

    'alertEmailAddress'     => 'alerts@domain.de',
    'alertEmailSubject'     => 'ALERT: File hashes on your server have changed',
    'alertEmailMethod'      => 'mail',  // mail or smtp
    'alertEmailSmtpServer'  => '1.2.3.4',
    'alertEmailSmtpUser'    => 'XXXX',
    'alertEmailSmtpPass'    => 'XXXX',
);

Es ist die erste Version, man kann natürlich noch einige Features hinzufügen wie alternative Benachrichtigungswege (Jabber, SMS?), oder eine Änderungsprüfung anhand des Last-Modified-Dates statt einem SHA1-Hash, das dürfte bei vielen großen Dateien deutlich schneller sein.

Man könnte sich auch an Extensions wie FAM oder Inotify heranwagen, interessant um sehr schnell Änderungen an Dateien mitzubekommen, aber dazu muss man diese Extensions auch installieren können.

In der README sind noch einige weitere ToDos.

Tut ihr irgendetwas in der Richtung, fremde Veränderungen auf euren Servern zu entdecken?

PS: Falls nur ein WordPress Blog betrieben wird hilft evtl. auch der Einsatz des Plugins File Monitor Plus.

flattr this!

Über den Autor

PHP Gangsta

Der zweitgrößte deutsche, eher praxisorientierte PHP-Blog von Michael Kliewe veröffentlicht seit Mitte 2009 Artikel für Fortgeschrittene.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen