|
| |
Hack-Attacken
Geschrieben von Marc Ruef <marc.ruef@computec.ch>
für Computec,
Kryptocrew,Digital
Rebelz und Busch-Hacker
Version 1.0b 28. Juni 2000
1. Inhaltsverzeichnis
1. Inhaltsverzeichnis
2. Brute-Force
3. Buffer-Overflows
4. IP-Spoofing
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!
| |
Einführung (Ruef) |
|
Ihr Name: Besucher (nicht angemeldet).
Online: 1 aktive User.
|
|
Anmelden | Abmelden |
|
|
Benachrichtigen bei Änderungen: |
|
|
|
|
Antivirus-Infos: |
|
|