调试JavaScript恶意文件

admin 2023年9月11日00:55:10评论18 views字数 2273阅读7分34秒阅读模式

缘起

研究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浏览器版本: 

调试JavaScript恶意文件


成功调试如下,调试的过程还算比较简单,单步步入或者步过,以及设置断点等,不过需要注意的是在浏览器打开该文件时,实质已经运行了一遍,所以需要第二遍的时候才能对其设置断点。

调试JavaScript恶意文件


由于本案例中的脚本内容还启用了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恶意文件


对于调试JavaScript文件时遇到的问题,比如一些恶意HTA文件对其修改成JavaScript文件调试时中会存在'GetObject' is undefined的错误,原因如下:带有winmgmts的GetObject在任何版本的IE中都从未提供过,因为它只能使用HTA来工作,所以这个是没办法二次修改调试的,毕竟两种类型的脚本依赖不同。


在解决了基本调试方法后,我又思考了下,想着是不是可以利用原本的JavaScript代码将解码后的数据保存到本地?这也是取巧的一种方式,不论方式如何,毕竟最终调试的最终目的是获取到所需的数据。通过通读JavaScript代码流程,直接截取代码至Chrome控制台执行,于是我修改并输出了如下的浏览器解密代码:

调试JavaScript恶意文件


只需要在浏览器控制台输入并执行上述逻辑,就能在控制台获取解密后的数据内容。获取输出如下,输出经过base64解码后可以得到PE文件。

调试JavaScript恶意文件


后续本地就可以采用Python脚本解码后转换为二进制文件

调试JavaScript恶意文件

调试JavaScript恶意文件


既然可执行文件拿到了,之后就是正常的恶意文件分析过程,这里不再提及。

调试JavaScript恶意文件

调试JavaScript恶意文件


最后的最后我又想了下可不可以模拟执行JavaScript然后提取出数据?毕竟上述的过程有些复杂了,想着有没有稍微方便点的操作,于是发现了以下项目。


HynekPetrak/malware-jail:沙箱,用于半自动Javascript恶意软件分析,去模糊和有效载荷提取,为Node.js编写。

https://github.com/HynekPetrak/malware-jail


能力有限,暂时还没有研究过该项目,就先写到这里,主要是想梳理下思路。 

调试JavaScript恶意文件


参考文章

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恶意文件

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年9月11日00:55:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   调试JavaScript恶意文件http://cn-sec.com/archives/700238.html

发表评论

匿名网友 填写信息