一、背景介绍
近日,瑞星安全研究院捕获到两起针对中国的APT攻击事件,一起是针对各国驻华大使馆,另一起是针对某科技有限公司驻外代表处。攻击者利用Office远程代码执行漏洞(cve-2017-11882)通过钓鱼邮件等方式发起APT攻击,一旦有用户打开钓鱼文档,电脑就会被攻击者远程控制,从而被盗取如电脑系统信息、安装程序、磁盘信息等内部机密数据资料。
据了解,此番发起APT攻击的是国际知名的“响尾蛇”组织,该组织此前已对巴基斯坦和东南亚各国发起过多次攻击,但近两起的APT攻击却频繁指向了中国,一起是伪装成国防部国际军事合作办公室海外军事安全协作中心,向各国驻华使馆武官发送虚假邀请函;另一起是针对某科技有限公司驻外代表处的攻击事件,攻击者向该公司驻外代表处发送了虚假的安全和保密手册。
据瑞星安全研究院分析,虽然这两次攻击对象和内容不同,但通过对攻击者使用的技术手法来看,断定与APT组织“响尾蛇”有着莫大的关系,该组织以窃取政府,能源,军事,矿产等领域的机密信息为主要目的。此次的攻击事件以虚假邮件为诱饵,利用Office远程代码执行漏洞(cve-2017-11882),发送与中国驻外使馆与科技类企业相关的钓鱼邮件,其目的应以盗取我国重要机密数据、隐私信息及科技研究技术为主。
二、攻击流程
图:攻击流程
三、钓鱼邮件分析
(一)诱饵文档一
文档伪装成国防部国际军事合作办公室海外军事安全协作中心发往各国驻华使馆武官的邀请函。
(二)诱饵文档二
文档内容和某科技有限公司驻外代表处的安全和保密工作手册修订相关。
(三)详细分析
两个诱饵文档均在末尾嵌入一个名为“包装程序外壳对象“的对象,对象属性指向%temp%目录中的1.a文件。所以,打开文档会在%temp%目录下释放由JaveScript脚本编写的1.a文件。
图:对象属性
接着诱饵文档又利用漏洞CVE-2017-11882触发shellcode执行1.a。
图: shellcode
Shellcode流程如下:
通过异或0x12解密出一个JavaScript脚本,该脚本的主要功能是执行%temp%目录下的1.a文件。
图:JavaScript脚本密文
图:解密后的JavaScript脚本
ShellCode会将公式编辑器的命令行参数改成JavaScript脚本,利用RunHTMLApplication函数执行将该脚本执行起来。
图:替换命令行
图:执行JavaScript
三、病毒分析
(一)1.a文件分析
1.a是通过开源的DotNetToJScript工具生成,主要功能是通过JavaScript脚本内存执行.net的DLL文件。该脚本首先解密出StInstaller.dll文件,并反射加载该DLL中的work函数。Work函数对传进来的参数x(参数1)和y(参数2)进行解密,解密后x为PROPSYS.dll,y为V1nK38w.tmp。
图:1.a脚本内容
(二)StInstaller.dll文件分析
StInstaller.dll是一个.NET程序,会创建工作目录C:\ProgramData\AuthyFiles,然后在工作目录中释放3个文件,分别是PROPSYS.dll,V1nK38w.tmp和write.exe.config,并将系统目录下的写字板程序(write.exe) 拷贝到该目录中。运行write.exe(白文件)加载同级目录下的PROPSYS.dll(黑文件), 通过白加黑的手段运行恶意代码。
图:work函数
以下是详细过程:
1. 在work函数中调用xorIt解密函数得到3个重要配置数据,分别是工作目录名AuthyFiles,域名 https://trans-can.net和设置的注册表键名authy。
图:解密数据
图:xorIt解密函数
2. 创建工作目录C:\ProgramData\AuthyFiles,拷贝系统文件write.exe到工作目录,并将其设置为开机自启动。
图:创建AuthyFiles和write.exe
3. 在工作目录中释放一个随机命名的文件V1nK38w.tmp。
4. 在工作目录中释放PROPSYS.dll,并更新该文件中接下来要加载程序的文件名为V1nK38w.tmp。
图:创建PROPSYS.dll
5. 将拼接后完整的url链接:
https://trans-can.net/ini/thxqfLH82tJpLuGANcqTooJQEd6qGYu7cML5rMvr/-1/1291/f8ad26b5
写入V1nK38w.tmp文件中。再将该文件使用EncodeData函数进行加密。
图:创建V1nK38w.tmp文件
图:EncodeData加密函数
6. 创建配置文件write.exe.config,防止不同.NET版本出现兼容性问题。
图:创建write.exe.config
图:write.exe.config内容
7. 执行C:\ProgramData\AuthyFiles\write.exe,调用恶意的PROPSYS.dll。
图:执行write.exe
(三)PROPSYS.dll文件分析
使用DecodeData函数对V1nK38w.tmp进行解密,解密完后加载执行V1nK38w.tmp。
图:加载执行V1nK38w.tmp
图:DecodeData解密函数
(四)V1nK38w.tmp文件分析
V1Nk38w.tmp主要是窃取大量信息和接收指令执行。
图:主要行为
1. 加载初始配置,配置由资源中的Default解密得到。配置内容是网址,上传文件的暂存目录和窃取指定的文件后缀名(doc,docx, xls, xlsx, pdf, ppt, pptx)。
图:加载配置
图:解密后的Default资源信息
2. 将配置使用EncodeData函数加密,存于注册表HKCU\Sotfware\Authy中。
图:在注册表中加密的配置信息
3. 访问指定地址下载文件执行,优先选择配置信息中的网址,如果没有则选择默认网址:https://trans-can.net/ini/thxqfLH82tJpLuGANcqTooJQEd6qGYu7cML5rMvr/-1/1291/f8ad26b。
图:下载数据
4. 将窃取的信息整合成文件,文件命名为:随机字符串+特定后缀,数据内容以明文形式存于暂存目录中。
图:窃取信息文件
后缀为.sif的文件主要是存储的是系统信息,安装程序信息,磁盘信息等。
图:后缀.sif存储的信息
获取的系统信息如下表:
userAccount | computerSystem.Caption | computerSystem.UserName |
---|---|---|
computerSystem.Manufacturer | computerSystem.Model | computerSystem.PrimaryOwnerName |
computerSystem.TotalPhysicalMemory | antiVirusProduct.displayName | antiVirusProduct.ProductState |
antiVirusProduct.TimeStamp | Process. Name | Process. CommandLine |
Process. ProcessOwner | Processor. Caption | Processor.Name |
Processor.NumberOfLogicalProcessors | Processor.NumberOfCores | Processor. Architecture |
Processor. ProcessorId | Processor. MaximumClockSpeed | Processor. DataWidth |
Processor. CurrentClockSpeed | operatingSystem. Caption | operatingSystem. version |
operatingSystem.RegisteredUser | operatingSystem. BuildNumber | operatingSystem.ServicePackMajorVersion |
operatingSystem.ServicePackMajorVersion" | operatingSystem.OSArchitecture | operatingSystem.OSProductSuite |
timeZone. Caption | timeZone. description | timeZone. StandardName |
quickFixEngineering. HotFixID | quickFixEngineering. Description | quickFixEngineering. InstalledOn |
Network. name | Network.description | Network. networkInterfaceType |
Network. operationalStatus | Network. speed | Network. macAddress |
IPv4. isDhcpEnabled | IPv4. dnsAddresses | IPv4. winsAddresses |
IPv4. gatewayAddresses | IPv4. ipAddresses | IPv4. address |
IPv4.subnetMask |
后缀为.fls的文件中。
filePath | 特定后缀文件的名字和路径 |
---|---|
complete | 文件传送情况 |
sentOffset | 文件上传的数据大小 |
表:信息记录
图: 后缀.fls的存储信息
后缀为.flc的文件中记录所有盘符的信息和盘符下的目录和文件信息。
攻击者要获取的盘符信息如下表:
Length | Name | Type | IsReady |
---|---|---|---|
Format | AvailableFreeSpace | TotalFreeSpace | TotalSize |
VolumeLabel |
攻击者要获取的目录信息如下表:
Length | Name | Attributes | CreationTime |
---|---|---|---|
LastWriteTime | LastAccessTim |
攻击者要获取的文件信息如下表:
Length | Name | Attributes | CreationTime |
---|---|---|---|
LastWriteTime | LastAccessTim |
捕获程序运行异常,将异常信息记录到后缀为.err的文件。
图:捕获异常
5. 更新注册表中存储的配置数据:首先遍历系统找寻和特定后缀相同的文件,然后从注册表HKCU\Sotfware\Authy读取和解密配置数据,将找到的文件的名字和路径补充到配置数据中,最后将配置信息加密继续存放注册表。
图:找寻特定后缀文件
图:记录要上传的文档路径
图:上传指定后缀文档
6. 更新注册表中存储的配置数据:将上传文件的信息更新到注册表配置数据中。
图:注册表中解密后的配置信息
7. 将注册表配置信息中记载的特定后缀文件的数据内容全部压缩上传。
图:上传后缀文件
8. 上传暂存目录中后缀为sif,flc,err和fls的文件。
图:上传文件
四、总结
此次两起攻击事件时隔不长,攻击目标均指向中国国内敏感领域和相关机构,攻击目的以窃取机构内部隐私信息为主,以便制定有针对性的下一步攻击方案。最近揭露的响尾蛇攻击对象大都指向巴基斯坦和东南亚各国,但这两起攻击事件目标直指中国,表明该组织攻击目标发生了变化,加大了对中国的攻击力度。恰逢今年是我国建国七十周年华诞,国内相关政府机构和企业单位务必要引起高度重视,加强预防措施。
五、预防措施
1. 不打开可疑邮件,不下载可疑附件。
此类攻击最开始的入口通常都是钓鱼邮件,钓鱼邮件非常具有迷惑性,因此需要用户提高警惕,企业更是要加强员工网络安全意识的培训。
2. 部署网络安全态势感知、预警系统等网关安全产品。
网关安全产品可利用威胁情报追溯威胁行为轨迹,帮助用户进行威胁行为分析、定位威胁源和目的,追溯攻击的手段和路径,从源头解决网络威胁,最大范围内发现被攻击的节点,帮助企业更快响应和处理。
3. 安装有效的杀毒软件,拦截查杀恶意文档和木马病毒。
杀毒软件可拦截恶意文档和木马病毒,如果用户不小心下载了恶意文档,杀毒软件可拦截查杀,阻止病毒运行,保护用户的终端安全。
4. 及时修补系统补丁和重要软件的补丁。
六、IOC信息
MD5
D83B3586393CAB724519B27B9857A4B2
37166FA93D776147E545AAD7E30B4160
8FD10BD711AB374E8DE9841CF8824758
D4C3963B11E1732E1419ADF5F404E50C
58DE7C0DF5BD677E1A3CDC099019015D
A94BE8863E607DC7988F34F907309916
8444A5850EEBA2824D7C9BAD9189FF7E
url
https://trans-can.net/ini/thxqfLH82tJpLuGANcqTooJQEd6qGYu7cML5rMvr/-1/1291/f8ad26b5
https://trans-can.net/ini/Wsx8Gb5ZtTzzbdquHHtVI2sO9OQpOPRU4jOINehp/31878/1346/cab43a7f
*本文作者:瑞星,转载请注明来自FreeBuf.COM