freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Unit42发布powershell自动反混淆工具
2019-11-23 09:00:27

概述

近日,Unit42安全团队在Github上公开了自己研发的powershell自动反混淆工具,Star数几日之间就突破了300,接下来,就来了解下这款神器的用法及原理。

项目地址:https://github.com/pan-unit42/public_tools/tree/master/powershellprofiler

使用方法

工具用法很简洁,python PowerShellProfiler.py -f <file_name>,若要查看反混淆过程的话可以加上-d参数进行调试,下面使用官方给出的恶意脚本initial_obfusctaed_sample.ps1进行演示,该样本使用了IEX替换、字符串编码、运算符冗余、变量重命名等方式进行混淆。

运行PowerShellProfiler.py后,PowerShellProfiler打印出了每一步反混淆的步骤,反混淆后的脚本,以及最后的结论:该样本的恶意分数18.5,高威胁,是个Downloader脚本,病毒家族为Veil Stream。

工具原理

演示完了PowerShellProfiler.py的使用方法,来看一下工具的原理,主要为4个核心步骤:反混淆目标脚本 -> 病毒家族检测 -> 可疑字符串扫描 -> 目标脚本恶意分数统计

除了第一个函数,后三个函数的原理都是通过正则表达式特征码匹配,下面重点分析下第一个反混淆的函数unravelContent。

进入该函数后,核心的反混淆函数为normalize(),在反混淆之前,工具会先对字符串进行相应的倒序、反编码、解压、解密等操作。这次的脚本initial_obfusctaed_sample.ps1存在frombase64string、decompress等字符串,首先会进入decompressContent这个反编码函数。

该函数首先对脚本进行base64解密,然后尝试用各种压缩方式进行解压,直到解压成功为止。

完成以上操作后,工具就调用normalize()函数进行反混淆,原理就是即时翻译powershell常用的混淆运算符、字符串,如:

1.删除一些无用的运算符:”空格”、”^”、”`”。

2.转化Char字节为ASCII码。

3.去掉”+”,连接字符串。

4.replace字符串。

反混淆前的脚本如下,存在大量的无用的运算符、char字符,以及一些明显的-replace替换函数。

进行了normalize()函数反混淆后,得到的脚本如下,结构已经很清晰了,接下来工具就可以对该脚本进行特征码匹配了,如:downloadstring、Start-Process等可疑字符串的提取。

结尾

powershell作为APT攻击的常用攻击方式,免杀、混淆的方式千变万化,光使用该工具无法保证能对所有ps脚本进行反混淆检测,我们更应该深入理解ps脚本的混淆常用方法及原理,才能实时地与这类恶意攻击样本进行对抗。

*本文作者:深信服千里目安全实验室,转载请注明来自FreeBuf.COM

# powershell # 反混淆 # Unit42
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者