Wie Bruteforced man eigentlich effektiv Software?

#1
Hallo zusammen. Und zwar frage ich mich schon seit einiger Zeit, wie man Brutforce - Angriffe sinnvoll durchführt. Nehmen wir ein Beispiel, ich habe Software xy und soll in ein Dialogfeld jetzt ein Passwort eingeben. Bis jetzt hätte ich das sehr unprofessionell gemacht, indem ich einfach Tastatureingaben simuliert hätte in Verbindung mit einer Wordlist. Das dauert natürlich ewig, und es besteht der Fall, dass ich mit zu vielen Eingaben in zu kurzer Zeit die Anwendung abschieße. Außerdem habe ich auch keine sinnvolle Möglichkeit zu kontrollieren ob ich Erfolg hatte, da einfach weiter die Anwendung gespammt wird und ich nicht weiß, welches Passwort nun das richtige war. Sicher könnte ich zum Beispiel bei rar / zip Passwörtern die Commands von 7Zip oder WinRar mit nutzen, aber das ist in meinem oben geschriebenen Beispiel ja nicht möglich. Wie geht man bei so einem Fall am geeignetsten vor? (Ich rede hier nicht vom benutzen irgendwelcher Tools. Ich möchte einfach mal versuchen so etwas zu programmieren und bin mir nicht sicher wo man da den Hebel ansetzt^^).
 

CDW

Moderator
Mitarbeiter
#2
Hallo zusammen. Und zwar frage ich mich schon seit einiger Zeit, wie man Brutforce - Angriffe sinnvoll durchführt. Nehmen wir ein Beispiel, ich habe Software xy und soll in ein Dialogfeld jetzt ein Passwort eingeben.
...
Wie geht man bei so einem Fall am geeignetsten vor? (Ich rede hier nicht vom benutzen irgendwelcher Tools. Ich möchte einfach mal versuchen so etwas zu programmieren und bin mir nicht sicher wo man da den Hebel ansetzt^^).
Ich nehme an, es geht um eine integrierte Verschlusselung/Passwordschutzfunktion?
Effektiv wäre z.B mittels Debugger/Disassembler/<anderes geeignetes Werkzeug, ich erinnere mich dunkel an spezifische Tools, die z.B nach Signaturen bekannter Verschl. und Hashverfahren gesucht haben> das Verfahren (oft irgendwo in der Beschreibung erwähnt) samt Detailumsetzung[0], herauszufinden und in einem "externen" Bruteforcer umzusetzen.

Man muss auch nicht bei 0 anfangen, sondern kann geignete Bibliotheken nutzen (nur, wie gesagt - die Implementierungsdetails berücksichtigen).
Das ist dann meist schneller oder lässt sich zumindest parallelisieren.
Ideal wäre natürlich, wenn man bekannten Klartext und entsprechende verschlussselte Daten zum herumprobieren hat.

Andere Möglichkeit, insbesondere für "hausgemachte" Verfahren:
mittels Codeinjection[1] einen "Bruteforcer" in die laufende Anwendung integrieren, der die Entschlusselungsfunktion direkt aufruft, ohne das Passwort über die GUI einzugeben.

Man wird dazu natürlich im Debugger/Disassembler nachschauen müssen, wie und mit welchen Parametern diese Funktion aufgerufen werden muss und welche Rückgaben im Erfolgsfall es gibt.

--
0. Blockgröße, Padding, Keyextension/Passwordableitung->sieh PBKDF, Initializierungsvektoren usw.
1. siehe dazu z.B. DLLInjection, wobei die Umsetzungsdetails stark vom Zielprogramm abhängen
 
#3
Aha, vielen Dank. Das bringt mich schonmal weiter. Jetzt kann ich mir zumindest grob vorstellen wie man bei so etwas vorgeht. Leider verstehe ich nicht viel vom disassemblen, aber das wird auch irgendwann mal. ^^
 
Oben