APT组织“响尾蛇”对巴基斯坦攻击事件报告

2019-10-29   

近日,瑞星安全研究院通过瑞星威胁情报系统再次捕获到国际知名APT组织“响尾蛇”发起的攻击事件。此次该组织将攻击目标瞄向了巴基斯坦海军,手法与之前针对中国的攻击有一定差异,但核心是一样的,其最终目的仍以窃取政府,能源,军事,矿产等领域的机密信息为主。

一、背景

近日,瑞星安全研究院通过瑞星威胁情报系统再次捕获到国际知名APT组织“响尾蛇”发起的攻击事件。此次该组织将攻击目标瞄向了巴基斯坦海军,手法与之前针对中国的攻击有一定差异,但核心是一样的,其最终目的仍以窃取政府,能源,军事,矿产等领域的机密信息为主。

瑞星安全专家介绍,“响尾蛇”组织之前几次针对中国的攻击,都是利用了Office远程代码执行漏洞(cve-2017-11882),通过钓鱼邮件等方式投放带有恶意软件的诱饵文档,致使电脑系统信息、安装程序、磁盘信息等内部机密数据资料被窃。

图:对中国的攻击手法

而此次针对巴基斯坦的攻击,则使用了新的LNK文件路径的目标劫持攻击手段,通过邮件或其他方式投放虚假的快捷方式文件,该文件伪装成巴基斯坦海军公共关系总局发布的印度与中国领导人会谈新闻稿,诱导受害者点击。一旦用户访问了该快捷方式属性中所带有的链接,就会下载恶意软件,进而被盗取电脑内所有的文件信息等。

图:对巴基斯坦的攻击手段

由于“响尾蛇”组织一直以盗取国家政府、军事、科技等领域的机密信息为主要目的,之前也不断对中国军事及国防发起过类似的攻击,因此广大相关企业用户应提高警惕,防止此类攻击事件的发生。

二、攻击事件

此次攻击事件针对巴基斯坦,攻击者将诱饵文档伪装成巴基斯坦海军公共关系总局发布的新闻稿,新闻稿中记录的是印度总理莫迪和中国国家主席习近平代表团讨论的要点。

图:诱饵文档

三、技术分析

3.1 恶意LNK文件分析

1.该恶意的LNK文件使用了一种全新的技术手段来隐藏要执行的目标程序。LNK快捷方式名称为“Key_Points.doc.lnk”,在链接目标中可以看到显示调用的目标应用程序为cftmo.exe, 参数为: http://www.paknavy[.]gov.pk.ap1-port.net/images/E7B62E1D/1182/2258/fc8fe2b4/692cd02。

图:“响尾蛇”Shell Link文件

但在实际的运行过程中,该Link文件最终执行了System32中的mshta.exe,通过mshta下载执行指定URL恶意脚本文件。

图:Link文件执行mshta.exe

鉴于以上行为,瑞星安全人员分析后发现该lnk文件通过某种全新的方式构造,隐藏真实的目标程序,我们称之为Link文件路径的目标劫持技术。以下就该技术进行详细分解。

2.Link文件路径的目标劫持

ShellLinkHeader:

LNK文件结构包含一个ShellLinkHeader头,该LNK文件头它包含标识信息、时间戳和指定可选结构是否存在等信息。

Struct ShellLinkHeader {
	uint32_t HeaderSize;	
	uint32_t LinkCLSID[4];	
	uint32_t LinkFlags;	
	uint32_t FileAttributes;	
	uint32_t CreationTime[2];	
	uint32_t AccessTime[2];	
	uint32_t WriteTime[2];	
	uint32_t FileSize;	
	uint32_t IconIndex;	
	uint32_t ShowCommand;	
	uint16_t HotKey;	
	uint16_t Reserved1;	
	uint32_t Reserved2;	
	uint32_t Reserved3;	
};	

EnvironmentVariableDataBlock:

在ShellLinkHeader结构体中有个LinkFlags成员,该成员指定了lnk的一些信息和部分可选结构信息,其中有个HasExpString标志位指定了该lnk是不是保存有环境变量块EnviromentVariableDataBlock结构。

当LNK的目标程序路径包含有环境变量的时候,该结构存在并保存有带有环境变量的目标程序路径。

LinkTargetIDList:

该结构指定了快捷方式的目标程序路径,由 多个IDList组成。

IDList是一个结构数组, 标识了目标所在命名空间的来源位置。个数由目标路径的层级决定,最后一个IDList标识最终的可执行程序名称。

图:LinkTargetIDList结构

在IDList结构下有2个比较重要的路径相关成员分别是PrimaryName以及ExtraDataBlock。微软的官方文档中并未对IDList结构成员进行详细的说明。

目标劫持分析:

分析发现操作系统展示LNK快捷方式属性的时候,目标路径的值和HasExpString标志位有关。当HasExpString值没有被设置,操作系统会从LinkTargetIDList中去拼接目标路径,而如果当HasExpString被设置,操作系统则会从EnviromentVariableDataBlock下的TargetUnicode去读取并展开环境变量显示。

如果HasExpString被设置且EnviromentVariableDataBlock下的TargetUnicode提供了一个不存在的目标程序时,当lnk文件双击被执行,系统将尝试访问LinkTargetIDList获取路径并尝试判断目标程序是否存在,如果存在则使用该路径为最终执行的目标程序。但是操作系统在右键显示属性的时候会优先使用 EnviromentVariableDataBlock中指定的程序路径,而不会判断该目标程序是否存在,这样就产生了lnk目标程序的劫持。

但这样的lnk文件劫持不能持久化,在双击执行后系统将把lnk文件中的HasExpString清空,则LNK属性中的文件路径将使用LinkTargetIDList中指向的实际目标程序,导致在双击完LNK后属性中的目标程序路径被修改。

在我们捕获到的的响尾蛇投递的样本中发现该目标路径劫持在执行完后没有被修改。我们进一步分析发现如果想要持久化劫持还必须修改IDList数组中的最后一项中的PrimaryName值。正常情况下IDList数组中的PrimaryName和ExtraDataBlock中指定的内容是相同的。如果当PrimaryName指定的可执行程序文件名和EnviromentVariableDataBlock中指定的程序名相同的时候,系统则会认为这是一个正常的lnk文件,执行后并不会去修改该lnk。所以只要保证EnviromentVariableDataBlock中路径指向的程序名称和IDList数组最后一项中的PrimaryName值相同并且该程序不存在,则就达到持久化该劫持功能。

3.Key_Points.doc.lnk文件分析

在本次“响尾蛇”APT采用的Link文件中,其通过伪装的链接路径(%windir%\system32\cftmo.exe)试图迷惑用户,以此掩盖系统真实执行的链接目标(%windir%\system32\mshta.exe)。

通过二进制分析可知该链接文件加入了环境变量作为路径,因此触发ExtraData的拓展结构EnvironmentVariableDataBlock创建。在该结构中TargetUnicode同时负责环境变量路径在Link属性下的展示。恶意的Link文件通过修改TargetUnicode字段,实现在有环境变量的路径下外部链接属性的伪装效果。

通过修改TargetUnicode字段可以直接实现Link文件的链接伪装,系统随后将访问sIDList结构中的ExtraData来获取真实的执行路径。“响尾蛇”所使用的Shell Link也同时修改了PrimaryName,使得这两个字段统一为cftmo.exe。系统在调用Link文件时,Link路径检查机制在得知PrimaryName与TargetUnicode相同时,将lnk目标路径劫持持久化。

图:被修改的PrimaryName

最终实现效果当通过属性去观察文件时,Link文件的链接目标是一个不存在的cftmo.exe, 实际系统却能够通过恶意构造的Link文件执行到mshta.exe进程,实现访问C&C下载JavaScript脚本692cd02.hta。

图:“伪装”的Link

3.2 样本分析:692cd02.hta

692cd02.hta是个JavaScript脚本文件,由开源工具DotNetToJScript生成,主要功能是内存执行.NET的DLL文件。该脚本首先解密出LinkZip.dll,并反射加载该DLL中的pink函数,向pink函数传递4个参数,参数1是下载file.hta的网址,参数2是上传杀软信息和异常错误的网址,参数3是加密的诱饵文档内容,参数4是诱饵文档名。

图:内存执行.NET的dll

3.3 样本分析:LinkZip.dll

LinkZip.dll是一个.NET程序,主要是下载执行file.hta和打开诱饵文档Key_Points.doc。

以下是详细过程:

1.解密出诱饵文档数据,命名为Key_Points.doc,存于%temp%下,打开诱饵文档。如果上述操作失败,将异常信息上报到网址: http://www.paknavy.gov.pk.ap1-port.net/plugins/1182/2258/true/true/。

图:打开诱饵文档
图:上报异常信息

2.向http://www.paknavy.gov.pk.ap1-port.net/plugins/1182/2258/true/true/ 上报杀软名称和状态。

图:上报杀软

3.访问网址

http://www.paknavy.gov.pk.ap1-port.net/cgi/b6c82f0f84/1182/2258/af0c8a9f/file.hta,从中获取file.hta的数据,随机命名存于%temp%目录下。如获取成功,则将hta执行起来,执行退出后将其删除。如未获取成功,则重复访问网址获取,循环访问上限是10次,多于10次则向网址http://www.paknavy.gov.pk.ap1-port.net/plugins/1182/2258/true/true/上报自定义的异常错误信息“File-not-Written”。

图:获取file.hta数据并执行

4.从file.hta文件开始所使用攻击手段和瑞星之前报道的攻击中国的手法一样。

攻击流程简述(详细攻击分析请参阅http://it.rising.com.cn/dongtai/19639.html和http://it.rising.com.cn/dongtai/19655.html):

(1)file.hta是一个JavaScript脚本,由开源的DotNetToJscript工具生成,主要功能是内存解密执行StInstall.dll文件,并反射加载该DLL中的pink函数。

(2)StInstall.dll中的恶意操作是:①创建工作目录:%programdata%\CommonsFiles。②拷贝系统文件write.exe到工作目录中,并且在工作目录中释放PROPSYS.dll,随机命名.tmp和write.exe.config。③在Software\Microsoft\Windows\CurrentVersion\Run中创建自启动项,名称为Commons,数据项为C:\ProgramData\ CommonsFiles \write.exe。④利用白加黑的手段进行恶意操作:运行工作目录中的write.exe(白文件),调用同级目录下的PROPSYS.dll(黑文件)。

(3)PROPSYS.dll是一个.NET的dll,它的主要功能是加载同级目录下的随机命名.tmp,达到窃密目的。 最终恶意程序窃取了大量的用户数据信息。它将窃取的信息以json格式整合,数据内容以明文形式存储于%appdata%\CommonsDat目录下后缀为.fls,.flc,.sif,.err的4个文件中,文件命名为:随机字符串+特定后缀。

图:窃取信息文件

后缀为.fls的文件中记录的是被上传的后缀为doc, docx, xls, xlsx, pdf, ppt, pptx的文件信息。

filePath文件的名字和路径
complete文件传送情况
sentOffset文件上传的数据大小
表:信息记录

后缀为.sif的文件主要是存储的是系统权限信息,系统信息,4个系统目录文件列表,磁盘驱动器信息,系统安装软件列表。

图:后缀.sif存储的信息

系统权限信息的格式为 privileges":{"IsInAdminGroup":"Yes/NO","IsAdminPrivilege":"Yes/NO"}。

受害者机器的系统信息记录格式是: ”sysInfo”:{系统信息}。

详细的系统信息如下表所示:

图:系统信息

受害者机器上4个系统目录文件列表记录格式是:“dirList”:{目录文件列表}。

详细目录文件列表如下表所示:

桌面目录文档目录下载文件目录联络人目录
表:文件目录

受害者机器的驱动信息记录格式是:“driveInfo”:{磁盘驱动器信息}。

详细的磁盘驱动器信息如下表所示:

NametypeisReadyTotalSize
FreeSpaceavailableFreeSpacedriveFormatvolumeLabel
表:磁盘驱动器信息

受害者机器上的安装程序列表记录格式是:“installedApps”:{安装程序列表}。

详细的安装程序列表如下表所示:

软件名称软件版本
表:安装程序信息

后缀为.flc的文件记录的是盘符信息和盘符下的文件夹和文件信息。

LengthNameDriveTypeIsReady
FormatAvailableFreeSpaceTotalFreeSpaceTotalSize
VolumeLabel
表:盘符信息

攻击者要获取的文件夹信息如下表:

LengthNameAttributesCreationTime
LastWriteTimeLastAccessTim
表:盘符下的文件夹信息

攻击者要获取的文件信息如下表:

LengthNameAttributesCreationTime
LastWriteTimeLastAccessTim
表:盘符下的文件信息

后缀为.err的文件,记录程序运行中的异常信息。

图:捕获异常

四、总结

从上文的分析可以看出,APT组织“响尾蛇”近期频繁以不同的手段在攻击中国和巴基斯坦,通过瑞星威胁情报分析,可以得知该组织主要针对政府,军事,科技企业等领域,攻击目的以窃取机构内部的隐私信息为主,以便制定下一步攻击方案,因此国内相关政府机构和企业单位务必要引起重视,加强防御措施。

五、预防措施

1.不打开可疑邮件,不下载可疑附件。

此类攻击最开始的入口通常都是钓鱼邮件,钓鱼邮件非常具有迷惑性,因此需要用户提高警惕,企业更是要加强员工网络安全意识的培训。

2.部署网络安全态势感知、预警系统等网关安全产品。

网关安全产品可利用威胁情报追溯威胁行为轨迹,帮助用户进行威胁行为分析、定位威胁源和目的,追溯攻击的手段和路径,从源头解决网络威胁,最大范围内发现被攻击的节点,帮助企业更快响应和处理。

3.安装有效的杀毒软件,拦截查杀恶意文档和木马病毒。

杀毒软件可拦截恶意文档和木马病毒,如果用户不小心下载了恶意文档,杀毒软件可拦截查杀,阻止病毒运行,保护用户的终端安全。

4.及时修补系统补丁和重要软件的补丁。

六、IOC信息

MD5

7E23C62A81D2BFB90EF73047E170DEA8
58B5A823C2D3812A66BBF4A1EBC497D3
5E98EA66670FA34BF67054FB8A41979C
8DA5206BACACD5C8B316C910E214257F
65F66BC372EA1F372A8735E9862095DA
361DFD8F299DD80546BCE71D156BC78E
1B11A5DD12BB6EC1A0655836D97F9DD7

Domain

https://asp-bin.net/ini/VlfWgE8ymto8f22Q4eeE3dMxQXSpHcU7s6cTPQW9/1182/2258/747abb18
http://www.paknavy.gov.pk.ap1-port.net/plugins/1182/2258/true/true/
http://www.paknavy.gov.pk.ap1-port.net/cgi/b6c82f0f84/1182/2258/af0c8a9f/file.hta
http://www.paknavy.gov.pk.ap1-port.net/images/E7B62E1D/1182/2258/fc8fe2b4/692cd02

[责任编辑:瑞瑞]