导语:模块化的本质使得攻击者可以不断增加新的功能,在恶意软件感染后还可以下载新的模块。截止目前,研究人员发现其下载了一个系统指纹模块来进行简单的侦查活动。
Proofpoint研究人员近期发现一起主要攻击金融机构的新型恶意软件——Marap。模块化的本质使得攻击者可以不断增加新的功能,在恶意软件感染后还可以下载新的模块。截止目前,研究人员发现其下载了一个系统指纹模块来进行简单的侦查活动。
攻击活动分析
2018年8月10日,研究人员发现与Marap恶意软件payload相同的大量邮件活动。与TA505之前的攻击活动有许多相似之处,邮件中含有不同的附件类型:
Microsoft Excel Web Query (“.iqy”) 文件
含有“.iqy”的密码保护的ZIP压缩文件
嵌入了“.iqy”的PDF文件
含有宏的Word文档
攻击活动总结如下:
”sales” “.iqy”附件活动:消息来源是"sales" <[random address]>,主题是REQUEST [REF:ABCDXYZ],附件名为"REP_10.08.iqy" (活动日期)。
图1: 含有“.iqy”附件的“Sales”例子邮件消息
“Major bank” “.iqy”附件活动:消息来源显示"[recipient name]" [email protected][major bank].com,主题是IMPORTANT Documents – [Major Bank],附件名为"Request 1234_10082018.iqy" (随机数字、活动日期);该活动滥用了美国主要银行的品牌和名称,在本例中已经过模糊。
图2: sample message with 含有“.iqy”附件的“Major bank”样本消息
PDF附件活动:消息来源显示为"Joan Doe" <[email protected][random domain]>,主题为"DOC_1234567890_10082018" (随机数字,活动日期;"PDF","PDF文件","SCN"),附件名为DOC_1234567890_10082018.pdf (含有嵌入的.iqy 文件)。
图3: 含有嵌入的.iqy文件的PDF附件的消息样本
密码保护的ZIP活动:消息来源显示为<[email protected][random company]>(随机姓名),主题为Emailing: PIC12345(随机数字),对应附件为PIC12345.zip。
图4: 含有.iqy文件的密码保护的zip附件的消息样本
Microsoft Word附件活动:消息来源显示为"Joan" <[email protected][random domain]>(随机姓名),主题为Invoice for 12345.10/08/2018(随机数字,当天日期),对应附件名为Invoice_ 12345.10_08_2018.doc。
图5:含有恶意宏文件的Microsoft Word附件的消息样本
恶意软件分析
Marap是一种新型的下载器,以其C2电话主页参数param拼写错误而命名。该恶意软件用C语言编写,含有一些反分析特征。
反分析特征
大多数的Windows API函数调用都在运行时用哈希算法进行解析。API哈希也是恶意软件中常用的预防分析的一种方法。该算法看起来是Marap定制的。研究人员对哈希算法的python实现可以参考[3],代码中使用的XOR Key与其他样本有所不同。
第二种使用的反分析技术是在重要的函数开始时进行时序检查(图6),时序检查可以防止恶意软件被调试和在沙箱钟运行。如果计算的休眠时间太短,恶意软件就会退出。
图6: 反分析时序检查
恶意软件中大多数的字符串都使用下面方法中的一种进行了混淆
在栈(栈字符串)中创建;
基本XOR编码(0xCE是分析的样本中使用的key,但不同的样本中的key好像都不一样);
更复杂的基于XOR的编码(IDA Pro实现解密的脚本参见[4])。
第三种反分析检查是比较系统的MAC地址与虚拟机厂商列表。如果监测到虚拟机,就设置配置标记,并退出执行。
配置
Marap的配置以加密的格式保存在恶意软件二进制文件或恶意软件工作目录下的Sign.bin文件中。是使用IV(\x00\x00\x00\x00\x00\x00\x00\x00)CBC模式的DES加密。其中key是通过下面的过程生成的:
用线性同余随机数生成器(linear congruential generator,LCG)和两个硬编码的seed生成164字节的数据。LCG的python实现参见[5];
用SHA1对数据进行哈希;
用CryptDeriveKey和哈希值创建8字节的DES密钥。
解密配置示例如下:
15|1|hxxp://185.68.93[.]18/dot.php|hxxp://94.103.81[.]71/dot.php|hxxp://89.223.92[.]202/dot.php
这是管道限制的,并含有用于下面功能的配置参数:
C2通信之间的休眠timeout;
如果检测到在虚拟机中运行,flag表明恶意软件是否退出;
最多3个C2 URL。
C2
Marap使用HTTP进行C2通信,但是首先会尝试大量的哈发WinHTTP函数来决定是否需要代理以及该使用哪个代理。C2信标beacon如图7所示:
图7: C2信标示例beacon
请求中含有一个param参数,参数的数据也使用了与配置同样的方法进行加密。明文请求如下:
62061c6bcdec4fba|0|0
这是管道限制的,并含有:
Bot ID (通过哈希hostname, username, MAC地址来生成,使用的哈希算法与API函数哈希相同)
Hardcoded to “0”
Hardcoded to “0”
响应消息也是加密的,解密的响应消息如下:
319&1&0&hxxp://89.223.92[.]202/mo.enc
这是&限制的,并含有:
命令
命令ID
Flag控制响应类型
命令参数(参数可以用“#”隔开)
识别的命令:
0: Sleep并设置信标
1: 下载URL,DES解密,手动加载MZ文件(分配缓存,配置PE header和section,重分配,解析输入表)。命令可以通过下载的模块将数据传给C2
2: 更新配置并将DES加密的版本写入“Sign.bin”文件
3: 下载URL,DES解密,保存MZ文件到“%TEMP%/evt”,以命令行参数执行
4: 下载URL,DES解密,创建一个进程,并注入下载的MZ文件
5: 下载URL,DES解密,保存MZ文件到“%TEMP%/evt”,并用LoadLibrary API加载
6: 下载URL,DES解密,手动加载MZ文件
7: 移除自己并退出
8: 自升级
命令执行后,响应消息会回传给C2。这是管道限制的,含有:
Bot ID
Hardcoded “1”
Command ID
Command
Flag controlling response type
Command return value
Command status code (various error codes)
Response data
Either a simple status message
Or verbose “#” delimited data from modules
系统指纹模块
截止目前,还未发现有系统指纹模块从C2下载。该模块是从hxxp://89.223.92[.]202/mo.enc下载的,内部名mod_Init.dll。该模块是用C语言编写的DLL文件,会收集和发送下面的信息到C2服务器:
Username
Domain name
Hostname
IP address
Language
Country
Windows version
List of Microsoft Outlook .ost文件
Anti-virus software detected
结论
随着防御措施逐渐熟练于发现商业级的恶意软件,威胁单元和恶意软件作者继续开发新的方法来增加有效性,并减少痕迹和恶意软件的内部噪声。研究人员发现今年以来恶意软件传播量逐渐减少,而银行木马、下载器和其他恶意软件的量逐渐增多,增加了攻击者在设备和网络中建立驻留机制的可能性。Marap这种新的下载器给了攻击者很大的灵活性,因为攻击者未来会发起更大规模的攻击。
参考文献:
[1] https://www.proofpoint.com/us/threat-insight/post/ta505-shifts-times
[3] https://github.com/tildedennis/malware/blob/master/marap/func_hashes.py
[4] https://github.com/tildedennis/malware/blob/master/marap/str_decrypt3.py
[5] https://github.com/tildedennis/malware/blob/master/marap/lcg.py