原始文件名为GoogleUpdate.exe,这一类攻击样本除了大家熟悉的白加黑的利用手法外,还存在伪装成正常软件的木马文件,自己统计了下最早是2021年6月份在外部发现的。当双击或者其余方式执行后恶意木马将实现驻留植入。由于正常软件的安装文件大部分情况下是需要携带正常的数字签名,因此从以往的公开案例分析利用伪装成正常软件的木马进行攻击活动被发现的概率会比较高,异常痕迹很明显。在驻留行为方面,由于无法在与攻击样本关联的真实攻击活动取证,在此期间逆向分析样本过程中发现样本存在对服务的启动逻辑,目前只能根据逆向分析的结果去推测驻留手法大概率是采用服务驻留的方式,至于整个攻击链路以及针对的具体目标我们无法得知,只能通过VirusTotal提供的Source字段发现是来源于越南地区(VN)。
母体外壳实现的逻辑比较简单,没有任何混淆与反分析的逻辑。在分配内存后将内嵌的正常程序GoogleUpdate.exe写入本地路径然后启动,之后执行shellcode代码。
本地创建写入的正常软件路径,携带正常的数字签名,属于静默运行,并没有相关的窗口显示。
执行的第一阶段shellcode大小为3B43Bh,主要是获取本机IP地址以及相关的API函数来解密第二阶段shellcode代码。第二阶段shellcode大小为33510h,需要解密才行成功执行。本文重点关注加解密算法细节,不涉及其余的对抗以及反检测技术。整体上看加解密算法还是比较简单的,在逆向分析后得知样本会利用本机IP地址计算md5值作为密钥解密。
将md5值进行复制变成32个字节数据,作为AES-CBC-256解密算法的密钥。
利用AES解密算法,模式为CBC,利用的IV值为6A 41 C9 8C 11 D0 77 BC EF EB 4A F1 8D 5C 86 1D。
解密完成后,对解密成功的shellcode再次选中部分数据进行md5哈希计算,得到哈希值,便于后续判定是否成功解密。
内嵌的md5哈希值EB 9B 38 85 A6 9F CB AB 34 03 20 90 BF 3A 88 A3,与该值进行比较来判断是否成功解密,这里是无法补丁绕过的。
一旦解密成功后将会创建新线程来执行解密后的shellcode代码,如下。
去年有写过一个解密的demo程序,经过修改后针对本次的加密shellcode进行解密。运行了一个多小时后成功找到正确的密钥(IP地址),密钥为0046060a(转换为真实IP地址为10.6.70.0,这是一个内网地址)。
通过对shellcode的特征进行比对发现属于CS的beacon后门,因此利用相关的解析脚本直接解析得到beacon的配置信息,如下。
C2地址为https[:]//10.4.200.136/ToyotaSite/rest/globalnav/vehicledata,内网地址表明所关联的攻击活动中攻击者已成功在内网中驻留且受控机器不止一台。
IOC
ec8811ab8756013cc6e8279584dbf204(微步云沙箱可下载)
原文始发于微信公众号(OnionSec):APT32非白加黑样本分析与解密