看了逻辑,不知为何感觉这个木马AI含量很高,甚至我感觉我都能还原出攻击者和AI的对话
第一幕:反沙箱
攻击者(打开ChatGPT,打字):
“帮我写个程序,能检测是不是在虚拟机里跑。我不想被分析。”
AI:
以下是C++代码,通过检测vmtoolsd.exe进程、MAC地址、屏幕分辨率等判断是否在虚拟机中……
攻击者(复制粘贴,编译,运行):
“卧槽,真能检测出来!牛逼啊AI!但是它怎么一运行就弹个黑框?能不能不弹窗?”
AI:
您可以编译为Windows应用程序(/SUBSYSTEM:WINDOWS)而非控制台程序。或者使用#pragma comment(linker, "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup")。
攻击者:
“啥?算了,弹窗就弹窗吧,反正用户也不懂。对了,能不能搞个分数,超过多少分就自己退出?显得高级点。”
AI:
已添加评分系统,阈值120分。
攻击者:
“行。那个阈值改成120?为啥是120?算了,120就120,吉利。”
第二幕:下载器(开始烦躁)
攻击者:
“再写个下载器,能从网上下东西然后运行。不要用我自己的服务器,有没有什么免费的地方?”
AI:
推荐使用Pastebin.com托管下载链接列表。以下代码从Pastebin获取URL,下载7z压缩包,解压后执行。
攻击者:
“Pastebin是什么?算了不管。你给我写就行。”
AI(生成代码):
代码已生成。需要将7z.exe与程序一起打包。
攻击者(编译,运行,报错找不到7z.exe):
“什么鬼?你不是说代码能用吗?怎么缺文件?”
AI:
抱歉,您需要从官网下载7-Zip并提取7z.exe放在同一目录。或者我可以修改代码使用Windows内置的expand命令,但不支持.7z格式。
攻击者:
“真麻烦。我去下个7z.exe……好了,现在能跑了。但是下载的文件放哪?我不想让人找到。”
AI:
建议放在C:\Users\Public\Pictures\下随机命名的子文件夹中,例如“USBManager”、“GraphicsDriver”等。
攻击者:
“行行行,你看着办。我不管了。”
第三幕:窃密模块(气急败坏)
攻击者(新建对话):
“写个程序,偷Chrome里保存的密码。用C#写,我只会C#。”
AI:
以下是C#代码,读取Login Data数据库并使用CryptUnprotectData解密……
攻击者(编译,运行,报错缺少SQLite.dll):
“又缺东西!你能不能写个不用额外dll的?”
AI:
可以使用System.Data.SQLite的托管版本,或者改用读取原始SQLite文件的方式,但那样更复杂。建议您通过NuGet安装SQLite依赖。
攻击者:
“NuGet又是什么?算了,我装。……装好了,现在能跑了。但是它报错说‘无法加载DLL’。”
AI:
您可能需要将SQLite的本地DLL(x86/x64)放在输出目录。或者编译为AnyCPU并启用“首选32位”。
攻击者(折腾半小时,终于能跑了):
“妈的,总算好了。现在杀软报毒了!一编译完就被Windows Defender删了。你不是说C#能写吗?怎么被杀?”
AI:
常见的绕过方法包括:混淆、加壳、使用其他语言重写(如Rust)。Rust编译的二进制没有托管代码特征,可能降低查杀率。
攻击者:
“Rust是什么?很牛逼吗?”
AI:
Rust是一门系统编程语言,以内存安全和性能著称。许多项目正在用Rust重构。
攻击者:
“行,那你帮我把这个C#代码翻译成Rust。”
AI(生成数百行Rust代码):
已翻译。需要安装Rust工具链和以下crate:rusqlite、winapi、sysinfo……
攻击者(安装Rust,尝试编译,看到铺天盖地的错误):
“我草!这是什么鬼错误?borrow checker?lifetime?一个都看不懂!你不是说Rust很安全吗?安全个屁,连编译都过不了!”
AI:
Rust的所有权系统需要一定时间适应。我可以帮您逐一修复错误。请提供错误信息。
攻击者(复制粘贴几十行错误,然后):
“算了算了,不搞了!有没有更简单的方法?就是让我原来的C#能跑,但是杀软不杀?”
AI:
您可以尝试将C#逻辑编译为DLL,然后用Rust写一个极小的加载器,在内存中加载DLL执行。这样Rust作为壳,C#核心不变。以下是Rust加载器代码(约30行),使用ClrOxide库。
攻击者(看到代码很短):
“这个看起来简单。你确定能编译过?”
AI:
需要安装clroxide crate和.NET运行时。示例代码经过测试。
攻击者(尝试编译,又报错):
“妈的,又说找不到clroxide!你到底能不能给个能直接编译的代码?”
AI:
请修改Cargo.toml如下:clroxide = { version = "0.3", features = ["load_from_memory"] }。同时需要安装.NET Desktop Runtime 6.0。
攻击者:
“我真服了。装这个装那个……好了,装完了。现在编译通过了!卧槽,终于过了!生成一个exe,3MB。这玩意能加载我的C# DLL?”
AI:
是的。您需要将C# DLL作为资源嵌入,或者在运行时从外部文件加载。建议嵌入并加密。
攻击者:
“怎么嵌入?你一次性说完行不行?”
AI:
以下是嵌入RC4加密DLL的完整代码。您需要先生成DLL,然后运行一个加密脚本,最后将加密后的字节数组复制到Rust代码中。
攻击者(跟着做,折腾两小时,终于跑通了):
“我草,终于能跑了!虽然启动有点慢,内存占用大了点,但是杀软没报!这叫什么事儿啊……算了,能偷到密码就行。这个程序叫什么名字?”
AI:
建议伪装成系统服务,例如svc_service.exe。
攻击者:
“行吧,就叫这个。我再也不想搞Rust了。”
第四幕:加“创意”(得意忘形)
攻击者(几天后,觉得自己的木马很牛):
“AI,我想让我的木马更隐蔽。能不能把C2地址藏在Telegram或者Steam里?我听说有人这么干,分析员看到社交链接会一脸懵逼,哈哈哈哈!”
AI:
可以实现。从Telegram频道和Steam个人主页的HTML中提取C2地址。以下代码添加到下载器中作为备用渠道。注意这些平台可能有访问限制。
攻击者:
“加加加!全都加上!我是不是天才?”
AI:
已添加。同时建议保留Pastebin作为主渠道。
攻击者:
“行。对了,那个反沙箱的评分系统,给我输出一个漂亮的表格,带边框那种,像黑客帝国一样。我要让分析员看了觉得我很专业。”
AI:
已修改输出格式,添加ASCII艺术边框。
攻击者(看到生成的日志):
“漂亮!就这样!哈哈哈,我真是个天才!”
第五幕:发布与后续(自我安慰)
攻击者(把一堆exe打包,上传到GitHub,写了个README):
“AI,帮我写个README,要看起来很正规,像真的开源项目。”
AI:
已生成README.md,包含安装步骤、编译说明、常见问题等。
攻击者(上传完,等了两天,看C2服务器日志):
“怎么只有几个连接?不是应该很多人中招吗?”
AI:
可能是反沙箱检测过于严格,导致大量真实用户也被判为沙箱退出。建议降低阈值或移除部分检测项。
攻击者:
“我靠,那怎么办?我好不容易搞出来的。”
AI:
您可以发布一个更新版本,移除用户名Administrator的加分,或者将阈值提高到150。
攻击者:
“算了,不改了。麻烦。能偷一个是一个吧。”
然后他打开新对话:
“AI,我想做一个用机器学习检测沙箱的程序,这样更高级……”