事件背景
2017年6月, 奇安信威胁情报中心发现了一份可疑的利用漏洞执行恶意代码的Word文档,经过分析后,我们发现这有可能是一起针对巴基斯坦的政府官员的APT攻击事件,释放出来的载荷会收集受害者的键盘记录和重要软件密码、文档等。本文档对并对此次攻击事件的攻击链条进行梳理,并对使用的木马相关技术进行分析。
样本分析
漏洞利用Dropper
Hash | 4f4cc89905bea999642a40d0590bdfa3 |
文件类型 | Word文档 |
文件大小 | 66Kb |
文件名 | peace-along-the-border-is-not-a-one-process-says-Lt-gen-ds-hooda.doc |
该文档所利用的漏洞为CVE-2015-2545(关于该漏洞的分析已经有不少详细分析的资料,这里就不再赘述),当受害者点开该文档时,会加载EPS文件从而触发漏洞,这里攻击者使用的漏洞利用代码是已经在野外流传很久的成熟利用,这套利用的特点是通过shellcode注入explorer进程下载木马文件,但shellcode后附加一个DLL文件以利用CVE-2015-2546权限提升漏洞得到系统最高权限。
注入explorer.exe的代码如下:
explorer.exe中下载载荷的代码如下:可以看到下载地址为http://tes[.]sessions4life[.]pw/quiz/WelcomeScrn.exe
CVE-2015-2546权限提升DLL部分代码:
WelcomeScrn.exe
Hash | feea1d90e77dff5ff9f896122cf768f6 |
文件类型 | PE可执行文件 |
文件大小 | 124Kb |
文件名 | WelcomeScrn.exe |
这是个downloader,功能非常简单,直接连接到内置网址http://185[.]109[.]144[.]102/DistBuild/DefenderReference.exe,下载并执行文件。
DefenderReference.exe
Hash | c43bab60cbf7922a35979e4f41f9aa9e |
文件类型 | PE可执行文件 |
文件大小 | 747Kb |
文件名 | DefenderReference.exe |
DefenderReference.exe通过HTTP协议与服务器通信的窃密木马,被执行起来后,会先完成一些初始化的工作,释放并加载WER167893459067.dll后创建以下目录:
- %Local%\SharedFiles\Log
- % Local %\ SharedFiles \Sys
- % Local %\ SharedFiles \Temp
- % Local %\ SharedFiles \WinAero
- % Local %\ SharedFiles \WinDataShots
- % Local %\ SharedFiles \WinInternetData
- % Local %\ SharedFiles \WinLog
- % Local %\ SharedFiles \WinRM
然后终止cmd.exe、PATHPING.EXE、TRACERT.EXE、net.exe、systeminfo.exe进程,并判断自身进程启动路径是否为% Local %\ SharedFiles \Sys,如果不是,则将自身拷贝到% Local %\ SharedFiles \Sys\ DefenderReference.exe,释放MSOBuild.exe、AdminNewDll.dll、AdminServerDll.dll等文件,最后启动MSOBuild.exe
MSOBuild.exe
Hash | c5f76015b2cb15f59070d2e5cfdd8f6e |
文件类型 | PE可执行文件 |
文件大小 | 147Kb |
文件名 | MSOBuild.exe |
这个文件其实还是个downloader,在初始化和检查执行环境(虚拟机、沙箱、调试)后,访问http://docs.google.com/uc?id=0Bx9cf6a5Mapaa3g4MlI4T244SlU&export=download,获取C&C的地址185.109.144.102
接着下载以下配置文件:
- hxxp://185[.]109.144.102/DistBuild/getAllFiles.php(指明需要下载的组件)
- http://185[.]109.144.102/DistBuild/getExecutables.php (指明要执行的组件)
- http://185[.]109.144.102/DistBuild/getExtensions_doc.php (指明关心的文档类型文件后缀名)
- http://185[.]109.144.102/DistBuild/ getExtensions_nondoc.php (指明关心的非文档文件类型)
- http://185[.]109.144.102/DistBuild/getExtensions_rmdrive.php (指明要执行的组件)
接着下载配置文件中指定的组件,再一一启动这些组件:
下表是木马的各个组件信息:
文件名 | 备注 |
---|---|
DefenderReference.exe | Dropper |
MSOBuild.exe | 通过调用AdminServerDll.dll下载其他组件 |
AdminServerDll.dll | 功能模块,每个导出函数对应一种功能 |
AdminNewDll.dll | 检测到虚拟机\沙箱时加载的无效dll |
PackageMSOffce.exe | 上传文档类型文件 |
PlayMedia.exe | 上传非文档类型文件 |
TimeSyncApp.exe | 发送受害者信息,等待指令 |
FoldrOpt.exe | 设置启动项、检查环境、收集计算机信息 |
OptimisedDisply.exe | 屏幕截图、上传截图 |
LangEngUTF16.exe | 上传键盘记录 |
LangEngUTF8.exe | 键盘记录 |
InstntAccelx.exe | 检测U盘,自拷贝进行传播 |
InstntAccelx.exe | 检测U盘,上传U盘内的文件 |
经过以上分析,我们发现这个木马家族有以下功能:上传/下载文件、执行指定文件、键盘记录、屏幕截图、感染U盘、发送感染电脑位置信息等,窃取的文件列表如下:
- .doc
- .docx
- .ppt
- .pps
- .pptx
- .ppsx
- .xls
- .xlsx
- .inp
- .vcf
- .txt
- .jpg
- .jpeg
- .bmp
- .gif
- .png
- .avi
- .wmv
- .mp4
- .mpg
- .mpeg
- .3gp
- .mp3
- .wav
并且该木马可以通过在线获取新插件的形式迅速方便地扩展更多的功能。木马的代码清晰、结构严谨,受控端通过HTTP请求与控制服务器通信,访问不同的php页面代表执行不同的功能,可能是高度定制的专用木马,或者是专门出售的商业间谍木马。
下面介绍该木马比较有特色的地方:
- 不同的组件都通过调用同一个AdminServerDll.dll来完成具体功能,高度模块化。例如MSOBuild.exe和DefenderReference.exe中,分别获取AdminServerDll.dll的不同导出函数,然后调用这些导出函数,程序里只有基本的逻辑而没有具体的功能实现,下面左边是MSOBuild.exe,右边是DefenderReference.exe
其中AdminServerDll.dll是主要的功能模块,其每一个导出函数对应一个功能,可以从导出函数名知道其功能,如下:
导出函数 | 备注 |
---|---|
EHCheckDownloadedFilesInDownloadFolderAreCompleteForModuleFile | 检查组件是否完整 |
EHCheckFolderRecursive | 遍历文件目录 |
EHCopyDirectory | 拷贝目录 |
EHCountFilesInFolder | 遍历目录下面文件数 |
EHCreateCompleteDirectoryStructure | 创建前面提到的Log、Sys等全部目录 |
EHCreateDirectoryStructureFolderPath | 创建前面提到的Log、Sys中的指定目录 |
EHCreateFileListForFolder | 获取目录文件列表 |
EHCreateFolderHerarchyOnServer | 在服务端创建对应主机的目录 |
EHCreateFolderHerarchyOnServerNeo | 在服务端创建对应主机的目录 |
EHCreateFolderOnServerWithName | |
EHCreateFolderOnServerWithNameNeo | |
EHDeleteDirectory | EHDeleteFilesInFolder |
EHDeleteListerUploaderFileOnServer | |
EHDownLoadListerUploaderFileFromServer | |
EHDownloadClientMachineGeoLocation | |
EHDownloadDownloadFilesInDownloadFolderForModuleFile | 下载新模块 |
EHExecuteDwonloadFilesInDownloadFolderForModuleFile | |
EHExecuteFile | 执行指定文件 |
EHExecuteFile_Parameters_With_Wait_To_Close | |
EHExtractBinResource | |
EHExtractBufferFromFile | 读取指定文件的内容 |
EHGetAeroModuleExeState | |
EHGetDirectoryStructureFolderPath | |
EHGetFileNameFromFilePath | |
EHGetFilePathFromFilePath | |
EHGetLastWriteTime | |
EHGetListerUploaderExeState | |
EHGetListerUploaderStateFromServer | |
EHGetModuleFilePath | |
EHGetOnlineModuleFile | |
EHGetThisFinalRealeaseORNot | |
EHGetWinExePath | |
EHIsAeroFilesNeededServerState | |
EHIsDots | |
EHIsInternetDataFilesNeededSeverState | |
EHMyFileSeek | |
EHPathFileExists | |
EHPerformMainAllFunctionsOfApplication | |
EHPerformOnLineModuleFunctions | |
EHPutLogMessage | |
EHScreenShotGrabberCreateAndGetNewScrnShotFolderNeo | 上传屏幕截图 |
EHScreenShotGrabberGetConfigDataNeo | |
EHSetAeroFilesServerStateFalse | |
EHSetAeroModuleExeState | |
EHSetInternetDataFilesServerStateFalse | |
EHSetListerUploaderExeState | |
EHSetLogFilePath | |
EHSetValueForEHApplicationServer | |
EHSetValueForEHApplicationServerNeo | |
EHTerminateThisProcess | |
EHUploadFileKeyLogArchiveNeo | 上传键盘记录 |
EHUploadFileMainUpload | 上传文件 |
EHUploadFileRemoveableDrive | |
EHUploadFolderRecursive | |
EHUploadFolderRecursiveNeo |
- 通信控制:
受控端通过HTTP请求与控制服务器通信,通过访问不同的php页面与控制端交互:
经过整理后的路径如下:
- /EHGetScrnShotConfig.php
- /getAllFiles.php
- /getExecutables.php
- /getExtensions_doc.php
- /getExtensions_nondoc.php
- /getExtensions_rmdrive.php
- /EHCreateUploadFolder.php
- /EHOnlineModuleOperations.php
- /EHListerFunction.php
- /EHAeroFunction.php
- /EHAeroFunctionFalse.php
- /EHDeleteListerFile.php
- /EHFolderWithName.php
- /EHDelFolderWithName.php
- /EHInternetDataFiles.php
- /EHInternetDataFilesFalse.php
- /EHCreateAndGetScrnShotFolder.php
- /EHMainUpload.php
- /EHMergeAndMoveMainUpload.php
- /EHRemoveableDriveUpload.php
- /EHMergeAndMoveRemoveableDrive.php
- /EHFileFolderUpload.php
- /EHMergeAndMoveFileFolder.php
- /EHUploadKeylogArchive.php
- /DO_NOT_NEED_A_URI
- 检查VM、沙箱和调试
通过特权指令检查Virtual PC和VMWare:
通过dll来识别Sandboxie和是否调试:
扩展与关联分析
使用奇安信威胁情报中心的威胁情报平台对样本连接的C&C地址(185.109.144.102)做进一步关联,我们发现了更多的信息。
其中有几个样本引起了我们的注意:
- MD5:a6c7d68c6593b9dd2e9b42f08942a8b0,文件名:isi_report_of_2016.rar
这个样本是一个邮件附件,解压后为Name of Facilitators revealed.scr,这个其实是一个sfx自解压文件,点击后会将explorerss.pub改名为explorerss.exe,注册启动项并执行,然后打开Pakistan army officers cover blown.pdf迷惑受害人。
而explorerss.exe是由python打包成exe的,功能是窃取指定文件内容并上传到hxxps:// 185[.]109[.]144[.]102/browse.php?folder=%s&%s中。将其中的python代码还原后,部分代码如下:
- MD5:872e7043ee8490db6e455942642c2c86 文件名:Current vacancies.doc
这个样本利用CVE-2012-0158释放一个downloader,downloader会下载执行hxxp://185[.]109[.]144[.]102/DistBuild/DefenderReference.exe,之后的流程就和前面分析的一样,就不再多说了,值得注意的是文档的内容。显示为联合国招聘文件,这明显是对安全相关人员投递的邮件,有明显的政治动机:
- MD5: 1b41454bc0ff4ee428c0b49e614ef56c文件名:Ramadan Mubaraq.rtf
这个样本所利用的漏洞为CVE-2017-0199,olelink的地址为http://138[.]197[.]129[.]94/logo.doc
从以上的分析和其他关联到的样本中,我们注意到一些有趣的事情:这些样本应该都是通过邮件附件的形式传递的,并且使用Office Nday漏洞或者社工手段引诱目标点开;从文件名、文档内容来看,都是对政治领域的相关人员进行的钓鱼邮件投递。综合多个样本的来源信息,这很有可能是一起针对巴基斯坦政府人员的定向攻击事件。
IOC
文件名 |
---|
Current vacancies.doc |
peace-along-the-border-is-not-a-one-process-says-Lt-gen-ds-hooda.doc |
Name of Facilitators revealed.scr |
isi_report_of_2016.rar |
Pakistan army officers cover blown.pdf |
Ramadan Mubaraq.rtf |
MD5 |
---|
154ee0c3bb8250cae00d5ed0e6f894b4 |
4f4cc89905bea999642a40d0590bdfa3 |
6d7ef5c67604d62e63aa06c4a7832dac |
842e125beca97c185b33235e54e77d3a |
9cddfd8fa9dc98149e63f08f02a179cf |
c2be017b2fb3ad6f0f1c05ef10573b90 |
c43bab60cbf7922a35979e4f41f9aa9e |
c5f76015b2cb15f59070d2e5cfdd8f6e |
cbd2340e37b2ae9fc85908affbb786a7 |
d0dd1c70581606aa2a4926c5df4a32ee |
1b41454bc0ff4ee428c0b49e614ef56c |
PDB |
---|
E:\EHDevelopmentSolution3\EHDevelopmentSolution3\Release\DefenderReference.pdb |
D:\EH_DEVELOPMENT_SVN\EHDevelopmentSolution3\EHDevelopmentSolution3\Release\EsstnalUpdte.pdb |
D:\EH_DEVELOPMENT_SVN\EHDevelopmentSolution3\EHDevelopmentSolution3\Release\ProcNeo.pdb |
E:\EHDevelopmentSolution3\EHDevelopmentSolution3\Release\AdminNewDll.pdb |
E:\EHDevelopmentSolution3\EHDevelopmentSolution3\Release\AdminServerDll.pdb |
E:\EHDevelopmentSolution3\EHDevelopmentSolution3\Release\MSOBuild.pdb |
C:\Users\Fire\Documents\Visual Studio 2015\Projects\newfiles sent\newfiles\obj\Release\Pro-Gaurd.pdb |
E:\EHDevelopmentSolution3\EHDevelopmentSolution3\Release\WelcomeScrn.pdb |
C&C | |
---|---|
185.109.144.102:80 | hxxp://185[.]109[.]144[.]102/DistBuild/DefenderReference.exe |
hxxp://185[.]109[.]144[.]102/DO_NOT_NEED_A_URI | |
185.109.144.102:443 | Tcp |
tes.sessions4life.pw | hxxp://tes[.]sessions4life[.]pw/quiz/WelcomeScrn.exe |
138.197.129.94:80 | hxxp://138[.]197[.]129[.]94/logo.doc |
Mutex |
---|
EHWinHTTPWebServiceCall_MUTEX |
EHGetListerUploaderExeStateNeo_MUTEX |