Lazarus 组织木马化开源软件的加密通信分析
Lazarus 组织近期利用社交平台实施新型钓鱼攻击,通过社交平台诱导受害者使用被改造成木马的开源软件,从而获取到受害主机的控制权限。观成科技安全研究团队发现该组织在某次攻击活动中使用了被改造成木马的开源软件 UltraVNC。UltraVNC 是一款开源的远程管理工具,Lazarus 组织在该工具中嵌入了恶意下载器。下载器会从 C&C 服务器(互联网失陷主机)获取恶意 DLL 并在内存中加载,与服务器的 C&C 通信全程使用 HTTPS 加密协议,加密载荷里的通信交互数据本身又使用了自定义的加密方式进行二次加密。
攻击者通过社交平台诱导受害者使用木马化的 UltraVNC 连接 ReadMe.txt 中记录的 IP 54.182.16.65 后,见图 2-1 中的②。UltraVNC 中攻击者添加的代码会计算该 IP 字符串的哈希值,将其作为密钥,循环异或解密样本中包含的恶意 Dll 文件,并在当前进程中加载运行。
恶意 DLL 获取电脑名、系统磁盘信息、用户名、当前进程 ID 等信息,生成随机数作为通信校验的 key(也用于 URI 生成)。
DLL 除上线包外使用的 URI 均随机生成,URI 参数数量为 1 到 3 个。DLL 首先生成第一个随机数用来选择不同的参数,参数列表如下图所示,再生成第二个随机数来决定参数的值,参数值可以是随机字符串,也可以是参数字符串与通信检验的 Key 加法运算后的数据。
该 DLL 在使用 POST 请求上传系统信息后,每分钟向目标 URL 发送无载荷 GET 请求,用来获取下阶段攻击载荷。C&C 服务器下发的数据也经过了 ZIP 压缩 + 自定义加密 +Base64 编码。该 DLL 接收到下发的数据后解密,解密后的数据包含 URL(用来替换样本通信的 URL)以及扩展 DLL 文件,样本会加载运行下载的扩展 DLL,作为下阶段攻击载荷,见图 2-1 中的④。
Lazarus 组织在该款木马化开源工具中硬编码了多个常见的 URL 参数字段,发送心跳包时asp技术,使用随机数来选择参数、生成参数的值,导致了心跳包长度不固定,弱化了加密通信中的数据长度特征。Lazarus 组织使用的 C&C 服务器为失陷主机,TLS 通信证书为失陷主机的正常 HTTPS 业务证书,从而将攻击流量隐藏到了大量的正常 HTTPS 访问流量之中,阻碍了研究人员对其服务器特征的收集。但是该款木马化开源工具访问失陷主机的 TLS 客户端指纹和浏览器正常访问失陷主机的 TLS 客户端指纹是有较大差异的前端asp。另外该工具在请求后续载荷的时候有每分钟 1 次的心跳行为,虽然心跳包长度并不固定,但是长度是在一定范围内变化的,具有一定流行为特征。