欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

剖析NETWIRE网络钓鱼行动中对Process Hollowing的运用

来源:本站整理 作者:佚名 时间:2019-03-19 TAG: 我要投稿

无文件攻击是当前较为常见的一种攻击手段,恶意软件通过其payload来逃避检测,而无需在磁盘上编写可执行文件。无文件执行最常见的技术之一是代码注入——攻击者不需要直接执行恶意软件,而是将恶意软件代码注入另一个进程的内存中去执行。
PowerShell在所有Windows 7及以上的版本中都含有,而且支持的特性非常多,因此PowerShell已经成为攻击者最常利用的工具之一。FireEye曾经在多个报告中提及过PowerShell用于恶意软件初始传递期间或后漏洞利用阶段的事迹。利用PowerShell,攻击者能方便地与其他Windows组件进行交互,进而隐秘快速地执行他们的活动。
本篇文章探讨的是在2019年2月观察到的钓鱼活动。它是一场无文件感染攻击,攻击者使用VBScript、PowerShell和.NET framework,利用process hollowing技术执行了代码注入攻击。通过利用.NET程序集会被直接加载到PowerShell内存中这一功能来执行恶意代码,而无需在磁盘上创建PE文件。
总结
图1展示了此次攻击中使用的钓鱼邮件,其内容是诱导用户打开存储在Google Drive上的文档。文件的名称表明参与者的目标是航空人员。我们注意到越来越多的攻击者选择使用云文件存储服务,为的是绕过防火墙限制来承载其payload。

图1.托管在Google Drive上的恶意脚本
图2展示了打开脚本时Internet Explorer发出的警告消息,说无法验证发布者。但根据我们的经验,许多用户会忽略警告并打开文档。

图2.Internet Explorer提示警告
执行期间。经过多层混淆之后,一个PowerShell脚本将被执行,该脚本会从远程URL加载. net程序集,并使用这些函数将最终payload(NETWIRE Trojan)注入到使用了process hollowing的良性Microsoft可执行文件中。这项动作是有可能绕过应用程序白名单的,因为攻击期间生成的所有进程都是合法的Microsoft可执行程序。
技术细节
初始文档里含有VBScript代码。当用户打开它时,iexplore会生成Wscript来执行此文件。该脚本使用了多层混淆来绕过静态扫描器,并最终运行一个PowerShell脚本来执行二进制payload。
图3和图4展示了在不同级别的脚本执行期间使用的混淆技术。

图3.第一类混淆技术,它使用log函数来解析宽字符

图4.第二类混淆技术,它使用分割和替换操作
然后,此脚本从paste.ee处下载一个编码的.vbs脚本并执行,如图5所示。Paste.ee是对Pastebin的一种较低规范的替代方案,我们在之前的许多攻击事件中也观察到过攻击者使用Paste.ee来承载其payload的案例。由于网站使用的是TLS(传输层安全协议),大多数防火墙解决方案无法检测通过网络下载的恶意内容。

图5.下载第二阶段脚本并创建调度任务
该脚本会将自身复制到Appdata / Roaming,并使用schtasks.exe创建一个VBScript的计划任务(每15分钟运行一次)来实现持久性。
在对下载的第二阶段VBScript进行进一步去混淆之后,我们获得了通过shell对象执行的PowerShell脚本,如图6所示。

图6.去混淆的PowerShell脚本
该PowerShell脚本会从paste.ee上下载两个Base64编码的payload,payload里包含了二进制可执行文件。文件中的字符串将被存储为PowerShell脚本变量,并且不在磁盘上创建任何文件。
微软在PowerShell中提供了多种与.NET framework交互的方式,用户可以通过自定义开发的方式来增进这种交互。由于传统安全监视工具在.NET进程运行时,对其行为的可见性是有限的,因此利用PowerShell与.NET的集成对攻击者而言十分具有吸引力。出于这个原因,诸如CobaltStrike和Metasploit之类的漏洞利用框架可以选择在.NET汇编代码中生成它们的植入。
在此例中,攻击者使用了System.Reflection.Assembly .NET Framework类中的Load方法。将程序集作为System.Reflection.Assembly的实例加载后,可以通过这个类似于C#对象访问成员,如图7所示。

图7:格式化的PowerShell代码
这段代码会标识计算机上已安装的.NET版本,并用它动态解析. net安装文件夹的路径。解码的dropper程序集作为参数传递给Load方法,生成的类实例将被存储为一个变量。
通过此变量能访问dropper的对象并调用方法R。.NET dropper的方法R负责执行最终的payload。
以下是方法R的参数:
· InstallUtil.exe(或其他.NET framework工具)的路径
· 解码的NETWIRE木马
当我们观察攻击期间产生的进程列表时(图8),并没有看到payload成为一个单独的进程。

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载