Windows 认证
Windows 本地认证
本地认证基础
在本地登录到Windows时,操作系统将使用用户输入的密码作为凭据来验证系统中的密码,但是操作系统中存储的密码在哪里?路径:%SystemRoot%\ System32 \ config \ sam
当我们登录系统时,系统将在SAM文件中自动读取“密码”,并将其与我们输入的“密码”进行比较。如果相同的话,它证明了身份验证成功!

该SAM文件保留了计算机本地所有用户的凭据信息,可以将其理解为数据库。
NTLM(NT LAN Manager) Hash
NTLM Hash是支持NTLM净身份验证协议和本地身份验证过程的重要参与者。它的长度为32位,由数字和字母组成。Windows本身不会存储用户的明文密码。在加密算法之后,它将将用户的明文密码存储在SAM数据库中。
当用户登录时,用户输入的纯文本密码也将加密到NTLM哈希中,并与SAM数据库中的NTLM哈希进行了比较。 NTLM Hash的前身是LM Hash,目前基本上被消除了,但仍然存在。
NTLM Hash——产生

管理员=209C6174DA490CAEB422F3FA5A7AE634
管理员- 十六进制(十六进制)=61646d69e
61646D69E- UNICODE=610064006D0069006E00
610064006D0069006E00 -MD4=209C6174DA490CAEB422F3FA5A7AE634
本地认证流程
Windows登录过程(即Winlogon.exe是Windows NT用户登录程序,可以管理用户登录和注销。LSASS是Microsoft Windows系统的安全机制。用于本地安全和登录策略。

LM Hash
将所有小写字母转换为大写字母123ABC //未达到7个字符
将密码转换为十六进制,分为两组,填充14个字符,并填充0x00字符
31323341424243000000000000000将密码分为两组7个字节块
31323341424300 000000000000000 //16
将每个组转换为botstream。如果少于56位,请在左侧添加0。
31323341424300-(转换为二进制)
1100010011001000110011010010010001000100010001000110000000000-(补充56位)
00110001001100100011001101001001001001001001001000100100100100100000000000000000000000000000000000000000000000000000000000000000000Y00来
将8组分为7位,最后添加0
由于后者全是0,因此可以想象结果,即全部0;
将每组的Bitstreams转换为16点,并将其变成使用DES加密的加密值,而String KGS!@#$%是键(0x4B47532140232425),并获得了8个结果,每个结果都得到了,每种结果都将转换为十六进制。
-0011000100110001000110110110001001010010010001001001001001001100000110000011000000000
-30988C6814120C00-DES(30988C6814120C00)-48-D7-EB-91- 2F-5E-69-7C
由于我们的密码不超过7个字节,因此后半部分已修复:
AA-D3-B4-35-B5-14-04-EE
加入两个DES加密字符串。这是LM哈希。
48-D7-EB-91-2F-5E-69-7C-AA-D3-B4-35-B5-14-04-EE
Windows网络认证
在Intranet渗透过程中,经常遇到工作组环境,工作组环境是逻辑网络环境(工作区域)。隶属工作组的机器无法彼此建立完美的信任机制,只能是点对点。这是一种相对落后的身份验证方法,没有信任组织。假设主机A和主机B属于同一工作组环境,如果A想要访问主机B上的信息,则他需要将主机B上存在的帐户凭据发送到主机B,以便他可以在经过身份验证后访问主机B上的资源。
在这种情况下,我们已经接触了更多SMB共享文件。 SMB的默认端口为445。
早期SMB协议在网络上传输了明文密码。后来,出现了LAN Manager挑战/响应验证机制,简称为LM。它是如此简单,以至于很容易破裂。现在又有NTLM V2和Kerberos。
Challenge/Response
步骤1:谈判在此步骤中,客户端确认服务器的协议版本,无论是V1还是V2。一点点

步骤2:询问的完整过程:
客户端将用户信息(用户名)请求发送到服务器
服务器接受请求并生成一个称为“挑战”的16位随机数。与登录用户名相对应的NTLM哈希加密挑战(16位随机字符)以生成挑战1。同时,在生成挑战1后,向客户发送挑战(16位随机字符)。 //NET NTLM HASH=NTLM HASH(挑战)
客户端收到挑战后,它将使用要登录到帐户的NTLM哈希加密挑战,然后将响应发送到服务器。
步骤3:验证
服务器收到客户端的响应后,比较更改1和响应是否相等。如果是平等的,则身份验证将通过。

使用另一种解释方式:
服务器收到客户端发送的用户名之后,它决定了本地帐户列表中是否有用户名共享_user。
如果没有,则返回身份验证失败;
如果是这样,请生成更改,并搜索与局部区域的share_user相对应的ntlm哈希,使用ntlm hash加密更改,生成net-ntlm hash将其存储在存储器中,然后将更改发送给客户端。
收到更改后,客户端将其提供给NTLM Hash的Share_user的密码,并使用NTLM Hash加密更改。该结果称为响应,该响应在Net-NTLM哈希中表示,最后将响应发送到服务器。
该服务器接收客户端发送的响应,将响应与以前的Net-NTLM哈希进行比较,如果相等,则将通过身份验证。
注:
Chanllenge是服务器生成的16字节随机数,每个身份验证都不同。
响应在Net-NTLM Hash中表现出来,这是服务器返回的密码哈希加密服务器的结果,并使用客户端提供的密码。
NTLM v2
NTLM V1和NTLM V2之间最重要的差异是,挑战与加密算法不同,共同点是加密的原材料都是NTLM哈希。让我详细解释什么区别是:
挑战:NTLM V1有8位挑战,NTLM V2有16位挑战
Net-NTLM哈希:NTLM V1的主要加密算法是DES,并且NTLM V2的主要加密算法为HMAC-MD5。
//响应者,smbexec
Pass The Hash
在Intranet渗透过程中,我们通常需要获取管理员的密码和NTLM哈希。收集这些信息将有助于我们扩大结果,尤其是在域环境中。什么是哈希交货?
哈希交付是一项可以完成身份验证的技术,而无需帐户的清晰密码。
什么是哈希交货?
它解决了我们在渗透过程中无法获得明文密码的问题,也无法破解NTLM哈希,而是想扩大战斗的结果。
必要条件
哈希交付要求身份验证的主机能够访问服务器哈希通过需要传递给身份验证的用户名
哈希交付要求经过身份验证的用户被传递。
原理分析
要完成NTLM身份验证,第一步是将用户名发送到服务器到身份验证并等待服务器给出的挑战。实际上,哈希交付是使用与用户名相对应的NTLM哈希对服务器的披露进行加密,以生成响应以完成身份验证。
传递哈希可以完成不需要输入密码的NTLM协议身份验证过程,因此它不是漏洞,而是技能。
传递哈希工具:
SMBMAP
crackmapexec
smbexec
metasploit
使用crackmapexec实施哈希通过:
1
2
3
4
5
6
7
root@kali:〜/缓存#CME SMB 192.168.3.5 -U管理员-H DAB7DE8FEEB5ECAC65FAFFAF9FDC6CAC3A9 -X WHOAMI
SMB 192.168.3.5 445 liyingzhea30b
[*] Windows 7 Ultimate 7601服务包1 x64(name:liyingzhea30b)
(domain

SMB 192.168.3.5 445 liyingzhea30b
[+]有效载荷\管理员DAB7DE8FEEB5ECAC65FAF9FDC6CAC3A9
(pwn3d!)SMB 192.168.3.5 445 liyingzhea30b [+]执行命令
Kerberos域认证
Active Directory(活动目录)的概念
Windows为企业管理提供了有组织的资产,服务和网络对象的管理,这与企业体系结构的管理模型非常一致。 Active Directory服务是具有这些管理机制的服务。如果要构建域,则需要安装Active Directory服务。Active Directory Service将域的边界除以域名,在域外部不再在管理范围内。也就是说,一个域对应于一个域名,域也可以相互信任。
Active Directory存储有关网络对象的信息,并允许管理员和用户轻松找到和使用此信息。 Active Directory使用结构化数据存储方法,并将其用作逻辑和层次上组织目录信息的基础。
网络对象分为:个用户,用户组,计算机,域,组织单位和安全策略。
Active Directory(活动目录)的概念
服务器和客户端计算机管理:管理服务器和客户端计算机帐户,所有服务器和客户端计算机加入域管理并实施组策略。用户服务:管理用户域帐户,用户信息,企业地址簿(与电子邮件系统集成),用户组管理,用户身份认证,用户授权管理等,并根据该省实施组管理策略。
资源管理:管理网络资源,例如打印机,文件共享服务。
桌面配置:系统管理员可以集中配置各种桌面配置策略,例如:用户使用域限制,接口函数限制,应用程序执行特性限制,网络连接限制,安全配置限制等,等等。
应用系统支持:以支持各种应用程序系统,例如财务,人员,电子邮件,企业信息门户,办公室自动化,补丁管理,防病毒系统等。
在域中,网络对象可以相互访问,但实际上,某些部门需要受到限制,例如销售部门无法访问技术部门的服务器。
同时,需要Kerberos身份验证协议来验证网络对象之间的权限。
域认证体系 - Kerberoes
Kerberos是一种网络身份验证协议,旨在通过密钥系统为客户端/服务器应用程序提供强大的身份验证服务。此身份验证过程的实现不依赖于主机操作系统的身份验证,不需要基于主机地址的信任,不需要网络上所有主机的物理安全性,并且假设可以任意读取,修改和插入网络上传输的数据包。在上述情况下,Kerberos作为可信赖的第三方身份验证服务,通过传统的加密技术(例如:共享密钥)执行身份验证服务。域认证所参与的角色
Kerberos的徽标是三个狗头,狗头代表以下角色:客户
服务器
KDC(密钥配送中心)=DC(域控制器)
域认证所参与的角色
AD(帐户数据库):存储所有客户的白名单。只有白名单上存在的客户才能成功申请TGT身份验证服务:为客户生成TGT服务
授予服务的机票:为客户提供服务票

从物理角度来看,AD和KDC都是域控制器(域控制器)。
域认证粗略流程
客户端请求Kerberos服务,希望获得访问服务器的许可。收到这个消息后,Kerberos首先必须判断客户是否值得信赖,即白名单黑名单。这就是AS服务所做的,通过在广告中存储黑名单和白名单来区分客户。成功后,返回AS并将TGT返回给客户。客户端获得TGT后,它继续向Kerberos请求,希望获得访问服务器的许可。 Kerberos再次收到了此消息。目前,通过客户端消息中的TGT,确定客户端已有此权限,并允许客户允许访问服务器机票。
客户获得机票后,他最终可以成功访问服务器。该票仅适用于该服务器,其他服务器需要应用于TGS。
第一步 Session Key 与 Ticket Granting Ticket



第二步 Session Key 与 Ticket Granting Ticket


第三步 Server Session Key 与 Ticket

白银票据
银笔记的功能:无需与KDC互动
需要目标服务的NTLM哈希
在身份验证的第三步中,机票的组成:
ticket=服务器哈希(服务器会话密钥+客户端信息+结束时间)
当您拥有服务器哈希时,我们可以制造未经KDC认证的票证。
PS:发送机票之前的服务器会话密钥,服务器不知道服务器会话密钥是什么。因此,所有凭据均来自服务器哈希。
伪造白银票据
首先,您需要导出服务器哈希:1
C: \ filemimikatz.exe'Privilege

锻造:
1
Mimikatz“ Kerberos:Golden /domain:域名/SID:域SID /TARGET:目标服务器主机/服务:服务类型/RC43:NTLM HASH /user: Username /ptt
其他:
kerberos:list #list门票
Kerberos

由于银账单需要目标服务器的哈希,因此不可能为相应域中的所有服务器生成账单,并且它们不能通过TGT应用。因此,您只能在服务器上建立某些服务。锻造服务类型的列表如下:
服务说明
服务名称
WMI
主机,RPCSS
powershell远程
主机,http
Winrm
主机,http
计划的任务
主持人
LDAP,DCSYNC
LDAP
Windows文件共享(CIF)
CIFS
Windows Remote ServerAdministration工具
RPCSS,LDAP,CIFS
白银票据(Silver Tickets)防御
尝试确保服务器凭据不会被盗启用PAC(特权属性证书)特权属性证书保护功能。 PAC主要规定服务器将机票发送到Kerberos服务,而Kerberos服务验证了票务是否有效。
打开模式:
在HKEY_LOCAL_MACHINE \ System \ CurrentControlset \ Control \ lsa \ kerberos \ kerberos \参数为1
黄金票据(Golden Tickets)
黄金笔记的功能:需要与DC通信
需要krbtgt用户的哈希
PS:中的Krbtgt哈希是前面提到的KDC哈希

请注意,在:的KRBTGT哈希是前面提到的KDC哈希
黄金票据(Golden Tickets)-MSF kiwi
使用MeterPreter中的猕猴桃模块:LOAD KIWI


黄金票据(Golden Tickets) - 伪造
锻造说明:1
Mimikatz“ Kerberos:Golden /domain:域名/SID:域SID /RC433:KRBTGT NTLM HASH /user3333660arbitrary Username /ptt'出口
Tickets 总结
Gold Notes :从攻击表面的角度,获得KRBTGT用户的哈希(Hash)后,它可以持续隐藏在域中,并且无法追踪日志,但需要DC许可。长时间使用金音符可以在域环境中控制整个域。从辩护的角度来看,KRBTGT的密码需要经常更新,以使原始帐单无效。最基本的方法是不允许域管理帐户登录其他服务器。