缘起
研究SideWinder APT组织的攻击样本时,发现本地释放了1.a文件,实质是HTA文件,接着利用runhtmlapplication函数加载执行,这个HTA文件之前没有接触过,于是事后花了些时间对其进行学习。
介绍
HTA(HTML应用程序)是可以访问本地资源的网页(表单),尽管执行HTA的引擎(MSHTA.EXE)与Internet Explorer共享许多代码,但它没有Internet Explorer的严格安全限制。实际上,如果以提升的特权运行,则HTA可以访问管理员有权访问的所有资源。发现1.a脚本为类JavaScript脚本,那么如何调试JavaScript脚本?
调试
VisualStudio的IDE太笨重了,通过搜索相关问题最终选用下Chrome浏览器进行调试。首先需要将待调试的脚本内容转换为html文件,将脚本文件首末添加<html>与<script>标签变成html文件,不过会遇到在Chrome下调试的时候提示ActiveXObject is not defined,这是因为脚本文件里引用的组件是IE浏览器独有的。于是换用edge浏览器也发现无法调试,只能采用Windows10中的IE浏览器调试,发现可以调试了。
调试的IE浏览器版本:
成功调试如下,调试的过程还算比较简单,单步步入或者步过,以及设置断点等,不过需要注意的是在浏览器打开该文件时,实质已经运行了一遍,所以需要第二遍的时候才能对其设置断点。
由于本案例中的脚本内容还启用了WScript.shell来执行"mst.Write(ba, 0, (length / 4) * 3); mst.Position = 0;”代码,导致调试无法继续往后进行。这是因为在Windows10中IE执行new ActiveXObject("ADODB.Stream”);时会提示找不到服务器对象,所以之后需要换用Windows7下的IE浏览器。通过对相关错误的搜索找到了原因与解决办法,见文末参考文章。当在Windows7下打开待调试的JavaScript文件时发现浏览器报错:Exception in window.onload: Error: An error has ocurredJSPlugin.3005。
那么如何修复?需要下载安装补丁:IE11-Windows6.1-KB3008923-x64.msu并安装。
对于调试JavaScript文件时遇到的问题,比如一些恶意HTA文件对其修改成JavaScript文件调试时中会存在'GetObject' is undefined的错误,原因如下:带有winmgmts的GetObject在任何版本的IE中都从未提供过,因为它只能使用HTA来工作,所以这个是没办法二次修改调试的,毕竟两种类型的脚本依赖不同。
在解决了基本调试方法后,我又思考了下,想着是不是可以利用原本的JavaScript代码将解码后的数据保存到本地?这也是取巧的一种方式,不论方式如何,毕竟最终调试的最终目的是获取到所需的数据。通过通读JavaScript代码流程,直接截取代码至Chrome控制台执行,于是我修改并输出了如下的浏览器解密代码:
只需要在浏览器控制台输入并执行上述逻辑,就能在控制台获取解密后的数据内容。获取输出如下,输出经过base64解码后可以得到PE文件。
后续本地就可以采用Python脚本解码后转换为二进制文件
既然可执行文件拿到了,之后就是正常的恶意文件分析过程,这里不再提及。
最后的最后我又想了下可不可以模拟执行JavaScript然后提取出数据?毕竟上述的过程有些复杂了,想着有没有稍微方便点的操作,于是发现了以下项目。
HynekPetrak/malware-jail:沙箱,用于半自动Javascript恶意软件分析,去模糊和有效载荷提取,为Node.js编写。
https://github.com/HynekPetrak/malware-jail
能力有限,暂时还没有研究过该项目,就先写到这里,主要是想梳理下思路。
参考文章
Debugging malicious windows scriptlets with Google chrome | by Amit Serper | Medium
https://medium.com/@0xamit/debugging-malicious-windows-scriptlets-with-google-chrome-c31ba409975c
关于adodb.stream的"错误: Automation 服务器不能创建对象"解决方法
http://blog.sina.com.cn/s/blog_c49b02250102v5im.html
Fix Exception in window.onload: Error: An error has ocurredJSPlugin.3005 - YouTube
https://www.youtube.com/watch?v=4UtTkeWz4LA&ab_channel=MuruganS
IE 11 WMI Java Script 'GetObject' is undefined
https://social.technet.microsoft.com/Forums/en-US/f0e423d5-a5d3-44d9-85a8-a0df8b75bafd/ie-11-wmi-java-script-getobject-is-undefined?forum=ITCG
原文始发于微信公众号(OnionSec):调试JavaScript恶意文件
- 我的微信
- 微信扫一扫
-
- 我的微信公众号
- 微信扫一扫
-
评论