Computerjockey

Hack-Attacken


2. Brute-Force

Brute-Force gilt als die einfachste und primitivste Methode ein Passwort herauszufinden und ist nur das stupide Durchprobieren aller möglichen Zeichenkombinationen. Von enormen Vorteil ist ganz sicher der Besitz einer Liste aller gültigen IDs des Systems, da sonst die Anzahl der Möglichen Benutzerkennung-Passwort-Kombinationen exponentiell die nötigen Versuche für einen positiven Zugriff erweitert würden. So oder so gilt diese Attacke als sehr zeitaufwändig, und wird meist nur von ungeübten oder verzweifelten Angreifern eingesetzt.

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 Passwort 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. Es ist übrigens meist sinnlos, eine Bruteforce-Attacke auf die Root-ID zu starten. Zwar existieren standartgemäss in allen Unix-Systemen ein solcher Super-User, jedoch ist dieser Account aus sicherheitsgründen standartgemäss für Remote-Logins (Telnet und FTP) gesperrt.

Eines der besten Programme für einen automatisierten Angriff einen per Netzwerk erreichbaren, durch Passwort geschützt Dienst zu kompromittieren ist das Windows-Programm "UnSecure". Dessen fündig wird man ohne grössere Probleme im World Wide Web. Mit diesem Tool lassen sich individuell alle Ports attackieren, wodurch ein Angriff auf FTP (Port 21), SSH (Port 22), Telnet (23), HTTP (Port 80) und POP3 (Port 110) realisiert werden kann. Um UnSecure zu benützen benötigt man jedoch die IP-Adresse des Ziel-Hosts, was vielen Script-Kiddies in ihren Kinderschuhen Probleme bereiten sollte. Ab Version 1.2 unterstützt UnSecure einige sehr vorteilhafte Funktionen: Zum einen ist es möglich, nach dem gewalttätigen Disconnect des Hosts wieder automatisch einen Reconnect durchzuführen. Dadurch ist auch ein Attackieren eines Servers möglich, der eine Schutzfunktion aktiviert hat, welche nach mehrmaliger Eingabe eines falschen Passworts die Verbindung trennt. Probleme gibt es, wenn statt einem Disconnect nur eine erweiterte Wartezeit eingeschoben wurde: Das Programm unterwirft sich eigener Fehlfunktionen. Ausserdem erlaubt das Tool nun auch noch automatisches Speichern nach jeweils 100 Versüchen. So kann bei einem Absturz direkt dort weitergemacht werden, wo man unterbrochen wurde. Das eignet sich hervorragend um die billigeren Nacht- und Wochenend-Tarife als Dial-Up-Anwender auszunutzen.

Das reine HTTP-Pendant zu Unsecure heisst WWWHack, und steht an einigen Ecken im Internet zum Download bereit. Die offizielle Homepage von WWWHack war/ist unter http://members.xoom.com/jimrand/download.html erreichbar. Die Seite war bis vor kurzem down, und wurde nun direkt von Xoom gelöscht. Der Programmierer von WWWHack muss sich wohl oder übel eine neue Location für den Vertrieb seines Tools suchen. Dieses Programm kann hervorragend für das ausbooten sogenannter HTACCES-Passwortabfragen benutzt werden, die standartmässig auf vielen UNIX-Servern - dieses System wurde ursprünglich beim Apache-Server eingeführt - benutzt werden und ganz normal auf TCP-Port 80 kontaktiert werden müssen. Auch können Angriffe auf (kombinierte) eingebettete Java- bzw. CGI-Abfragen in HTML-Dokumenten durchgeführt werden, wobei die Konfiguration sich als ziemlich schwierig herausstellt, wenn man kein versierter HTML- und HTTP-Kenner ist.

Es werden auch diverse Remote-Tools für Brute-Force-Angriffe auf Calling-Cards, Router oder VPNs benutzt. Daher kann man sagen, dass überall, wo ein System mittels Passwort geschützt ist, diese Angriffsfläche mit dem eingesetzten System automatisch existent wird. Doch dies gilt nicht nur für externe Angriffe. Es gibt diverse Programme, die Passwort-Dateien verschiedenster Betriebssysteme und Programme knacken können. Auch existiert ein sehr effizientes Tool zum decodieren von mit PGP verschlüsselten Texten.

3. Buffer-Overflows

Im 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.

Buffer-Overflows 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 Buffer-Overflows 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-Daemon Sendmail 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 Puffer 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" Programm-Code 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 Maschinensprache Assembler von der Systemarchitektur und dem Betriebssystem abhängig ist, und daher in einigen elementaren Punkten varieren kann. Ein Buffer-Overflow 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 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.

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-Entwicklet 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).

4. IP-Spoofing

Diese 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" ans Herz gelegt: http://www.computec.ch/buecher/data_zone/index.html.

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 RFC791 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 eines 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 die-ses 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 Sicher-heit 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.


Nähere Informationen zu diesen Angriffsformen und den damit in Zusammenhang stehenden Hintergrundinformationen finden sich vorzüglich auf den Seiten http://www.computec.ch/, http://www.kryptocrew.de/, http://www.digreb.tsx.org/ und http://www.busch-hacker.de/ im World Wide Web, und in den Büchern "Das Anti-Hackers-Buch", "Hackers Guide", "Linux Hackers Guide" und "Data Zone".

Dieser Text ist unverfälscht frei kopierbar!
Marc Ruef <mailto:marc.ruef@computec.ch?subject=Hack-Attacken>
http://www.computec.ch/
Geschrieben von Marc Ruef < mailto:marc.ruef@computec.ch?subject=Hack-Attacken>
für Computec, Kryptocrew, Digital Rebelz und Busch-Hacker
Version 1.0b 28. Juni 2000
  Top
Letzte Änderung an dieser Datei: 21 Nov 2017 00:43     © 2002 Computerjockey