NTLM哈希深度解析:从原理到安全实践

NTLM哈希深度解析:从原理到安全实践

作为一名白帽子黑客,深入理解NTLM哈希机制对保障企业网络安全至关重要。

1. NTLM哈希概述

NTLM(New Technology LAN Manager)是微软推出的一套身份验证协议套件,用于在Windows网络中验证用户身份并保护通信安全。它通过客户端-服务器之间的“挑战/响应”机制工作,避免了明文密码在网络中的传输。

在Windows系统中,用户的明文密码不会直接存储,而是会保存其密码哈希值。本地用户的密码哈希存储在SAM(Security Account Manager)数据库中,而域内用户的密码哈希则保存在域控的NTDS.dit文件中。

2. LM Hash与NTLM Hash

2.1 LM Hash(LAN Manager Hash)

LM Hash是Windows早期采用的加密算法,由IBM设计,存在明显安全缺陷。

LM Hash计算过程

  1. 将用户密码转换为大写,并转换为16进制字符串
  2. 不足14字节时使用0在后方补全
  3. 将16进制字符串分成两个7byte部分
  4. 每部分转换为56bit的比特流(不足左边补0)
  5. 每7bit为一组,每组末尾加0,重新组合
  6. 分别用固定字符串"KGS!@#$%"作为Key进行DES加密
  7. 将加密后的两组结果拼接,得到最终的LM Hash值

LM Hash的安全缺陷

  • 密码长度限制为14字符,强度不足7字符时,第二个分组加密结果固定为aad3b435b51404ee
  • 不区分大小写,降低了密码空间
  • 使用硬编码密钥和弱加密算法(DES)
  • 可逆性较高,易于破解

2.2 NTLM Hash

为解决LM Hash的安全问题,微软在Windows NT 3.1中引入了NTLM协议。

NTLM Hash计算过程

  1. 将用户明文密码转换为十六进制格式
  2. 对十六进制格式的密码进行Unicode编码(在每个字节后添加0x00)
  3. 使用MD4摘要算法对Unicode编码数据进行Hash计算

NTLM Hash生成示例:

明文密码:12345
转换成16进制:313233343536
转换成unicode:310032003300340035003600
md4加密: 32ed87bdb5fdc5e9cba88547376818d4

NTLM Hash基于MD4算法,不可逆,相比LM Hash安全性显著提高。从Windows Vista和Server 2003开始,微软已默认禁用LM Hash。

3. NTLM认证流程

NTLM认证采用质询/响应(Challenge/Response) 机制,分为本地认证和网络认证两种场景。

3.1 本地认证

用户登录系统时:

  1. Windows调用winlogon.exe接收输入密码
  2. 密码交给lsass.exe进程,该进程在内存中存储一份明文密码
  3. 将明文密码加密为NTLM Hash
  4. SAM文件中的NTLM Hash比对
  5. 匹配则通过认证

3.2 网络认证

网络认证涉及三个消息交换:Type1(协商)、Type2(质询)和Type3(身份验证)。

  1. Type1(协商):客户端向服务器发送Type1消息,包含认证主体、用户、机器及所需安全服务等信息。
  2. Type2(质询):服务器生成16位随机Challenge,本地存储后发送给客户端。
  3. Type3(响应):客户端使用用户NTLM Hash加密Challenge,得到Net-NTLM Hash,封装到Type3消息发送给服务器。
  4. 验证:服务器使用存储的NTLM Hash同样加密Challenge,比较自己计算的结果与客户端发送的是否匹配。

此过程中,Net-NTLM Hash不同于NTLM Hash,它是由原始NTLM Hash与服务器Challenge计算得到的,不能直接用于哈希传递攻击(PTH),但可通过暴力破解获取明文密码。

4. NTLM哈希的安全威胁

NTLM协议存在多种安全威胁,白帽子黑客需要了解这些攻击手法以更好地防御它们。

4.1 哈希传递攻击(Pass-the-Hash, PTH)

PTH攻击利用NTLM认证的缺陷,使攻击者能够使用用户的密码哈希值进行NTLM认证,而无需明文密码。

利用条件

  • 获取了目标用户的NTLM Hash
  • 目标主机开放SMB等服务
  • 目标系统上存在相同的用户账户(在域环境中,域用户哈希相同,成功率更高)

利用工具

  • Mimikatz:最常用的PTH工具
    privilege::debug
    sekurlsa::pth /user:administrator /domain:tisheng.test /ntlm:3ec403e7aee6461f12e8f7b644410605
    
  • 成功后会弹出新窗口,可访问远程主机资源

4.2 Net-NTLM Relay攻击

Net-NTLM Relay是一种中间人攻击,将捕获的Net-NTLM Hash重放到其他服务,模拟合法用户执行恶意操作。

攻击原理

  1. 攻击者截取Net-NTLM Hash(Response消息)
  2. 将Hash重放到其他使用NTLM认证的应用(如SMB、HTTP、LDAP)
  3. 绕过认证签名校验,利用未启用签名的协议

Relay攻击类型

  • Relay2SMB:重放到SMB服务器,直接控制目标服务器
  • Relay2HTTP:重放到Exchange服务器,收发邮件等
  • Relay2LDAP:在域环境中最有效,可提升权限、设置委派等

利用工具

  • impacket-smbrelayx.py
    python3 smbrelayx.py -h 10.10.1.230 -c whoami
    
  • impacket-ntlmrelayx.py
    python3 ntlmrelayx.py -t smb://10.10.1.230 -c whoami -smb2support
    

4.3 NTLM哈希窃取技术

攻击者通过多种手段诱使系统泄露NTLM哈希值:

  1. LLMNR/NBNS毒化:利用名称解析协议,当DNS解析失败时,Windows会使用LLMNR/NBNS协议,攻击者可响应这些请求并要求认证。
  2. 恶意文件诱骗
    • desktop.ini:修改文件夹图标属性指向恶意UNC路径
    • scf文件:利用IconFile属性支持UNC路径的特性
    • 恶意快捷方式:创建指向远程SMB服务器的快捷方式
  3. 浏览器触发:页面中包含UNC路径时,浏览器会尝试请求并触发NTLM认证
  4. COM对象滥用:通过VBScript/PowerShell实例化Shell.ApplicationMSXML2.XMLHTTP等COM对象,向攻击者控制的UNC路径发起请求

近期漏洞利用

  • CVE-2025-24054:攻击者通过钓鱼邮件发送包含恶意.library-ms文件的ZIP压缩包,用户解压后Windows Explorer会自动与恶意文件交互,触发漏洞连接攻击者控制的SMB服务器并泄露NTLM哈希。尽管微软已发布补丁,但研究人员发现修复并不完整,仍存在绕过风险。

5. 防御措施与最佳实践

作为白帽子黑客,了解攻击手段后更需要掌握如何有效防御。

5.1 基础防护措施

  1. 及时安装安全更新:立即安装2025年3月的Windows安全更新,修复CVE-2025-24054等漏洞。
  2. 禁用不必要的NTLM认证:在网络环境中优先使用更安全的Kerberos认证。
  3. 启用SMB签名:要求所有SMB通信必须签名,防止Relay攻击。
  4. 强化密码策略:使用复杂且长度超过14字符的密码,避免LM Hash生成。

5.2 高级防护策略

  1. 审计自启动路径:定期检查Startup文件夹及Run注册表,防止恶意脚本自启动。
  2. 限制COM组件滥用:通过组策略白名单管理Shell.ApplicationMSXML2.XMLHTTP等危险COM对象。
  3. 控制UNC访问:隔离或认证外部网络共享访问。
  4. 部署多因素认证:增加认证层次,即使哈希泄露也能提供保护。
  5. 启用LAPS(本地管理员密码解决方案):确保每台机器的本地管理员密码不同,有效防御PTH横向移动。
  6. 网络流量监控:部署IDS/IPS规则(如Snort 64742/64743)拦截异常NTLM认证流量。

5.3 深度防御实践

  1. 限制域管理员权限:避免域管理员账户登录普通主机,减少凭证泄露风险。
  2. 实施网络分段:将网络划分为多个安全区域,限制横向移动范围。
  3. 定期进行安全评估:使用Mimikatz、Responder等工具模拟攻击,发现环境中的脆弱点。
  4. 监控异常身份验证尝试:实施高级安全监控,及时发现和响应可疑活动。

6. 结语

NTLM协议由于其设计缺陷和历史遗留问题,仍然是Windows环境中重要的安全攻击面。作为一名白帽子黑客,深入理解NTLM哈希的工作原理和相关攻击技术,有助于更好地评估和防御企业网络的安全风险。

尽管微软正在逐步推广更安全的Kerberos认证协议,但在混合环境或工作组模式下,NTLM仍将继续存在相当长的时间。防御纵深策略持续安全测试是应对这些威胁的关键,即使是对已宣称修复的漏洞也应保持警惕。

希望通过这篇技术文章,您能更全面地理解NTLM哈希的安全机制和威胁,为构建更安全的网络环境贡献力量。


本文仅用于安全研究和教育目的,请合法合规地使用这些技术知识。未经授权的网络攻击、数据窃取等行为均属违法,需承担法律责任。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/97031.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/97031.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4-3.Python 数据容器 - 集合 set(集合 set 概述、集合的定义、集合的遍历、集合的常用方法)

集合 set 概述集合用于存储一系列元素集合存储的元素是无序的,不支持索引集合存储的元素是不可以重复的集合存储的元素可以是不同类型的,例如、数字、字符串、甚至是其他集合集合是可变的,在程序运行时可以添加、删除其中的元素一、集合的定义…

验证码请求与缓存问题解决方案

验证码请求与缓存问题解决方案 1.问题描述 请求验证码图片未变化,且未监听到新请求的问题。 2.问题分析 这个问题的根本原因通常是浏览器缓存机制导致的 - 浏览器会缓存相同URL的图片,导致第二次请求时直接从缓存读取而不发送新请求。 3.解决方案思路 在…

安卓接入通义千问AI的实现记录

官网&#xff1a;https://help.aliyun.com/zh/model-studio/use-qwen-by-calling-api#b1320a1664b9a 创建网络请求 创建一个BaseNetworkApi基类用于实现各种拦截器等。 abstract class BaseNetworkApi {fun <T> getApi(serviceClass: Class<T>, baseUrl: String…

Linux 命令浏览文件内容

Linux 命令浏览文件内容 1. cat 查看文件的所有内容1.1 -n 显示行号1.2 -b 显示没有空行的行号2. head 前10行标准输出2.1 -c 输出每行第一个字符2.2 -n 指定行数3. tail 显示文件的最后 10 行数据3.1 -c 显示指定字符3.2 -n 指定行数3.3 显示追加内容4. more 分页显示文件内容…

UVa11607 Cutting Cakes

UVa11607 Cutting Cakes题目链接题意分析AC 代码题目链接 UVa11607 Cutting Cakes 题意 平面上有n&#xff08;n≤1 500&#xff09;个点&#xff0c;其中没有3 点共线。另外有m&#xff08;m≤700 000&#xff09;条直线&#xff0c;你的任务是对于每条直线&#xff0c;输出3…

[e3nn] 等变神经网络 | 线性层o3.Linear | 非线性nn.Gate

第4章&#xff1a;等变神经网络模块 欢迎回来&#xff5e; 在我们探索e3nn的旅程中&#xff0c;我们已经揭示了一些基本概念&#xff1a; 在第1章&#xff1a;不可约表示&#xff08;Irreps&#xff09;中&#xff0c;我们学习了Irreps作为等变数据的标签&#xff0c;告诉我们数…

共享云服务器替代传统电脑做三维设计会卡顿吗

与传统本地工作站相比&#xff0c;云服务器在硬件配置、协作效率和成本控制方面具有明显优势&#xff0c;但设计师们比较关心的主要问题始终是&#xff1a;使用共享云服务器进行三维设计会出现卡顿吗&#xff1f;这取决于硬件配置、网络环境、软件优化及使用场景等多方面因素。…

Autosar之CRC模块概述

简介 CRCL模块提供如下的算法&#xff0c;用于对输入数据进行循环冗余校验&#xff0c;用于核对数据传输过程中是否被更改或者传输错误&#xff1a; CRC8: SAEJ1850 CRC8H2F: CRC8 0x2F polynomial CRC16: CCITT-FALSE CRC32: 0xF4ACFB13 CRC32P4: CRC32 0x1F4ACFB13 polynomia…

隐私计算框架PrivacyMagic(密算魔方)

隐私计算框架PrivacyMagic&#xff08;密算魔方&#xff09; 动机&#xff1a;写论文时为了实现方案需要调用各种密码学库&#xff0c;写起来有些混乱&#xff0c;失去了代码结构的美感。最可气的是现有的密码学方案基本上是个写个的&#xff0c;接口、类型并不通用&#xff0…

Linux--->网络编程(TCP并发服务器构建:[ 多进程、多线程、select ])

TCP并发服务器构建一、服务器单循环服务器&#xff1a;服务端同一时刻只能处理一个客户端的任务&#xff08;TCP&#xff09;并发服务器&#xff1a;服务端同一时刻可以处理多个客户端的任务&#xff08;UDP&#xff09;二、TCP服务端并发模型1、多进程进程资源开销大&#xff…

深入解析达梦数据库:模式分类、状态管理与实操指南

达梦数据库&#xff08;DM Database&#xff09;作为国产数据库的核心代表&#xff0c;其模式与状态机制是保障数据高可用、实现主备同步的关键基础。无论是日常运维中的数据库配置&#xff0c;还是故障场景下的主备切换&#xff0c;都需要深入理解模式与状态的特性及交互逻辑。…

如何选择适合自己的PHP微服务框架?

在开始选择之前&#xff0c;我们首先要明白&#xff1a;为什么需要微服务框架&#xff1f;传统的单体应用&#xff08;Monolithic Application&#xff09;虽然开发简单&#xff0c;但随着业务复杂度的增加&#xff0c;会变得臃肿且难以维护。而微服务架构通过将应用拆分为一组…

ESP32使用场景及大规模物联网IoT

最近用ESP32搭建了一个网络,想知道搭建的网络拓扑对不对。一、物联网无线通信v.s通讯网络无线通信我第一个好奇的问题就是&#xff0c;物联网用ESP32的话&#xff0c;路由器用什么&#xff1f;物联网也可以组WLAN&#xff0c;通讯网也可以组WLAN。把自己的Tenda AC1200路由器拆…

NSSCTF 4th WP

第一次打比赛AK了&#xff0c;虽然题比较简单没啥好说的&#xff0c;但还是想记录一下 WEB ez_signin 源码&#xff1a; from flask import Flask, request, render_template, jsonify from pymongo import MongoClient import reapp Flask(__name__)client MongoClient…

Paimon——官网阅读:主键表

主键表(Table with PK)PK 是 Primary Key&#xff08;主键&#xff09;的缩写。在数据库中&#xff0c;主键是一个或多个列的组合&#xff0c;其值在表中是唯一的&#xff0c;并且不能为 NULL。主键的作用是确保每一行记录的唯一性&#xff0c;便于数据的查找、管理和维护&…

【配置 PyCharm 连接远程服务器进行开发和调试的完整流程】

前提条件&#xff1a; 1.PyCharm Professional&#xff08;社区版不支持远程解释器&#xff09; 2.代码在本地目录里面&#xff0c;可以同步上传远程服务器 3.宿主机上安装了conda 环境 操作方法&#xff1a; 1、在本地使用PyCharm打开工程代码&#xff1b; 2、然后Add New_in…

在压力测试中如何确定合适的并发用户数?

确定压力测试中的合适并发用户数 在进行压力测试时&#xff0c;确定合适的并发用户数是评估系统性能的关键步骤。并发用户数是指同时向系统发送请求的用户数量&#xff0c;它直接影响系统的负载水平和性能表现。以下是几种常用的方法和考虑因素&#xff0c;用于确定合适的并发…

微算法科技(NASDAQ:MLGO)突破性FPGA仿真算法技术助力Grover搜索,显著提升量子计算仿真效率

在量子计算迅猛发展的今天&#xff0c;量子算法尤其是在搜索和加密领域的应用&#xff0c;正逐步揭开了其颠覆性潜力。然而&#xff0c;量子计算机的实际实现仍是一项复杂且充满挑战的任务&#xff0c;因此&#xff0c;如何在经典计算平台上高效建模和仿真量子算法成为了当前的…

TencentOS Server 4.4 下创建mysql容器无法正常运行的问题

环境 腾讯的 TencentOS Server 4.4 服务器系统 Linux app 6.6.92-34.1.tl4.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jun 25 14:33:47 CST 2025 x86_64 x86_64 x86_64 GNU/Linux docker使用的是yum安装的版本 [rootapp ~]# docker version Client:Version: 28.0.1-202…

稀土:从“稀有”到“命脉”的科技核心

稀土&#xff0c;这个听起来有些陌生的词汇&#xff0c;其实早已悄然渗透进我们生活的方方面面。它并非真的“稀有”&#xff0c;而是指17种金属元素的统称&#xff0c;包括镧、铈、钕、铕等。这些元素在地壳中并不稀少&#xff0c;但因其独特的物理和化学性质&#xff0c;使其…