windows之NTLM认证

  • A+
所属分类:安全文章

NTLM认证主要有本地认证和网络认证两种方式

本地登陆时用户密码存储在SAM文件中,可以把它当作一个存储密码的数据库,所有的操作都在本地进行的。它将用户输入的密码转换为NTLM Hash,然后与SAM中的NTLM Hash进行比较。
网络认证则是基于一种Challenge/Response认证机制的认证模式。

windows本地认证基础知识

在本地登陆的情况下,操作系统会使用用户输入的密码作为凭据去与系统中的密码进行校验,如果成功的话表明验证通过。操作系统的密码存储在C盘的目录下:%SystemRoot%system32configsam

windows之NTLM认证

SAM用于储存本地所有用户的凭证信息,但是这并不代表着你可以随意去查看系统密码。我们登陆系统的时候系统会自动读取SAM文件中的密码与我们输入的密码进行比对,如果认证相同则可以使用该机器。
windows自身是不会保存明文密码的,也就是说SAM中保存的不是明文而是Hash。

NTLM的认证过程

NTLM Hash是怎么样生成的呢?当用户注销、重启、锁屏后,操作系统会让winlogon显示登陆界面,当winlogon.exe接收到账号密码输入之后,会将密码交给lsass进程,这个进程会存一份明文密码,将明文密码加密成NTLM Hash,对SAM数据库比较认证。(winlogon.exe即Windows Logon Process,是Windows NT用户登陆程序,用于管理用户登录和退出。LSASS用于微软Windows系统的安全机制。它用于本地安全和登陆策略。)

比如当用户输入密码admin的时候,操作系统会将admin转换为16进制,经过Unicode转换后,再调用MD4加密算法加密,这个加密结果的十六进制就是NTLM Hash

admin -> hex(16进制编码) = 61646d696e
61646d696e -> Unicode = 610064006d0069006e00
610064006d0069006e00 -> MD4 = 209c6174da490caeb422f3fa5a7ae634

本地认证的流程
winlogon.exe -> 接收用户输入 -> lsass.exe -> (认证)
Windows Logon Process(即 winlogon.exe),是Windows NT 用户登 陆程序,用于管理用户登录和退出。
LSASS用于微软Windows系统的安全机 制。它用于本地安全和登陆策略。

windows之NTLM认证

windows网络认证
在工作组中,无论是局域网中的一台机器还是很多机器,它们能够通信的话都无法相互建立一个完美的信任机制。只要有一个可以信任的信托机构,对两方进行认证,这样就有第三方来证实双方的可信任性。

在了解认证之前先了解一些SMB协议:

SMB(ServerMessage Block)通信协议是微软(Microsoft)和英特尔(Intel)在1987年制定的协议,主要是作为Microsoft网络的通讯协议。SMB 是在会话层(session layer)和表示层(presentation layer)以及小部分应用层(application layer)的协议。SMB使用了NetBIOS的应用程序接口 (Application Program Interface,简称API),一般端口使用为139,445。另外,它是一个开放性的协议,允许了协议扩展——使得它变得更大而且复杂;大约有65个最上层的作业,而每个作业都超过120个函数,甚至Windows NT也没有全部支持到,最近微软又把 SMB 改名为 CIFS(CommonInternet File System),并且加入了许多新的特色。

早期SMB协议在网络上传输的是明文口令。后来出现LAN Manager ChallengeReponse 验证机制,简称LM。
微软提出了windowsNT挑战/响应验证机制,简称MTLM。现在已经更新到了V2版本以及加入了Kerberos验证体系

NTLM 协议
NTLM是一种网络认证协议,它是基于挑战(Chalenge)/响应(Response)认证机制的一种认证模式。(这个协议只支持Windows)
NTLM协议的认证共需要三个消息完成:协商 --> 挑战 --> 认证。

协商:主要用于确认双方协议版本、加密等级等
挑战:服务器在收到客户端的协商消息之后, 会读取其中的内容,并从中选择出自己所能接受的服务内容,加密等级,安全服务等等。并生成一个随机数challenge, 然后生成challenge消息返回给客户端。该消息就是挑战/响应认证机制的主要功能体现。
认证:验证主要是在挑战完成后,验证结果,是认证的最后一步。

质询的完整过程:

1.客户端向服务器端发送用户信息(用户名)请求
2.服务器接受到请求,生成一个16位的随机数,被称之为“Challenge”, 使用登录用户名对应的NTLM Hash加密Challenge(16位随机字符), 生成Challenge1。同时,生成Challenge1后,将Challenge(16位随机 字符)发送给客户端。
3.客户端接受到Challenge后,使用将要登录到账户对应的NTLM Hash加密Challenge生成Response,然后将Response发送至服务器端。

其中,经过NTLM Hash加密Challenge的结果在网络协议中称之为Net NTLM Hash。
验证:服务器端收到客户端的Response后,比对Chanllenge1与Response是否相等,若相等,则认证通过。

详细过程:
1.Server接收到Client发送的用户名后,判断本地账户列 表是否有用户名share_user
如果没有,返回认证失败
如果有,生成Chanllenge,并且从本地查找share_user对 应的NTLM Hash,使用NTLM Hash加密Chanllenge,生成一 个Net-NTLM Hash存在内存中,并将Chanllenge发送给Client。

2.Client接收到Chanllenge后,将自己提供的share_user的密码转换为NTLM Hash,使用NTLM Hash加密Chanllenge, 这个结果叫Response,表现形式是Net-NTLM Hash,最后将Response发送给Server。

3.Server接收到Client发送的Response,将Response与之 前的Net-NTLM Hash进行比较,如果相等,则认证通过。

注意:
1.Chanllenge是Server产生的一个16字节的随机数,每次认证都不同
2.Response的表现形式是Net-NTLM Hash,它是由客户端 提供的密码Hash加密Server返回的Chanllenge产生的结果。

windows之NTLM认证

NTLM 协议 V1 与 V2的区别

NTLM v1与NTLM v2最显著的区别就是Challenge与加密算法不同,共同点就是加密的原料都是NTLM Hash。
Challage:NTLM v1的Challenge有8位,NTLM v2的Challenge为16位。
Net-NTLM Hash:NTLM v1的主要加密算法是DES,NTLM v2的主要加密算法是HMAC-MD5。

内网渗透常用端口

53
DNS服务,在使用中需要用到TCP/UDP 53端口,AD域的核心就是DNS服务器,AD通过DNS服务器定位资源
88
Kerberos服务,在使用中需要用到TCP/UDP 88端口,Kerberos密钥分发中心(KDC) 在该端口上侦听Ticket请求
135
135端口主要用于使用RPC协议并提供DCOM服务。
137
NetBIOS-NS(名称服务),在使用中需要用到TCP/UDP 137端口
139
Session Server(会话服务),在使用中需要用到TCP/UDP 139端口,允许两台计算机建立连接
389
LDAP服务(轻量级目录访问协议),在使用中需要用到TCP/UDP 389端口,如果需要使用SSL,需要使用636端口,
445
主要用于共享文件夹或共享打印,存在较多漏洞,如MS08-067、MS17-010
3268 Global Catalog(全局编录服务器),如果需要使用SSL,需要用到3269端口,主要用于用户登录时,负责验证用户身份的域控制器需要通过防火
墙,来向“全局编录”查询用户所隶属的通用组


发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: