
Piccolo toolkit per estrarre informazioni e dumpare stringhe sensibili da processi Windows.
Piccolo toolkit per estrarre informazioni e dumpare stringhe sensibili dai processi Windows . Realizzato per accompagnare FormThief.
Effettua il dump della memoria del processo e cerca stringhe leggibili. Solo per questa versione vengono forniti PID, stringa di ricerca e intervallo. Quando la stringa di ricerca viene trovata, il parametro range indica quanti caratteri per lato della stringa trovata devono essere stampati, purché siano ASCII validi.
Compila in VS. Esempio sotto che mostra il dump delle informazioni utente dal processo Outlook:
PS C:\Users\capde> .\procsearch.exe 7592 "email" 500
[+] Search string "email" FOUND: (...) "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": "" (...)
Non funziona correttamente con Inline-Execute-PE. Sto lavorando per risolvere questo problema e la versione C++ BOF che dovrebbe consentire intervalli di ricerca più ampi rispetto alla versione C attuale.
Compila e carica il .cna:
x86_64-w64-mingw32-gcc -c procsearch-BOF.c -o procsearch-BOF.o
La versione BOF è sensibile alle dimensioni del buffer, quindi l'opzione <range> non è presente e l'output è alquanto limitato. Sentiti libero di sperimentare con le dimensioni del buffer, ma fai attenzione: potresti ricevere errori __chkstk o il beacon potrebbe bloccarsi se sono troppo grandi.
Idealmente avrei voluto scriverlo in C++, che avevo fatto funzionare localmente con bof-vs, ma eseguendolo in beacon restituisce alcuni errori di simboli sconosciuti o crash. Aggiornerò quando possibile. Probabilmente esiste un modo migliore per implementare la funzione di ricerca/buffer in C, ma per ora funziona.
Non consiglierei di cercare un singolo carattere come "." in un processo molto grande, perché potrebbe bloccare il beacon. Si consiglia un minimo di 3 o 4 caratteri per le stringhe di ricerca quando si utilizza BOF. Con la versione C++ è possibile aumentare notevolmente l'intervallo.
Esempio di dump di dati utente fittizi dal processo Outlook:
https://github.com/mlcsec/proctools/assets/47215311/dccd1223-774e-4dec-8353-91c057900a07
Utilità C# per stampare tutte le informazioni sulla versione del file per il pid fornito. Compila in VS o con csc:

C BOF che replica alcune delle funzionalità di cui sopra, è necessario risolvere i problemi nel dump dei valori VerQueryValue(lpVersionInfo, "\\StringFileInfo\\040904b0\\... .
Compila e carica .cna:
x86_64-w64-mingw32-gcc -c procinfo-BOF.c -o procinfo-BOF.o

Estrae gli argomenti della riga di comando per il processo specificato. Compila e carica .cna:
x86_64-w64-mingw32-gcc -c procargs.c -o procargs-BOF.o

Termina un processo (o usa semplicemente kill in CS, non sono sicuro del perché l'abbia creato):
x86_64-w64-mingw32-gcc -c prockill-BOF.c -o prockill-BOF.o
