
Небольшой набор инструментов для извлечения информации и дампа конфиденциальных строк из процессов Windows
Небольшой набор инструментов для извлечения информации и дампа конфиденциальных строк из процессов Windows. Создан в дополнение к FormThief.
Дамп памяти процесса и поиск читаемых строк. В этой версии указываются только PID, строка поиска и диапазон. Когда строка найдена, параметр диапазона определяет, сколько символов с каждой стороны найденной строки должно быть выведено, если они являются допустимыми ASCII.
Компиляция в VS. Пример ниже — дамп данных пользователя из процесса 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": "" (...)
Работает некорректно с Inline-Execute-PE. Я работаю над этим и над версией C++ BOF, которая должна поддерживать более широкие диапазоны поиска, чем текущая версия на C.
Компиляция и загрузка .cna:
x86_64-w64-mingw32-gcc -c procsearch-BOF.c -o procsearch-BOF.o
Версия BOF чувствительна к размерам буферов, поэтому параметр <range> отсутствует, а вывод несколько ограничен. Можете экспериментировать с размерами буферов, но будьте осторожны: слишком большие значения могут привести к ошибкам __chkstk или зависанию beacon.
Изначально хотел написать это на C++ — локально работало с bof-vs, но при запуске в beacon возникают искажённые ошибки неизвестных символов или краши. Обновлю, когда будет возможно. Вероятно, есть более правильный способ реализации функции/буферов поиска на C, но пока работает так.
Не рекомендую искать одиночные символы (например, ".") в очень большом процессе — это может привести к зависанию beacon. Рекомендуется минимум 3–4 символа для строки поиска при использовании BOF. В версии на C++ можно значительно увеличить диапазон.
Пример дампа тестовых данных пользователя из процесса Outlook:
https://github.com/mlcsec/proctools/assets/47215311/dccd1223-774e-4dec-8353-91c057900a07
Утилита на C# для вывода всей информации о версии файла для указанного PID. Компиляция в VS или с помощью csc:

C BOF, повторяющий часть описанной функциональности. Необходимо разобраться с проблемами дампа значений VerQueryValue(lpVersionInfo, "\\StringFileInfo\\040904b0\\....
Компиляция и загрузка .cna:
x86_64-w64-mingw32-gcc -c procinfo-BOF.c -o procinfo-BOF.o

Извлечение аргументов командной строки для указанного процесса. Компиляция и загрузка .cna:
x86_64-w64-mingw32-gcc -c procargs.c -o procargs-BOF.o

Завершение процесса (или можно просто использовать kill в CS, не уверен, зачем я это сделал):
x86_64-w64-mingw32-gcc -c prockill-BOF.c -o prockill-BOF.o
