新版本 Redline 使用 Lua 字节码逃避检测

news2024/9/20 0:37:41

近日,研究人员观察到 Redline Stealer 木马的新变种,开始利用 Lua 字节码逃避检测。

遥测分布

根据遥测数据,Redline Stealer 木马已经日渐流行,覆盖北美洲、南美洲、欧洲和亚洲甚至大洋洲。

感染链

1715947302_66474726062e1c41868c3.png!small?1715947300416

感染链

微软官方账户的 vcpky 仓库被攻击者滥用部署了恶意文件,恶意 URL 为 https[:]//github[.]com/microsoft/vcpkg/files/14125503/Cheat.Lab.2.7.2.zip

该压缩文件中包含 MSI 安装程序:

1715947324_6647473ca71cb0f35710d.png!small?1715947322526

MSI 文件

MSI 安装程序包含两个 PE 文件和一个文本文件。

1715947346_66474752306c22b707c30.png!small?1715947344121

文件内容

Compiler.exe 和 lua51.dll 都是 Lua 开发的二进制文件,攻击者会稍微定制化修改这些文件。而 readme.txt 其中包含 Lua 字节码,配合使用可以在运行时编译和执行。

Lua JIT 是 Lua 编程语言的即时编译器(JIT):

1715947366_664747662913f91f0e847.png!small?1715947367098

字节码

通常来说,1B 4C 4A 02也就表示着是 Lua 5.1 字节码。这种方式可以将恶意攻击进行混淆,避免安全软件检测到好识别的脚本文件(如 wscript、JScript 或 PowerShell 脚本),进一步增强了攻击的规避能力。

用户点击执行 MSI 安装程序后,就会显示一个用户界面:

1715947401_66474789a2cf2c4fc3f73.png!small?1715947399646

安装界面

安装过程中会提示用户将恶意软件安装到其他朋友的计算机上,就可以获得完整的应用程序。

1715947416_664747982d5254ce122aa.png!small?1715947414547

提示信息

在安装过程中,可以发现有三个文件被写入 C:\program Files\Cheat Lab Inc\ Cheat Lab\中。

1715947440_664747b03e89f290f4770.png!small?1715947438718

写入文件

后续这三个文件会被移动到指定路径中:

1715947458_664747c20d39897db3273.png!small?1715947456065

特定路径

可以看到,compiler.exe 由 msiexec.exe 执行,并以 readme.txt 作为参数。而 lua51.dll 会被加载到 compiler.exe 中,lua51.dll 是 compiler.exe 运行需要的 DLL,攻击者将该 DLL 文件与程序文件放在一起。

1715947476_664747d445c2b4d3a3770.png!small?1715947474488

操作行为

安装过程中,msiexec.exe 会创建一个计划任务来执行 compiler.exe,并将 readme.txt 作为参数。

1715947574_6647483624611ff34303b.png!small?1715947572191

计划任务

除了上述持久化技术外,恶意软件还使用另一种备用方式确保恶意软件能够得到执行。恶意软件会将前述三个文件复制到另一个文件夹中,路径非常长而且很随机。

1715947599_6647484f575105d6d742c.png!small?1715947597891

文件移动

请注意,compiler.exe 已经改名为 NzUW.exe。随后在 C:\Windows\Setup\Scripts\ 中释放文件 ErrorHandler.cmd。文件的内容如下所示,攻击者以新名称 NzUw.exe 执行 compiler.exe,并以 Lua 字节码作为参数。

1715947615_6647485f16d7a72441348.png!small?1715947613557

执行命令

执行 ErrorHandler.cmd 会调用 system32 文件夹中的恶意文件。

1715947627_6647486be6f40a57a0a99.png!small?1715947626648

进程创建

为此还会创建另一个计划任务,程序不带任何参数启动 C:\Windows\system32\oobe\Setup.exe。

1715947641_6647487935776a86e1474.png!small?1715947639301

计划任务

事实证明,如果将 Payload 放在 c:\WINDOWS\Setup\Scripts\ErrorHandler.cmd 中,则 c:\WINDOWS\system32\oobe\Setup.exe 将在发生错误时加载它。

1715947657_664748890a22d71aaf16a.png!small?1715947655296

官方文档

c:\WINDOWS\system32\oobe\Setup.exe 的执行需要参数,如果不提供参数就会触发错误。从而执行 ErrorHandler.cmd 调用 compiler.exe 加载恶意 Lua 代码。

1715947674_6647489a2ead7358160b3.png!small?1715947672109

进程树

可以确认 c:\WINDOWS\system32\oobe\Setup.exe 以 ErrorHandler.cmd 脚本作为参数启动 cmd.exe,该脚本运行 NzUw.exe。

继续通过 API 查看所在 IP 的信息:

1715947685_664748a543fe2c2b5287e.png!small?1715947683586

IP 信息

IP 相关信息会以 JSON 形式写入 inetCache 文件夹中。

1715947698_664748b25b7120ef11f2b.png!small?1715947696462

写入文件

文件内容如下所示:

1715947712_664748c0b9365d7874709.png!small?1715947713225

文件内容

C&C 通信

恶意软件的 C&C 通信使用 HTTP 协议:

1715947727_664748cfcb450899b22fb.png!small?1715947727173

C&C 流量

C&C 服务器响应了名为 OTMsOTYs 的任务 ID,包含在 base64 编码的字符串中:

1715947740_664748dcc2926ad4c4f91.png!small?1715947742017

响应信息

1715947772_664748fc130da876a71ed.png!small?1715947770244

响应信息

通过 /loader/screen 的 HTTP PUT 请求发送到攻击者控制的服务器。服务器 IP 地址归属于 Redline,许多引擎都将其标记为恶意。

1715947793_664749114962a2430254d.png!small?1715947791819

IP 地址

进一步查看,该数据包传输的是名为 Screen.bmp 的图片文件。值得注意的是,请求使用的 User-Agent 为 Winter。

1715947805_6647491de2d47bd52f721.png!small?1715947804255

PUT 请求

图片如下所示,为回传的受害者的屏幕截图。

1715947820_6647492c21f1c87916a9e.png!small?1715947818500

屏幕截图

字节码

字节码的分析很有挑战,使用很多开源的反编译器可以得到不同的 Lua 脚本。

1715947835_6647493b1cd40d2abd9dc.png!small?1715947833834

反编译

调试过程如下所示:

1715947852_6647494c16f5329eaf79f.png!small?1715947850594

调试信息

通过将数据值传递给两个函数来填充 var_0_19,调试时可以发现 base64 编码的值存储在 var_0_19 中。这些 base64 字符串多是编码数据,而不是字符串。

1715947860_66474954870eb1c774a7b.png!small?1715947858547

函数传递

var_0_19 中的所有数据都会被分配给 var_0_26:

1715947875_66474963a5495a432e5b2.png!small?1715947873693

调试信息

同样的方式填充第二个 table(var_0_20),其中包含编码数据的替换密钥:

1715947886_6647496eac38bfdc0db6d.png!small?1715947885028

解密代码

解密代码如上所示,逐个元素迭代 var_0_26 并进行解密。循环很长并且包含很多垃圾代码,循环结束时将解密的值还给 var_0_26。

1715947900_6647497ca9b5ba62f5077.png!small?1715947898949

恶意代码

1715947912_664749881fdaf2b0056df.png!small?1715947910304

调试信息

断点设置在 1174 行并监测 var_0_26:

1715947924_664749945d86b22cab0f4.png!small?1715947922321

调试信息

当多次命中断点时,监视窗口可以看到更多加密数据:

1715947935_6647499f57daf4d192eb5.png!small?1715947933855

调试信息

解密的字符串例如 var_0_26 中的 Tamper Detected!

加载 LuaJIT 字节码

在加载 LuaJIT 字节码前,会创建一个新状态。每个 Lua 状态都维护其全局环境、堆栈与加载的库,从而在不同的 Lua 代码间提供隔离。

1715947947_664749abc73e690361a6d.png!small?1715947945644

恶意代码

恶意软件使用 Lua_openlib 函数加载库,并加载 debug、io、math、ffi 和其他支持的库。

1715948350_66474b3ebb29fb0e9c085.png!small?1715948348694

恶意代码

使用 lua51 的导出函数 luaL_loadfile 加载 LuaJIT 字节码,会使用 fread 函数读取 JIT 字节码,然后使用 memmove 函数移动到分配的内存。

1715948365_66474b4d03213551e20bb.png!small?1715948362883

调试信息

1715948379_66474b5bc861009ad5ec4.png!small?1715948377758

调试信息

文件中的字节码使用 memmove 函数将字节码从一个偏移量更改为另一个偏移量。使用 memmove 函数复制 JIT 字节码中 200 字节定长数据。

1715948390_66474b668c2489c0b8bb7.png!small?1715948388477

调试信息

获取 table 的值并使用浮点算术或异或指令对其进行处理:

1715948404_66474b746ae305638fd5c.png!small?1715948404084

调试信息

使用 memmove 函数将字节从源缓冲区移动到目标缓冲区。

1715948420_66474b84b46f97fbc9389.png!small?1715948418516

调试信息

进一步分析后,该脚本中将使用变量和参数进行定义:

1715948442_66474b9a8ada11ea1c8ad.png!small?1715948440554

调试信息

API 会使用 ffi 从 Lua 代码中直接访问 Windows API,定义 API 函数如下所示:

1715948462_66474bae20fd1cf7c2c53.png!small?1715948460572

函数信息

它会使用 CreateMutexExW 创建名为 Winter750 的互斥量:

1715948477_66474bbd08d77ff996d53.png!small?1715948475369

调试信息

也会使用 ntdll.dll 中的 LdrLoaddll 函数在运行时加载 dll,使用 LuaJIT ffi 调用该函数。

1715948492_66474bcc93cb80257ed97.png!small?1715948490745

调试信息

使用 ffi 使用 RegQueryValueEx 函数从 Windows 注册表检索 MachineGuid 项。使用 RegOpenKeyExA 打开注册表项SOFTWARE\Microsoft\Cryptography 并从打开的注册表项查询 MachineGuid 的值。

1715948505_66474bd9c23b069bb79fb.png!small?1715948503882

调试信息

使用 ffi 的 GetComputerNameA 函数从 Windows 注册表中检索 ComputerName。

1715948521_66474be97072f6b09585a.png!small?1715948519377

调试信息

收集以下信息并将其发送到 C&C 服务器:

1715948535_66474bf78b8deadf31a04.png!small?1715948534276

回传信息

1715948550_66474c0697b21ae336db4.png!small?1715948548758

回传信息

微软已经从官方存储库中删除了存在问题的文件。

题外话

初入计算机行业的人或者大学计算机相关专业毕业生,很多因缺少实战经验,就业处处碰壁。下面我们来看两组数据:

  • 2023届全国高校毕业生预计达到1158万人,就业形势严峻;
  • 国家网络安全宣传周公布的数据显示,到2027年我国网络安全人员缺口将达327万。

一方面是每年应届毕业生就业形势严峻,一方面是网络安全人才百万缺口。

6月9日,麦可思研究2023年版就业蓝皮书(包括《2023年中国本科生就业报告》《2023年中国高职生就业报告》)正式发布。

2022届大学毕业生月收入较高的前10个专业

本科计算机类、高职自动化类专业月收入较高。2022届本科计算机类、高职自动化类专业月收入分别为6863元、5339元。其中,本科计算机类专业起薪与2021届基本持平,高职自动化类月收入增长明显,2022届反超铁道运输类专业(5295元)排在第一位。

具体看专业,2022届本科月收入较高的专业是信息安全(7579元)。对比2018届,电子科学与技术、自动化等与人工智能相关的本科专业表现不俗,较五年前起薪涨幅均达到了19%。数据科学与大数据技术虽是近年新增专业但表现亮眼,已跻身2022届本科毕业生毕业半年后月收入较高专业前三。五年前唯一进入本科高薪榜前10的人文社科类专业——法语已退出前10之列。

 “没有网络安全就没有国家安全”。当前,网络安全已被提升到国家战略的高度,成为影响国家安全、社会稳定至关重要的因素之一。 

网络安全行业特点

1、就业薪资非常高,涨薪快 2021年猎聘网发布网络安全行业就业薪资行业最高人均33.77万!

 2、人才缺口大,就业机会多

2019年9月18日《中华人民共和国中央人民政府》官方网站发表:我国网络空间安全人才 需求140万人,而全国各大学校每年培养的人员不到1.5W人。猎聘网《2021年上半年网络安全报告》预测2027年网安人才需求300W,现在从事网络安全行业的从业人员只有10W人。

 行业发展空间大,岗位非常多

网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、渗透工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产品经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、灾难恢复专业人员、实战攻防专业人员…

职业增值潜力大

网络安全专业具有很强的技术特性,尤其是掌握工作中的核心网络架构、安全技术,在职业发展上具有不可替代的竞争优势。

随着个人能力的不断提升,所从事工作的职业价值也会随着自身经验的丰富以及项目运作的成熟,升值空间一路看涨,这也是为什么受大家欢迎的主要原因。

从某种程度来讲,在网络安全领域,跟医生职业一样,越老越吃香,因为技术愈加成熟,自然工作会受到重视,升职加薪则是水到渠成之事。

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

 1.学习路线图 

 攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

 (都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。 

 因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。 

 还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

 最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

 因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取 

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2094989.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Java的汽车推荐购买系统的设计与实现(论文+源码)_kaic

摘要 随着经济水平的不断提高,汽车销售行业存在激烈竞争,人们对于生活中汽车的需求也越来越多,而目前的汽车推荐购买管理由于存在管理不规范性等缺点,严重制约了汽车推荐购买和汽车公司的发展,因此需要设计一个汽车推荐…

一加8T安装 Kali NetHunter 高阶教程 KB2000刷机 param预载失败 高通9008驱动签名 小米刻晴主题

前言 本文包含一加8T手机刷入kaili nethunter 的详细版教程、资源、刷机知识思维导图、param预载失败问题解决、高通刷机驱动故障问题解决、小米刻晴主题等资源的分享 本机环境 手机:OnePlus 8T (型号KB2000) 系统:Android 13 …

公司招聘中,多个面试官对候选人评价不一致怎么办?

面试过程中,极易出现面试官评价标准不一的情况,为了有效解决这一问题,企业可以建立一套标准化的面试评分体系,在该体系中,应该详细包括统一的评分标准和评分细则,内容覆盖求职者的专业技能、沟通能力、团队…

【Threejs进阶教程-着色器篇】6. 2D SDF(三) 移动图形,限制图形,绘制多个图形

2D SDF 移动与合并图形 前五篇地址,建议按顺序学习本篇使用到的初始代码减小扩散范围clamp函数修改maxDistance来修改扩散范围 移动扩散中心添加第二个扩散点降低点的同步率调整参数来优化效果添加更多扩散点 完整源码如有不明白的,可以在下方留言或者加…

01:【stm32HAL】对GPIO的操作

对GPIO的操作 1、LED闪烁2、按键控制LED3、芯片调试接口被锁死导致无法下载程序 1、LED闪烁 使用的是STM32CubeMXKeilv5进行HAL库的开发。 开发的步骤: 第一步:新建工程 第二步:选择芯片 第三步:如下图哈哈 第四步:…

图像识别智能垃圾桶项目开发--语音命令识别垃圾

一、项目思维导图 二、语音模块配置信息 三、项目程序 main.c garbage.c garbage.h uartTool.c //串口发送数据 uartTool.h

IPv6配置实验(OSPFv3)

1.搭建拓扑图 2.配置接口IP地址

文件上传的学习

文件上传漏洞 文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。“文件上传”本身没有…

计算机毕业设计推荐-基于python的公司员工考勤管理系统

💖🔥作者主页:毕设木哥 精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻 实战项目 文章目录 实战项目 一、基于python的公司员工考勤管…

电池点焊机设计要点记录及个人分析

想要设计的由来 有些电路板或动力元件需要电池和镍片的连接,虽然临时使用焊锡焊接在了一起,但焊接过程中的热量和焊接后的厚度太大。最终想要设计一个用于点焊的板子 点焊的原理和操作上的误区 原理:两个点焊笔和镍片的接触点直径相比于导…

Local GAP - Financial Statement Version 【海外BS\PL报表】

业务场景: 基于海外IFRS等会计准则为客户定义一套BS\PL报表 BS - 从科目余额抓取 PL - 从利润中心报表抓取 会计报表版本的建立: 路径:IMG>财务会计(新)>总账会计核算(新)主数据>总…

【电子通识】失效分析中的电测试技术——电阻测试方法及注意事项

失效分析通常需要对测试数据进行仔细的分析,因此,测试设备的数据准确性和可靠性是至关重要的基本要求。为了确保数据的准确性,失效分析所使用的测试设备需要进行定期计量。 测试设备选择 在测试电阻、电容和电感的设备中,最常见的…

watchdog: BUG: soft lockup

故障现象: 故障原因: 不知道。 解决办法: 由12个改成2个;然后重新开机虚拟机, 临时解决了。

使用Golang的协程竟然变慢了|100万个协程的归并排序耗时分析

前言 这篇文章将用三个版本的归并排序,为大家分析使用协程排序的时间开销(被排序的切片长度由128到1000w) 本期demo地址:https://github.com/BaiZe1998/go-learning 往期视频讲解 📺:B站:白泽…

145. 利用 Redis Bitmap实践: 用户签到统计

文章目录 一、Redis Bitmap简介二、Bitmap 的主要应用三、Go使用Redis实现签到统计用户签到查询用户签到状态统计今年累计签到天数统计当月的签到情况 总结 在现代应用程序中,用户签到是一个常见的功能。我们通常使用 MySQL 数据库来存储用户的签到记录。然而&#…

c++11新特性-智能指针

1. 智能指针的概念及原理 1.1 什么是智能指针 智能指针RAII(Resource Acquisition Is Initialization),是一种利用对象的生命周期来管理资源的技术。如果我们采用传统的new/delete来申请和释放资源,如果忘记调用delete,或者在调用delete之前…

World of Warcraft [CLASSIC][80][Grandel] Call to Arms: Arathi Basin

PVP战场阿拉希盆地15人 /i 开局队伍分配:圣骑士飙车光环 /i [铁匠铺]坦克、治疗3个、输出6个(10人组) /i [伐木场]坦克、治疗、输出2(4个人组) /i [农场]留一个守(1个人组) /i 不要恋战&#x…

如何准确物理定位EMC Unity存储的磁盘位置

上周收到一个客户的咨询,问题是想主动更换一个Unity存储的磁盘,但不知道这个盘具体在存储的什么位置,有没有命令或者方法准确找到这个磁盘的物理位置? 以前也碰到过过类似的问题,但大部分是来自VNX存储。在现场让客户…

ChatGPT-4o:多领域创新应用的智能助手

ChatGPT-4o:多领域创新应用的智能助手 前言1. 数学建模:ChatGPT-4o的精确计算1.1 专业术语简介1.2 代码示例:线性规划问题问题描述代码实现运行结果 2. AI绘画:ChatGPT-4o的视觉创造力2.1 角色设计示例:火焰魔法师角色…

Leangoo领歌敏捷管理:助力敏捷高效协作,轻松实现Scrum敏捷转型

在当今快速变化的商业环境中,企业面临着前所未有的挑战。如何在激烈的竞争中保持领先?如何快速响应市场需求?答案就在于敏捷转型。而在这一过程中,有一个高效的敏捷工具至关重要——Leangoo领歌(Leangoo领歌 - 免费一站…