概述
近日瑞星威胁情报平台在日常运营中捕获到了一起使用有效数字签名进行伪装的恶意攻击,此次攻击中所使用的恶意文件在VirusTotal上的检出非常低,一度只有2家安全厂商检出。样本内部也进行了一定混淆,所使用的关键API与字符串均为解密后动态调用,且将解密C2的方法与文件名进行了绑定企图绕过沙箱分析和人工调试,最终回连C2获取后续的恶意载荷,接下来就对其进行详细分析剖析其使用的免杀方法。
样本分析
攻击流程

Contract JBornmann fully.exe分析
| 字段 | 内容 |
|---|---|
| 文件名 | Contract JBornmann fully.exe |
| MD5 | 60602E6D0A799EF845F732705C904649 |
| 文件大小 | 600.63 KB (615040 bytes) |
| 病毒名 | Trojan.Injector!1.129BB |
| 备注 | 带有效的数字签名 |
Contract JBornmann fully.exe带有有效的数字签名,名称为Hebei Runxuan Chemicals Import and Export Trading Co., Ltd.,翻译成中文指的是:河北润轩化工进出口贸易有限公司。

在VirusTotal上,该样本的检出率极低,从我们发现样本到现在,检出相关样本的安全厂商仅从2家变为5家。


为了躲避检测,样本内的配置信息和重要行为相关的函数名,例如:CryptHashData、WinHttpSendRequest以及WinHttpReadData等,它们的原信息都被进行了数据转换操作。转换算法大致是对每个数据进行多次+(加)、-(减)以及&(与运算)。



在该样本中,攻击者首先将不同位置的片段数据进行整合,整合好数据后对数据进行转换。

上述的数据全部成功转换后,结果显示其内容可能是来自一篇文档,内容为西班牙语,通过翻译得知,该内容疑似对智利已故艺术家Víctor Jara的纪念词。


数据转换,获取函数名CryptHashData,调用函数CryptHashData计算文件名前4个字节拼接上文档内容的HASH值,结果为6247CF8A506DE2381E5C917FB8CD7588。

利用HASH值参与数据转换,获取http地址:https://push.techdataservice.us。

数据转换,获取特征字符串5551ef2c-e16a-4c6f-93e1-cb1ff3d31c02/contract

数据转换,获取函数名WinHttpOpen,调用函数参数1(User-Agent)为5551ef2c-e16a-4c6f-93e1-cb1ff3d31c02/contract。

数据转换,获取函数名WinHttpSetOption,调用函数,设置HTTP会话用户名为0x00000A00。

数据转换,获取函数名WinHttpConnect,调用函数,创建http连接,URL地址为:https://push.techdataservice.us,端口为:443。

数据转换,获取函数名WinHttpOpenRequest,调用函数,使用GET方法,默认HTTP/1.1协议,创建http请求。


数据转换,获取函数名WinHttpSendRequest,发送HTTP请求。

数据转换,获取函数名WinHttpReceiveResponse,调用函数,接受服务器响应。

数据转换,获取函数名WinHttpReadData,调用函数,读取服务器响应数据,每次最多读取0x1000大小,最终得到的数据是个PE文件。

对获取的数据的首字母进行判断,如果不是大写字母M,则直接退出进程。

调用VirtualAlloc函数,创建内存,大小为PE中的SizeOfImage(PE文件加载到内存中时整个映像所占用的总大小)

按区段复制PE文件到内存中。

定位到PE入口函数,执行PE程序。

由于服务器已经不能正常访问,我们无法获取到后续的PE文件。

关联分析
| 字段 | 内容 |
|---|---|
| 文件名 | PT-20934_MKhan_Contract_fully.exe |
| MD5 | 5ad09db587a4e1bc53b24713f38d7d52 |
| 文件大小 | 600.63 KB (615040 bytes) |
| 病毒名 | Trojan.MalCert@XH.FCB1 |
| 备注 | 带有效的数字签名 |
通过样本带有的有效数字签名关联,可以关联到名为PT-20934 MKhan Contract fully.exe的样本,该样本的检出率也极低。从瑞星发现样本到现在,检出相关样本的厂商仅从2家变为6家。


该样本前期同样解密并动态调用CryptHashData、WinHttpSendRequest以及WinHttpReadData等,其会先通过调用CryptCreateHash传入参数0x00008003确定使用的算法为MD5算法。

随后会获取文件名称的前五字节与另一首西班牙语诗歌《Desnudo》进行拼接,调用CryptHashData传入拼接后的字符串与大小,计算其MD5值。

之后通过调用CryptGetHashParam获取计算后的哈希值为57D9859F785A56CE514775F97535D068。

将计算得到的哈希值与自带的加密数据循环位异或得到解密后的C2地址https://push.techdataservice.us,也就是意味着如果文件名前五字节并非为作者设置的名称则获取不到正确的哈希值,也就解密不出C2地址。获取到C2地址后后续会解密并动态调用一系列网络相关函数如 WinHttpSendRequest WinHttpReadData等,获取后续载荷进行内存加载,不过由于后续的C2已经失效并没有获取到后续载荷。

通过获取函数的反汇编代码去关联样本信息,其他的样本检出率也很低,有多个样本甚至仅瑞星可以检出。


攻击过程可视化(EDR)
瑞星EDR上详细记录了主机上的程序活动,通过威胁可视化调查功能,可以对本次攻击过程进行还原以及关系网展示。图中展示了本次攻击活动中涉及到的进程以及相关的域名等情况。


总结
该样本文件利用合法数字签名作为伪装,通过多重运算对关键信息进行混淆处理。文件在运行时动态解密各类数据,利用文件名前五字节与西班牙语文本拼接计算文本哈希,从而解密出C2地址以此对抗沙箱和调试分析。随后通过动态调用HTTP相关函数试图下载并加载远程恶意载荷,展现出模块化的多阶段攻击特征。虽然当前C2服务器失效导致后续载荷获取失败,但该样本所采用的签名伪装与执行策略仍对安全防御构成显著威胁。目前瑞星已支持查杀该病毒,我们也将继续追踪此类恶意攻击事件。
预防措施
-
不打开可疑文件。
不打开未知来源的可疑的文件和邮件,防止社会工程学和钓鱼攻击。
-
部署网络安全态势感知、预警系统等网关安全产品。
网关安全产品可利用威胁情报追溯威胁行为轨迹,帮助用户进行威胁行为分析、定位威胁源和目的,追溯攻击的手段和路径,从源头解决网络威胁,最大范围内发现被攻击的节点,帮助企业更快响应和处理。
-
安装有效的杀毒软件,拦截查杀恶意文档和木马病毒。
杀毒软件可拦截恶意文档和木马病毒,如果用户不小心下载了恶意文件,杀毒软件可拦截查杀,阻止病毒运行,保护用户的终端安全。
瑞星ESM目前已经可以检出此次攻击事件的相关样本

-
及时修补系统补丁和重要软件的补丁。
沦陷信标(IOC)
-
MD5
60602E6D0A799EF845F732705C904649 5AD09DB587A4E1BC53B24713F38D7D52 B2E19B1A6585B33985BC64DE933C45D3 A11F4CCA834EC5465385922E46402EE9 6A783913BEB6DA22A0601A4F2C22BB72 C89DD28FAE970CDCFD52F1B61F75691F B66575EBEED9603395E52A223124E5E0 9C33D4546189C062B19FBC87671664DA -
Domain
push.techdataservice.us -
瑞星病毒名
Trojan.Injector!1.129BB