记一次特殊(通过sapien打包powershell脚本生成可执行文件)的钓鱼样本分析
字数 1801 2025-08-06 12:21:08
通过Sapien PowerShell Studio打包的钓鱼样本分析与防御
0x01 背景与样本概述
本次分析的样本是一个伪装成OA升级程序的钓鱼攻击工具,攻击者通过伪装成OA工作人员进行钓鱼。该样本的特殊之处在于使用了Sapien PowerShell Studio将PowerShell脚本封装成可执行文件,这种技术可以绕过一些安全检测和限制。
0x02 样本行为分析
初始运行行为
- 样本运行后会创建
mobsync.exe子进程 - 通过
mobsync.exe发起可疑DNS请求 - 修改Internet Explorer安全区域的注册表设置,增加成功回连的概率
网络行为
- 样本会回连C2服务器
- 回连行为类似于Cobalt Strike (CS)框架
- 通过模拟环境(Inetsim)可捕获回连URL
0x03 样本逆向分析
前置分析
-
样本结构:
- 使用Smart Assembly进行混淆
- 可通过de4dot工具反混淆
- 无导入和导出表,只有两个节(.text和.rsrc)
-
特殊标记:
- 资源节中包含"Sapien PowerShell v5 host"标记
- 这是PowerShell Studio的特征,用于将PowerShell代码封装成可执行文件
静态代码分析
-
反调试技术:
- 使用
IsDebuggerPresent()检测调试器 - 使用
CheckRemoteDebuggerPresent()检测远程调试
- 使用
-
核心解密逻辑:
- 从资源段读取加密内容
- 使用自定义解密算法(Class9.smethod_7)解密
- 解密算法特点:
- 对字节数组进行循环处理
- 每字节加106
- 减去特定索引值(超过长度则清零)
- 每5轮额外加2
-
PowerShell脚本执行:
- 解密后的内容作为PowerShell脚本执行
- 使用
Runspace.CreatePipeline.Commands.addscript() - 替换脚本中的
#SAPIENPRESETS为当前路径信息
动态分析
-
获取的PowerShell脚本功能:
- 包含APC注入函数(
inject_Apc) - 创建新进程
mobsync.exe加载shellcode
- 包含APC注入函数(
-
界面按钮功能:
- 进程检查:检索计算机运行进程信息
- 补丁检查:返回已安装的快速修复工程信息
- 应用检查:获取计算机上所有软件信息
Shellcode分析
- 行为特征:
- 动态加载
wininet.dll - 调用
InternetConnectA回连C2 - 发送GET请求获取
/themes/default/js/jquery-3.3.2.slim.min.js(实际为Cobalt Strike beacon)
- 动态加载
0x04 攻防视角分析
防守方策略
检测方法
-
静态检测:
- YARA规则检测Sapien PowerShell Studio特征:
strings: $a = "SAPIEN PowerShell.v5" wide condition all of them and uint16(0) == 0x5A4D- 检测资源节中的特殊标记
-
行为检测:
- 监控
mobsync.exe作为子进程启动 - 检测IE安全区域注册表修改
- 检测异常的DNS请求模式
- 监控
分析方法
- 反混淆后定位资源解密点
- 在解密函数后设置断点获取PowerShell脚本
- 分析解密后的脚本行为
攻击方免杀策略
-
去特征化:
- 移除Sapien PowerShell Studio特征标记
- 修改资源节结构
-
增强对抗:
- 添加反虚拟机检测(参考al-khaser项目):
- 检查注册表项
- 检查服务、进程、文件特征
- 添加沙箱检测:
- 定时检测
- 睡眠混淆
- 多种反调试技术组合
- 添加反虚拟机检测(参考al-khaser项目):
-
执行链混淆:
- 使用多种进程创建技术
- 多阶段解密
- 动态API调用
0x05 总结与防御建议
技术总结
- 攻击者使用Sapien PowerShell Studio将恶意PowerShell脚本封装为EXE
- 样本包含多层保护:
- Smart Assembly混淆
- 资源段加密
- 反调试技术
- 最终payload为Cobalt Strike beacon
防御建议
- 部署针对PowerShell封装EXE的检测规则
- 监控异常进程创建行为(如
mobsync.exe作为子进程) - 限制Internet Explorer安全区域的注册表修改
- 对可疑EXE进行深度静态分析
- 建立PowerShell脚本行为基线
扩展思考
- 类似技术可能用于封装其他脚本语言(VBScript, JScript等)
- 攻击者可能结合多种打包工具规避检测
- 需要持续更新检测规则应对变种