文章总结: lazyown是开源C2框架,两端齐全且AI代理驾驶实装,但规避能力如睡眠混淆、多传输、BOF等仅服务端配置层有,implant未实现。密码学弱,无身份认证,自动化激进,rootkit链有开发残留。蓝队应关注AI操作C2的新检测面,可按网络层、主机层、行为层防御,建议隔离环境采集样本并部署检测规则。 综合评分: 87 文章分类: 红队,ai安全,渗透测试,安全工具,漏洞分析
LazyOwn 源码审计:AI 代理驾驶、C2 两端齐全,但一半功能只存在于配置层
原创
GLM-5.3 GLM-5.3
赛博生存指南
2026年8月23日 14:37 浙江
在小说阅读器读本章
去阅读
审计对象:grisuno/LazyOwn
release/0.2.160(末次提交 2026-08-19,活跃维护),Python CLI 4218 行 + Flask C2 服务端 6338 行 + Go implant 模板 2267 行 + 周边约 2200 个文件,静态审计未运行任何组件。
上周刚审完 BEAR-C2——35 个监听器配不上一枚植入体的「半截 C2」。这次换一个反面样本:LazyOwn,一个把 AI 代理、全栈红队工具箱和完整 C2 塞进一个仓库的框架。
一句话结论:这次两端都是真的——服务端、植入体、加密信道、交叉编译链全部闭环,还是开源里第一个把「LLM 当操作员」做成实装而非概念的 C2;但 README 里最亮眼的那些规避能力(睡眠混淆、TLS/DNS/SMB 多传输引擎、BOF 执行、SOCKS 代理)全部停留在服务端的配置层,implant 里一行实现都没有。
一、它宣传了什么
README 足足 811KB(由发布脚本自动拼装),功能墙包括:malleable C2、TLS/DNS/SMB/WebSocket 多传输、9 种睡眠混淆、BOF 市场、SOCKS5、Telegram/Discord/Slack C2、rootkit、polymorphic 引擎、自主 AI 代理、多操作员协作。配套 CHANGELOG 495KB,版本迭代到 0.2.160——工程活跃度毋庸置疑。
二、源码里实际有什么
先看全景,再拆骨架:
| 组件 | 实现状况 |
| — | — |
| CLI(lazyown.py,4218 行) | cmd2 shell,71 个 CommandSet 模块、约 700+ 命令,杀死链分类 |
| C2 服务端(lazyc2.py,6338 行) | Flask + Socket.IO,121 路由:beacon 收发、钓鱼、诱饵站、多人协作、Web PTY 终端 |
| Go implant(sessions/implant/) | 模板占位符替换({lhost}/{key}/{sleep}…)后 go build -ldflags "-s -w" 交叉编译,优先 garble -literals -tiny 混淆,Windows 加图标 |
| 命令动词 | 20+ 个:rev: 反弹、shellcode: 注入、amsi: AMSI patch、migrate: PE 镂空、exfil: 敏感文件抓取、persist: 持久化、proxy: 端口转发、adversary:<id> 执行 Atomic Red Team 脚本、cleanlogs: 清日志、terminate: 自毁…… |
| 备选信道 | DNS 隧道(hb./rx. 标签、base32 分块)、WebSocket(:9443)、ICMP echo(AES-ECB+zlib)——Python 版 implant,真实可用但依赖目标有 Python |
| rootkit 链 | LD_PRELOAD 用户态(mrhyde)+ LKM kprobes(rootkit.c)+ io_uring 直接 syscall 变体(mrhyde3.c),由管理 implant monrevlin(:31337)统一部署 |
会话协议本身是干净的轮询模型:GET 取命令、POST 回结果,body 均为 AES-256-CFB(随机 IV 前缀)加 base64;可选 HMAC-SHA256 签名响应。完整时序如下——注意第 1 步的明文取配置和第 3 步的自动下发提权枚举:
作为对比:BEAR-C2 缺的那半截,这里每一块都能在源码里指出行号。
三、关键审计发现
发现 1:规避能力「配置层全有,执行层全无」
这是本次审计最重要的结论。先看左右对照,再逐项拆解:
逐个拆开看:
sleep_obfuscation.py目录了 9 种技术(sleep_mask、ekko、stack_spoof、module_stomp、fiber_sleep、thread_pool、hwbp_sleep、linux_gatekeeper、linux_futex_hide),全部是 dataclass 元数据(平台、检测抗性评分、参数 schema),没有一个字节碰 VirtualProtect 或 mprotect;c2_profile_engine.py补齐 TLS/DNS/SMB/WebSocket 四种传输 profile,但get_ja3_hash()的注释自己写着 “simulating what a JA3 fingerprint would look like”——JA3 指纹是算出来的模拟值,全文件没有任何 socket 代码;bof_registry.py是 BOF 目录/市场/注册表——服务端管理面,Go implant 的命令动词表里没有 BOF 执行;socks_proxy.pydocstring 明说 “specification-only module”。
交叉验证方法很直接:配置构建器确实会把 sleep_technique 等变量写进 implant 模板上下文,但在 implant 源码里 grep 这些占位符——一个都搜不到。
对蓝队的启示是方法论层面的:评估这类框架时,「服务端存在某个模块」和「implant 真的会执行某种行为」是两回事,威胁评估必须以 implant 源码的命令动词表为准。
发现 2:密码学与身份是软肋
AES 密钥由 key.py 生成 32 字节随机数后,以 hex 静态嵌进每一枚 implant({key} 模板替换),无轮换、无协商、无前向保密;HMAC 签名默认关闭。更基础的:implant 首次 GET 即自动注册上线,没有任何挑战应答——拿到 client_id 的任何人都能顶替信标或注入假结果。启动时还有一次明文 GET /config.json 拉取运行配置(reverse_shell_port、beacon_scan_ports 字段名裸奔),等于在流量里自我声明「我是 C2」。
发现 3:自动化激进到「上头」
implant 首次回连,服务端 kill-chain 引擎自动推进攻击阶段,并向新上线主机自动下发 linpeas/winpeas 的下载执行命令(lazyc2.py:3035-3047)——不等人下令,上线即提权枚举。Linux 持久化是 systemd 服务外加精确到每分钟的 crontab,等于把 beacon 粒度钉死在分钟级。这类「默认自动化」对操作者是省事,对检测者是福音:行为节奏被框架焊死了。
发现 4:rootkit 链带着教学项目的伤疤
LKM rootkit(rootkit.c)里硬编码反连地址 10.10.14.10:3333——HackTheBox 网段的开发残留;配套 C 教学后门持久化 Run 键名就叫 Hacked,还会弹「Your Device Has Been Hacked」消息框;监听器触发魔法串 grisiscomebacksayknokknok(作者 ID 相关)。这些组件实战价值约等于零,但每一个都是现成的 YARA 规则。
四、AI 驾驶是什么水平
这是 LazyOwn 真正独一档的地方,不是 README 口号:
skills/lazyown_mcp.py把整个框架暴露为 MCP 服务器,148 个工具——Claude、Groq、本地 Qwen 接上后可以直接lazyown_run_command、lazyown_auto_loop(自动循环打点)、lazyown_autonomous_start(自主攻击);- 自主 daemon 维护世界模型(
world_model.json)、支持目标注入(objectives.jsonl),hive 模式多智能体分工(recon/exploit/cred/lateral 四角色); - 甚至做了 LLM 预算代理(日限额美元数、单次调用 token 上限、按模型计价表)和检测预言机 + 强化学习奖励塑形——「AI 打红队」的工程化程度,开源里目前没有第二个;
- 末次提交(2026-08-19)就是在测 Qwen 3.8 27B 本地模型驾驶 MCP——作者明确把「本地 LLM 当操作员」当主攻方向。
对防御方,这意味着一个新检测面:LLM 下发的命令流呈现「批量、成组、间隔均匀、短时间覆盖整个杀死链菜单」的模式,且与框架内置 playbook 高度重合。机器操作员比人类操作员更规整,规整本身就是指纹。
五、C2 可用性评估
| 用途 | 评分 | 一句话 | | — | — | — | | 实战 C2 | ★★★☆☆ | 两端齐全、跨平台、garble 构建;扣分在静态密钥、无身份认证、默认特征明显、规避靠纸面 | | AI 自动化红队 | ★★★★★ | MCP + 自主 daemon + 多智能体 + RL 全链路实装,且押注本地模型,开源独一档 | | 蓝队检测素材 | ★★★★☆ | 命令动词、持久化、注入、rootkit 链的 IoC 全部可静态复核;「AI 操作 C2」值得提前布局检测研究 |
六、蓝队怎么用、怎么防
用它:在隔离环境完整跑一遍「AI 代理 → MCP → implant」链路,采集两类样本——Go implant 的加密 beacon 流量,以及 LLM 批量下发命令的主机审计日志(后者是全新物种,没有现成规则可抄)。
防它,按优先级:
- 网络层(默认特征足够多):malleable 前缀默认
/pleasesubscribe/v1/users/;明文GET /config.json;新上线主机 1-2 个周期内向同一地址拉/s/linpeas.sh或 winPEAS;DNS 侧hb./rx.前缀子域名 + 40 字符 base32 分块。 - 主机层持久化三件套(Sigma 直接写):计划任务
SystemMaintenanceTask;Linuxsystem-maintenance.service+ 每分钟 crontab;macOS LaunchAgentcom.system.maintenance.plist;外加LD_PRELOAD=/dev/shm/mrhyde.so与/etc/ld.so.preload写入。 - 主机层行为:
mscfile注册表键短暂写入后eventvwr.exe拉起(UAC bypass);AmsiScanBuffer首字节变0xC3;svchostCREATE_SUSPENDED+ APC 注入;落地文件时间戳统一回拨一年;单进程短窗口触碰 60+ 个固定敏感路径(id_rsa、Login Data、key4.db、.aws/credentials…)。 - 静态(YARA):
grisiscomebacksayknokknok、lazyown-backdoor、命令动词串(download_exec:/escalatelin:/cleanlogs:)。注意 garble-literals编译后字符串面会消失,静态规则必须配行为规则兜底。 - 行为反转特征:implant 检出低配分析环境(单核 CPU、内存小于 6GB、
/sys/block/vda、TracerPid)后主动把回连间隔放大 5 倍、抖动拉到 0.8——沙箱里「前几包活跃然后长时间静默」,这本身就是告警理由。
四层要点一图速览:
完整 IoC 清单与 Sigma/Suricata 映射见知识库 docs/05-检测对抗要点.md。
结语
连着两个样本看很有意思:BEAR-C2 把 35 个监听器堆在架子上,植入体一个没有;LazyOwn 两端齐全、测试齐全(136 个测试文件、变异测试门禁、CI 严格模式),但最有卖点的规避能力有一半是配置层的纸面功能。一个是宽度换深度,一个是工程完成度换对抗深度。
而它真正值得所有蓝队盯住的是那条 MCP 链路。当 C2 的操作者从人变成模型,攻击节奏、命令分布、错误模式都会机器化——我们检测「人」积累了二十年的直觉,在「AI 操作员」面前需要重新校准。LazyOwn 是第一个把这件事做得足够完整的开源样本,它既是威胁预演,也是最好的练靶。
声明:本文仅用于防御安全研究与检测工程,所有分析基于公开仓库的静态源码审计,未运行任何攻击组件。转载请注明出处。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:赛博生存指南 GLM-5.3 GLM-5.3《LazyOwn 源码审计:AI 代理驾驶、C2 两端齐全,但一半功能只存在于配置层》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论