
Kleines Toolkit zum Extrahieren von Informationen und zum Dumping sensibler Zeichenfolgen aus Windows-Prozessen
Kleines Toolkit zum Extrahieren von Informationen und zum Ausgeben sensibler Zeichenfolgen aus Windows-Prozessen. Entwickelt zur Begleitung von FormThief.
Gibt den Prozessspeicher aus und durchsucht ihn nach lesbaren Zeichenfolgen. In dieser Version werden nur PID, Suchzeichenfolge und Bereich angegeben. Wenn die Suchzeichenfolge gefunden wird, gibt der Bereichsparameter an, wie viele Zeichen auf jeder Seite der gefundenen Zeichenfolge ausgegeben werden sollen, sofern es sich um gültige ASCII-Zeichen handelt.
Kompilieren in VS. Beispiel unten zeigt das Auslesen von Benutzerinformationen aus dem Outlook-Prozess:
PS C:\Users\capde> .\procsearch.exe 7592 "email" 500
[+] Suchzeichenfolge "email" GEFUNDEN: (...) "age_group": "adult", "association_status": "{\"com.microsoft.Olk\":\"associated\"}"
,"authority": "https://login.microsoftonline.com/consumers", "birthday": "1969-3-1", "display_name": "John Doe",
"email": "[email protected]", "first_name": "John", "id": "3a25f54136ac887c", "last_name": "Doe", "location":
"UK", "login_name":"[email protected]","onprem_sid": "", "password_change_url": "", "phone_number": "" (...)
Funktioniert mit Inline-Execute-PE nicht korrekt. Ich arbeite daran, dies sowie die C++-BOF-Version zu beheben, die größere Suchbereiche als die aktuelle C-Version ermöglichen soll.
Kompilieren und Laden der .cna:
x86_64-w64-mingw32-gcc -c procsearch-BOF.c -o procsearch-BOF.o
Die BOF-Version reagiert empfindlich auf Puffergrößen, daher ist die Option <range> nicht vorhanden und die Ausgabe ist etwas eingeschränkt. Sie können gerne mit den Puffergrößen experimentieren, aber seien Sie vorsichtig: Bei zu großen Puffern kann es zu __chkstk-Fehlern kommen oder der Beacon hängt sich auf.
Idealerweise wollte ich dies in C++ schreiben, was ich lokal mit bof-vs zum Laufen gebracht habe, aber beim Ausführen im Beacon treten verstümmelte unbekannte Symbolfehler oder Abstürze auf. Ich werde aktualisieren, sobald möglich. Es gibt wahrscheinlich einen besseren Weg, die Suchfunktion/Puffer in C zu implementieren, aber das funktioniert vorerst.
Ich würde nicht empfehlen, nach einem einzelnen Zeichen wie "." in einem sehr großen Prozess zu suchen, da dies den Beacon hängen lassen könnte. Empfohlen werden mindestens 3 oder 4 Zeichen lange Suchstrings bei Verwendung des BOF. Mit der C++-Version kann der Bereich wirklich hochgeschraubt werden.
Beispiel für das Auslesen von Dummy-Benutzerdaten aus dem Outlook-Prozess:
https://github.com/mlcsec/proctools/assets/47215311/dccd1223-774e-4dec-8353-91c057900a07
C#-Dienstprogramm zum Ausgeben aller Dateiversionsinformationen für die angegebene PID. Kompilieren in VS oder mit csc:

C-BOF, der einen Teil der obigen Funktionalität nachbildet. Es müssen noch Probleme beim Auslesen der Werte von VerQueryValue(lpVersionInfo, "\\StringFileInfo\\040904b0\\... gelöst werden.
Kompilieren und Laden der .cna:
x86_64-w64-mingw32-gcc -c procinfo-BOF.c -o procinfo-BOF.o

Extrahiert Befehlszeilenargumente für den angegebenen Prozess. Kompilieren und Laden der .cna:
x86_64-w64-mingw32-gcc -c procargs.c -o procargs-BOF.o

Beendet einen Prozess (oder einfach kill in CS verwenden – ich bin mir nicht sicher, warum ich das gemacht habe):
x86_64-w64-mingw32-gcc -c prockill-BOF.c -o prockill-BOF.o
