LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

【黑客防范】追踪迷雾后的真相-被混淆的JavaScript脚本可以这样调试

admin
2024年3月30日 15:15 本文热度 490

摘要


恶意软件常常利用混淆JavaScript脚本的技术,以增加其对抗分析和检测的难度。通过混淆,恶意脚本可以模糊代码的结构和逻辑,使其变得更加晦涩难懂,从而阻碍安全研究人员和防御系统对其进行分析和检测。此外,混淆还可以使得恶意脚本更难以被传统的静态和动态分析工具所识别,从而增加了攻击者成功执行恶意活动的机会。因此,混淆JavaScript脚本已成为恶意软件作者常用的手段之一,用以提高其攻击的成功率和持久性。


调试方法


通常,混淆的JS代码的目的是为了释放或下载另一个文件。要调试此操作,可以利用“shell32.dll”中的特定函数,例如“ShellExecute”用于运行命令。JS通过称为“wscript.exe”的Windows解释器执行,因此要调试JS,需要在调试器中打开wscript.exe(路径:C:/Windows/System32/wscript.exe),然后更改命令行以指向恶意的JS文件:

接下来,需要在上面提到的shell32.dll上设置断点,方法是转到“断点”选项卡 > 单击右键 > “添加DLL断点” > shell32.dll:

现在,需要通过运行调试器(x64dbg, 下载地址:https://x64dbg.com/)来加载shell32.dll — 如果断点设置正确,x64dbg将在到达此DLL后停止执行,这意味着在特定API上设置断点,例如“ShellExecute”,将可用。这可以通过转到“符号”选项卡 > 单击shell32.dll > 搜索ShellExecute > 按下F2来设置断点(红色表示断点已设置)来完成:

现在,需要禁用针对shell32.dll的断点,否则它将执行此DLL的任何API:“断点”选项卡 > 右键单击“shell32.dll” > “禁用”。之后,再次运行调试器 — 最终它将停止在先前设置的API上执行。传递的参数可以在堆栈面板中看到 — 在此示例中,它是一个PowerShell命令:

完整命令可以通过在堆栈面板中右键单击命令 > “跟随转储中的Qword” > “转储 *” > 在转储面板中右键单击 > “文本” > “扩展ASCII” 来扩展。

看起来JS正在释放并执行PS脚本。脚本的路径也可见,这意味着可以在不先执行JS文件的情况下调查PS脚本的IOCs。这是由PSDecode(下载地址:https://github.com/R3MRUM/PSDecode)美化的代码:



恶意软件分析


在整理脚本后,可以看到这是真正的恶意软件,而JS只是传播者。它将尝试从第一个URL下载“01b1v2g3.zip”(另存为“s3pch1.zip”,解压内容到创建的“MsEdgeSandbox”隐藏文件夹中,并删除“s3pch1.zip”),或者从第二个URL下载(下载“f1lePsa”变量中指定的文件,并将它们保存在同一“MsEdgeSandbox”目录中)。最后,它启动“client32.exe”并创建注册表条目以保持持久性。现在已知恶意的URL,我们可以直接连接到它们并下载ZIP文件:

存档包含一些DLL、EXE、INI文件,其中包括“client32.exe”,这可能是真正的恶意软件:

其中一个配置文件包含一行,可能包含C2地址以及用于连接的端口:



静态分析


为了进一步确认上述行为,可以动态地分析文件,但在此之前,可以先用静态分析方法进行快速检查。以下是发现的文件及数字签名信息,如图:

相同的信息可以从检查字符串或分析PE头中提取。NetSupport Manager是合法的远程管理应用程序,但也被对手用作远程访问木马(RAT)。总之,静态分析没有提供任何新信息,因为client32.exe正在使用配置文件进行连接,因此下面将开始通过动态分析来确认这一点。



动态分析


在动态分析之前,先简单介绍几个实用工具。FLARE和Remnux是网络连接的组合工具, INetSim(下载地址:https://www.inetsim.org/downloads.html)是一个用于模拟Internet服务如:http或smtp的工具。将FLARE的默认网关配置为Remnux的IP, 这样在FLARE中生成的流量将被定向到Remnux的机器。通过网络分析确认了恶意软件确实正在连接到配置文件中的域名,以及一个新的域名, 可能是合法的域名, 因为解析域指向: geo.netsupportsoftware.com,以下是Wireshark(下载地址:https://www.wireshark.org/)抓包的结果:

接下来看一下如果Remnux也在端口1412上运行监听器会出现什么情况(netcat下载地址:https://sectools.org/tool/netcat/):

看来持久性是通过PS脚本实现的, 但该脚本未执行, client32.exe未执行这部分功能, 动态分析告一段落。



执行痕迹追踪


在模拟普通用户运行后, 的确有一个PS窗口弹出, 通过调试JS, 已知释放的PS脚本在Roaming目录下, 但运行后可能删除了自身,在该文件夹下无法找到任何文件。

通过检查MFT(主文件表, 里面包含所有文件的元数据,路径为:C:\$MFT) 可以证明js确实存在, 为了解析$MFT文件,将其保存为CSV格式文件, 这个可以使用MFTCmd.exe和TimelineExplorer(下载地址:https://ericzimmerman.github.io/#!index.md)组合打开解析后的CSV文件:

PS脚本在执行后会删除自身,因此在$MFT中看不到它,与文件删除一样,$MFT中的EntryNumber被标记为未分配,并且很快被覆盖,但还有另一个名为$UsnJrnl的表(记录系统上发生的所有更改;路径:C:\$Extend\$UsnJrnl)。它有两个备用数据流:$Max(更改日志)和$J(更改日志的内容,其中保存了对文件的每个操作)。此外,NTFS以UTC格式存储时间值,因此它们不受时区更改的影响;我的沙箱上的本地时间是UTC+2(15:36),因此在$MFT中是-2小时的时间(13:26)。下面是来自$J表的PS脚本的创建和删除条目,证明了其过去确实存在过;此外,在调试过程中,脚本的名称与之前不同,这表明每次执行JS时脚本名称都是随机的。

下载的s3pch1.zip 表现出类似的行为,但在以那个名称下载之前,会创建一个 .tmp 文件,然后将其重命名为脚本中指定的名称。这意味着重命名也可以通过使用 $J 并通过指定文件的 EntryNumber 进行过滤来证明。在需要确认已被重命名的可疑文件存在的情况下,这非常有用,因为 $MFT 表只包含当前的文件名:

MsEdgeSandbox 文件夹的存在也可以在 $MFT/$J 表中进行验证;以下是证明它已被创建为隐藏目录的证据:

$J 表不会显示完整路径,但可以与 $J(在此情况下为83495)中的 ParentEntryNumber 和 $MFT 中的 EntryNumber 进行相关性检查;$MFT表中的 EntryNumber 83495 指向 Roaming 文件夹,这也证明了PS脚本、s3pch1.zip和MsEdgeSandbox 文件夹是在那里创建的:

在收集了所有名称之后,可以过滤 $J 表来搜索它们(legit.js 也从 mal.js 重命名过来,EntryNumber 是相同的):

所有恶意文件的存在已通过 $MFT 和 $J 表得到证实。

所有文件的执行证据都可以在Prefetch文件夹中找到(它包含加速应用程序加载时间所需的数据, 路径:C:\Windows\Prefetch)。创建时间是应用程序首次执行的时间,修改时间是应用程序的上次执行时间加上 10 秒 — 在这 10 秒内,Prefetch文件将记录可执行文件与之交互的所有文件和目录。Prefetch还包含最后 8 次运行时间,其中第 8 次是修改时间。如果这是一个应用程序,那么修改时间将指示上次执行时间 — 但对于使用特定应用程序打开的文件则不然。恶意脚本执行后还执行了 Powershell — 这就是修改时间与 wscript.exe 不同的原因,这意味着 Powershell/另一个脚本的执行,而不是这个特定的恶意脚本。如下所示,两个应用程序在某个时间点打开了恶意脚本,其中 Powershell 还与 s3pch1.zip(通过脚本下载)和 client32.exe(通过脚本执行)进行了交互;至于 client32.exe,它是一个应用程序,因此修改时间表示执行时间 +10 秒(所有时间均为 UTC+2):

在禁用Prefetch的情况下(可以通过更改注册表键的值来实现:SYSTEM(HKLM)/CurrentControlSet/Control/SessionManager/MemoryManagement/PrefetchParameters/EnablePrefetcher 设置为 0),执行也可以在名为 RecentDocs 的注册表键中进行验证(最近访问的文件,UTC;路径:NTUSER.DAT(HKCU)\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs\*extension*):

证明PowerShell脚本执行的最直接证据可在Windows日志中找到(C:\Windows\System32\winevt\Logs\Microsoft-Windows-PowerShell/Operational.evtx):

对于 wscript.exe(JS)、powershell.exe 和 client32.exe, 安全日志也可以通过进程创建事件来证明执行,事件ID为4688:



网络流量


在执行JS后,网络流量将如下所示:

首先连接到 tukudewe.com 获取 zip 文件,然后直接连接到 jokosampbulid (C2),并在 client32.exe 执行后进行地理位置检查(UTC 时间)



持久性痕迹


脚本还通过在注册表中创建自动启动项添加了一些持久性。持久性知名位置之一当然是Run键。有两个Run键:NTUSER.DAT(HKCU)\Software\Microsoft\Windows\CurrentVersion\Run(此键中的值在特定用户登录后运行)和SOFTWARE(HKLM)\Microsoft\Windows\CurrentVersion\Run(此键中的值在任何用户登录后运行)。在已知持久性的情况下(如本例),更容易删除,但如果位置未知,则始终可以通过解析注册表来查找异常条目。一个能够做到这一点的工具是 RegRipper(下载地址:https://github.com/keydet89/RegRipper3.0):

至此, 所有恶意文件的执行已通过Prefetch、RecentDocs 键和日志证明;网络连接通过捕获流量证明,持久性通过注册表解析器证明。


该文章在 2024/3/30 15:40:47 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved