Duqu - 恶意嵌套娃娃

介绍

1 年 2011 月 1 日,一个名为 ~DN9.tmp 的文件从匈牙利发送到 VirusTotal 网站。 当时,该文件仅被两个防病毒引擎 BitDefender 和 AVIRA 检测为恶意文件。 杜曲的故事就这样开始了。 展望未来,必须要说的是,Duqu 恶意软件家族就是以该文件的名称命名的。 然而,该文件是一个完全独立的间谍软件模块,具有键盘记录功能,可能是使用恶意下载器-dropper安装的,并且只能被视为Duqu恶意软件在运行期间加载的“有效负载”,而不是一个组件( Duqu 的模块)。 Duqu 组件之一于 XNUMX 月 XNUMX 日才发送至 Virustotal 服务。 其显着特点是由 C-Media 数字签名的驱动程序。 一些专家立即开始与另一个著名的恶意软件示例 Stuxnet 进行类比,该恶意软件也使用签名的驱动程序。 全球各反病毒公司检测到的受 Duqu 感染的计算机总数有数十台。 许多公司声称伊朗再次成为主要目标,但从感染的地理分布来看,这还不能确定。
Duqu - 恶意嵌套娃娃
在这种情况下,你应该自信地只用新词谈论另一家公司 APT (高级持续威胁)。

系统实施流程

匈牙利组织 CrySyS(匈牙利布达佩斯科技经济大学密码学和系统安全实验室)的专家进行的一项调查发现了感染系统的安装程序(滴管)。 这是一个 Microsoft Word 文件,利用了 win32k.sys 驱动程序漏洞(MS11-087,微软于 13 年 2011 月 XNUMX 日描述),该漏洞负责 TTF 字体渲染机制。 该漏洞的 shellcode 使用嵌入在文档中的名为“Dexter Regular”的字体,Showtime Inc. 被列为该字体的创建者。 如您所见,《Duqu》的创作者对幽默感并不陌生:《德克斯特》是一名连环杀手,是 Showtime 制作的同名电视剧中的英雄。 德克斯特只杀死(如果可能的话)罪犯,也就是说,他以合法性的名义违法。 或许,这样一来,Duqu开发商就讽刺了他们为了良好的目的而从事非法活动。 发送电子邮件是有目的地完成的。 这批货物很可能使用受损(被黑客入侵)的计算机作为中介,使追踪变得困难。
因此,Word 文档包含以下组件:

  • 文字内容;
  • 内置字体;
  • 利用 shellcode;
  • 司机;
  • 安装程序(DLL 库)。

如果成功,利用 shellcode 会执行以下操作(在内核模式下):

  • 检查是否再次感染;为此,在注册表中检查地址“HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionInternet SettingsZones4”处是否存在“CF1D”键;如果正确,则 shellcode 完成其执行;
  • 两个文件被解密 - 驱动程序 (sys) 和安装程序 (dll);
  • 驱动程序被注入到 services.exe 进程中并启动安装程序;
  • 最后,shellcode 在内存中用零擦除了自身。

由于win32k.sys是在特权用户“System”下执行的,Duqu开发人员优雅地解决了未经授权启动和权限升级(在权限有限的用户帐户下运行)的问题。
安装程序在收到控制权后,在内存中解密了其中包含的三块数据,其中包括:

  • 签名的驱动程序(sys);
  • 主模块(dll);
  • 安装程序配置数据 (pnf)。

在安装程序配置数据中指定了日期范围(以两个时间戳的形式 - 开始和结束)。 安装程序检查其中是否包含当前日期,如果不包含,则完成执行。 安装程序配置数据中还有保存驱动程序和主模块的名称。 在这种情况下,主模块以加密形式保存在磁盘上。

Duqu - 恶意嵌套娃娃

为了自动启动 Duqu,使用驱动程序文件创建了一项服务,该驱动程序文件使用存储在注册表中的密钥动态解密主模块。 主模块包含其自己的配置数据块。 首次启动时,它被解密,安装日期被输入其中,之后再次加密并由主模块保存。 因此,在受影响的系统中,成功安装后,会保存三个文件:驱动程序、主模块及其配置数据文件,而最后两个文件以加密形式存储在磁盘上。 所有解码过程仅在内存中进行。 这种复杂的安装过程用于最大限度地减少被防病毒软件检测到的可能性。

主要模块

主模块(资源302),根据 информации 卡巴斯基实验室公司,使用纯 C 语言的 MSVC 2008 编写,但使用面向对象的方法。 这种方法在开发恶意代码时并不常见。 通常,此类代码是用 C 编写的,以减少大小并消除 C++ 中固有的隐式调用。 这里存在一定的共生关系。 另外,还使用了事件驱动的架构。 卡巴斯基实验室员工倾向于这样的理论:主模块是使用预处理器附加组件编写的,该附加组件允许您以对象样式编写 C 代码。
主模块负责接收操作员命令的程序。 Duqu 提供了多种交互方法:使用 HTTP 和 HTTPS 协议以及使用命名管道。 对于HTTP(S),指定了指挥中心的域名,并提供了通过代理服务器工作的能力——为它们指定了用户名和密码。 为通道指定 IP 地址及其名称。 指定的数据存储在主模块配置数据块中(以加密形式)。
为了使用命名管道,我们启动了自己的 RPC 服务器实现。 它支持以下七种功能:

  • 返回已安装的版本;
  • 将dll注入指定进程并调用指定函数;
  • 加载dll;
  • 通过调用CreateProcess()启动一个进程;
  • 读取给定文件的内容;
  • 将数据写入指定文件;
  • 删除指定文件。

命名管道可以在本地网络中使用,以便在受 Duqu 感染的计算机之间分发更新的模块和配置数据。 此外,Duqu 还可以充当其他受感染计算机(由于网关上的防火墙设置而无法访问 Internet)的代理服务器。 Duqu 的某些版本没有 RPC 功能。

已知的“有效负载”

赛门铁克发现至少有四种类型的有效负载是在 Duqu 控制中心的指挥下下载的。
而且,只有其中一个常驻并编译为可执行文件(exe),保存到磁盘上。 其余三个以 dll 库的形式实现。 它们被动态加载并在内存中执行,而不保存到磁盘。

常驻“有效负载”是一个间谍模块(infostealer)具有键盘记录功能。 通过将其发送给 VirusTotal,Duqu 研究工作开始了。 主要的间谍功能位于该资源中,其中前 8 KB 包含 NGC 6745 星系照片的一部分(用于伪装)。 这里应该回顾一下,2012年1297506月,有媒体发布了伊朗被曝遭遇恶意软件“Stars”的信息(http://www.mehrnews.com/en/newsdetail.aspx?NewsID=XNUMX),而详细信息该事件没有被披露。 也许正是当时在伊朗发现的 Duqu“有效载荷”的样本,因此得名“星星”。
间谍模块收集了以下信息:

  • 正在运行的进程列表,有关当前用户和域的信息;
  • 逻辑驱动器列表,包括网络驱动器;
  • 屏幕截图;
  • 网络接口地址、路由表;
  • 键盘击键日志文件;
  • 打开的应用程序窗口的名称;
  • 可用网络资源列表(共享资源);
  • 所有磁盘(包括可移动磁盘)上的文件的完整列表;
  • “网络环境”中的计算机列表。

另一个间谍模块(infostealer)是已经描述的内容的变体,但编译为 dll 库;键盘记录器、编译文件列表和列出域中包含的计算机的功能已从中删除。
下一个模块(侦察)收集的系统信息:

  • 该计算机是否属于域的一部分;
  • Windows 系统目录的路径;
  • 操作系统版本;
  • 当前用户名;
  • 网络适​​配器列表;
  • 系统时间和本地时间以及时区。

最后一个模块(寿命延长剂)实现了增加作业完成之前剩余天数的值(存储在主模块配置数据文件中)的功能。 默认情况下,该值设置为 30 或 36 天,具体取决于 Duqu 修改,并且每天减少 XNUMX。

指挥中心

20 年 2011 月 5.2 日(有关这一发现的信息传播三天后),Duqu 操作员执行了一项程序,销毁指挥中心的运作痕迹。 指挥中心位于世界各地被黑客入侵的服务器上——越南、印度、德国、新加坡、瑞士、英国、荷兰和韩国。 有趣的是,所有已识别的服务器都运行 CentOS 版本 5.4、5.5 或 32。 操作系统有 64 位和 4.3 位。 尽管所有与指挥中心操作相关的文件都被删除,卡巴斯基实验室的专家还是能够从闲置空间的日志文件中恢复一些信息。 最有趣的事实是,服务器上的攻击者总是将默认的 OpenSSH 5.8 软件包替换为 4.3 版本。 这可能表明 OpenSSH 80 中的未知漏洞被用来攻击服务器。 并非所有系统都被用作指挥中心。 从尝试重定向端口 443 和 XNUMX 的流量时 sshd 日志中的错误来看,有些被用作代理服务器来连接到终端命令中心。

日期和模块

卡巴斯基实验室检查了 2011 年 31 月分发的 Word 文档,其中包含编译日期为 2007 年 20608 月 5 日的安装程序下载驱动程序。 在 CrySys 实验室发现的一份文档中,类似的驱动程序(大小 - 45 字节,MD613 - EEDCA0BD9E9D5A69122007E17C21F2008)的编译日期为 19968 年 5 月 9 日。 此外,卡巴斯基实验室专家还发现了自动运行驱动程序 rndismpc.sys(大小 - 6 字节,MD10 - 5AEC9E05C93221544EE783C20BED2008C2009E),日期为 2007 年 28 月 2008 日。 未找到标记为 XNUMX 的组件。 根据《Duqu》各个部分的编译时间戳,它的开发可以追溯到 XNUMX 年初。 其最早的表现形式与检测 ~DO 类型的临时文件(可能由间谍软件模块之一创建)相关,其创建日期为 XNUMX 年 XNUMX 月 XNUMX 日(文章 “Duqu 和 Stuxnet:有趣事件的时间表”)。 与 Duqu 相关的最近日期是 23 年 2012 月 2012 日,包含在赛门铁克于 XNUMX 年 XNUMX 月发现的安装程序下载驱动程序中。

使用的信息来源:

系列文章 关于卡巴斯基实验室的 Duqu;
赛门铁克分析报告 “W32.Duqu 下一个 Stuxnet 的前身”,版本 1.4,2011 年 XNUMX 月(pdf)。

来源: habr.com

添加评论