Backdoor
# Backdoor

Backdoor (auch Trapdoor oder Hintertür) bezeichnet einen (oft vom Autor eingebauten) Teil einer Software, der es Benutzern ermöglicht, unter Umgehung der normalen Zugriffssicherung Zugang zum Computer oder einer sonst geschützten Funktion eines Computerprogramms zu erlangen.

Ein Beispiel sind Universalpasswörter für ein BIOS oder eine spezielle (meist durch einen Trojaner heimlich installierte) Software, die einen entsprechenden Fernzugriff auf den Computer ermöglicht.

## Unterschied zwischen Backdoor und Trojaner

Als Trojanisches Pferd, kurz Trojaner, wird ein Computerprogramm oder Skript bezeichnet, das sich als nützliche Anwendung tarnt, im Hintergrund aber ohne Wissen des Anwenders eine andere Funktion erfüllt. Das einfachste Beispiel dafür ist ein schädigendes Programm, welches Dateien des Benutzers löscht, dessen Dateiname aber auf eine andere Funktion schließen lässt, wie lustiger_Bildschirmschoner.exe. Dabei ist es unerheblich, ob der „lustige Bildschirmschoner“ tatsächlich auch einen Bildschirmschoner anzeigt, während er die Daten zerstört, oder ob er einfach nur die Daten zerstört. Die Nutzung des irreführenden Dateinamens genügt, um das Programm als Trojanisches Pferd zu klassifizieren.

Trojaner können auch dazu dienen, Backdoorprogramme zu installieren, müssen diese jedoch nicht notwendigerweise enthalten. Beherbergt und installiert ein Trojaner ein eigenständiges Backdoorprogramm, greift der Eindringling auf das installierte Backdoorprogramm zu und nicht auf den Trojaner. Der Trojaner diente in diesem Fall lediglich als Hilfsprogramm für die heimliche Installation. Der Trojaner kann danach jederzeit gelöscht werden, ohne dass dies einen Einfluss auf die weitere Funktion des Backdoorprogramms hat.

Allerdings hält niemand den Entwickler eines Backdoorprogramms davon ab, sich der Technik eines Trojaners zu bedienen. Bei einem Backdoorprogramm, das sich selbst als nützliche Anwendung tarnt (beispielsweise als Desktopuhr, die heimlich einen Fernzugriff auf den Computer ermöglicht), handelt es sich um eine Mischform zwischen einem Backdoor und einem Trojaner. Wird ein solches Programm beendet oder gar gelöscht, so steht auch die heimliche Backdoorfunktion nicht mehr zur Verfügung.

## Beispiele

Eine Variante besteht darin, in einem System fest vorgegebene, nur dem Ersteller des Systems bekannte Passwörter oder andere versteckte Funktionen einzubauen, die einen Zugriff ohne die sonst übliche Authentifizierung ermöglichen. Ein bekanntes Beispiel hierfür ist der von Award Software über mehrere Jahre vergebene Hash-Code, der mit dem BIOS-Universalpasswort „lkwpeter“ bedient wird.

Zur Software, die einen Fernzugriff auf den Computer ermöglicht, zählen z. B. Programme wie Sub Seven und Back Orifice.

1999 wurde eine Variable namens NSAKEY in Windows gefunden und ebenfalls eine Backdoor vermutet.

Auch die Router von Cisco Systems, die weite Teile des Internetverkehrs abwickeln, sind mit Backdoors für US-Geheimdienste versehen.

In Kinofilmen wurden Backdoors einer breiten Masse bekannt gemacht. So hackt sich beispielsweise der Teenager David Lightman in WarGames – Kriegsspiele mithilfe eines Backdoor-Passworts in den Kriegssimulator WHOPR ein. In Jurassic Park versucht sich der Ingenieur Ray Arnold ebenfalls mithilfe eines Backdoor Passworts in ein Computersystem zu hacken.

## Schutz vor einem Backdoor durch Überprüfbarkeit des Quelltextes

Bei Softwareprodukten ist eine freie Einsicht in deren Quellcode ein Aspekt der Computersicherheit. Dabei gilt es unter anderem die Gefahr zu minimieren, dass ein Produkt Funktionalitäten enthalten kann, von denen der Anwender nichts wissen soll, wie die heimliche Funktion einer Backdoor.

Quelloffene Software lässt sich von der Öffentlichkeit dahingehend überprüfen und darüber hinaus mit rechtlich unbedenklichen Mitteln auf Schwachstellen untersuchen, die auf diese Weise schneller geschlossen werden können.

### Grenzen

Quelloffene Software kann zwar durch jeden mit entsprechender Sachkunde selbst auf heimliche Funktionalitäten und Schwachstellen hin untersucht werden, was jedoch nicht bedeutet, dass die bloße Verfügbarkeit des Quelltextes ein Garant dafür ist, dass dieser von den Computernutzern hinreichend überprüft wurde. Über einen langen Zeitraum bestehende Sicherheitslücken in quelloffener Software weisen auf diesen Umstand hin. Zudem ist eine geschickt verbaute Hintertür auch mit fundierten Fachkenntnissen mitunter schwer zu erkennen. Der Zeitaufwand für eine Analyse ist bei komplexen Programmen oft beträchtlich.

Ob das von einer externen Quelle bezogene ausführbare Programm tatsächlich mit dem veröffentlichten Quellcode erstellt wurde oder ob hier nicht zuvor eine Hintertür eingebaut oder eine andere Veränderung vorgenommen wurde, ist für den Anwender oft schwer zu erkennen. Auch hierfür gilt, dass mit entsprechender Sachkunde wenigstens in der Theorie eine Überprüfung möglich ist. Dies gestaltet sich jedoch in der Praxis oft als schwierig, da die beim Kompilieren entstehenden Binärdateien gerade bei größeren Codebasen durch sehr viele Faktoren beeinflusst werden können und es im Allgemeinen keine zuverlässige Möglichkeit gibt, herauszufinden, unter welchen Bedingungen eine vorliegende ausführbare Datei entstanden ist.

Eine Methode, diesen Schritt des Kompilierens abzusichern, ist, reproduzierbare Builds zu erstellen. Dabei wird die Software reproduzierbar bzw. deterministisch kompiliert und so kann jeder durch eigene Kompilierung nachprüfen, dass das Kompilat aus dem entsprechenden Quellcode gebaut wurde und während des Build-Prozesses keine Hintertür eingeschleust wurde.

1984 stellte der Computer-Pionier Ken Thompson während seiner Turing-Award-Rede ein Beispiel für eine Hintertür vor, die selbst bei der Verfügbarkeit des Quelltextes schwer aufzuspüren wäre. Die Rede war von einem login-Programm für Unix, das derart verändert wird, dass es zusätzlich zum normalen Passwort auch ein Generalpasswort akzeptiert. Diese Hintertür könne, so Thompson, ein entsprechend manipulierter C-Compiler beim Übersetzen des login-Programms automatisch hinzufügen, wodurch der Quelltext des login-Programms keinen Hinweis auf eine Manipulation liefert. Das Vorgehen ließe sich auf eine weitere Instanz verschieben, die dafür zuständig ist, den C-Compiler selbst in eine ausführbare Datei zu übersetzen, wodurch die Manipulation dann nicht einmal mehr aus dem Quellcode des C-Compilers ersichtlich wäre.

