0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

jf_hKIAo4na 来源:ShadowGlint 作者:ShadowGlint 2022-11-12 09:32 次阅读

前言

两年前学域渗透的时候,在京东小课堂做的一期小总结,最近重新看域渗透,于是翻出来cp到blog。

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

123456 -> hex(16进制编码) = 313233343536
313233343536 -> Unicode = 610064006d0069006e00
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系列小脚本、impacket/psexec.py。

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

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加密的密钥。

Kerberos提供了一个集中式的认证方式,在整个认证过程中总共要涉及到三方:客户端,服务端和KDC, 在Windows域环境中,KDC的角色由DC来担任,Kerberos是一种基于票据的认证方式,票据(Ticket)是用来安全的在认证服务器和用户请求的服务之间传递用户的身份,同时也会传递一些附加信息,用来保证使用Ticket的用户必须是Ticket中指定的用户,Ticket一旦生成,在生存时间内可以被Client多次使用来申请同一个Server的服务。这里就存在一个票据窃取问题。

说下kerberos的大致工作流程,域中的客户端要想访问同域中的某个服务器资源时,需要首先购买该服务端认可的票据(Ticket),也就是说,客户端在访问服务器之前需要预先买好票,等待服务验票之后才能入场,但是这张票不能直接购买,还需要一张认购权证(TGT),也就是说客户端在买票之前需要预先获得一张认购权证,这张认购权证和进入服务器的入场券均由KDC发售。引用网络上一张思路很清晰的图。

9c048cc4-6221-11ed-8abf-dac502259ad0.png

5. 域渗透中针对Kerberos的姿势主要有哪些?

说完认证过程后,就要说下经常用的两种票据:白银票据和黄金票据了。

银票

白银票据的特点是:不需要与KDC进行交互、需要目标服务的NTLM Hash。因此当拥有Server Hash时,我们就可以伪造一个不经过KDC认证的一个Ticket。
利用:
kerberos::golden /domain:<域名> /sid:<域SID> /target:<服务器主机名> /service:<服务类型> /rc4: /user:<用户名> /ptt

由于白银票据需要目标服务器的Hash,所以没办法生成对应域内 所有服务器的票据,也不能通过TGT申请。因此只能针对服务器 上的某些服务去伪造。如cifs服务用于Windows主机间的文件共享,用其他如LDAP等服务则无法访问server的文件系统。

这里还有最最重要的各种约束委派没有说。。待我彻底搞懂在另写一篇

金票

与白银票据相比,黄金票据的特点是需要与DC通信、需要krbtgt用户的hash,也就是需要拿下域控。

利用:

lsadump::dcsync /domain:域名 /user:krbtgt
kerberos::golden /domain:<域名> /sid:<域SID> /rc4: /user:<任意用户名> /ptt

拿到黄金票据后,就可以伪造黄金票据,然后就能获取任何Kerberos服务权限,登录任意域内任意一台主机。mimikatz导出域内所有主机的票据,命令是sekurlsa::tickets /export,或者dump NTDS.dit也可以。

那最后就要说下拿域控的姿势了。

最常用的毫无疑问是ms14068。主要利用工具是goldenPac.py或者kekeo/PyKEK。利用方式网上很多文章,这里不详细说。

6. Windows Access Token主要知识点浅谈

Windows Access Token(访问令牌)有两种,一种是Delegation token(授权令牌),主要用于交互会话登录(例如本地用户直接登录、远程桌面登录),另一种是Impersonation token(模拟令牌),主要用于非交互登录(利用net use访问共享文件夹)。

每个进程创建时都会根据登录会话权限由LSA(Local Security Authority)分配一个Token。如果CreaetProcess时自己指定了 Token, LSA会用该Token, 否则就用父进程Token的一份拷贝。

当用户注销后,系统将会使授权令牌切换为模拟令牌,不会将令牌清除,只有在重启机器后才会清除。

一般通过incognito.exe或者msf中的incognito模块来窃取令牌(Metasploit中的incognito,是从windows平台下的incognito移植过来的),从而获得令牌对应的权限,比如已获得admin权限,然后通过窃取令牌然后令牌假冒来获得system权限。

除此之外,推荐看一下3gstudent大佬的Windows-Token九种权限的利用一文。个人感觉到了内网渗透的后期,想要更好的理解、利用相关漏洞,还是需要对win32有一定的熟悉,否则会一直浮于表面,并不能做的很深入。

最后附上自己总结的Windows认证的思维导图。

9c1892aa-6221-11ed-8abf-dac502259ad0.jpg

9c4b5474-6221-11ed-8abf-dac502259ad0.jpg








审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • WINDOWS
    +关注

    关注

    3

    文章

    3440

    浏览量

    87143
  • SAM
    SAM
    +关注

    关注

    0

    文章

    107

    浏览量

    33361
  • SID
    SID
    +关注

    关注

    0

    文章

    11

    浏览量

    2976

原文标题:Windows认证及抓密码总结

文章出处:【微信号:菜鸟学安全,微信公众号:菜鸟学安全】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基帶測試主要有哪些?

    基帶測試主要有哪些? 基帶不像射頻測試,很繁瑣,除了電源、功耗測量還有哪些呢?
    发表于 05-13 20:54

    AD8221是什么?AD8221主要有哪些应用领域?

    AD8221是什么?它有什么作用?AD8221主要有哪些特点?AD8221主要有哪些应用领域?基于AD8221的交流耦合仪用放大器该怎么去设计?
    发表于 04-14 06:05

    单片机主要有哪些系列?

    单片机主要有哪些系列?它们分别有什么不同?以及主要应用于哪些领域?
    发表于 07-16 07:19

    定时器的功能主要有哪几种方式

    STM32F429单片机的定时器主要分为哪几类?定时器的功能主要有哪几种方式
    发表于 08-12 07:39

    电源变频驱动主要有哪两种驱动方式

      将变频器的主电路连接到电源线后,要控制电动机的运行,必须将外围连接的控制电路连接到相应的端子,并将变频器的启动模式参数设置为外部操作模式。电源变频驱动主要有哪2种驱动方式?原理如何  变频器控制
    发表于 09-03 06:45

    常见的变频方式主要有哪几种

    目前,常见的变频方式主要有交流变频和直流变频两种。1.交流变频交流变频器主要由AC-DC变换器(整流、滤波电路)、三相逆变器(inverter电路)、脉冲宽度调制电路(PWM电路)构成,如图1-1
    发表于 09-03 07:21

    变频器主要有两个作用

    预备知识:《电力电子技术》、《自动控制原理》变频器(Inverter,原意为逆变器)是应用变频技术与微电子技术,通过改变电机工作电源频率方式(变频)来控制交流电动机(不可驱动单相电机)的电力控制设备。变频器主要有两个作用:调速作用和节能作用。
    发表于 09-03 06:13

    PLC的编程主要有哪些步骤

    PLC的编程方法是什么?PLC的编程主要有哪些步骤?
    发表于 10-14 07:19

    常采用的供配电方式主要有哪几种呢

    常采用的供配电方式主要有哪几种呢?各有什么具体的要求呢?
    发表于 10-22 07:14

    物联网设备联入网络的方式主要有哪些

    文章目录1. WIFI模块2. NodeMCU联网3. 总结物联网应用首先要能联网,统一管理,否则各个节点各自为政就失去了物联网的优势。物联网设备联入网络的方式主要有:(1) 设备直接连接到路由器
    发表于 11-01 07:49

    SPWM信号主要有3种生成方式

    描述目前,SPWM信号主要有3种生成方式:1)使用比较器、振荡器等模拟电路产生三角波和方波进行比较,产生SPWM波,但是此种方法电路复杂,受元器件精度影响大,且不易控制;2)利用专用SPWM集成芯片
    发表于 11-15 08:01

    FPGA实现网口通信主要有哪几种方式

    PHY是什么意思?FPGA实现网口通信主要有哪几种方式
    发表于 02-22 07:57

    掌上电脑主要有哪些功能

    掌上电脑主要有哪些功能 掌上电脑除了用来管理个人信息(
    发表于 12-21 17:15 2673次阅读

    电源变频驱动主要有哪2种驱动方式?原理如何

      将变频器的主电路连接到电源线后,要控制电动机的运行,必须将外围连接的控制电路连接到相应的端子,并将变频器的启动模式参数设置为外部操作模式。电源变频驱动主要有哪2种驱动方式?原理如何  变频器控制
    发表于 10-22 16:51 6次下载
    电源变频驱动<b class='flag-5'>主要有</b>哪2种驱动<b class='flag-5'>方式</b>?原理如何

    电源变频驱动主要有哪2种驱动方式

    电源变频驱动主要有哪2种驱动方式? 电源变频驱动是一种通过调节电源输出频率的方法来控制电机的转速和运行模式。它适用于各种需要控制电机转速和降低能耗的应用,如工业生产线、空调系统、通风系统、泵站
    的头像 发表于 11-16 14:47 269次阅读