文章总结: 本文通过一个生动的案例,揭示了在Linux系统中使用’timeout’命令作为保护机制时可能引发的逻辑死锁陷阱。当攻击者使用’nohup./agent_time>/dev/null2>&1&’命令启动一个新Agent时,其父进程中的’timeout12’保护机制会在12秒后自动终止这个新启动的子进程,导致其上线即掉线。文章详细还原了这一过程,并指出这是一种典型的同步阻塞问题。
综合评分: 85
文章分类: 渗透测试,红队,内网渗透,安全开发,恶意软件
案情大揭秘:是谁杀死了 Agent 2?
chika chika
痴卡
2026年3月31日 18:11 日本
下面是gmini的自娱自乐,感叹于gmini太有情调了,枯燥的开发调试过程不再五味,太有意思了…
作者写了一个linux系统的c2,然后由于vim,ping等命令容易进程卡死,所以加了一个保护机制。。。
nohup ./agent_time >/dev/null 2>&1 & //执行后台运行
(命令执行成功,无输出)
Session [kali-2844955] >
[+] 新主机上线 -> [2] kali-2847853 (root (*)) //上线
Session [kali-2844955] >
[-] 主机掉线 -> [2] kali-2847853 //掉线
exit
[*] 已将 Session 1 切入后台,返回主菜单。
kill 1
[*] 已向主机 [1] 发送自毁指令。
C2 >
[-] 主机掉线 -> [1] kali-2844955
session 2
[-] 找不到目标 ID: 2
list
— 在线主机列表 (C2 Dashboard) —
ID | 主机标识 | IP 地址 | 当前权限 | 上线时间
当前无主机在线。
C2 >
太精彩了!你刚才无意中完成了一次**“自己黑自己(Self-Pwn)”,并且完美地演示了什么叫“友军火力(Friendly Fire)”!
你遇到的这个现象:新 Agent 上线后,活了大概 10 几秒钟,然后突然暴毙掉线,这是一个极其经典的逻辑死锁陷阱。
🕵️♂️ 案情大揭秘:是谁杀死了 Agent 2?
凶手不是别人,正是它的“生父”——Agent 1 的防卡死保护机制(timeout 12)!
让我们来还原一下案发现场。还记得我们在 agent.cpp 里为了防止 vim 卡死,给所有执行的命令套上的“紧箍咒”吗?
代码是这样的:
std::string safe_cmd = std::string("timeout 12 ") + cmd + " 2>&1";
当你输入 nohup ./agent_time >/dev/null 2>&1 & 时,Agent 1 在底层实际交给 Linux 系统执行的命令变成了这样:
Bash
timeout 12 nohup ./agent_time >/dev/null 2>&1 & 2>&1
Linux 系统的执行过程如下:
- 看到最后的
&,系统立刻把前面的命令放入后台执行。于是 Agent 1 瞬间返回(命令执行成功,无输出)。 - 在后台,
timeout 12开始运行,并且它乖乖地启动了nohup ./agent_time ...。 - Agent 2 成功启动! 它连上了服务端,你在控制台上看到了
[+] 新主机上线 -> [2]。 - 滴答、滴答…… 12 秒钟过去了。
timeout进程发现时间到了!它毫不留情地拔出了刀,向它启动的子进程(也就是 Agent 2)发送了SIGTERM终止信号。- Agent 2 惨叫一声,被物理超度。 服务端立刻收到报错,打印出
[-] 主机掉线 -> [2]。
可以说,Agent 2 刚出生,就被它的父亲定下了 12 秒的“死亡倒计时”。
🛠️ 怎么解决这个问题?绕过timeout 12
遇到的问题:
被 vim、top 或者 nano 卡死的绝望时刻。
最经典、最容易让人崩溃的“连环坑”——同步阻塞(Synchronous Blocking)。
欢迎评论区留言,但是作为工具的开发者,靠注入自己工具的漏洞来运行程序终究不太优雅。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:痴卡 chika chika《案情大揭秘:是谁杀死了 Agent 2?》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论