Lazarus组织近期利用社交平台实施新型钓鱼攻击,通过社交平台诱导受害者使用被改造成木马的开源软件,从而获取到受害主机的控制权限。观成科技安全研究团队发现该组织在某次攻击活动中使用了被改造成木马的开源软件UltraVNC。UltraVNC是一款开源的远程管理工具,Lazarus组织在该工具中嵌入了恶意下载器。下载器会从C&C服务器(互联网失陷主机)获取恶意DLL并在内存中加载,与服务器的C&C通信全程使用HTTPS加密协议,加密载荷里的通信交互数据本身又使用了自定义的加密方式进行二次加密。
该样本类型为ISO,其中包含两个文件:Amazon_Assessment.exe、ReadMe.txt。木马化UltraVNC执行后,通过HTTPS加密协议上传系统信息,从C&C服务器下载并执行扩展DLL文件。
图 2-1 木马化UltraVNC通信过程图
木马化的UltraVNC获取注册表键值”\HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS\SystemManufacturer”,即受害主机的生产厂商信息和工作组名称,用“|”符号连接后进行Base64编码并附加在样本中硬编码的URL后面,形如:https://kaonnews.com/wp-admin/network/sitemap.php?2E9AE1F528B27A798D8BE424E4E7A4E6=。然后,URL使用单字节0x89进行异或加密,加密后的信息通过HTTPS加密协议发送给C&C服务器。见图2-1中的①。
图 2-2 上线包(HTTPS)
图 2-3 上线包(HTTPS解密后)
攻击者通过社交平台诱导受害者使用木马化的UltraVNC连接ReadMe.txt中记录的IP 54.182.16.65后,见图2-1中的②。UltraVNC中攻击者添加的代码会计算该IP字符串的哈希值,将其作为密钥,循环异或解密样本中包含的恶意Dll文件,并在当前进程中加载运行。
恶意DLL获取电脑名、系统磁盘信息、用户名、当前进程ID等信息,生成随机数作为通信校验的key(也用于URI生成)。
图 2-4 DLL中硬编码的通信URL
图 2-5 上传信息数据(加密前) DLL对数据进行ZIP压缩+自定义加密+Base64编码处理后使用HTTPS加密上传到C&C服务器,见图2-1中的③。
图 2-6 上传系统信息(HTTPS)
图 2-7 POST上传系统信息(HTTPS解密后)
图 2-8 自定义加密算法
DLL除上线包外使用的URI均随机生成,URI参数数量为1到3个。DLL首先生成第一个随机数用来选择不同的参数,参数列表如下图所示,再生成第二个随机数来决定参数的值,参数值可以是随机字符串,也可以是参数字符串与通信检验的Key加法运算后的数据。
图 2-9 通信随机选取的部分参数列表图
该DLL在使用POST请求上传系统信息后,每分钟向目标URL发送无载荷GET请求,用来获取下阶段攻击载荷。C&C服务器下发的数据也经过了ZIP压缩+自定义加密+Base64编码。该DLL接收到下发的数据后解密,解密后的数据包含URL(用来替换样本通信的URL)以及扩展DLL文件,样本会加载运行下载的扩展DLL,作为下阶段攻击载荷,见图2-1中的④。
图 2-10 模拟服务器下发后续载荷格式图
Lazarus组织在该款木马化开源工具中硬编码了多个常见的URL参数字段,发送心跳包时,使用随机数来选择参数、生成参数的值,导致了心跳包长度不固定,弱化了加密通信中的数据长度特征。Lazarus组织使用的C&C服务器为失陷主机,TLS通信证书为失陷主机的正常HTTPS业务证书,从而将攻击流量隐藏到了大量的正常HTTPS访问流量之中,阻碍了研究人员对其服务器特征的收集。但是该款木马化开源工具访问失陷主机的TLS客户端指纹和浏览器正常访问失陷主机的TLS客户端指纹是有较大差异的。另外该工具在请求后续载荷的时候有每分钟1次的心跳行为,虽然心跳包长度并不固定,但是长度是在一定范围内变化的,具有一定流行为特征。
加下方wx,拉你一起进群学习
往期推荐
域内令牌窃取
最简单绕过ring3 hook的方式(bypass bitdefender)
域内定位个人PC的三种方式
基于资源的约束委派(RBCD)
syscall的检测与绕过
DLL劫持之IAT类型
patchless amsi学习