
Pequeño conjunto de herramientas para extraer información y volcar cadenas sensibles de procesos de Windows.
Pequeño conjunto de herramientas para extraer información y volcar cadenas sensibles de procesos de Windows. Hecho para acompañar a FormThief.
Vuelca la memoria del proceso y busca cadenas legibles. PID, cadena de búsqueda y rango proporcionados solo para esta versión. Cuando se encuentra la cadena de búsqueda, el parámetro de rango indica cuántos caracteres a cada lado de la cadena encontrada se deben imprimir siempre que sean ASCII válidos.
Compilar en VS. Ejemplo a continuación volcando información de usuario del proceso de 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": "" (...)
No funciona correctamente con Inline-Execute-PE. Estoy trabajando para resolver esto y la versión BOF de C++ que debería permitir rangos de búsqueda mayores que la versión C actualmente.
Compilar y cargar el .cna:
x86_64-w64-mingw32-gcc -c procsearch-BOF.c -o procsearch-BOF.o
La versión BOF es sensible a los tamaños de buffer, por lo que la opción <range> no está presente y la salida es algo limitada. Siéntete libre de jugar con los tamaños de buffer, pero ten cuidado, podrías obtener errores __chkstk o el beacon podría colgarse si es demasiado grande.
Idealmente quería escribir esto en C++, el cual he hecho funcionar localmente con bof-vs, pero ejecutarlo en beacon devuelve algunos errores de símbolos desconocidos distorsionados o se cuelga. Lo actualizaré cuando sea posible. Probablemente haya una mejor manera de implementar la función/búferes de búsqueda en C, pero esto funcionará por ahora.
No recomendaría buscar un solo carácter como "." en un proceso muy grande, ya que podría colgar el beacon. Recomiendo cadenas de búsqueda de al menos 3 o 4 caracteres cuando se use BOF. Puedes aumentar realmente el rango con la versión de C++.
Ejemplo volcando datos de usuario ficticios del proceso de Outlook:
https://github.com/mlcsec/proctools/assets/47215311/dccd1223-774e-4dec-8353-91c057900a07
Utilidad en C# para imprimir toda la información de versión de archivo para el pid proporcionado. Compilar en VS o con csc:

BOF en C que replica parte de la funcionalidad anterior, hay que resolver problemas al volcar valores de VerQueryValue(lpVersionInfo, "\\StringFileInfo\\040904b0\\...).
Compilar y cargar .cna:
x86_64-w64-mingw32-gcc -c procinfo-BOF.c -o procinfo-BOF.o

Extrae los argumentos de línea de comandos para el proceso especificado. Compilar y cargar .cna:
x86_64-w64-mingw32-gcc -c procargs.c -o procargs-BOF.o

Termina un proceso (o simplemente usa kill en CS, no estoy seguro de por qué hice esto):
x86_64-w64-mingw32-gcc -c prockill-BOF.c -o prockill-BOF.o
