基础知识
LLMNR是什么?
链路本地多播名称解析(LLMNR)是一个基于协议的域名系统(DNS)数据包的格式,使得双方的IPv4和IPv6的主机来执行名称解析为同一本地链路上的主机。当局域网中的DNS服务器不可用时,DNS客户端会使用LLMNR本地链路多播名称解析来解析本地网段上的主机的名称,直到网络连接恢复正常为止。
LLMNR 的工作过程
当一台主机想要访问到另一台主机时,主机在自己的内部名称缓存中查询名称,如果在缓存中没有找到名称,那么主机就会向自己配置的DNS服务器发送查询请求,如果主机没有收到回应或收到了错误信息,即DNS解析会失败,那么就会转为使用LLMNR链路本地多播名称解析。
使用链路本地多播名称解析时,主机会通过 UDP 向局域网内发送多播查询,查询主机名对应的IP,查询范围被限制在本地子网内。本地子网内每台支持LLMNR的主机在收到这个查询请求后,收到该请求的主机会判断自己的主机名是不是这个查询的主机名。如果是,这台主机会回复自己IP地址给请求该查询的主机;如果不是,则丢弃该请求。
NetBIOS是什么?
Netbios(Network Basic Input Output System):网络基本输入输出系统,它提供了OSI模型中的会话层服务,让在不同计算机上运行的不同程序,可以在局域网中,互相连线,以及分享数据。严格来说,Netbios是一种应用程序接口(API),系统可以利用WINS服务、广播及Lmhost文件等多种模式将NetBIOS名解析为相应IP地址,几乎所有的局域网都是在NetBIOS协议的基础上工作的。NetBIOS也是计算机的标识名称,主要用于局域网内计算机的互访。NetBIOS的工作流程就是正常的机器名解析查询应答过程。在Windows操作系统中,默认情况下在安装 TCP/IP 协议后会自动安装NetBIOS。
Windows系统名称解析顺序
1. 本地hosts文件(%windir%\System32\drivers\etc\hosts)
2. DNS缓存/DNS服务器
3. 链路本地多播名称解析(LLMNR)和NetBIOS名称服务(NBT-NS)
也就是说,如果在缓存中没有找到名称,DNS名称服务器又请求失败时,Windows系统就会通过链路本地多播名称解析(LLMNR)和Net-BIOS名称服务(NBT-NS)在本地进行名称解析。这时,客户端就会将未经认证的UDP广播到网络中,询问它是否为本地系统的名称。这就产生了一个安全问题。由于该过程未被认证,并且广播到整个网络,从而允许网络上的任何机器响应并声称是目标机器。通过工具监听LLMNR和NetBIOS广播,攻击者可以伪装成受害者要访问的目标机器,并从而让受害者交出相应的登陆凭证。
LLMNR和NetBIOS欺骗攻击
攻击原理
我们利用SMB协议获取目标网络中计算机的Net-NTML Hash。
当用户输入 不存在、包含错误 或者 DNS中没有的主机名 时,主机先在自己的内部名称缓存中查询名称,如果没找到,主机就会向DNS服务器查询,而DNS解析会失败,此时就会退回LLMNR和NetBIOS进行计算机名称解析。那么攻击者就能够代替网络上任何不存在的主机回答请求,并诱导搜索内容的主机连接到我们。如果攻击者使用 Metasploit 和 Responder 等工具,就可以要求验证受害者主机的身份,而如果攻击者被认为是这些主机所在的本地网络中的一部分时,他们就会把自己进行哈希后的Windows凭据发给攻击者。核心过程与arp欺骗类似。
在渗透测试中,如果进入目标系统后没有获取到任何凭证,可以使用LLMNR和NetBIOS欺骗攻击对目标网络进行渗透。
Responder工具利用过程
下载地址:https://github.com/sdfzy/Responder
Responder是监听LLMNR和NetBIOS协议的工具之一,能够抓取网络中所有的LLMNR和NetBIOS请求并进行响应,获取最初的账户凭证。
Responder会利用内置SMB认证服务器、MSSQL认证服务器、HTTP认证服务器、HTTPS认证服务器、LDAP认证服务器,DNS服务器、WPAD代理服务器,以及FTP、POP3、IMAP、SMTP等服务器,收集目标网络中的明文凭据,还可以通过Multi-Relay功能在目标系统中执行命令。
Kali中内置了该工具。
在渗透测试中,使用responder并启动回应请求功能,responder会自动回应客户端的请求并声明自己就是被输入了错误主机名称的那台主机,然后尝试建立SMB连接。对于SMB协议,客户端在连接服务端时,默认先使用本机的用户名和密码hash尝试登录,此时攻击者就可以得到受害机的Net-NTML Hash,并用john、hashcat等工具破解出客户端当前用户的明文密码。
1. 开启监听
- -I:指定使用的网卡
- -f:允许攻击者查看受害者的主机指纹
如上图,“ON”代表针对服务数据包的监听开启,“OFF”代表关闭监听。
2. 受害机操作
可以使用以下几个命令,随便输入一个不能解析的名称(whoami)
net use \\whoami
dir \\whoami\c$
也可以在“运行”里面连接
此时会尝试连接主机“whoami”,然而通过检查内部名称缓存和DNS都没找到,就会通过LLMNR和NetBIOS,在局域网中进行搜索。
此时攻击者收到了受害者用户的Net-NTML Hash:
Net-NTML Hash是指在网络环境中经过NTML认证的散列值。挑战/响应验证中的响应就包含Net-NTML Hash。使用responder抓取的通常就是Net-NTML Hash。攻击者无法使用Net-NTML Hash进行哈希传递攻击,只能使用hashcat等工具爆破或进行NTLM-Relay攻击。
攻击端收到了受害机的
Net-NTLMHash 的值后,可以对其进行爆破,也可以利用该 Net-NTLMHash 进行NTLM-Relay攻击(日后讲解)。
停止Responder后,Responder会将所有抓取到的数据存储到 /usr/share/responder/logs/ 文件夹下,会为每个service-proto-IP生成唯一的文件,如图
3. 爆破Net-NTLMHash
像抓取到的Net-NTLMHash保存到hash.txt中,使用hashcat对hash进行爆破:
hashcat.exe -m 5600 hash.txt rockyou.txt
// rockyou.txt为字典
得到明文密码。也可以使用kali自带的john工具进行破解,如下:
John the Ripper是一个快速的密码破解程序,目前可用于Unix,Windows,DOS和OpenVMS的许多口味。其主要目的是检测弱Unix密码。
John可以使用外部字典,使用–wo选项指定外部字典,这里,我们使用john的默认字典,对上面responder生成的SMB-NTLMv2-SSP-192.168.1.5.txt文件进行爆破。
成功了得到明文密码。
针对LLMNR和NetBIOS欺骗攻击的防御
关闭NetBIOS和LLMNR服务。
注意:在关闭这些服务以后,用户的一些正常需求可能会受到影响哦。
参考:
在写这篇文章时,我只是一名大一的学生,抱着对网络安全的热爱,从零基础走上了安全这条道路,想为国家的网络安全事业做贡献。文章大多是我学习的总结,因初来乍到,必有很多不足之处,还请各位前辈多多指教,小生还需多多向各位前辈学习。
来源:freebuf.com 2020-07-20 17:50:00 by: MrAnonymous
请登录后发表评论
注册