Sam文件
sam文件存放在%SystemRoot%\system32\config\sam 是系统Windows的账户的数据库文件。用户在登录时系统会自动读取sam中的认证对比,认证成功后登录
NTLM
NTLM是NT LAN Manager的缩写,这也说明了协议的来源。NTLM 是指 telnet的一种验证身份方式,即问询/应答身份验证协议,是 Windows NT 早期版本的标准安全协议,Windows 2000支持 NTLM 是为了保持向后兼容。Windows 2000内置三种基本安全协议之一。
NTLM(NT LAN Manager) Hash
NTLM Hash 是
生成方式
1、将明文口令转换成16进制格式
2、转换成unicode格式
3、对Unicode字符串作md4加密,生成32位的十六进制数字串
如图所示,password经过ntlm hash加密后是8846f7eaee8fb117ad06bdd830b7586c
本地认证流程
Windows Logon Process(winlogon.exe)接收用户输入信息
winlogon进程将用户输入的内容传递给lsass.exe进程使用NTML hash对口令加密
用加密结果对比SAM数据库中的内容对比
结果相同则返回userid和groupid发送给winlogon
结果不同则登录失败
工作组环境NTML认证
- (仅交互式身份验证存在此步骤)用户访问客户机并提供域名,用户名,密码。客户端计算密码的Hash,并丢弃实际密码
- 客户端将用户名发送到服务器
- 服务器生成一个16字节的随机数Challenge并发送给客户端
- 客户端使用用户密码的Hash对Challenge进行加密,然后将结果response(Net-NTLM hash)返回给服务器
- 服务器使用用户名从SAM数据库中检索用户密码Hash,使用此密码Hash对Challenge进行加密
- 服务器将其加密的Challenge(在步骤5中)与客户端计算的response(在步骤4中)进行比较。如果它们相同则身份验证成功
域环境NTML认证
- (仅交互式身份验证存在此步骤)用户访问客户机并提供域名,用户名,密码。客户端计算密码的Hash,并丢弃实际密码
- 客户端将用户名发送到服务器
- 服务器生成一个16字节的随机数Challenge并发送给客户端
- 客户端使用用户密码的Hash对Challenge进行加密,然后将结果response(Net-NTLM hash)返回给服务器
- 服务器将三个信息发送到域控制器:用户名,发送给客户机的Challenge,返回给服务器的response
- 域控制器使用用户名从SAM数据库中检索用户密码Hash。使用此密码Hash对Challenge进行加密
- 域控制器将其加密的Challenge(在步骤6中)与客户端计算的response(在步骤4中)进行比较。如果它们相同则身份验证成功
ntml v1: challenge 8位 DES加密算法
ntml v2: challenge16位 HMAC-MD5算法
PTH(Pash The Hash)hash传递攻击
hash传递就是使用用户名对应的NTML Hash将服务器给出的chanllenge加密,生成一个response,来完成认证
hash传递所需条件:
1、能与被认证机器通信
2、hash传递需要被传递认证的用户名
3、hash传递需要被传递认证用户的NTML Hash
常用工具:
smbmap
CrackMapExec
impacket
metasploit
Kerberos
简介
Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。在以上情况下, Kerberos 作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。
域认证所参与的角色
1、Client(客户端)
2、Server(服务端)
3、KDC(Key Distribution Center) = DC(一般由域控担任这个角色)
AD(account database):存储所有client的白名单,只有存在于白名单的client才能顺利申请到TGT
Authentication Svervice: 为client生成TGT的服务,以下简称AS
Ticket Granting Service: 为client生成某个服务ticket,以下简称TGS
域认证流程概述
第一步
client向kerberos服务请求并发送明文身份信息(username/host),希望获取server 的访问权限(如上图①流程),KDC的Authentication Svervice处理身份信息通过AD查询client发送的身份信息是否存在,如果存在AS会产生一个随机的TGS session key用于与TGS通信。然后AS会发送两部分信息回客户端(如上图②流程)。一部分是TGT(Ticket Granting Ticket),用KDC自己的密码进行加密,其内容包含客户端信息、TGS信息和session key;另一部分信息通过客户端的密码加密只包含了TGS信息和session key。如果密码是正确的,那么在本地就可以解密出TGS session key。
第二步
完成第一步开始与TGS通信,首先向TGS发送请求(如上图③所示),请求中包含第一步完成后本地缓存的未解密TGT、客户端请求的服务信息、session key加密的authenticator。TGS收到信息后开始检查数据库中是否包含请求的服务名,如果没有,则返回错误信息,如果存在,则通过KDC的密码解密TGT,得到session key解密Authenticator验证身份。然后向client返回信息(如上图④所示),返回的信息包括TGS session key加密生成的service session key 和用server服务器生成的ST(service ticket)
第三步
最后在与server的正常通信都可以用server session key和ST进行认证如上图⑤⑥所示
白银票据
白银票据(Silver Tickets)是伪造Kerberos票证授予服务(TGS)的票也称为服务票据。
特点:
1、不需要与KDC进行交互
2、需要目标服务的NTLM Hash
伪造白银票据的Mimikatz命令:
#获取SID和hash
1 | privilege::debug |
sekurlsa::logonpasswords
#制作票据
1 | kerberos::golden /domain:<域名> /sid:<域 SID> /target:<目标服务器主机名> /service:<服务类型> /rc4:<NTLM Hash> /user:<用户名> /ptt |
由于白银票据需要目标服务器的Hash,所以没办法生成对应域内所有服务器的票据,也不能通过TGT申请。因此只能针对服务器上的某些服务去伪造,伪造的服务类型列表如下:
防御方法:
1、防止服务器凭证不被窃取
2、开启PAC
黄金票据
黄金票据是伪造票据授予票据(TGT),也被称为认证票据。
特点
1、需要与DC通信
2、需要krbtgt用户(kdc服务对应的用户)的hash
伪造黄金票据的Mimikatz命令:
获取krbtgt用户hash
1 | mimikatz(commandline) # privilege::debug |
制作黄金票据
1 | mimikatz.exe "kerberos::golden /admin:system /domain:cyberpeace.com /sid:S-1-5-21-97341123-1865264218-933115267 /krbtgt:95972cdf7b8dde854e74c1871f6d80a0 /ticket:ticket.kirbi" exit |
导入金票
1 | mimikatz # kerberos::purge |
Windows Access Token
简介
Windows Token其实叫Access Token(访问令牌),它是一个描 述进程或者线程安全上下文的一个对象。不同的用户登录计算机后, 都会生成一个Access Token,这个Token在用户创建进程或者线程 时会被使用,不断的拷贝,这也就解释了A用户创建一个进程而该 进程没有B用户的权限。
这也就解释了A用户创建一个进程而该进程没有B用户的权限,因为默认打开一个进程都是以自身的令牌去验证启动的。
1.Access Token种类
- 主令牌(Primary令牌)
- 模拟令牌(Impersonation令牌)
Windows Access Token令牌伪造
当用户注销后,系统将会使主令牌切换为模拟令牌,不会将令牌清除,只有重启机器后才会清除。
查看目前系统上存在的模拟令牌工具:
meterpreter:Incognito
Cobalt Strike-steal_token
参考链接
https://www.bilibili.com/video/BV1S4411e7hr
http://www.360doc.com/content/15/0409/15/261866_461830447.shtml
https://www.cnblogs.com/artech/archive/2007/07/05/807492.html
https://www.cnblogs.com/artech/archive/2011/01/25/NTLM.html
https://blog.csdn.net/wxh0000mm/article/details/105996397