Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Formbook-Payload-Extraction-XOR-Decryption-Net-Assembly-Analysis — 对Formbook的逆向工程分析,这是一种利用.NET程序集操作和XOR解密的信息窃取程序。通过x32dbg提取了完整载荷,包括XOR解密循环、CLR初始化、SQLExpress诱饵以及键盘记录/剪贴板API。 | Kitploit
工具/GitHubGitHub/kaandemir993/formbook-payload-extraction-xor-decryption-net-assembly-analysis
静态分析动态分析 (沙盒)逆向工程调试器信息收集恶意软件分析数字取证二进制分析论文与研究

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
GitHubkaandemir993/formbook-payload-extraction-xor-decryption-net-assembly-analysis

Formbook-Payload-Extraction-XOR-Decryption-Net-Assembly-Analysis

对Formbook的逆向工程分析,这是一种利用.NET程序集操作和XOR解密的信息窃取程序。通过x32dbg提取了完整载荷,包括XOR解密循环、CLR初始化、SQLExpress诱饵以及键盘记录/剪贴板API。

查看仓库
6122天前尚未审核
分享

1. x32dbg – 加密配置解密与内存分配

x32dbg 内存转储显示,Formbook 解密其配置数据,并使用 NtAllocateVirtualMemory 为其分配内存。

关键观察:

  • NtAllocateVirtualMemory – 为解密后的载荷分配内存。
  • mov edx, dword ptr ds:[esi+1C] – 从 ESI 寄存器中获取加密数据的大小。
  • push 0x1000 – 使用 MEM_COMMIT 分配内存。
  • push 0 – 指定分配类型或保护标志。
  • mov edx, dword ptr ds:[esi+4] – 获取另一个配置值。
  • lea ecx, [ebp-4] – 加载指向局部变量的指针。
  • test ecx, ecx – 检查指针是否有效。
  • mov ecx, [esi+1C] – 再次获取加密数据大小。
  • push 0x1000 – 重复 MEM_COMMIT 标志。
  • push 0 – 重复分配标志。

转储下部区域:

  • ConnectionStrings – 用于 C2 地址的 .NET 配置键。
  • system.data、DbProviderFactories – .NET 配置节(可能是诱饵)。
  • system.serviceModel – .NET 服务模型节。
  • <DbProviderFactories /> – 空 XML 元素(诱饵)。

为何重要:

  • 配置解密: Formbook 在内存中解密其配置。
  • C2 地址: ConnectionStrings 很可能包含 C2 URL。
  • 规避: 使用 .NET 配置关键字有助于避免检测。

视觉参考:

Formbook 加密配置与内存分配 显示 NtAllocateVirtualMemory 和 ConnectionStrings 解密的 x32dbg 视图。

2. x32dbg – .NET 程序集操作、XOR 解密与 CLR 初始化

此 x32dbg 视图显示,Formbook 使用 .NET 程序集操作、基于 XOR 的解密以及 CLR(公共语言运行时)初始化来执行其载荷。

关键观察:

  • xor eax, eax – 清零 EAX,表明使用基于 XOR 的解密。
  • call 0x6C6E7F60 – 调用解密或处理函数。
  • call 0x6C6EE8B0 – 调用另一个处理函数。
  • DllCanUnloadNowInternal – 管理 .NET 程序集的加载/卸载。
  • PublicKeyToken=31bf3856ad364e35 – 冒充 Microsoft 程序集。
  • system.serviceModel – .NET 服务模型配置(C2 通信)。
  • System.Web – .NET Web 配置(基于 HTTP 的 C2)。
  • clr.NGenCreateNGenWorker – 创建 .NET 本机映像生成器工作线程。
  • clr.GetCLRFunction – 获取 CLR 函数。
  • return to clr.Initialize – 初始化 .NET 运行时。

为何重要:

  • XOR 解密: xor eax, eax 及后续的 call 函数证实了基于 XOR 的解密。
  • .NET 执行: Formbook 使用 CLR 运行其载荷。
  • 冒充: PublicKeyToken 使其看起来像 Microsoft 程序集。
  • C2 配置: system.serviceModel 和 System.Web 存储 C2 设置。

视觉参考:

Formbook .NET 程序集、XOR 解密与 CLR 显示 XOR 解密、DllCanUnloadNowInternal 和 CLR 初始化的 x32dbg 视图。

3. x32dbg – SQLExpress 诱饵与 CLR 初始化

此 x32dbg 视图显示,Formbook 使用与 SQLExpress 相关的字符串作为诱饵,并初始化 .NET CLR 以执行其载荷。

关键观察:

  • L"ce=..\SQLEXPR" – 一个诱饵字符串,与 SQL 数据窃取无关。它用于使恶意软件看起来像合法的 SQL Server Express 组件
  • clr.InitializeFusion – 初始化 .NET Fusion 程序集加载器,用于将 .NET 载荷加载到内存中。
  • clr.GetCLRFunction – 获取 CLR 函数以执行托管代码。
  • clr.NGenCreateNGenWorker – 创建 .NET 本机映像生成器工作线程,使载荷无需 JIT 编译即可运行。
  • return to clr.InitializeFusion+1751 – 返回到 CLR 初始化例程。

为何重要:

  • 冒充: SQLEXPR 字符串是用于规避安全工具检测的诱饵。
  • .NET 执行: Formbook 使用 CLR 直接在内存中加载并运行其载荷
  • 规避: CLR 初始化帮助恶意软件绕过静态分析。

视觉参考:

Formbook SQLExpress 诱饵与 CLR 初始化 显示 L"ce=..\SQLEXPR"、clr.InitializeFusion 和 CLR 函数的 x32dbg 视图。

4. x32dbg – 载荷起始与 XOR 解密循环

此 x32dbg 视图显示 Formbook 载荷的起始位置,位于标准 PE DOS 存根消息之后。恶意软件使用 XOR 解密循环在内存中解密其载荷。

关键汇编指令:

  • This program cannot be run in DOS mode – 标准 PE DOS 存根消息。
  • xor dword ptr ds:[edi], eax – 将 EDI 处的数据与 EAX 进行 XOR 运算(解密)。
  • mov al, byte ptr ds:[edi+1] – 将 EDI+1 处的一个字节加载到 AL。
  • xor al, byte ptr ds:[edx+1] – 将 AL 与 EDX+1 处的字节进行 XOR 运算(解密密钥)。
  • mov byte ptr ds:[edi], al – 将解密后的字节写回 EDI。
  • call ntdll.77DDE45C – 调用 RtlIsCurrentThreadAttachExempt(反调试)。
  • cmp dword ptr ds:[esi+4], 0 – 检查计数器(ESI+4)是否为零。
  • sub dword ptr ds:[esi+4], eax – 递减计数器。
  • test edx, edx – 测试 EDX 是否为零。
  • jne ntdll.77DDF9F4 – 若非零则循环返回(解密循环)。

为何重要:

  • 载荷起始: 载荷在标准 PE DOS 存根之后开始。
  • XOR 解密: Formbook 使用 XOR 在内存中解密其载荷。
  • 反调试: 调用 RtlIsCurrentThreadAttachExempt 以规避调试器。
  • 循环: 解密循环持续进行,直到计数器归零。

视觉参考:

Formbook 载荷 XOR 解密循环 显示标准 PE DOS 存根消息之后 XOR 解密循环的 x32dbg 视图。

5. Binary Ninja – 键盘记录、剪贴板与权限提升 API

对提取载荷的 Binary Ninja 分析揭示了 Formbook 用于键盘记录、剪贴板劫持和权限提升的全面 API 列表。

观察到的关键 API:

  • 剪贴板劫持: SetClipboardData、GetClipboardData – 窃取并替换剪贴板数据。
  • 键盘记录: SetWindowsHookExW、SetWindowsHookExA – 安装键盘钩子。
  • 进程操作: NtSetInformationProcess、NtCreateThreadEx、NtTerminateProcess。
  • 权限提升: NtAdjustPrivilegesToken – 调整令牌权限。
  • 系统控制: NtShutdownSystem、SystemParametersInfoA/W。
  • 持久化: MsInstallProductW/A – 安装产品以实现持久化。
  • 执行: CreateProcessInternalW – 创建新进程。

为何重要:

  • 键盘记录: 捕获每一次击键(密码、消息)。
  • 剪贴板窃取: 窃取复制的加密货币地址和密码。
  • 权限提升: 获取更高权限以深入访问系统。
  • 持久化: MsInstallProductW/A 确保恶意软件在启动时运行。

视觉参考:

Formbook 键盘记录与剪贴板 API 显示键盘记录、剪贴板和权限提升 API 的 Binary Ninja 视图。

结论

本次分析发现了 Formbook,一种复杂的信息窃取程序,它使用加密配置、.NET 程序集操作、XOR 解密以及键盘记录/剪贴板劫持。

关键要点:

  • 加密配置: 使用 NtAllocateVirtualMemory 在内存中解密其配置。
  • .NET 程序集操作: 使用 DllCanUnloadNowInternal 和 PublicKeyToken 冒充 Microsoft 程序集。
  • CLR 初始化: 使用 clr.InitializeFusion 和 clr.NGenCreateNGenWorker 运行其 .NET 载荷。
  • SQLExpress 诱饵: 使用 L"ce=..\SQLEXPR" 作为诱饵以规避检测。
  • 载荷解密: 在 PE DOS 存根之后使用 XOR 解密循环。
  • 键盘记录与剪贴板窃取: 使用 SetWindowsHookExW、SetClipboardData 和 GetClipboardData。
  • 权限提升: 使用 NtAdjustPrivilegesToken 获取提升的访问权限。

检测建议:

  • 监控内存中的 NtAllocateVirtualMemory 和 ConnectionStrings。
  • 检测来自异常进程的 DllCanUnloadNowInternal 和 CLR 初始化。
  • 监控 SetWindowsHookExW 和 SetClipboardData 调用。
  • 检查 NtAdjustPrivilegesToken 和 NtCreateThreadEx 的使用。

样本下载

所分析的 Formbook 样本可在 MalwareBazaar 上获取,供希望自行分析的人员使用:

🔗 MalwareBazaar 上的 Formbook 样本

使用的工具: x64dbg、Binary Ninja

下载工具