记一次特殊(通过sapien打包powershell脚本生成可执行文件)的钓鱼样本分析
字数 1801 2025-08-06 12:21:08

通过Sapien PowerShell Studio打包的钓鱼样本分析与防御

0x01 背景与样本概述

本次分析的样本是一个伪装成OA升级程序的钓鱼攻击工具,攻击者通过伪装成OA工作人员进行钓鱼。该样本的特殊之处在于使用了Sapien PowerShell Studio将PowerShell脚本封装成可执行文件,这种技术可以绕过一些安全检测和限制。

0x02 样本行为分析

初始运行行为

  1. 样本运行后会创建mobsync.exe子进程
  2. 通过mobsync.exe发起可疑DNS请求
  3. 修改Internet Explorer安全区域的注册表设置,增加成功回连的概率

网络行为

  1. 样本会回连C2服务器
  2. 回连行为类似于Cobalt Strike (CS)框架
  3. 通过模拟环境(Inetsim)可捕获回连URL

0x03 样本逆向分析

前置分析

  1. 样本结构:

    • 使用Smart Assembly进行混淆
    • 可通过de4dot工具反混淆
    • 无导入和导出表,只有两个节(.text和.rsrc)
  2. 特殊标记:

    • 资源节中包含"Sapien PowerShell v5 host"标记
    • 这是PowerShell Studio的特征,用于将PowerShell代码封装成可执行文件

静态代码分析

  1. 反调试技术:

    • 使用IsDebuggerPresent()检测调试器
    • 使用CheckRemoteDebuggerPresent()检测远程调试
  2. 核心解密逻辑:

    • 从资源段读取加密内容
    • 使用自定义解密算法(Class9.smethod_7)解密
    • 解密算法特点:
      • 对字节数组进行循环处理
      • 每字节加106
      • 减去特定索引值(超过长度则清零)
      • 每5轮额外加2
  3. PowerShell脚本执行:

    • 解密后的内容作为PowerShell脚本执行
    • 使用Runspace.CreatePipeline.Commands.addscript()
    • 替换脚本中的#SAPIENPRESETS为当前路径信息

动态分析

  1. 获取的PowerShell脚本功能:

    • 包含APC注入函数(inject_Apc)
    • 创建新进程mobsync.exe加载shellcode
  2. 界面按钮功能:

    • 进程检查:检索计算机运行进程信息
    • 补丁检查:返回已安装的快速修复工程信息
    • 应用检查:获取计算机上所有软件信息

Shellcode分析

  1. 行为特征:
    • 动态加载wininet.dll
    • 调用InternetConnectA回连C2
    • 发送GET请求获取/themes/default/js/jquery-3.3.2.slim.min.js(实际为Cobalt Strike beacon)

0x04 攻防视角分析

防守方策略

检测方法

  1. 静态检测:

    • YARA规则检测Sapien PowerShell Studio特征:
    strings:  
        $a = "SAPIEN PowerShell.v5" wide  
    condition
        all of them and uint16(0) == 0x5A4D
    
    • 检测资源节中的特殊标记
  2. 行为检测:

    • 监控mobsync.exe作为子进程启动
    • 检测IE安全区域注册表修改
    • 检测异常的DNS请求模式

分析方法

  1. 反混淆后定位资源解密点
  2. 在解密函数后设置断点获取PowerShell脚本
  3. 分析解密后的脚本行为

攻击方免杀策略

  1. 去特征化:

    • 移除Sapien PowerShell Studio特征标记
    • 修改资源节结构
  2. 增强对抗:

    • 添加反虚拟机检测(参考al-khaser项目):
      • 检查注册表项
      • 检查服务、进程、文件特征
    • 添加沙箱检测:
      • 定时检测
      • 睡眠混淆
    • 多种反调试技术组合
  3. 执行链混淆:

    • 使用多种进程创建技术
    • 多阶段解密
    • 动态API调用

0x05 总结与防御建议

技术总结

  1. 攻击者使用Sapien PowerShell Studio将恶意PowerShell脚本封装为EXE
  2. 样本包含多层保护:
    • Smart Assembly混淆
    • 资源段加密
    • 反调试技术
  3. 最终payload为Cobalt Strike beacon

防御建议

  1. 部署针对PowerShell封装EXE的检测规则
  2. 监控异常进程创建行为(如mobsync.exe作为子进程)
  3. 限制Internet Explorer安全区域的注册表修改
  4. 对可疑EXE进行深度静态分析
  5. 建立PowerShell脚本行为基线

扩展思考

  1. 类似技术可能用于封装其他脚本语言(VBScript, JScript等)
  2. 攻击者可能结合多种打包工具规避检测
  3. 需要持续更新检测规则应对变种
通过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 界面按钮功能: 进程检查:检索计算机运行进程信息 补丁检查:返回已安装的快速修复工程信息 应用检查:获取计算机上所有软件信息 Shellcode分析 行为特征: 动态加载 wininet.dll 调用 InternetConnectA 回连C2 发送GET请求获取 /themes/default/js/jquery-3.3.2.slim.min.js (实际为Cobalt Strike beacon) 0x04 攻防视角分析 防守方策略 检测方法 静态检测: YARA规则检测Sapien PowerShell Studio特征: 检测资源节中的特殊标记 行为检测: 监控 mobsync.exe 作为子进程启动 检测IE安全区域注册表修改 检测异常的DNS请求模式 分析方法 反混淆后定位资源解密点 在解密函数后设置断点获取PowerShell脚本 分析解密后的脚本行为 攻击方免杀策略 去特征化: 移除Sapien PowerShell Studio特征标记 修改资源节结构 增强对抗: 添加反虚拟机检测(参考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等) 攻击者可能结合多种打包工具规避检测 需要持续更新检测规则应对变种