Pegasus银行木马样本分析

  • A+
所属分类:网络安全文章

前言

最近Pegasus(一种银行木马)的源代码被公布到了网上。尽管报告的作者宣称木马出自黑客组织Carbanak之手,但Minerva实验室的研究人员已经证明,Pegasus实际上是一个名为Buhtrap(Ratopak)的黑客组织的作品。 该报告包含木马的概述,其源代码,关于俄罗斯银行业务流程的描述以及许多俄罗斯银行员工的信息。

Pegasus源代码的架构非常有趣。功能分为多个模块,在编译时组合成一个binpack。在编译期间,可执行文件使用文件tric.pfx中的证书进行签名,该证书未包含在报告里。

Pegasus的网络行为同样令人好奇。 感染后,Pegasus尝试在域内传播,并可以在Pipe和Mailslot传输的帮助下充当代理,在系统之间移动数据。 我们关注了该恶意软件的独特的网络行为,并快速将特征签名添加到PT网络攻击检测(PT Network Attack Discovery, PTNAD )中。由此,PT NAD的所有用户都可以在自己的网络上快速检测到此木马及其变种。在本文中,我将描述Pegasus如何在网络上传播以及Pegasus的拷贝如何相互通信。

基本结构

一旦感染计算机,初始化模块(InstallerExe)使用进程挖空(process hollowing)将代码注入svchost.exe。主模块初始化后,Pegasus启动了几个并行进程:
1.域复制:收集网络信息,并尝试将Pegasus传播到其他Windows系统。
2.Mailslot Listener:监听Mailslot广播,Pegasus使用它来发送被盗的凭据。 插件名称在编译时生成。
3.Pipe Server Listener:侦听windows pipe,其名称由计算机名派生 这些pipe主要用于在同一网络上发现Pegasus的其他拷贝并与之通信。
4.登录密码:在基于Mimikatz的模块的帮助下,每隔几分钟尝试一次从内存中转储凭据。
5.网络连接:负责与C&C服务器连接并定期交换消息。

  1. // 启动与CB管理器 的数据传输
  2. pwInitPipeServerAsync(dcmGetServerCallback());  mwInitMailslotServer(dcmGetServerCallback());
  3. ...
  4. // 开始向其他机器广播凭证
  5. cmStartupNetworkBroadcaster();

域复制

该模块负责Windows网络的横向移动。包括两个步骤:

发现域上的其他计算机。

试图将Pegasus复制到那些机器上。

在域上发现其他计算机依赖于使用两个API调用:NetServerEnum,它需要浏览器服务(Browser service )才能工作,以及WNetOpenEnum / WNetEnumResource。 然后验证域中发现的所有计算机是否已被感染。 Pegasus会每200毫秒一次轮询生成的pipe名称,重复超过20次。 (我们将这种奇怪的行为标记为Pegasus存在的指标之一。)如果Pegasus没有检测到任何感染迹象,则进入下一步:复制。

Pegasus银行木马样本分析

借助被感染的主机上找到的凭据,Pegasus尝试通过SMB协议登录到IPC $和ADMIN $共享目标。如果IPC $可访问但ADMIN $不可访问,则Pegasus断定该帐户没有足够的权限并将凭据标记为无效。 在获得对ADMIN $ share(%windir%文件夹的别名)的访问权限后,恶意软件会尝试确定电脑的体系结构,以便选择要应用的合适模块。

它通过计算机上的PE文件的头部信息确定此计算机的体系结构。Pegasus尝试在%windir%文件夹中读取notepad.exe文件的前4 KB。此方法的一个小缺点是,在Windows Server 2012上,notepad.exe位于路径%windir%\ System32,而不是%windir%。

Windows 7上notepad.exe的位置:

  1. C:\Users\Administrator>where notepad.exe
  2. C:\Windows\System32\notepad.exe
  3. C:\Windows\notepad.exe

Windows Server 2012上notepad.exe的位置:

  1. C:\Users\Administrator>where notepad.exe
  2. C:\Windows\System32\notepad.exe

如果未找到notepad.exe,则Pegasus无法感染服务器,即使它拿到了高权限帐户的凭据也一样。 因此,在%windir%中简单的缺少记事本程序就可以阻止Pegasus在Windows Server 2012上传播。举一反三,使用regedit.exe将是一种更加可靠的方式来完成此任务。

在确定目标服务器的体系结构后,Pegasus会下载一个大约10kb的小型的 Remote Service Exe dropper(RSE dropper)。 dropper的目的是通过明文Pipe下载包含有效载荷(Payload)模块的binpack,并将控制权移交给Shellcode模块。 dropper的名称是随机生成的,由8到15个十六进制字符组成。 随机生成器使用目标计算机的名称作为种子,并确保重新启动时名称相同,以避免将%windir%与多个Pegasus拷贝混淆。

Pegasus银行木马样本分析

在检查了dropper的完整性并确保未被反病毒软件删除dropper之后,恶意软件尝试通过Windows Management Instrumentation(WMI)运行dropper。 也可以使用服务控制管理器(Service Control Manager, SCM),但更倾向于使用第一种方法,因为SCM在Windows日志中留下了更多的痕迹。 源代码表明Pegasus的作者还打算使用别的方法进行复制:远程运行WSH,远程运行PowerShell 和计划任务。 通过RDP运行命令的模块也在开发中。

如前所述,一旦dropper启动成功,木马会检查并开始监听Pipe,然后将控制权移交给传来的payload。

  • CE安全网微信群
  • weinxin
  • CE安全网QQ群
  • weinxin
CE安全网

网络安全宣传推广

发表评论

您必须登录才能发表评论!