[译文] 恶意代码分析:4.ViperSoftX机制-利用AutoIt和CLR隐蔽执行PowerShell

这是作者新开的一个专栏,主要翻译国外知名安全厂商的技术报告和安全技术,了解它们的前沿技术,学习它们威胁溯源和恶意代码分析的方法,希望对您有所帮助。当然,由于作者英语有限,会借助LLM进行校验和润色,最终结合自己的安全经验完成,还请包涵!

前文介绍了DNS隧道的两个新技术——跟踪和扫描。这篇文章将详细讲解ViperSoftX机制,利用AutoIt和CLR隐蔽执行PowerShell代码,通过运用CLR,ViperSoftX能够无缝集成PowerShell功能,使其能够在执行恶意功能的同时,规避可能标记独立PowerShell活动的检测机制。基础性技术文章,希望您喜欢!

  • 欢迎关注作者新建的『网络攻防和AI安全之家』知识星球

在这里插入图片描述


一.威胁总结

在网络威胁(cyber threats)不断演变的动态环境中,ViperSoftX作为一种高度复杂的恶意软件(highly sophisticated malware)已崭露头角,其擅长渗透系统并窃取敏感信息。自2020年首次被发现以来,ViperSoftX经历了数次迭代,每个版本都展现出更高的复杂性和更先进的功能。起初,它主要通过破解软件传播,利用盗版应用程序诱导用户安装恶意软件。ViperSoftX早期还通过种子(torrent)网站分发,但现在我们观察到它专门以电子书的形式在种子文件中传播。

当前ViperSoftX变种的一个显著特点是利用公共语言运行时(Common Language Runtime,CLR)动态加载和运行PowerShell命令,从而在AutoIt内部创建PowerShell环境以执行操作。通过运用CLR,ViperSoftX能够无缝集成PowerShell功能,使其能够在执行恶意功能的同时,规避可能标记独立PowerShell活动的检测机制。

此外,ViperSoftX还采用了一种策略,即攻击者有选择地从攻击性安全脚本中调整组件,仅修改必要的元素以符合他们的恶意目标,而非从头开始编写新代码。通过利用这些现有脚本,恶意软件开发者不仅可以加速了开发过程,还可以专注于提升逃避检测的技术,使ViperSoftX在网络安全领域成为一股不可忽视的威胁。

深入了解这些方法对于开发有效防御此类高级威胁至关重要。在本博文中,我们将深入探讨ViperSoftX的工作原理,包括其感染链、有效载荷执行以及采用的多种逃避检测技术。

公共语言运行时 (Common Language Runtime,CLR) 是 .NET 提供的运行时环境,它运行托管代码并提供跨语言集成、安全性、版本控制等服务。


二.感染流程

图1展示了恶意软件的感染流程,包括初始化、恶意组件、CLR、Payload执行、命令与控制等。

在这里插入图片描述


三.Torrent陷阱:ViperSoftX的恶意电子书与隐藏威胁

图2展示了电子书Torrent链接。

在这里插入图片描述

当用户从恶意Torrent链接下载电子书时,攻击就开始了,他们误以为正在获取合法文件。然而,下载的RAR文件中隐藏着多重威胁,包括一个隐藏文件夹、一个伪装成无害PDF文件的狡猾快捷方式文件、PowerShell脚本、AutoIt.exe以及AutoIt脚本,这些文件均巧妙地伪装成JPG文件。隐藏文件夹内包含一组与当前文件夹中相同的文件,但除了一份作为诱饵的PDF或电子书文档外,该文档旨在掩盖其真实目的。

下图分别展示了RAR文件夹内容以及LNK文件命令。注意,图片格式其实是伪装的恶意代码。

在这里插入图片描述

在这里插入图片描述

当用户执行快捷方式文件时,它会启动一个命令序列,该序列首先列出“zz1Cover4.jpg”的内容。随后,它从该文件中逐行读取内容,并在命令提示符中将它们作为命令执行,从而有效地自动化执行多个命令。这种策略允许在无需用户直接交互的情况下,流畅且自动地执行潜在恶意命令。图5展示了隐藏的PowerShell代码。

在这里插入图片描述

如上所述,LNK文件执行“zz1Cover4.jpg”,该文件巧妙地在多个进程日志的空白处隐藏了PowerShell代码。

这段PowerShell代码执行了以下几个操作:

  1. 取消隐藏文件夹的隐藏状态。
  2. 该脚本计算所有磁盘驱动器的总大小,并将该大小用作AutoIT脚本的文件名和任务名。该脚本配置Windows任务计划程序(Task Scheduler),设置两个触发器:一个在登录时触发,每5分钟重复一次;另一个每天触发,每10分钟重复一次。
  3. 它将两个文件(zz1Cover2.jpg和zz1Cover3.jpg)复制到%APPDATA%\Microsoft\Windows目录下,并将zz1Cover2.jpg重命名为<磁盘驱动器大小总和>.au3,将zz1Cover3.jpg重命名为AutoIt3.exe。
  4. 删除当前目录中的所有.lnk文件。

图6显示了隐藏文件夹内容突出显示诱饵电子书(eBook)。

在这里插入图片描述

图7显示了以计划任务运行AutoIT脚本。

在这里插入图片描述


四.从防御到进攻:ViperSoftX的战略代码重用

在研究ViperSoftX时,我们发现了一个清晰的模式:攻击者利用AutoIt脚本来隐藏其恶意行为。攻击者使用各种技术精心混淆这些脚本,增加了复杂性,这对研究人员和分析工具试图解密其功能构成了挑战。

此外,我们的分析揭示了ViperSoftX广泛使用了大量代码,这表明了其操作的复杂性和深度。通过对源代码的反编译,我们能够进行彻底的分析,更深入地了解ViperSoftX的操作,并揭示其功能和工作方法。

图8展示了混淆AutoIT脚本的片段。

在这里插入图片描述

1.在AutoIt脚本中执行PowerShell命令

AutoIt脚本超越了其原本良性的起源,成为秘密执行PowerShell命令的强大工具。AutoIt有害用途的关键在于它能够与.NET公共语言运行时(CLR)框架进行交互。尽管AutoIt默认不支持.NET公共语言运行时(CLR),但该语言的用户定义函数(user-defined functions,UDF)为CLR库提供了一个接口,从而使恶意行为者能够访问PowerShell的强大功能。

借助.NET CLR的支持,AutoIt获得了利用PowerShell自动化类“System.Management.Automation.PowerShell”的能力。这些类促进了在非托管运行空间中与PowerShell模块、cmdlet和脚本的交互。利用这些类,攻击者可以轻易地执行各种有害活动而不被察觉。

更多详情,可参阅AutoIT论坛和微软官方文档。

图9展示了使用.NET CLR在AutoIt中嵌入PowerShell脚本。

在这里插入图片描述

下面详细解释这段Powershell代码:

(1)加载程序集

  • 脚本首先通过 _CLR_LoadLibrary 加载 System.Management.Automation 程序集。
  • 此步骤初始化一个局部变量 $oAssembly,用于存储加载的程序集对象。

(2)获取类型信息

  • 脚本利用 $ oAssembly.GetType_2 方法检索 Management.Automation.PowerShell 类的类型信息。
  • 初始化一个局部变量 $pAssemblyType 来存储此类型信息。

(3)动态创建对象

  • 基于之前获取的类型信息,使用 ObjCreateInterface 创建一个激活器(activator)对象 $oActivatorType。
  • 该激活器对象的目的是动态地创建PowerShell对象的实例。

(4)初始化PowerShell对象

  • 脚本使用激活器(activator)对象和 InvokeMember_3 方法初始化一个PowerShell对象 $pObjectPS。
  • 此步骤在AutoIt内有效创建了一个PowerShell环境,用于执行PowerShell命令。

(5)添加和执行PowerShell脚本

  • 将存储在 $ PSScript 中的PowerShell脚本添加到PowerShell对象 $ pObjectPS 中,使用 $ pObjectPS.AddScript方法。
  • 然后,通过 $ pObjectPS.BeginInvoke 方法异步执行脚本,该方法返回一个异步操作句柄 $objAsync。

(6)处理异步执行

  • 脚本进入一个循环,等待异步操作完成(即 $ objAsync.IsCompleted = False)。
  • 在循环内部,ContinueLoop确保脚本保持在循环中,直到操作完成。
  • 一旦操作完成,脚本使用 $ pObjectPS.EndInvoke 检索结果,并将其存储在 $objPsCollection中。

2.绕过AMSI检测

在执行前,AMSI(Antimalware Scan Interface)赋予安全产品审查脚本内容的能力,包括PowerShell脚本。这种主动防御策略增加了一层宝贵的防护层,能够在恶意活动对系统和网络造成破坏之前进行阻止。ViperSoftX中的 _PatchAMSI() 函数具有单一目的:在执行PowerShell脚本之前,消除AMSI的警惕注视。通过给AMSI打补丁,ViperSoftX能够绕过依赖于AMSI进行恶意脚本扫描和阻止的安全解决方案的检测,从而在被入侵的系统中进行未被发现的操作。

图10展示了尝试绕过AMSI检测。

在这里插入图片描述

下面逐行解析 _PatchAMSI 函数的功能:

(1)定义补丁字节(Patch Bytes)

  • 此行代码将补丁字节定义为十六进制字符串。这些字节包含将被写入AmsiScanBuffer内存位置的操作码,这些操作码有效地改变了函数的行为,使其返回 E_INVALIDARG 错误。

在这里插入图片描述

(2)加载DLL

  • _HexToString 函数将十六进制字符串转换为DLL名称(此处为dll)的可读字符串。
  • _WinAPI_LoadLibrary 函数将指定的DLL加载到内存中。

(3)获取ASB地址

  • 另一个十六进制字符串被转换为可读字符串(“AmsiScanBuffer”)。
  • _WinAPI_GetProcAddress 函数检索已加载DLL中指定函数(AmsiScanBuffer)的内存地址。

(4)修补内存

  • BinaryLen计算补丁字节的大小。
  • DllCall 调用Windows API函数 VirtualProtect 以修改内存保护属性。
  • 该函数修改指定内存地址($asbLoc)的保护属性,以允许写入(0x40代表PAGE_EXECUTE_READWRITE)。
  • 原始保护状态被存储在变量中以便后续恢复。

(5)应用补丁

  • 创建一个动态结构($patchBuffer)以存储补丁字节。
  • 通过 DllStructSetData 函数将补丁字节写入分配的内存中。
  • 最终,在应用补丁后,将内存保护恢复到其原始状态。

五.揭露隐藏的PowerShell载荷

如前文所述,“PS有效载荷”指的是在感染过程中执行的一个恶意PowerShell脚本。它存储在变量 $PSScript 中,并通过Base64加密进行隐藏。AutoIt函数 _RUN_PSHOST_SCRIPT() 负责加载并执行此PowerShell脚本。

图11展示了Base64编码的PS有效载荷。

在这里插入图片描述

此初始有效载荷在解密后,会展现出另一层复杂性,因为反向Base64和AES加密的混合使用掩盖了一个二级PowerShell脚本。图12为反向Base64和AES加密。

在这里插入图片描述

通过这一复杂的解密过程,最终有效载荷得以展现。AMSI补丁和这一系列加密方法旨在混淆有效载荷的真实性质,给安全解决方案带来挑战。下图展示解密后的最终有效载荷。

在这里插入图片描述

ViperSoftX恶意软件的最终有效载荷具备执行多种恶意行为的能力:

  • 它通过浏览器扩展收集系统信息并扫描加密货币钱包。下图展示了浏览器扩展检查。

在这里插入图片描述

Plqopsjidoikoaqx PowerShell函数在Firefox配置文件目录中扫描特定的浏览器扩展,并检查JSON对象中定义的某些文件。它创建一个已识别扩展和目标的列表。如果检测到如 Metamask 或 Ronin Wallet 等扩展,则会在列表中添加相应的标识符。此外,它还会检查JSON数据定义的路径中是否存在特定文件,并将其名称添加到列表中。最后,收集到的信息被转换为Base64编码的字符串并返回。这一过程有助于收集和编码系统信息以供进一步使用或传输。

  • 它将收集到的信息发送至其命令与控制(C2)服务器。图15为收集并发送系统数据至C2服务器。

在这里插入图片描述

ViperSoftX的网络活动展示了复杂的逃避检测技术与合法流量融合的策略。在一些样本中观察到的使用欺骗性主机名(如security-microsoft[.]com)旨在显得可信,并误导受害者认为该域名与微软相关。此外,在恶意活动中常用的可疑Base64编码的User-Agent揭示了详细的系统信息。该User-Agent字符串包含了来自PowerShell命令的数据,如逻辑磁盘卷序列号、计算机名、用户名、操作系统版本、防病毒产品信息和加密货币详情。下图展示了使用欺骗性的主机名。

在这里插入图片描述

随后,pOPSKX函数将收集到的数据发送至远程服务器。它建立了一个Web客户端,配置了带有自定义用户代理的头部,并上传了数据。该POST请求的内容长度(Content-Length)为0,这表明了一种尝试通过不发送正文内容来避免被检测的策略。

在接收到响应后,pOPSKX函数会检查服务器回复中的一个名为“worker”的头部。如果该头部的值为“0”,则表示没有更多任务,全局worker变量被设置为false。如果值不是“0”,则表示还有更多任务要执行,全局worker变量被设置为true。此变量对于控制恶意软件的下一步行动至关重要,它根据服务器的指令决定恶意软件是应保持空闲还是继续执行命令。此外,Cloudflare服务的使用可以掩盖恶意流量的真正来源,为ViperSoftX的操作增加了另一层隐蔽性。

综上所述,这些功能共同从受感染的系统收集数据,并将其发送到命令与控制(C2)服务器以获取进一步指令。以下是ViperSoftX可执行的其他活动:

  • ViperSoftX隐秘地捕获剪贴板内容,提取可能敏感的数据。
  • 它根据从C2服务器接收到的响应动态下载并执行额外的有效载荷和命令。
  • 通过使用Windows管理规范(WMI)检查反恶意软件产品的存在来进行侦察活动。
  • 该恶意软件包含自我删除机制,以逃避检测和清除尝试。

六.结论

通过有针对性地利用现有的进攻性安全脚本并对其进行修改以适应其恶意目的,ViperSoftX背后的攻击者不仅加速了开发进程,还完善了其逃避检测的策略,从而提升了这一恶意软件变种所构成的威胁。

ViperSoftX的一个标志性特征是它熟练地利用公共语言运行时(CLR)在AutoIt环境中协调PowerShell操作。这种集成能够在逃避通常会标记独立PowerShell活动的检测机制的同时,无缝执行恶意功能。此外,ViperSoftX在执行PowerShell脚本之前能够修补反恶意软件扫描接口(AMSI)的能力,凸显了其绕过传统安全措施的决心。这种逃避策略,加上其多方面的能力,包括数据外泄、侦察和自我删除机制,凸显了现代恶意软件威胁的复杂性和敏捷性。最终,通过了解ViperSoftX等恶意软件变体的运作模式,并采用涵盖检测、预防和响应能力的综合防御策略,组织可以有效地缓解这些复杂威胁所带来的风险,保护其数字资产,并维护其系统和网络的完整性。

产品介绍:Trellix Email Security为该活动提供了多层检测策略,包括对URL、电子邮件、网络和附件级别的检查,以确保发现任何潜在威胁并阻止其对我们的客户造成伤害。为了保持对新出现和不断变化的威胁的领先地位,我们的产品持续监控并更新其威胁情报数据库,以应对新的和不断发展的威胁。这包括Trellix多向量虚拟执行引擎(一个新型反恶意软件核心引擎)、机器学习行为分类和AI关联引擎,以及来自Trellix云的实时威胁情报。


七.TTPs和IOCs

最后给出技战术和IOCs。

MITRE ATT&CK Techniques

在这里插入图片描述

Trellix Protection

在这里插入图片描述

Indicators of Compromise (IoCs):

在这里插入图片描述

在这里插入图片描述

2024年4月28日是Eastmount的安全星球——『网络攻防和AI安全之家』正式创建和运营的日子,该星球目前主营业务为 安全零基础答疑、安全技术分享、AI安全技术分享、AI安全论文交流、威胁情报每日推送、网络攻防技术总结、系统安全技术实战、面试求职、安全考研考博、简历修改及润色、学术交流及答疑、人脉触达、认知提升等。下面是星球的新人券,欢迎新老博友和朋友加入,一起分享更多安全知识,比较良心的星球,非常适合初学者和换安全专业的读者学习。

在这里插入图片描述
目前收到了很多博友、朋友和老师的支持和点赞,尤其是一些看了我文章多年的老粉,购买来感谢,真的很感动,类目。未来,我将分享更多高质量文章,更多安全干货,真心帮助到大家。虽然起步晚,但贵在坚持,像十多年如一日的博客分享那样,脚踏实地,只争朝夕。继续加油,再次感谢!

(By:Eastmount 2024-07-18 星期四 夜于贵阳 http://blog.csdn.net/eastmount/ )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Eastmount

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值