PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hashs von einem "Cluster" cracken lassen



Claion
31.03.2010, 21:44
Tag zusammen,
die Idee, Hashs von mehreren Rechnern knacken zu lassen, ist sicherlich nicht neu :P
Trozdem habe ich bis jetzt noch keine gute Lösung dazu gefunden.
Damit auch jeder weiß worum es geht:
Ich habe vor, einen Hash von mehreren Rechnern gleichzeitig knacken zu lassen. Als "Rechenzentrum" käme ein / mehrere Botnetz/e in Frage.
Da es allerdings Sinn frei wäre, jedem Zombie-Rechner von a-Z bruten zu lassen, habe ich mir mal ein paar Gedanken gemacht, wie man das ganze effizienter gestalten könnte =P.
Gehen wir mal davon aus wir wollen ein Hash cracken lassen und wollen es mit vier Zeichen ausprobieren (z.B.: aaaa, aaab, aaac usw...)
Dann gibt es 456976 Möglichkeiten (26^4 = 456976 (Wenn wir nur das Alphabet mit Kleinbuchstaben nehmen))..
Es sind mal nur 40 Bots online.

Mein Problem ist es jetzt, die Anzahl der Möglichkeiten Sinnvoll auf die Bots zu übertragen.
456976 / 40 = 11424,4 ~ 11425 (Auf 11425 runden, da sonst Möglichkeiten ausbleiben.. oder?)
Das heißt also, dass jeder Bot 11425 Möglichkeiten ausprobieren muss.
Was mir noch eingefallen ist, "Segmente" oder "Blocks" zu erstellen.

Bot1 erstellt Hashs von aaaa - azzz
Bot2 erstellt Hashs von baaa - bzzz
usw, usw..

Allerdings kommt mir nicht in den Sinn, wie ich solche "Blocks" errechnen soll.. Joa ich hoffe ihr könnt mir da weiterhelfen.
Würde mich auch gern über eure Meinungen, Kritiken, Verbesserungsvorschläge freuen =P
Mfg

krypt0n
01.04.2010, 00:21
Ich würde dir raten den Crackingvorgang in feste Blöcke mit sagen wir mal 100k Strings zu teilen. Die Blöcke verteilst du dann nach und nach an die einzelnen Bots, die sich nach dem kompletten Crackvorgang ihres Blockes automatisch vom Server den nächsten zugeteilt bekommen. Wenn dir dann ein Bot während des Crackens abkackt kannst du ganz einfach seinen Block weiterverteilen.

hAgBaRd2ooo
01.04.2010, 01:31
Hmmm... was evtl. auch gehen würde wäre wenn du anstatt Bruteforcing, Dictionary Attack durchführst. Sprich ganz klassisch mit Wordlists wobei die einzelnen Bots immer nur bestimmte Abschnitte dieser Liste machen. Beispiel:

Bot 1 attacked mit Part 1 der Wordlist, während Bot 2 mit Part 2 der Wordlist attacked. Und so weiter...
Das beschleunigt halt dieses Dictionary Attack Prinzip, da mehrere Rechner bestimmte Teile EINER Wordlist durchkauen ;)

Ansonsten schau mal bei HashKiller (http://hashkiller.com) vorbei, soweit ich weiß sind die Jungs da extra auf "Hash-Cracking" spezialisiert. Wenn du hier nicht fündig wirst vlt. kann dir da wer helfen ;)

krypt0n
01.04.2010, 02:15
Dann kann man ja gleich Rainbowtables zum cracken benutzen. Der Vorteil beim bruteforcen über sehr viele verteilte Rechner ist ja, dass man eine enorme Geschwindigkeit erreicht.

Steehn
01.04.2010, 03:42
Genau darüber hab ich mir auch neulich den Kopf zerbrochen und wollte deshalb extra ne Software schreiben :).
Hab mir das so vorgestellt: Es gibt einen Server, auf dem ein Daemon läuft. Dieser teilt jedem connecteten Client einen gewissen Zeichenbereich (z.B. aaaa bis aaaaaaa) zu, den der Client dann durchcrackt. Weil ich bei mir verschiedene Plattformen habe (teilweise auch Systeme mit CUDA-Unterstützung), dachte ich auch, dass es sinnvoll wäre, eine Art Protokoll zu entwerfen, dass man dann nur noch auf den entsprechenden Betriebsystemen zum Laufen bringen bzw. in einen Bot einpflanzen müsste ;).

Also praktisch wie netcrack (http://freshmeat.net/projects/netcrack), nur mit noch etwas mehr Funktionen.

krypt0n
01.04.2010, 04:44
Ja so habe ich das auch verstenden. Was genau ist denn nun eigentlich dein Problem? Ich habe dir ja einen Vorschlag gebracht, wie man das ganze wohl relativ intelligent lösen könnte.

Atropos
01.04.2010, 10:11
Der große Nachteil ist der ,dass die Bots ja auch ausfallen.
Sonst gäbe es schon längst pub Crackingbots ;)
Ist eine heikle Geschichte und wird dir nicht ohne weiters wirklich sinnvoll gelingen.
Du könntest natürlich Segmente verteilen und auf eine Rückmeldung der der Bots warten.
Da ist allerdings wieder die Gefahr ,dass die Segmente mehrfach gehasht werden.

Claion
01.04.2010, 16:29
Moin,
danke erstmal für eure Antworten und Ideen =P
Ich denke, dass der Ausfall eines Bots nicht weiter tragisch ist..
Natürlich werden Strings mehrmals gehasht, allerdings sind die Strings teil eines Blocks / Segment. Diese Segmente / Blöcke ( wie auch immer ;D ) sind nicht sonderlich groß und beinhalten nicht so viele Möglichkeiten. Da ich unter anderem in Verbindung mit Datenbanken arbeite und das ganze über das HTTP läuft, sollte es möglich sein, ein Script/Algo zu schreiben welches das Segment auf andere Bots überträgt. Naja , ich werde mal weiter überlegen und hoffe immer noch weiter auf ein paar nette Ideen und so =P

Ps: Sollte ich ein solchen Algorithmus entwickelt bekommen, habe ich vor ein kostenlosen "Cracking"-Dienst bereitzustellen :P

Mfg

hotdragon92
01.04.2010, 17:06
also ich würde das cracken über die gpu laufen lassen das daurt bei 4zeichen (lowercase) net so lange, is nur eine frage des geldes das du in dein pc investierst^^
ich habe 1100€ investiert und komme auf 1600M hashes/sec da geht das innerhalb von 1min ^^ die 4zeichen.

Lg Hotdragon92

Claion
01.04.2010, 21:32
Natürlich würde das "cracken" eines Hashs von mehreren Rechnern schneller über die GPU gehen, allerdings kann ich bei meinen Bots leider nicht beeinflussen, was für Komponenten die in ihren Pc stecken. Noch dazu kommt, das dann das Bruteforce auf die GPU "übertragen" muss und davon hab ich absolut null Plan.

misterx
03.04.2010, 22:30
Ich habe mir da auch schon gedanken drüber gemacht und bin zu folgendem Ergebnis gekommen.

Wie ihr schon gesagt habt sollte man das ganze in Sektoren unterteilen. Diese Sektoren, also Start und Ende der Zeichenkette in einer Datebank auf einem Zentralen Server speichern. Wenn nun ein Bot auf einen Sektor zugreift, wird dieser für andere Bots gesperrt, wenn der Bot fertig ist gibt er eine "ok" Meldung zurück an den Server der Sektor wird entsperrt und als Fertig makiert, wenn der Bot einen neuen Sektor sucht, geht er zum nächsten Sektor der nicht als Fertig oder wird bearbeitet makiert ist.

Ich weis leider nicht wie eure Bots funktionieren, aber wenn man den LHC (Lightning Hash Cracker) auf den "Bot-PC" bekommt müsste der Bot nur noch ein CMD ausführen können indem er den LHC startet, danach muss er ein CMD auslesen könne und Daten an den Server senden. Fertig. Wenn jemand soetwas programmieren möchte, kann ich mir gerne anschreiben ich wäre dabei :)

Bonkers
03.04.2010, 22:59
wenn der Bot einen neuen Sektor sucht, geht er zum nächsten Sektor der nicht als Fertig oder wird bearbeitet makiert ist.

Wenn du die Sektoren aber zu groß wählst müssen die anderen Bots im falle eines Ausfalls eine große menge Daten neu berechnen, und bei kleinen Sektionen ersteht eine Menge Traffic.


Wenn nun ein Bot auf einen Sektor zugreift

Ich denke das würde man eher über die Push-Methode lösen, also den Bots ihre Sektion auferlegen, der Server muss dann halt vorher den Status eines jeden Bots kennen.


müsste der Bot nur noch ein CMD ausführen können indem er den LHC startet

Naja, ich wäre dafür dass der Bot an sich selbst Cracken kann. Aber wenn, dann nur Cracken und kein DOS oder sonstigen Müll.

Nur4mon
03.04.2010, 23:48
Ich weiss nicht ob das schon bedacht wurde, aber wenn du die Leistung aus einem Botnetz ziehst und ein PC offline geht, dann hast du ein Problem.
Entweder du hoffst, dass das PW nicht in der Range des Rechners lag oder du musst dir was einfallen lassen ;)

Steehn
05.04.2010, 00:36
Also ich finde die Idee mit der Datenbank gar nicht so schlecht (ursprünglich hätte ich versucht, das ganze im Arbeitsspeicher ablaufen zu lassen).
Hab einfach mal nen kleinen Ablaufplan erstellt (auch mit den vorherigen Beiträgen):

Jeder Client der zum ersten Mal On geht, meldet sich (mit seiner Hardwareausstattung / Benchmarkergebnis) beim Server an und bekommt eine Eindeutige Id zugeordnet. Der Server verwaltet alle Clients und weiß so genau, welcher Client wie leistungsstark ist. Die Leistungsstärkeren Clients (mit z.B. leistungsstarker CPU/GPU oder überdurchschnittlichen Benchmarkergebnis) bekommen einen größeren "Sektor" zugeteilt, da sie in der selben Zeit mehr berechnen können als alle anderen.

Der Server vergibt die jeweiligen Bereiche (ich sag auch einfach mal "Sektoren") und merkt sich genau, wem er welchen "Sektor" vergeben hat.
Sollte dieser Client dann Offline gehen bzw. Timeouten, bekommt ein anderer Client genau denjenigen "Sektor". In den Servereinstellungen kann der Betreiber dann evtl. noch einstellen, wie relativ groß die einzelnen "Sektoren" sein sollen. Kleine Sektoren bedeuten mehr Sicherheit und ein kleinerer "Verlust", im Falle eines Clientausfalls, dafür allerdings auch mehr Traffic.
Auf der anderen Seite kann man die "Sektoren" auch größer machen, was weniger Traffic, dafür aber auch eine größere Lücke im Bruteforcingbereich zur Folge hat.

Hat ein Client einen Sektor fertig gebrutet, schickt er eine Nachricht an den Server.
Falls er es geschafft hat, den Hash zu cracken, beinhaltet die Nachricht ein true-Flag und das korrekte Passwort.
Falls nicht, beinhaltet die Nachricht einen false-Flag und den durchgecrackten "Sektor" (oder die Sektorenid?).

PS: Aus Effektivitätsgründen könnte man ja ein Programm verteilen, dass zuerst die Hardwareausstattung checkt und dann je nachdem, ob z.B. CUDA-Support besteht den entsprechenden (angepassten) Hauptbot herunterläd.
PSS: Also ich wär auch gern bei einem solchen Programmier-Projekt dabei. Ursprünglich hatte ich vor, sowas als eine Art "OpenSourceDistributedHashCracker" mit Einbaumöglichkeit (Pluginsupport) für ein Botnet zu veröffentlichen :D

UV238
05.04.2010, 08:25
Ich würde sagen, dass der Client sofort abbricht, wenn er das PW hat und dann dieses auch sofort sendet, weil du sonst evtl schon das PW hast, aber dann der Client rausgeht. und dann würde ich sofort auch die suchanfragen auf allen Clients beenden, bringt dann ja nix mehr

Ich hatte auch mal über sowas nachgedacht, und bin zu dem Schluss gekommen, dass es durchaus sinnvoll wäre, mehrere server zu nehmen, so, dass auch mehrere leute über das gleiche netz suchen können, aber ein Server dann auch mitsucht und eben nach "wer zuerst kommt mahlt zuerst" gehandelt wird und solange ein server online ist auch weitergecrackt wird, ist dann nur zu überlegen, ob wenn ich einen Aufrag hinzufüge, dann der auch bearbeitet wird, wenn ich rausgehe oder nicht

misterx
05.04.2010, 19:13
Mit welcher größe sind denn diese Botnetzte zu Rechnen?

500 Clients?

-=Crypter=-
05.04.2010, 19:46
@hotdragon
Mit welcher Methode?

~Crypter