加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

Windows认证及抓密码总结

发布时间:2019-05-06 10:57:20 所属栏目:Windows 来源:ShadowGlint
导读:副标题#e# 1. windows的认证方式主要有哪些? windows的认证方式主要有NTLM认证、Kerberos认证两种。同时,Windows Access Token记录着某用户的SID、组ID、Session、及权限等信息,也起到了权限认证的作用。 其中,NTLM认证主要有本地认证和网络认证两种方式
副标题[/!--empirenews.page--]

 1. windows的认证方式主要有哪些?

windows的认证方式主要有NTLM认证、Kerberos认证两种。同时,Windows Access Token记录着某用户的SID、组ID、Session、及权限等信息,也起到了权限认证的作用。

其中,NTLM认证主要有本地认证和网络认证两种方式。本地登录时,用户的密码存储在%SystemRoot%system32configsam这个文件里。当用户输入密码进行本地认证的过程中,所有的操作都是在本地进行的。他其实就是将用户输入的密码转换为NTLM Hash,然后与SAM中的NTLM Hash进行比较。而网络认证则是基于一种Challenge/Response认证机制的认证模式。他的认证过程我们下边会详细讲。

Kerberos认证用于域环境中,它是一种基于票据(Ticket)的认证方式。他的整个认证过程涉及到三方:客户端、服务端和KDC(Key Distribution Center)。在Windows域环境中,由DC(域控)来作为KDC。

Access Token(访问令牌)是用来描述进程或线程安全上下文的对象,令牌所包含的信息是与该用户账户相关的进程或线程的身份和权限信息。当用户登陆时,系统生成一个Access Token,然后以该用户身份运行的的所有进程都拥有该令牌的一个拷贝。这也就解释了A用户创建一个进程而B用户没有该进程的权限。

2. NTLM的认证过程是怎样什么?

首先是本地认证,也就是NTLM Hash的生成方式。

当用户注销、重启、锁屏后,操作系统会让winlogon显示登录界面,也就是输入框。当winlogon.exe接收输入后,将密码交给LSASS进程,这个进程中会存一份明文密码,将明文密码加密成NTLM Hash,对SAM数据库比较认证。(winlogon.exe即Windows Logon Process,是Windows NT用户登陆程序,用于管理用户登录和退出。

LSASS用于微软Windows系统的安全机制。它用于本地安全和登陆策略。)

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

  1. 123456 -> hex(16进制编码) = 313233343536 
  2. 313233343536 -> Unicode = 610064006d0069006e00 
  3. 610064006d0069006e00 -> MD4 = 209c6174da490caeb422f3fa5a7ae634 

看明白本地认证的过程后,再说一下网络认证的具体过程。

NTLM协议的认证共需要三个消息完成:协商、挑战、认证。

协商:主要用于确认双方协议版本、加密等级等

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

认证:验证主要是在挑战完成后,验证结果,是认证的最后一步。

详细过程如下:

第一步,输入密码,然后LSASS会把密码的NTLM Hash后的值先存储到本地。

第二步,客户端把用户名的明文发送给服务端

第三步,服务端会生成一个16位的随机数,即challenge,再传回给客户端

第四步,当客户端收到challenge后,用在第一步中存储的NTLM Hash对其加密,然后再将加密后的challenge发送给服务器,也就是response。

第五步,服务端在收到response后,会向DC发送针对客户端的验证请求。该请求主要包含以下三方面的内容:客户端用户名、客户端NTLM Hash加密的Challenge、原始的Challenge。

第六步,当DC接到过来的这三个值的以后,会根据用户名到DC的账号数据库(ntds.dit)里面找到该用户名对应的NTLM Hash,然后把这个hash拿出来和传过来的challenge值进行比较,相同则认证成功,反之,则失败。

上边说的是NTLM v1认证方式,NTLM v2和v1最显著的区别就是Challenge与加密算法不同,共同点就是加密的key都是NTLM Hash。NTLM v1的Challenge有8位,NTLM v2的Challenge为16位。NTLM v1的主要加密算法是DES,NTLM v2的主要加密算法是HMAC-MD5。

3. 针对NTLM的姿势主要有哪些?

当我们通过dump hash拿到了NTLM Hash后,我通常首先尝试能不能直接在线破解。常用的破解网站:

https://www.objectif-securite.ch/en/ophcrack.php/

http://www.cmd5.com/

https://www.somd5.com/

如果不能破解,那可以尝试Pass The Hash(hash传递)。

哈希传递就是使用用户名对应的NTLM Hash将服务器给出的Chanllenge加密,生成一个Response,来完成认证。Pass The Hash能够完成一个不需要输入密码的NTLM协议认证流程,所以不算是一个漏洞,算是一个技巧。

常用的pth的工具主要有:mimikatz(首选)、wmiexec/psexec、exploit/windows/smb/psexec_psh、powershell invoke系列小脚本。

当然,pth也是有利用条件的。如果目标机器安装了KB2871997,那我们就不能pth了。那我们还有另一个姿势:Pass The Key。对于8.1/2012r2,安装补丁kb2871997的Win 7/2008r2/8/2012,可以使用AES keys代替NTLM Hash。在mimikatz抓hash时,可以一并抓到。其实,mimikatz中的pth本身就是ptk了。

命令:

  1. mimikatz “privilege::debug” “sekurlsa::pth /user:a /domain:test.local /aes256:f74b379b5b422819db694aaf78f49177ed21c98ddad6b0e246a7e17df6d19d5c” 

除这些外,还有很多其他姿势,比如打了补丁有administrator帐号扔可pth、当开启Restricted Admin Mode后,win8.1和server12 R2默认支持pth、启用WDigest劫持winlogon仙人跳等。

4. Kerberos认证中主要有哪些知识点需要注意?

首先解释一些名词:

基本概念:

KDC: Key Distribution Center,密钥分发中心,负责管理票据、认证票据、分发票据,但是KDC不是一个独立的服务,它由AS和TGS组成。

AS: Authentication Service,验证服务,为client生成TGT的服务

TGS: Ticket Granting Service,票据授予服务,为client生成某个服务的ticket

TGT: Ticket Granting Ticket,入场券,通过入场券能够获得票据,是一种临时凭证的存在。

Ticket:票据,是网络中各对象之间互相访问的凭证

AD: Account Database,存储所有client的白名单,只有存在于白名单的client才能顺利申请到TGT。

DC: Domain Controller,域控

KRBTGT: 每个域控制器都有一个krbtgt账户,是KDC的服务账户,用来创建TGS加密的密钥。

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读