首页 > 其他分享 >域渗透之初识LM&NTLM认证过程

域渗透之初识LM&NTLM认证过程

时间:2024-06-16 17:10:35浏览次数:21  
标签:LM Hash Windows NTLM 认证 密码 初识

目录

前言

LAN Manager 和 NT LAN Manager 认证是Windows系统中的一种挑战-响应身份验证机制。LM认证是早期Windows版本中使用的一种认证协议,而NTLM是LM的改进版本,安全性比LM要高一些。

LM Hash

LM Hash是LM协议认证的凭证,但是LM采用密码散列形式安全性不好。所以从Windows Vista和Windows Server 2008版本开始,Windows系统默认禁用了LM Hash。

LM Hash的产生过程:

假设密码为123456那么它所对应的LM Hash的产生过程如下:

  1. 首先对密码进行大写转换:123456 -> 123456

  2. 转换为16进制字符串:123456 -> 313233343536

  3. 密码不足14字节要求用0补全:313233343536(6bytes)-> 3132333435360000000000000000(14bytes)

  4. 密码分割成两个7个字节长的段:31323334353600 00000000000000

  5. 分别转换成比特串,若长度不足56bits使用0在左边补齐长度:

31323334353600 -> 00110001001100100011001100110100001101010011011000000000
00000000000000 -> 00000000000000000000000000000000000000000000000000000000
  1. 每7bits分为一组,每组末尾加0,再组成一组,转换成16进制:
0011000010011000100011000110011001000010101010001101100000000000 -> 40a0d0862298d000
0000000000000000000000000000000000000000000000000000000000000000 -> 0000000000000000
  1. 分别作为key对 KGS!@#$% 进行DES加密:44efce164ab921ca aad3b435b51404ee

  2. 将两组DES加密后的字符串拼接得到最终的32位的十六进制数字串:44efce164ab921caaad3b435b51404ee

LM加密算法存在的漏洞:

  • LM Hash对密码的长度有限制,只考虑前14个字符,并且会对密码进行大写转换

  • 采用的加密方式是分组的DES加密,所以如果密码强度是小于等于7位,那么加密后的结果的后半部分就会是固定的aad3b435b51404ee

  • 分组加密极大程度降低了密码的复杂度,DES算法强度低

NTLM Hash

为了解决LM协议认证中固有的安全缺陷,Microsoft于1993年在Windows NT 3.1中引入了NTLM协议。

NTLM Hash的产生过程:

假设密码为123456那么它所对应的NTLM Hash的产生过程如下:

  1. 首先对密码进行十六进制转换:123456 -> 313233343536

  2. 转换成Unicode格式(每个字节之后添加0x00):313233343536 -> 310032003300340035003600

  3. 使用MD4摘要算法对Unicode编码数据进行Hash散列,生成32位的十六进制数字串:32ed87bdb5fdc5e9cba88547376818d4

import hashlib
import binascii

# 进行Unicode编码
a = "123456".encode("utf-16le")
# 计算MD4散列值
b = hashlib.new("md4", a)
print(binascii.hexlify(b.digest()))
b'32ed87bdb5fdc5e9cba88547376818d4'

对所获取的Unicode字符串进行标准MD4单向哈希,总会固定产生128bits的哈希值。

可以看到NTLM Hash明显比LM Hash要安全一些,因为无法根据NTLM Hash判断出原始明文密码的密码强度是否小于等于7位。

Windows本地认证

在Windows系统中,登录密码不是直接明文存储,而是会计算成哈希值存储。

本地用户的密码被加密存储在 C:\Windows\System32\config\SAM 文件中。当用户登录Windows时,系统会自动地读取SAM文件中的哈希值与我们输入的密码(哈希运算后的)进行比对,如果相同则认为认证成功。

在Windows内部运行流程大致如下:winlogon.exe -> 接收用户输入 -> lsass.exe -> 认证

LSASS进程

LSASS是用户登录验证、密码更改、安全策略管理和其他安全相关操作的核心组件。当用户尝试登录Windows系统时,LSASS进程负责验证用户的凭据。

image

lsass.exe进程用来处理用户输入的密码,进程将密码计算成NTLM Hash与SAM进行比对,所以lsass.exe会在内存中短暂存储密码信息。

Mimikatz抓取明文密码

mimikatz是一个调试神器,最常用的功能就是抓取明文或Hash。

上面提到lsass.exe在认证的过程中,会在内存中短暂存储密码信息。所以就可以使用Mimikatz来抓取密码信息。然而从Windows 8.1和Windows Server 2012 R2开始,lsass.exe不再默认存储用户的明文密码,而是以加密形式存储。

所以如果尝试使用Mimikatz直接从lsass.exe进程中提取明文密码,密码字段会显示为null。

image

如果仍想使用Mimikatz抓取明文密码,需要修改注册表设置以强制lsass.exe存储明文密码。然后还需要用户重新登录,之后Mimikatz才可能抓取到明文密码。

Mimikatz需要管理员权限:

privilege::debug  提升权限
sekurlsa::logonpasswords  抓取密码

需要修改注册表:

reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f

修改注册表之后,需要用户注销或者重启重新登陆之后才会生效。

还有其他的方式,比如使用procdump把lsass.exe进程的内存dump下来,然后mimikatz进行读取内容。

Windows网络认证

在Windows系统中,网络认证协议主要包括Kerberos和Net NTLM两种。其中Kerberos相对来说会复杂一些,同时也更加安全。

Net NTLM

Net NTLM认证是一种 Challenge/Response 验证机制,由三种消息组成:

  • type 1协商:主要用于确认双方协议版本

  • type 2质询:Challenge/Response 认证机制的核心部分

  • type 3验证:在质询完成后验证结果

认证的主要过程:

  1. 客户端首先发送type1 消息(协商)和服务器之间进行协议版本等信息的协商。

  2. 服务器用type 2消息(质询)进行响应,并生成一个随机的挑战值Challenge发送给客户端。

  3. 客户端用type 3消息(验证)回复质询,使用自己的NTLM Hash对挑战值进行加密,生成响应Response并发送回服务器。

  4. 服务器接收到响应后,使用已存储的用户密码哈希对挑战值进行加密,并与客户端发回的响应值进行比对。如果两者一致则认证成功。

在域环境中,如果客户端尝试使用域账户登录,由于域成员服务器不存储域账户的密码哈希,服务器会将用户名、挑战和响应通过Netlogon协议传递给域控制器,由DC来进行验证。

经过NTLM Hash加密Challenge的结果在网络协议中称为Net NTLM Hash,网络中没有传输与密码本身相关的任何数据。

NTLMv1 & NTLMv2

NTLM存在v1和v2两个版本,主要区别在Challenge和加密算法不同。

  • v1是8位的Challenge,而v2是16位的Challenge

  • v1的主要加密算法是DES,而v2的主要加密算法是HMAC-MD5

  • type3消息Response的构建方式不同

Net NTLM Hash的格式:

v1的格式为:

username::hostname:LM response:NTLM response:challenge

v2的格式为:

username::domain:challenge:HMAC-MD5:blob

如果可以从系统导出来的NTLM Hash,尝试通过Hashcat能够破解出明文密码。

Hash传递攻击

Pass The Hash也叫hash传递攻击,简称PTH。

在域环境中,用户登录计算机时使用的大都是相同的域账号。因此,如果计算机的本地管理员账号和密码也是相同的,攻击者就能使用哈希传递攻击的方法登陆内网中的其他计算机。

这个过程不需要用户明文密码,只需要用户Hash。Hash传递就只是完成一个不需要输入密码的NTLM协议认证流程。

Hash传递攻击利用工具很多,比如mimikatz:

# 本地管理员的执行权限

privilege::debug
sekurlsa::logonpasswords

复制拿到的NTLM Hash的值。

sekurlsa::pth /user:administrator /domain:XIAN.COM /ntlm:496d9d8e5b84059203b50fa8fc...

image

完成之后会弹出cmd.exe

除了比如mimikatz还有其他的方式,比如msf内置的mimikatz获取hash,还有kiwi模块和psexec模块,python第三方库impacket下的secretsdump等。

参考文章:
https://xxe.icu/domain-security.html
https://www.cnblogs.com/chalan630/p/15063693.html
https://www.cnblogs.com/Xy--1/p/13216686.html
https://www.freebuf.com/articles/system/224171.html
https://daiker.gitbook.io/windows-protocol/ntlm-pian/4#id-1.-pass-the-hash
https://www.cnblogs.com/husterlong/p/14271976.html


若有错误,欢迎指正!o( ̄▽ ̄)ブ

标签:LM,Hash,Windows,NTLM,认证,密码,初识
From: https://www.cnblogs.com/smileleooo/p/18147780

相关文章

  • 安装ZLMediaKit流媒体服务器
    1安装ZLMediaKit#更新安装源sudoapt-getupdate#安装编译器sudoapt-getinstallbuild-essential#安装cmakesudoapt-getinstallcmake#安装依赖库(必选)sudoapt-getinstalllibssl-dev#安装依赖库(可选)sudoapt-getinstallffmpegsudoapt-getinstalll......
  • 首个种业大语言模型“丰登”(SeedLLM)
    昨天被首个种业大语言模型“丰登”刷屏,崖州湾实验室、中农、上海AI实验室三家单位共同发布,官方报道侧重各有不同,这里放到一起看看。没测试,不做评价。崖州湾实验室发布4月28日,崖州湾国家实验室精准设计与智造团队,中国农业大学和上海人工智能实验室共同发布了首个种业大语言模型“......
  • 全站首发!2024最新大模型LLM学习路线图来了!
    ChatGPT的出现在全球掀起了AI大模型的浪潮,2023年可以被称为AI元年,AI大模型以一种野蛮的方式,闯入你我的生活之中。从问答对话到辅助编程,从图画解析到自主创作,AI所展现出来的能力,超出了多数人的预料,让不少人惊呼:“未来是属于AI的”。AI大模型——成为互联网从业者必备技能。......
  • 【导航定位】卡尔曼滤波kalman GPS和惯性船舶组合导航(弧长 速度分量 航向 航向变化率
    ✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。......
  • LLM大模型: MOE原理和源码解析
    1、古人云:闻道有先后,术业有专攻!每个人的能力范围是有限的,不可能360行,行行都精通!所以搞研究都会选一个细分领域深耕,争取在这个领域做到世界top级别的泰斗!一个团队,内部也都是在各个领域擅长的人组成,比如前端、ui、后端、算法、运维、运营等,大家互相配合,完成既定目标!本人多年前做......
  • 开源模型应用落地-Qwen2-7B-Instruct与vllm实现推理加速的正确姿势(十)
    一、前言  目前,大语言模型已升级至Qwen2版本。无论是语言模型还是多模态模型,均在大规模多语言和多模态数据上进行预训练,并通过高质量数据进行后期微调以贴近人类偏好。在本篇学习中,将集成vllm实现模型推理加速,现在,我们赶紧跟上技术发展的脚步,去体验一下新版本模型的推理质......
  • 初识C语言难点~~指针变量
    目录前言 一、什么是指针变量二、定义指针变量1、代码12、代码2(通过指针变量取得数据) 三、通过指针变量来交换主函数两个变量1、【正确示例】2、【错误示例】四、总结 前言大家好又见面了!!今天要说的是指针变量。 一、什么是指针变量指针变量是一种特殊的变......
  • 初识C语言~~查找票数最高候选人
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、题目描述二、解题思路三、编写代码总结前言提示:这里可以添加本文要记录的大概内容:大家好又见面喽!!今天是刷题,二话不说开干。提示:以下是本篇文章正文内容,下面案例可供参考一、题目......
  • 在windows笔记本电脑部署GLM4大模型
    (笔记本电脑:intel处理器i9-13900HX、64G内存、NVIDIARTX4080(12G)、操作系统windows11家庭版)一、下载anaconda31.清华镜像源下载anaconda3。下载地址:Indexof/anaconda/archive/|清华大学开源软件镜像站|TsinghuaOpenSourceMirror在网页上找到Anaconda3-2024.02-1-......
  • AI大佬吴恩达+OpenAI团队编写:面向大模型入门者的 LLM CookBook 汉化版
    粉丝们久等了!!!我又来更LLM大模型的必备读物啦!这次给大家推荐的是AI圈无人不知的吴恩达大佬+OpenAI团队一起编写的大模型入门文档,也就是这本:大型语言模型(LLM)的权威文档<面向开发者的LLM入门PDF>在Github上已经高达56.8kstar了,这含金量啧啧啧朋友们如果有需要这份《LLMC......