用于从 Windows 进程中提取信息并转储敏感字符串的小工具包。配合 FormThief 使用。
转储进程内存并搜索可读字符串。此版本仅提供 PID、搜索字符串和范围。找到搜索字符串时,范围参数指示应在找到的字符串两侧打印多少个字符(前提是它们是有效的 ASCII 字符)。
在 VS 中编译。以下示例从 Outlook 进程中转储用户信息:
PS C:\Users\capde> .\procsearch.exe 7592 "email" 500
[+] 找到搜索字符串 "email": (...) "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 挂起。使用 BOF 时,建议至少使用 3 或 4 个字符的搜索字符串。使用 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

终止进程(或者直接使用 CS 中的 kill,不知道为什么我要做这个):
x86_64-w64-mingw32-gcc -c prockill-BOF.c -o prockill-BOF.o
