You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell恶意脚本分析请求:解读最终执行代码功能

恶意PowerShell脚本分析与最终执行行解读

这是一款利用图片隐写技术加载恶意代码的PowerShell脚本,核心逻辑是从PNG图片中提取隐藏数据,动态执行恶意程序。以下是逐部分解析,重点拆解你卡住的最终执行行:

1. 隐写数据提取阶段

  • Add-Type -AssemblyName System.Drawing:加载.NET的System.Drawing程序集,用于读取图片像素数据。
  • 从%USERPROFILE%\AppData\Roaming\PerfLogs\路径加载Image.png和pe.png,这两张图片是恶意数据的隐写载体——数据被编码在图片第一行像素的红色通道(R值)中。
  • 通过遍历两张图片的第一行像素,将每个像素的R值提取出来,分别存入$File和$PE两个字节列表:
    • $PE字节列表对应完整的.NET恶意程序集(DLL/EXE格式)
    • $File字节列表对应另一段恶意payload或辅助执行数据

2. 痕迹清理操作

  • schtasks /delete /tn det /f:尝试删除名为det的系统计划任务,目的是清除之前留下的恶意执行痕迹,避免被追踪。

3. 最终执行行核心功能解析

$a = [Reflection.Assembly]
$a::'Load'($PE.ToArray()).GetType('NewPE.PE').GetMethod('Execute').Invoke($null,[object[]] ($injpath,$File.ToArray()))

这行是脚本的恶意执行核心,拆解为4个关键步骤:

  1. 加载恶意程序集:[Reflection.Assembly]::Load($PE.ToArray())将从pe.png提取的字节数组动态加载为.NET程序集,全程在内存中操作,绕过磁盘查杀。
  2. 定位恶意类:.GetType('NewPE.PE')从加载的程序集中找到名为NewPE.PE的恶意类。
  3. 获取执行方法:.GetMethod('Execute')提取该类中的Execute静态方法(调用时传入$null作为实例对象,说明是静态方法)。
  4. 执行恶意逻辑:.Invoke($null,[object[]] ($injpath,$File.ToArray()))调用Execute方法,传入两个参数:
    • $injpath:指向系统合法工具RegAsm.exe的路径,利用该微软签名工具实现白名单绕过,避免被安全软件拦截。
    • $File.ToArray():从Image.png提取的恶意payload,由Execute方法借助RegAsm进程完成注入或执行。

简单来说,这行的作用是:内存加载图片中隐藏的恶意.NET程序集,调用其中的执行方法,借助系统合法工具RegAsm执行另一段隐藏的恶意payload,以此逃避检测并完成恶意行为。

补充说明

这类脚本属于典型的“图片隐写+内存加载+白名单绕过”恶意样本,通过将恶意数据藏在图片像素中规避磁盘检测,再利用系统合法工具执行,大幅降低被发现的概率。


内容的提问来源于stack exchange,提问作者Shawna Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 09:11:31