WINDOWS认证机制之NTLM

VSole2021-11-18 08:22:53

    域渗透就是基于windows域环境的渗透,而域渗透涉及到的技术,如哈希传递(PTH)票据传递(PTT)委派攻击等,都是基于域环境下的认证机制来实现的,这也是为什么要了解Windows认证机制的原因之一

    Windows的认证包括三个部分,用户直接操作计算机登陆账户(本地认证),远程连接到工作组中的某个设备(网络认证),登陆到域环境中的某个设备(域认证)

本地认证 NTLM

    本地认证十分简单:用户输入密码,系统收到密码后将用户输入的密码计算成NTLM Hash,然后与sam数据库(%SystemRoot%\system32\config\sam)中该用户的哈希比对,匹配则登陆成功,不匹配则登陆失败

    NTLM哈希是一种单向哈希算法,Windows将用户的密码计算成NTLM哈希之后才存储在电脑中

大致的运算流程为:

用户密码->HEX编码->Unicode编码->MD4

    本地认证中用来处理用户输入密码的进程即lsass.exe,密码会在这个进程中明文保存,供该进程将密码计算成NTLM Hash与sam进行比对

    在渗透测试中,通常可从Windows系统中的SAM文件和域控的NTDS.dit文件中获得所有用户的hash,通过Mimikatz读取lsass.exe进程能获得已登录用户的NTLM hash

网络认证 Net NTLM

    网络认证即在工作组环境下远程登陆另一台电脑所采用的认证机制

   Net NTLM的认证过程分为三步,也叫挑战响应机制:

  1. 协商
  2. 质询
  3. 验证

    协商:双方确定使用的协议版本,在NTLM认证中,NTLM响应分为NTLM v1,NTLMv2,NTLM session v2三种协议,不同协议使用不同格式的Challenge和加密算法

    所以也就存在不同协议的Net-NTLM hash,即Net-NTLM v1 hash,Net-NTLM v2 hash

    质询:挑战(Chalenge)/响应(Response)认证机制的核心

    1.客户端向服务器端发送用户信息(用户名)请求

   2.服务器接受到请求后,判断本地用户列表是否存在客户端发送的用户名,如果没有返回认证失败,如果有,生成一个16位的随机数,被称之为“Challenge”, 然后使用登录用户名对应的NTLM Hash加密Challenge(16位随机字符), 生成Challenge1保存在内存中。同时,生成Challenge1后,将Challenge(16位随机字符)发送给客户端。

   3.客户端接受到Challenge后,使用自己提供的账户的密码转换成对应的NTLM Hash,然后使用这个NTLM Hash加密Challenge生成Response,然后将Response发送至服务器端。

验证:在质询完成后,验证结果,是认证的最后一步。

    服务端收到客户端发送的Response后,与之前保存在内存中的Challenge比较,如果相等认证通过

    其中,经过NTLM Hash加密Challenge的结果在网络协议中称之为Net NTLM Hash(不能直接用来进行哈希传递攻击,但可以通过暴力破解来获取明文密码)

实际测试

  • 远程机器:192.168.217.129
  • 用户名:administrator
  • 密码:hongrisec@2020
  • 本地:192.168.217.1
> net use \\192.168.217.129 /u:administrator hongrisec@2020The command completed successfully.

    抓包发现前4个包是协商协议版本,从smb转为smbv2

    

    本地发送质询包,远程机器响应携带Ntlm Server Challenge为

8f69a97378430a53

    查看本地发送的第二个质询包,加密后的challenge为

0822a40326fd8eab

    Response数据为

fafc5895fbeff4fb303acf5c74b1424d01010000000000006727da877d95d6010822a40326fd8eab000000000200060047004f00440001000800530054005500310004000e0067006f0064002e006f00720067000300180073007400750031002e0067006f0064002e006f007200670005000e0067006f0064002e006f0072006700070008006727da877d95d60106000400020000000800300030000000000000000100000000200000bebc059df5e1e64f315030ef88a55e04436ab8b916550a10918f2f854dc9144b0a001000000000000000000000000000000000000900280063006900660073002f003100390032002e003100360038002e003200310037002e003100320039000000000000000000

 下面,使用Hashcat对该Net-NTLM hash进行破解

   NTLMv2的格式为:

username::domain:challenge:HMAC-MD5:blob注:challenge为NTLM Server Challenge,domian由数据包内容获得(IP或者机器名)HMAC-MD5对应数据包中的NTProofStr

    构造的数据如下:

administrator::god.org:8f69a97378430a53:fafc5895fbeff4fb303acf5c74b1424d:01010000000000006727da877d95d6010822a40326fd8eab000000000200060047004f00440001000800530054005500310004000e0067006f0064002e006f00720067000300180073007400750031002e0067006f0064002e006f007200670005000e0067006f0064002e006f0072006700070008006727da877d95d60106000400020000000800300030000000000000000100000000200000bebc059df5e1e64f315030ef88a55e04436ab8b916550a10918f2f854dc9144b0a001000000000000000000000000000000000000900280063006900660073002f003100390032002e003100360038002e003200310037002e003100320039000000000000000000

    新建字典添加hongrisec@2020

   Hashcat参数如下:

hashcat -m 5600 administrator::god.org:8f69a97378430a53:fafc5895fbeff4fb303acf5c74b1424d:01010000000000006727da877d95d6010822a40326fd8eab000000000200060047004f00440001000800530054005500310004000e0067006f0064002e006f00720067000300180073007400750031002e0067006f0064002e006f007200670005000e0067006f0064002e006f0072006700070008006727da877d95d60106000400020000000800300030000000000000000100000000200000bebc059df5e1e64f315030ef88a55e04436ab8b916550a10918f2f854dc9144b0a001000000000000000000000000000000000000900280063006900660073002f003100390032002e003100360038002e003200310037002e003100320039000000000000000000 password.list -o result.txt --force

    说明:

    -m:hash-type,5600对应NetNTLMv2,详细参数可查表:https://hashcat.net/wiki/doku.php?

    -o:输出文件 字典文件为password.list

    –force代表强制执行,测试系统不支持Intel OpenCL

    成功破解出登录的明文密码,输出如下图

    成功破解出密码hongrisec@2020

    工作组环境和域环境下Net NTLM认证过程因为有DC(域控制器)的参与流程略有差异,不过不影响进行哈希传递攻击

hashresponse
本作品采用《CC 协议》,转载必须注明作者和本文链接
浅谈net-ntlm的利用
2022-12-16 10:38:09
浅谈net-ntlm的利用。
内网渗透hash窃取技巧
2021-11-28 06:53:23
在内网渗透的过程中,最重要的就是信息搜集,但是在极端情况下我们找不到能够横或者跨域的机器,那么这时候我们就可以尝试做一个水坑,来尝试获取hash。当然这只是理想情况,在愈发强调对抗的当下,利用水坑钓鱼也变得不是那么简单。
前言在内网渗透的过程中,最重要的就是信息搜集,但是在极端情况下我们找不到能够横或者跨域的机器,那么这时候我们
NTLM是一种网络认证协议,与NTLM Hash的关系就是:NTLM网络认证协议是以NTLM Hash作为根本凭证进行认证的协议。其中也提到了NTLM协议是一种不安全的认证模式。同时将之前生成的随机数Challenge等信息发送给客户端。客户端接受到Challenge后,使用将要登录到账户对应的NTLM Hash加密Challenge生成Response,然后将Response等信息发送至服务器端。
Pass The Hash 即哈希传递攻击,简称 PTH
WINDOWS认证机制 阅读本文前需要补充的知识:域的基本概念,域环境与工作组环境的区别 何谓域渗透,域渗透就是基于windows域环境的渗透,而域渗透设计到的技术,如哈希传递(PTH)票据传递(PTT)委派攻击等,都是基于域环境下的认证机制来实现的,这也是为什么要了解Windows认证机制的原因之一 Windows的认证包括三个部分,用户直接操作计算机登陆账户(本地认证),远程连接到工作组
域渗透就是基于windows域环境的渗透,而域渗透涉及到的技术,如哈希传递(PTH)票据传递(PTT)委派攻击等,都是基于域环境下的认证机制来实现的,这也是为什么要了解Windows认证机制的原因之一Windows的认证包括三个部分,用户直接操作计算机登陆账户(本地认证),远程连接到工作组中的某个设备(网络认证),登陆到域环境中的某个设备(域认证)
WINDOWS认证机制之NTLM
2021-11-18 08:22:53
Windows的认证包括三个部分,用户直接操作计算机登陆账户,远程连接到工作组中的某个设备,登陆到域环境中的某个设备(域认证)本地认证 NTLM
VSole
网络安全专家