ARP, Sniffer, Beispiele für Passwort-Angriffe im Windows Netzwerk

Hier mal ein kleines Praxisbeispiel, wie man einfache Passwortangriffe in Windowsnetzwerken durchführen kann.

Dazu baue ich ein simples Netzwerk auf, mit einem Windows Server mit ADS, einem Client und einem Angreifer PC.


Einfache Testumgebung

Server läuft unter Windows Server 2003, die Clients laufen unter Windows XP.

Der Client ist in die Domäne eingebunden (daxnet.intern). Einen DHCP Server habe ich nicht installiert, IP Konfigurationen sind statisch.

Ich teste Passwortangriffe in allen erdenkbaren Kombinationen, also ADS, SMB usw..

Angriffe mit Brutus und Hydra

Diese Tools bieten auch die Möglichkeit, Passwort Angriffe auf Windows Dienste auszuführen, was ja releativ einfach sein sollte. In diesem Fall versuche ich mein Glück auf SMB.

Es handelt es sich hier lediglich um Proof-of-Concept Angriffe, komlexe Namen- und Passwortkombinationen lassen sich mit diesen Angriffen sowieso nur schwer herauskriegen.

Ich lege ein Share test an, auf das Jeder Leserechte hat. Unter den Sicherheitseinstellungen haben Benutzer ebenfalls Leserechte. Der Benutzer otto mit dem Passwort HalloWelt-10 ist Mitglied von Benutzer.

Es ist schon relativ unwahrscheinlich, das mit so einem Passwort eine Wörterbuch- oder eine Bruteforce Attacke erfolgreich sein kann (es gibt ja die Kennwortrichtlinien, die automatisch aktiviert sind). Aber -> Proof-of-Concept, das Passwort steht natürlich in meinem Wörterbuch.

 

Brutus

Keine Probleme mit Brutus, das ganze dauert nur wenige Sekunden (819 Wörter, Benutzer vorgegeben).

Im Bruteforce Modus schafft Brutus ca. 60 Angriffe / Sekunde (unter VMWare Server 2 emulierte Umgebung), das lohnt evtl. dann also auch, das sind immerhing über 10 Mio. Angriffe an einem Tag.

Brutus ist also dazu geeignet (im Gegensatz zu manchen anderen Angriffen) und einfach zu bedienen.

 

Hydra

Mit Hydra ist es auch nicht schwer:

Und es geht auch etwas schneller als mit Brutus. Ich habe die words.txt vom vorhergehenden Versuch mit Brutus kopiert.

 

Fazit

Mit einer gescheiten Benutzerliste / Passwortliste und evtl. noch etwas Wissen über das Netzwerk kann ein Angreifer mit etwas Geduld schon etwas erreichen.

 

 

Angriffe mit Cain & Abel

Das schöne an C&A ist, das es neben einem Passwortsniffer noch eine sehr einfache Möglichkeit für APR bietet.

Das heißt, das ein Angreifer den Netzwerkverkehr unbemerkt auf seinen Rechner umleiten kann, um so eben an sensible Informationen zu kommen. Außerdem kann ein Angreifer auch gleich noch seine MAC Adresse fälschen um seine Spuren zu verschleiern (MAC-Spoofing).

Zur genaueren Funktionsweise siehe auch die Hilfe von C&A und [1], [2].

 

Hier eine ganz kurze Step-by-Step Anleitung um ARP zu konfigurieren:

  • Evtl. muß man in das Fenster in dem Bereich in der Fenstermitte klicken (weiße Fläche unter Status, blauer Punkt)
  • Dann auf das + klicken

Hier der neue Dialog

Die Adresse auswählen, die geARPt werden soll.

Dann APR und Sniffer aktivieren: Zur Aktivierung müssen die Schaltflächen bei den blauen Punkten aktiviert sein.

Und schon wird gesnifft.

 

 

Aus dem Cache von Domain Client PCs

Genauere Anleitung siehe [4].

Benötigete Tools:

john-1.6.37-mscache-.zip

-> am besten danach suchen

und cachedump.

Das Prinzip ist, das die Passwörter grundsätzlich auf den Clients gecached werden, um es zu ermöglichen, das die Anmeldung an die Clients auch funktioniert, wenn der PC den Domaincontroller nicht erreichen kann. Die kann man mit cachedump auslesen und dann mit der o.g. Version von jtr gegenprüfen. Für cachedump benötigt man lokale Admin Rechte auf den Clients.

Außerdem sollte das auch mit rcrack + ntlm zu entschlüsseln sein, was ich aber mangels passender Tabellen (noch) nicht prüfen konnte.

Aber mit jtr klappts:

Und wie man sieht ist das Tool echt schnell. Das Passwort war wieder in der PW-Liste.

Das ist ein sehr interessanter Angriff, da es ja recht einfach ist, lokale Adminrechte zu bekommen und Domain Clients ja in den Firmen natürlich immer rumstehen. Der Angriff erzeugt außerdem keine Spuren im Netzwerk, da ja kein Verkehr erzeugt wird.

Wichtig ist noch herauszufinden, wie man verhindert, das die Passwörter gecached werden.

 

SMB

Bei der Authentifizierung über SMB wird das Passwort im LM-Hash Format übertragen. Das ist für schon eher geeignet.

Da Dank Kennwortrichtlinien und mangelnder Rainbowtables das ganze unter Windows 2003 nicht tut (zumindest noch ein paar Tage 🙂 ), richte ich einen Ordner auf dem 2. PC ein, Freigabe Benutzer tester/tester.

Funktioniert aber nicht, der LM Hash wird nicht vollständig übertragen. Es gibt anscheinend die Möglichkeit, sog. Halflm Hashes Rainbowtable mit Winrtgen zu erstellen, die dann zumindest das halbe Passwort finden.

 

Sonstige Passwörter

Abfangen lassen sich natürlich alle Passwörter die im Klartext übertragen werden, wie POP, HTTP usw..

Fazit

Zum Glück werden keine LM Hashes übertragen, das wäre zu einfach zu cracken. Alledings kann man auch viel mit Brutus & Co anfangen. So ganz sicher ist das alles nicht…

Um an Windows Passwörter im Klartext zu gelangen ist es immer noch am einfachsten ein pwdump File zu haben, das kriegt man aber nicht über das Netzwerk.

Wäre aber noch interessant, ob das auch bei Windows Server 2003 funktioniert…

 

 

l0phtcrack (kommerziell)

Das Tool kann aus verschiedenen Quellen Passwörter cracken, und zwar Unix und Windows. Einfach zu bedienen, die Doku ist soweit OK. 15 Tage läuft es ohne Kohle.

Der Sniffer von l0phtcrack kann nur SMB abhören. Bei einem Test zwischen zwei XP Rechnern hat das aber nicht funktioniert.

Die weiteren Funktionen sind einfach zu bedienen, werden allerdings auch durch andere Tools abgedeckt.

Interessant ist aber noch die Anleitung unter [3], wie man Passwörter aus der SAM wiederherstellen kann (für eine ältere Version).

Das klappt soweit auch, das cracken geht halt relativ lang, v.a. wenn Bruteforce benötigt wird, ist aber machbar.

LCP

Eine Freeware Alternative für l0phtcrack, die aber seit 2005 nicht mehr weiterentwickelt wird.

http://www.lcpsoft.com/english/index.htm

Das Programm sieht aber sehr gut und brauchbar aus, wobei es aber nur noch bis Windows Server 2003 weiterhelfen sollte. Die Hilfsdatei ist ausführlich und einen Blick wert.

Es werden auch ein paar Beispiel Dumbs mitgeliefert, mit denen man das Programm testen kann. Außerdem sind auch Wörterbücher dabei.

Während eines Durchlaufs

Weiterlesen

[1] Angriffsszenarien auf Window

[2] tutorial rainbowtables and rainbowcrack

[3] SAM Password Recovery

[4] Cracking Cached Domain Passwords

[5] http://www.lcpsoft.com/english/articles/passwords.htm

 

 

 

Rainbowtables unter Windows

Hier geht es nur um Rainbowtables und was man damit machen kann. Eine kleine Einführung in die Funktion von Rainbowtables gibt es unter [4] und v.a. [5] und noch in der Hakin9 05/2007 S.20.

Als kurze Erklärung reicht (hoffentlich) Folgendes:
Passwörter werden verschlüsselt gespeichert, oder vielmehr wird ein Hash erstellt
diese Verschlüsselung kann man mit Rainbowtables knacken
mit Rainbowtables kann man das Klartextpasswort herausfinden. Dazu werden in den Rainbowtables die entsprechenden Schlüssel nachgesehen, wobei allerdings nicht alle verschlüsselten Passwörter mit Klartext hinterlegt sind. Nicht gespeicherten Werte können aber schnell berechnet werden.

 

Den Hash holen

Damit man überhaupt den Hash knacken kann, muß man den erstmal besorgen. So geht’s. Zumindest mal angerissen.

 

Fgdump (online)

http://www.foofus.net/~fizzgig/fgdump/

Ein Programm um die Passwort Hashes von Windows auszulesen, dazu braucht man allerdings Admin Rechte.

Das wird für die weitere Benutzung von rcrack und anderen Programmen benötigt, irgendwo müssen die Hashes ja herkommen.

 

Ophcrack (offline)

Bei einer Live CD wie Ophcrack werden die Hashes automatisch ausgelesen, s.u..

 

Cain & Abel (sniffen, online)

Mittels ARP & Co kann man Passwörter im Netzwerk sniffen. Siehe dazu auch die Dokumentation von Cain & Abel und siehe weiter unten.

Man kann auch die Lokalen und Remote Passwort Datenbanken vom System auslesen und dann mit Cain & Abel “bearbeiten”.

Den Hash knacken

Ophcrack

Live CD

Mit der Ophcrack Live CD kann man Passwörter Windows XP knacken (es gibt auch eine Vista Version). Die Benutzung ist sehr einfach, von der CD booten, der Rest ist selbsterklärend.

Zum Test habe ich ein virtualisiertes XP verwendet und folgende Benutzer mit Passörtern eingerichtet:

gustav – GustL-1A

karl – karl123

otto – hallowelt

dax – ishTyn3y_hGEe

administrator – ileBu9aA

Das klappt sehr gut, die Laufzeit beträgt mit laden der CD nur wenige Minuten. Die beiliegenden Rainbow Tables enthalten nur Alphanumerische Zeichen. Für Kohle gibts auch stark erweiterte Rainbow Tables.

Oder hier gucken:

http://www.freerainbowtables.com/en/tables/lm/

Aber laufen die mit Ophcrack?

http://www.freerainbowtables.com/phpBB3/viewtopic.php?f=2&t=809&view=next

 

Installation

Man kann Ophcrack und die Rainbowtables auch lokal installieren. Voreingestellt kann man lediglich die Original Rainbowtables verwenden. Über die Kommandozeile kann man eventuell auch andere Rainbowtables benutzen.

Nachdem man alles eingerichtet hat, hat man verschiedene Möglichkeiten eine Quelle für die Hashes und Benutzerdaten anzugeben.

Z.B. Load -> Local SAM lädt die lokale Benutzerdatenbank (dazu braucht man wohl Admin Rechte). Wenn die Tables korrekt zugewiesen sind, kann es losgehen, die Bedienung ist weitestgehend selbsterklärend.

Auch wenn Passörter nicht komplett geknackt werden können, kann es natürlich trotzdem für einen Angreifer auch nur einen Teil davon zu haben. So kann man immer noch Brute-Force Angriffe ausführen.

Die Rainbowtables von Ophcrack sind leider nicht mit denen von anderen Projekten kompatibel, z.B. Freerainbowtables.com:

“No one seems to understand that generating Ophcrack tables is dumb. First off we can only generate tables with character sets that have already been made otherwise will need to modify the Ophcrack code. The format of the Ophcrack tables is optimized for key spaces with a max around 2^43. You can go higher than that with Ophcrack tables but you have to either increase the number of tables or increase the chain length, both of which make it slower. You can only have 4.3 billion starting points per Ophcrack table. We are currently generating tables with 14.0 and 14.7 billion starting points per table. Granted the FRT tables are not optimal but they allow for larger tables. There is a format which is optimal for any table size and allows for check points too, but it is harder to program. Also this was suggested back in April and still nothing has been done about it.”

(Quelle: http://www.freerainbowtables.com/phpBB3/topic676.html)

Folgenden Versionen von Ophcrack funktionieren für diese Windows Versionen (lt. http://sourceforge.net/apps/mediawiki/ophcrack/index.php?title=Frequently_Asked_Questions):

‘There are two versions: one called “ophcrack XP LiveCD” which should be used to crack LM hashes, and the other one, “ophcrack Vista” LiveCD for NT hashes. Use “ophcrack XP LiveCD” for these systems, which have LMhash enabled by default:

  • Windows 2000 (any version, including Server)
  • Windows XP (any Service Pack)
  • Windows 2003 Server

Use “ophcrack Vista LiveCD” for these systems:

  • Windows Vista
  • Windows 2008 Server
  • Any system on which the LMhash has been explicitely disabled ‘

Rainbow Tabels und Rainbowcrack

http://project-rainbowcrack.com/

 

Diese Kombination ist einiges mächtiger aber auch komplexer zu benutzen als Ophcrack. Ein ausführliches Tutorial findet sich unter [1] und [2], evtl 2 zuerst lesen.

Grundlage dafür ist das freerainbowtables.com Projekt. Hier kann man verschiedene Rainbowtables herunterladen, und zwar nicht nur für Windows Passwörter, sonder auch noch vieles andere, was so verschlüsselt wird.

 

Vorgehen für Windows XP

  1. Hashes mit fgdump auslesen
  2. mit rtgen die passenden Rainbowtables erzeugen / herunterladen
  3. mit rcrack und dem erzeugten Dump-Datei die Passwörter suchen lassen

Rein methodisch funktioniert das so natürlich immer ähnlich, egal, ob man lm Hashes oder md5 Passwörter rekonstruieren kann.

Das ganze dauert natürlich immer, das Hauptproblem liegt bei Punkt 2.

Für ein genaues Vorgehen siehe [1] und [2], [5].

Was rtgen macht wird genauer unter [3] erklärt.

Konkret zu Punkt 2

Der Charset wird in der Datei charset.txt definiert. Man kann auch eigene Charsets definieren.

wie in [1] erklärt, erzeuge ich die Rainbowtables selbst.

Und zwar mit:

rtgen lm alpha-numeric 1 7 0 2400 40000000 all

rtgen lm alpha-numeric 1 7 1 2400 40000000 all

rtgen lm alpha-numeric 1 7 2 2400 40000000 all

rtgen lm alpha-numeric 1 7 3 2400 40000000 all

rtgen lm alpha-numeric 1 7 4 2400 40000000 all

Wobei ich allerdings die Zeit nicht stoppe, da ich das auf unterschiedlichen Rechnern ausführe und man parallel gut mit anderen Programmen arbeiten kann. Lt. Tutorial sollte es aber pro Tabelle auf einem P4 einen Tag dauern… mal sehen. Die Rainbowtables enthalten alphanumerische Zeichen mit Länge von 1-7 für lanmanager hashes.

…nach drei Tagen war es fertig.

Dann:

rtsort.exe lm_alpha-numeric#1-7_0_2400x40000000_0.rt

rtsort.exe lm_alpha-numeric#1-7_1_2400x40000000_0.rt

rtsort.exe lm_alpha-numeric#1-7_2_2400x40000000_0.rt

rtsort.exe lm_alpha-numeric#1-7_3_2400x40000000_0.rt

rtsort.exe lm_alpha-numeric#1-7_4_2400x40000000_0.rt

 

Damit komme ich zu Punkt 3.

Punkt 1 habe ich schon auf der VM von dem Beispiel mit ophcrack ausgeführt.

Es hat geklappt.

 

Weitere sehr gute Beispiele für die Berechnung gibt es unter [6].

Ich werde weitere Berechnungen vornehmen, z.B. aus [6] Bsp. 3. (Anmerkung dazu: auch diese funktionieren wie erwartet).

Da steht auch genauer und verständlich erklärt, wie man die Genauigkeit berechnet.

 

Vorgehen für Windows 7

Die Tabellen für den Test wurden parallel auf zwei Rechnern erzeugt, daher habe ich zwei Tabellen mit jew. ca. 300 Mb:

rtgen ntlm loweralpha-num-symbol4 1 6 0 3000 20000000 0

rtgen ntlm loweralpha-num-symbol4 1 6 1 3000 20000000 0

Dann wieder mit rtsort sortieren, wie oben.

Mit fgdump kann man (als Administrator) auch die Hashes auslesen

Da rcrack *.rt -n dumpfile leider zu einer Fehlermeldung führte, konnte ich den Hash nur so auslesen:

 

Cain & Abel

winrtgen

Das Programm das Cain & Abel zur Berechnung beiliegt (winrtgen) benutze ich nicht zur Berechnung, denn:

  • es benutzt nicht alle Cores (man kann natürlich für jeden Core das Programm einmal starten)
  • man kann es nicht auf mehrere Rechner parallelisieren (zumindest nicht automatisiert, s.u.)

Aber es hat dennoch einen (für mich) großen Nutzen:

  • man kann die Größe, Genauigkeit etc. schon vorher ausrechnen lassen und muss das nicht selbst tun, dazu muss man einfach alles konfigurieren und auf “Benchmark” klicken

 

Cain zum entschlüsseln

Cain kann mit Tabellen von Rainbowcrack umgehen.

Dazu auf Cracker -> LM & NTLM Hashes gehen, dann auf das + Zeichen. Im nachfolgenden Dialog auf Next.

Im folgenden Dialog alle gesuchten Hashes markieren, rechtsklick und Menü Cryptoanalyses Attack -> NTLM Hashes -> via Rainbowtables (RainbowCrack) wählen.

Tabellen und Charset hinzufügen und auf Start klicken und schon geht es los.

 

 

 

Exkurs: Berechnung von Rainbowtables parallelisieren und automatisieren (Windows)

 

Ziel: Möglichst einfach auf vielen Clients im Netz Rainbowtables berechnen, ohne das man immer nachsehen muss was schon wo berechnet ist.

Anforderungen:

– Server mit Share, die Dateien von rcrack und die Batches müssen da drin sein

– angepasste Batch Dateien

– Clients, das das Laufwerk gemappt haben und dann einfach 1.bat aufrufen

 

Und so gehts:

Es gibt vier Batch Dateien, die die Berechnungen abarbeiten. Damit die korrekten Dateien von den Clients berechnet werden, wird immer eine lock Datei angelegt, sobald die Berechnung der Tabelle startet (nummer.lock), damit die anderen Clients die Tabelle nicht berechnen.

Die der zu berechnenden Tabellen muss in 1.bat konfiguriert werden, in dem IN(…) Ausdruck. (0,1,19) berechnet 20 Tabellen.

Die Parameter zur eigentlichen Berechnung sind unter 4.bat zu finden.

 

Wichtig

Die Berechnung kann unterbrochen werden, damit allerdings die .lock Datei korrekt gelöscht wird muß man folgendes beachten:

  • das Fenster mit der Berechnung einfach schliessen
  • die 1. Frage, ob abgebrochen werden soll mit “n” beantworten
  • wenn danach der wait Befehl angezeigt wird STRG+c drücken und mit “j” bestätigen

 

 

Hier die Dateien:

REM Anzahl in schleife durchlaufen

FOR /L %%a IN (0,1,19) DO 2.bat %%a

1.bat

 

REM prufen ob lock Datei vorhanden, falls nein berechnung starten

if not exist %1.lock 3.bat %1

2.bat

 

REM 4.bat in neuem Fenster offnen, zum abbrechen Fenster schliessen

start /wait 4.bat %1

 

REM wenn 4.bat unterbrochen wurde, muss man die nachfrage ob unterbrochen

REM werden soll mit n beantworten, sonst wird lock nicht geloscht

del %1.lock

 

REM warteschleife, damit man mit strg+c unterbrechen kann

wait.exe 4000

3.bat

 

REM berechnung starten

echo 0 >> %1.lock

rtgen lm alpha-numeric-symbol14 1 7 %1 5700 40000000 #0

4.bat

 

[1] http://www.ethicalhacker.net/content/view/94/24/

[2] http://project-rainbowcrack.com/tutorial.htm

[3] http://hytronic.hy.funpic.de/webspace/Cracking%20The%20Fucking%20Hash%20V1.0.htm

[5] http://de.wikipedia.org/wiki/Rainbowtable

[6] http://www.archive.org/details/Lokale-UndLan-interneAngriffsszenarienAufMicrosoftWindowsNt5.0-5.1-

[7] http://prohackingtricks.blogspot.com/2011/04/password-cracking-with-rainbowcrack-and.html