蜻蜓二代“Dragonfly2.0”恶意组件分析报告(下篇)

2017-09-19 14:35:57 启明星辰 ADLab

更多资讯和分析文章请关注启明星辰ADLab微信公众号及官方网站(adlab.venustech.com.cn)


分析简述

《蜻蜓二代“Dragonfly2.0”恶意组件分析报告(上篇)》中,启明星辰ADLab详细阐述了蜻蜓二代的两个组件Backdoor.Dorshel和Trojan.Karagany.B相关的技术细节,本篇将对剩余的组件进行详细分析。其中组件Backdoor.Goodor和Screenutil目前未能找到样本,但根据目前掌握的信息可知,组件Backdoor.Goodor为一款常驻组件,实现了远程组件的下载执行,可能属于蜻蜓二代攻击的第二阶段组件。而组件Screenutil为一款屏幕工具组件,主要用于实现桌面截图功能,此项功能在蜻蜓一代中同样也存在,该组件属于第三阶段的信息窃取组件。本文将对剩余的4个核心组件进行详细的剖析。

本次公开的8个组件中一些组件的功能有所重叠,由于蜻蜓黑客组织的攻击手段多样,所以第一个阶段会因为所依赖的攻击方式不同而采用了不同的攻击组件,比如组件Trojan.Karagany.B伪装成为Flash更新,适合作为第一阶段的后门投放,而同样作为第一阶段被投放的Dorshel组件却可能是通过邮件或者水坑式攻击的方式进入受害主机。根据目前掌握的情况,我们列出蜻蜓二代各个组件的基本功能及其可能的投放阶段,如下表:

组件

基本功能

可能的投放阶段

Backdoor.Dorshel

下载模块执行,通过合法软件捆绑植入

第一阶段

Trojan.Karagany.B

实现上传、清理、远程命令执行、远程执行组件,通过Flash软件更新的方式植入

第一阶段

Trojan.Heriplor

Shellcode下载执行,在一代中类似组件是通过组件Backdoor.Oldrea植入,二代中未知

第二阶段

Trojan.Listrix

收集文件受害者主机文件信息,由组件Karagany.B下载执行

第二阶段

Hacktool.Credrix

窃取系统账户的登录凭证、浏览器页面登录凭证、远程桌面登录凭证以及邮件客户端的登录凭证。植入方式未知,可能由组件Backdoor.Dorshel远程下载

第二阶段或第三阶段

Backdoor.Goodor

下载组件执行,通过PowerShell进入

第三阶段

Trojan.Phisherly

模板注入,窃取共享文件登录凭证,通过邮件投递的方式感染

第二阶段或第三阶段

Screenutil

屏幕工具,截屏管理等功能,植入方式未知,可能通过Karagany.B组件植入

第二阶段

上表中第一阶段投放表示黑客通过各种攻击手段向受害者投放的第一个可执行组件,主要用于下载第二阶段的组件执行以及执行一些必要操作;而第二阶段的组件是由第一阶段的组件下载执行的,主要以收集情报为主;第三阶段可能在已有情报的基础上对目标下放特定组件,一则可能用于进一步的信息窃取,二则用于扫描受害者主机的环境,这个阶段的样本并不完整,比如缺少OPC/SCADA扫描组件等。

蜻蜓二代技术变化

从以上公开的组件分析来看,蜻蜓二代相比蜻蜓一代而言通信更加难以监测,蜻蜓一代几乎都采用了明文的HTTP通信,而二代组件与C&C的通信(包含信息收集、命令交互、文件回传等操作)普遍采用了HTTPS的方式来进行加密传输,无法通过IDS等流量监测设备进行有效的监测。另外组件进行远程请求的URL也有所改进,蜻蜓一代的URL都包含有明确含义的.php(如:“log.php”、“testlog.php”、“source.php),而蜻蜓二代更具有迷惑性,如采用随机名且无后缀的URL(如:/A56WY),以及采用后缀名.gif(如:getimage/830411.gif)。蜻蜓二代的Loader模块开始采用实时下载纯加密Shellcode代码执行的方式来执行,并不会落地到磁盘,而蜻蜓一代的Loader模块则是下载完整PE文件执行,并且会落地到磁盘。另外,蜻蜓二代还将一些隐蔽性很高的技术应用于其攻击组件之中,如预初始化劫持技术(Backdoor.Dorshel)、模板注入技术(Trojan.Phisherly)等。

蜻蜓二代在收集信息及窃密时,采用组件Hacktool.Credrix窃取更为敏感的信息,除了窃取各类浏览器相关登录凭证外,还开始获取系统账户的登录凭证、远程桌面登录凭证以及邮件客户端的登录凭证。

蜻蜓二代剩余组件分析

1. 组件Trojan.Heriplor

Trojan.Heriplor为该黑客组织专用后门,第一代和第二代都有出现,用于下载恶意组件执行。目前我们所能得到的样本是一个64位dll文件,该模块的主要功能是从C&C端下载Shellcode并且执行。

该组件首先初始化要调用的系统API函数,随后通过Socket连接远程C&C服务器121.200.62.194,连接端口为8443。连接成功后组件向C&C端发送8个字节数据。

接下来开始下载shellcode执行。通信时,组件先从C&C接收4个字节的数据作为下一次要接收数据的长度。组件以接收的长度作为内存大小分配一段可读可写可执行内存,用于接收shellcode执行,如下图:

2. 组件Trojan.Listrix

Trojan.Listrix组件主要用于收集受害者主机信息,根据赛门铁克描述的信息,该模块具有收集计算机名称、用户名称、文件列表、进程列表、操作系统版本等信息。

该组件通过遍历感染主机的所有驱动器查找符合如下文件后缀的文件:*.rtf,*.zip,*.pfx,*.cer,*.crt,*.pem,*.key,*.cfg,*.conf,*.pst,*.rar,*.doc,*.docx,*.xls,*.xlsx,*pass*.*,*.pdf,*.pub,*.ppk,Volume*.*,然后将这些文件的文件路径、大小、创建时间等信息写入到临时文件目录下临时文件中,接着将其拷贝到AppData目录下的“\Update\Temp\ufiles.txt”。最后恶意代码通过cmd命令进行自删除,并退出。

在临时文件目录创建临时文件:

遍历硬盘,查找符合规则的文件:

将获取到的符合规则的文件信息写入到临时文件:

通过cmd命令执行删除自身文件:

3. 组件Trojan.Phisherly

该组件是一个DOCX文档,其利用了Office对DOCX中指定的关联资源解析漏洞来窃取用户的共享凭证。

通过我们对该组件的分析发现,该组件文件中的Relationship标签被指定为一个远程的共享文件。当该文档被打开后,Office进程会利用SMB协议来访问该共享文件。

在SMB通信中,当客户端访问远程服务器时,客户端会先向服务器发送一个“Negotiate ProtocolRequest”请求,这个请求中包含了客户端所支持的所有SMB版本信息,服务器收到请求后,选择一个它支持的最新版本,在通过“NegotiateProtocol Response”回复给客户端。Negotiation结束之后,客户端请求和服务器建立一个会话,在客户端发送的Session SetupRequest里,包含了身份验证请求。服务器回复Session Setup Response,包含了验证的结果。Session Setup通过后,客户端就成功的连上了服务器,客户端发送Tree ConnectRequest来访问具体的共享资源。

如果远程服务器被设置成诱饵服务器,那边受害者主机会尝试将自身的凭证发送给诱饵服务器做验证。此时诱饵服务器便可以获取到该凭证并且收集起来供黑客使用。

该方法此前称为“模板注入”技术,实际上并不准确,该技术实际上和模板并没有关系,只是当时发现的样本中刚好利用了模板文件作为远程共享文件。如下图:

4. 组件Hacktool.Credrix

组件Hacktool.Credrix同样也是用来窃取用户凭证,该组件可以接收一个参数用来指定保存凭证信息的文件路径,如果不提供参数则将凭证信息保存到C:\\Users\\Public\\Log.txt文件。

窃取的信息包括系统凭证信息、Google Chrome、Mozilla Firefox、Internet Explorer、Opera浏览器中保存的凭证信息,FTP客户端FileZilla中保存的凭证信息,邮箱客户端Outlook、Thunderbird保存的凭证信息,远程终端的凭证信息等。

其中,窃取系统凭证信息的代码采用了开源项目mimikatz的代码。相关凭证信息及实现方法如下表所示:

窃取的凭证信息

实现方法

RDP凭证信息

注入shellcodelsass进程中对C:\\Users\\当前用户名\\AppData\\Local\\Microsoft\\Credentials目录下的RDP凭证信息解密

系统凭证信息

开源项目mimikatz

Thunderbird凭证信息

读取\AppData\Roaming\Thunderbird\Profiles目录下的数据库文件,并通过应用程序目录下的nss3..dll对存储的密码进行解密

Outlook凭证信息

遍历注册表Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows Messaging Subsystem\\Profiles下子键进行识别并解密

FileZilla凭证信息

FileZilla凭证信息以明文形式存储在\\Application Data\\FileZilla\\目录

Chrome

读取\AppData\Local\Google\Chrome\User  Data\Default\ Login Data数据库文件进行查询

Mozilla Firefox

读取配置路径下的signons.sqlite数据库,并通过nss3.dll解密

Internet Explorer

从注册表解密自动完成的口令

Opera

Chrome类似

(1)提取Chrome凭证信息

Chrome浏览器保存用户登录信息的数据库文件为%AppData%\Local\Google\Chrome\UserData\Default\ Login Data,该数据库是sqlite3的数据库,数据库中用于存储用户名密码的表为logins。logins表结构定义如下:

从该表中读取的内容是加密的,通过CryptUnprotechData函数对其进行解密便可以获取到明文数据。

(2)提取Mozilla凭证信息

组件首先从注册表获取Firefox的安装目录和安装版本。

接着利用安装目录中文件nss3.dll来解密数据库signons.sqlite中被加密的内容。

通过SQL语句获取到主机名、被加密的用户名及密码。

调用nss3.dll中的导出函数对sqlite查询出的用户名和密码进行解密。

(3)Internet Explorer凭证信息获取

该组件通过多种方式来提取IE浏览器保存的登录凭证(不同IE内核的提取方法不同),具体如下:

通过pstorec.dll的PStoreCreateInstance函数来提取凭证信息。

通过vautcli.dll组件来提取凭证信息。

通过guid “abe2869f-9b47-4cd9-a358-c22904dba7f7”解密保存的IE密码。


通过IE的自动完成密码机制来获取明文的用户凭证。

(4)FileZilla凭证获取

FileZilla凭证获取较为简单,其登录凭证信息是用明文存储的。因此只需要定位到相应的配置文件即可找到用户的登录名和密码,如下图:

(5)Outlook凭证获取

该组件通过枚举注册表Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows Messaging Subsystem\\Profiles下的所有子健,读取键名为下表中的数据比如password进行解密还原出明文的密码。

IMAP 

Server

IMAP Port

IMAP User

IMAP Password

POP3 

Server

POP3 Port

POP3 User

POP3 Password

HTTP 

Server

HTTP Port

HTTP User

HTTP Password

SMTP 

Server

SMTP Port

SMTP User

SMTP Password

(6)Thunderbird凭证获取

同样,Thunderbird的凭证数据也是存储在数据库文件中%AppData%\\Thunderbird\\Profiles,然后通过nss3.dll 的导出函数对储存文件的密码进行解密。

(7)系统凭证获取

针对不同系统使用了两种获取系统密码的方法,NT6以上内核使用bcrypt.dll中的导出函数进行解密,NT6以下则使用lassrv.dll进行解密。

通过lsasrv的初始化函数发现了一段调试日志信息,通过该信息可以确定该段代码采用了开源项目mimikatz的代码。

(8)RDP凭证获取

组件首先获取lsass.exe的进程ID,然后遍历目录%AppData%\\Local\\Microsoft\\Credentials下存储的所有RDP凭证文件,凭证文件只有进程lsass才具有解密能力。所以,程序会注入shellcode到进程lsass.exe,对加密的凭证文件进行解密。以下是远程注入部分的代码流程:

总 结

从公开信息以及当前的分析可以看出,蜻蜓组织是一个具有多种攻击能力的黑客组织,其能够通过窃取受害主机凭证来访问目标网络,并且还有广泛的定制化的黑客工具集来对目标网络进行攻击。从蜻蜓一代到二代的发展来看,该黑客组织的对抗手段已经运用得越来越多(如https加密通信、实时的加密shellcode下载执行、预初始化代码劫持、模板注入等),并且也开始频繁的运用合法的系统管理工具如PowerShell、PsExec和Bitsadmin来进行辅助实现攻击,这在一定程度上加大了威胁发现的难度。虽然该黑客组织在攻击过程中没有使用过0day,但是其长期对能源部门的情报收集,表明该组织是一个高度专注的黑客组织。从各种攻击案例来看,该组织的目的并非为谋取经济利益,更有可能是为了达到某种政治目的。






启明星辰积极防御实验室(ADLab)


ADLab成立于1999年,是中国安全行业最早成立的攻防技术研究实验室之一,微软MAPP计划核心成员。截止目前,ADLab通过CVE发布Windows、Linux、Unix等操作系统安全或软件漏洞近400个,持续保持国际网络安全领域一流水准。实验室研究方向涵盖操作系统与应用系统安全研究、移动智能终端安全研究、物联网智能设备安全研究、Web安全研究、工控系统安全研究、云安全研究。研究成果应用于产品核心技术研究、国家重点科技项目攻关、专业安全服务等。