1、LLMNR和Netbios是什么
链路本地多播名称解析(LLMNR)是一个基于域名系统(DNS)数据包格式的协议
NetBIOS,为网上基本输入输出系统(Network Basic Input/Output System)的缩写,它提供了OSI模型中的会话层服务,让在不同计算机上运行的不同程序,可以在局域网中,互相连线,以及分享数据。
NetBIOS和Link-LocalMulticast NameResolution(LLMNR)是Microsoft针对工作组和域设计的名称解析协议,主要用于局域网中的名称解析。当DNS解析失败时,Windows系统会使用NetBIOS和LLMNR搜索名称。这些协议只为本地连接设计。
NetBIOS和LLMNR在WindowsVista以后的系统中均实现,二者的主要区别在于:1)NetBIOS基于广播,而LLMNR基于多播;2)NetBIOS在WindowsNT以后的所有操作系统上均可用,而只有WindowsVista和更高版本才支持LLMNR;3)LLMNR还支持IPv6,而NetBIOS不支持,因此,在启用了IPv6,但对IPv6管理不如IPv4那样细致的复杂网络中,就可能发生更广泛的攻击。
2、攻击原理
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广播,攻击者可以伪装成受害者要访问的目标机器,并从而让受害者交出相应的登陆凭证。
如果攻击者使用 Metasploit 和 Responder 等工具,就可以要求验证受害者主机的身份,而如果攻击者被认为是这些主机所在的本地网络中的一部分时,他们就会把自己进行哈希后的Windows凭据发给攻击者。核心过程与arp欺骗类似。
在渗透测试中,如果进入目标系统后没有获取到任何凭证,可以使用LLMNR和NetBIOS欺骗攻击对目标网络进行渗透。
3、测试
使用kali自带的responder,受害主机和kali要在同一局域网
Responder是监听LLMNR和NetBIOS协议的工具之一,能够抓取网络中所有的LLMNR和NetBIOS请求并进行响应,获取最初的账户凭证。responder -I eth0 -f
- -I:指定使用的网卡
- -f:允许攻击者查看受害者的主机指纹
然后受害主机win7随便解析一个不存在的网络名称:net use \\whoami
或dir \\whoami\c$
此时会尝试连接主机“whoami”,然而通过检查内部名称缓存和DNS都没找到,就会通过LLMNR和NetBIOS,在局域网中进行搜索。
此时攻击者收到了受害者用户的Net-NTML Hash:
抓取到的值默认保存在/usr/share/responder/logs
然后使用john爆破一下(因为我这里密码设置的简单,所以字典是用的默认的,平常测试时可能需要自己构造相关字典)
4、防范
- 禁用LLMNR和NBT-NS
在Windows中,LLMNR和NBT-NS是默认启用的。
(1)禁用LLMNR:打开组策略编辑器。
导航到 本地计算机策略 > 计算机配置 > 管理模板 > 网络 > DNS客户端。
启用关闭广播名称解析。
(2)禁用NBT-NS:打开控制面板。
导航到网络和Internet > 网络连接。
查看您的网络适配器的属性,
选择Internet协议版本4(TCP / IPv4),然后点击属性。
在常规选项卡中,单击高级选项。
选择“ WINS”选项卡。
选中“ 禁用TCP / IP上的NetBIOS”,然后点击“ 确定”。
如果您的企业策略不允许您禁用这些协议,可以考虑以下解决方案:
(i)通过网络访问控制NAC(Network Access Control)让攻击者无法访问您的网络。
(ii)为企业用户设置高强密码策略,使攻击者更难破解哈希值凭据。
(iii)监视用户异常登录,识别账号劫持风险。
使用ADAudit Plus活动目录数据安全审计解决方案可以有效解决以上问题。