- NTLM v2协议
NTLM v1与NTLM v2最显著的区别就是challenge与加密算法不同,共同点就是加密的原料都是NTLM Hash。
不同之处:
Challenge:NTLM v1的challenge有8位,NTLM v2的challenge为16位。
Net-NTLM Hash:NTLM v1的主要加密算法是DES,NTLM v2的主要加密算法是HMAC-MD5.
- Pass The Hash (哈希传递)
在内网渗透中,我们经常会需要抓取管理员的密码、NTLM Hash,尤其是域环境下。
- ·什么是哈希传递?
哈希传递是能够在不需要账户明文密码的情况下完成认证的一个技术。
- ·哈希传递的作用?
解决了我们渗透中获取不到明文密码、破解不了NTLM Hash而又想扩大战果的问题。
- Pass The Hash 必要条件
- ·哈希传递需要被认证的主机能够访问到服务器
- ·哈希传递需要被传递认证的用户名
- ·哈希传递需要被传递认证用户的NTLM Hash
- Pass The Hash 工具
三、Active Directory(活动目录)概念
·Active Directory存储了有关网络对象的信息,并且让管理员和用户能够轻松地查找和使用这些信息。Active Directory使用了一种结构化地数据存储方式,并以此作为基础对目录信息进行合乎逻辑的分层组织。
·网络对象分为:用户、用户组、计算机、域、组织单位以及安全策略等。
- Active Directory(活动目录)的功能
服务器及客户端计算机管理:管理服务端及客户端计算机账户,所有服务器及客户端计算机加入域管理并实施组策略。
用户服务:管理用户域用户、用户信息、企业通讯录(与电子邮件系统集成)、用户组管理、用户身份认证、用户授权管理等。
资源管理:管理打印机、文件共享服务等网络资源
桌面配置:系统管理员可以集中的配置各种桌面配置策略,如用户使用域中的资源权限设置、桌面功能的限制、网络连接限制、安全配置限制等。
应用系统支撑:支持财务、人事、电子邮件、企业信息门户、办公自动化、补丁管理等各种应用系统。
- 域认证体系—Kerberos
Kerberos是一种网络认证协议,其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。在以上情况下,Kerberos作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。
- 域认证所参与的角色(三只狗头)
- ·client
- ·server
- ·KDC(Key Distribution Center) =DC(域控 Domain Controller)
- 域认证所参与的角色(KDC)
- ·AD(account database):只有存在于白名单的client才能顺利申请到TGT
- ·AS(Authentication Service): 为client生成TGT的服务(校验功能)
- ·TGS(Ticket granting Service) : 为client生成某个服务的ticket(票据)
- 域认证流程----粗略流程
1) Client向Kerberos服务请求,希望获取访问server的权限。Kerberos得到这个消息,首先判断client是否是可信赖的,也就是白名单黑名单的说法。这就是AS服务完成的工作,通过在AD中存储黑名单和白名单来区分client。成功后,返回AS返回TGT给client。
2) Client得到TGT后,继续向Kerberos请求,希望获取访问server的权限。Kerberos又得到了这个消息,这时候通过client消息中的TGT,判断出client拥有了这个权限,给了client访问server的权限的ticket。
3) Client得到ticket后,终于可以成功访问server。这个ticket只是针对这个server,其它server需要向TGS申请。
- 白银票据(Silver Tickets)
白银票据的特点:
1) 不需要与KDC进行交互
2) 需要目标服务器的NTLM Hash
在第三步认证的Ticket的组成:
Ticket=Server Hash(Server Session key+Client info +End Time)
当拥有Server Hash时,我们就可以伪造一个不经过KDC认证的Ticket。
PS:server session key 在未发送Ticket之前,服务器是不知道Server Session Key是什么的。所以,一切凭据都源于Server Hash。
- 白银票据---伪造
Mimikatz:
- ·kerberos::list #列出票据
- ·Kerberos::purge #清除票据
- 白银票据—防御
1) 尽量保证服务器凭证不被窃取
2) 开启PAC特权属性证书保护功能,PAC主要是规定服务器将票据发送给Kerberos服务,由Kerberos服务验证票据是否有效。
开启方式:将注册表中HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsaKerberosParameters中的值设置为1。
- 黄金票据
黄金票据的特点:
1) 需要与DC通信
2) 需要krbtgt用户的hash
Ps:这里的krbtgt hash就是之前的KDC Hash。
黄金票据的伪造
MSF kiwi模块
- Ticket总结
黄金票据:从攻击面来看,获取krbtgt用户的hash后,可以在域中进行持久性隐藏,并且日志无法溯源,但是需要拿到DC权限,使用黄金票据能够在一个域环境中长时间控制整个域。
从防御角度来看,需要经常更新krbtgt的密码,才能使得原有的票据失效。最根本的办法是不允许域管账户登录其它服务器。
白银票据:从攻击面来看,伪造白银票据的难度比伪造黄金票据的难度小很多,因为一个域中的服务器如果对外的话,非常容易被入侵,并且容易被转储Server Hash。
从防御角度来看,需要开启PAC认证,但这会降低认证效率,增加DC的负担,最根本的还是要加固服务器本身对外的服务。