NoPac域提权漏洞扫描器,相比于网上公开的扫描器,它能自动扫描更多的域控,并且能更精确的识别漏洞。
原理
为什么能查询到更多域控?
通过DNS查询_msdcs.aaa.com
来获取域控的地址,相比LDAP或者SAMR协议查询获取到的域控地址,这种方法能查询到更多域控。(因为DNS查询能查到已经脱域但未在dns中注销的域控)漏洞原作者的查询方法是通过LDAP进行查询。
为什么能更精确识别漏洞?
通过分析微软对此漏洞的主要补丁,能发现它修改的方法主要是通过在PAC认证中,增加了一个类型为0x10的结构体,在TGS获取阶段增加对0x10结构体的身份检查,来防止NoPac中的身份伪造。因此通过识别PAC中是否存在0x10的结构体就行。至于如何解密PAC文件呢?通过当前用户请求自己的S4U2self票据,从而使用自己的hash来解密获取的PAC。漏洞原作者的查询方法是通过判断返回的tgt的大小来判断漏洞是否存在,如果tgt中有pac,则漏洞存在。但是在微软后面的更新中,有个策略是无论Include Pac的参数是什么,都返回PAC包,这将导致判断失误。
Install
Python3.5+impacket
- pip install aiodns
Usage
1 |
|
scan
1 |
|
通过dc-ip传入域控地址后,将默认通过DC的dns服务器来进行dns查询,并自动扫描所有查询到的DC,后进行漏洞探测。
github地址
https://github.com/knightswd/NoPacScan
欢迎大家使用,有什么问题尽管提 (•‾̑⌣‾̑•)