NetBIOS和LLMNR简介
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那样细致的复杂网络中,就可能发生更广泛的攻击。
当使用DNS的主机名解析失败后,工作站将广播一个查询来获取NetBIOS名称,或者通过LLMNR地址224.0.0.252(对于IPv6位FF02:1:3)发送一个多播请求来获取名称。
攻击原理
NetBIOS和LLMNR协议对于没有DNS的工作站系统来说很有帮助,但也对攻击者大开方便之门。当人们输入不存在、包含错误或者DNS中没有的主机名时,就会使用这些协议在网络中搜索主机,这些协议的本质决定了本地网络上的任何主机都可以回答请求。这意味着作为攻击者,我们能够代替网络上任何不存在的主机回答请求,并诱导搜索内容的主机连接到我们。攻击示意图如图1所示。
更严重的是,当我们使用Metasploit和Responder等工具时,可以要求验证受害者主机的身份,而如果我们被认为是这些主机所在的本地网络中的一部分时,他们就会把自己进行哈希后的Windows凭据发给我们。
Responder简介
Responder是由LaurentGaffie发布的一款功能强大且简单易用的内网渗透工具,将NetBIOS名称服务(NBNS)、LLMNR和MDNS欺骗集成到一个工具中。
下载地址为https://github.com/SpiderLabs/Responder,当前最新版本是2.3。
默认Kali已安装responder
Responder的特性包括内置SMB认证服务器、MSSQL认证服务器、HTTP认证服务器、HTTPS认证服务器、LDAP认证服务器,DNS服务器、WPAD代理服务器,内建FTP、POP3、IMAP、SMTP服务器用于收集明文的凭据。
Responder会将所有抓取到的hash打印到标准输出接口上同时会以下面的格式存储到logs/文件夹下。
(MODULE_NAME)-(HASH_TYPE)-(CLIENT_IP).txt
所有的活动都会记录到Responder-Session.log,分析模式下的日志保存到Analyze-Session.log,毒化模式下的日志保存到Poisoners-Session.log.同时所有抓到的hash都会存储到我们在Responder.conf中配置的sqlite数据库中.
为了获取Responder的帮助选项,输入responder–h,如图2所示。
攻击场景
接下来我们开始进行NetBIOS和LLMNR欺骗攻击。以下操作都在VMware虚拟机中进行。
所使用的网络环境如下表,攻击者和受害者在同一局域网中。
攻击流程
1.运行Responder
在攻击者主机上运行Responder,命令如下:
responder –I eth0 –f
命令解释:-I指定使用的网卡,-f允许攻击者查看受害者的主机指纹。
开启后,如图3所示,从图中可以看出,针对LLMNR、NBT-NS(NetBIOS名称服务)、DNS/MDNS的毒化攻击已经开启。
2.受害者访问不存在的主机
在访问之前,首先确保Windows7主机的网络类型是工作网络或者家庭网络中,这将确保凭据通过SMB发送。如图4所示。
受害者在资源管理器的地址栏中输入\\gha时,如图5所示,Windows系统会尝试连接主机“gha”。首先,它会检查DNS,如果不存在,就会通过LLMNR协议进行多播,在局域网中进行搜索。此时,我们可以在攻击机上看到Responder的响应,然后受害者的Windows机器会向攻击者进行身份验证。
可以看到,受害者请求gha主机时,攻击者的Responder会返回一个LLMNR欺骗,并得到受害者Windows的操作系统信息。当Windows系统尝试连接时,Responder会记录发送的哈希,用户名、IP地址等信息,如图6所示。
至此,我们获取了一个NTLMv2哈希。NTLM的全称是NTLAN Manager,是微软提出的WindowsNT挑战/响应验证机制,用于在局域网内传输口令信息,NTLMv2是NTLM的更新版本。
3.破解NTLMv2哈希
在一个局域网环境中,我们让Responder运行几分钟到几个小时,以捕获尽可能多的凭据。
停止Responder后,在安装目录的logs文件夹下,会为每个service-proto-IP生成唯一的文件,如图7所示。
本例中是SMB-NTLMv2-SSP-192.168.26.144.txt
接下来,使用johnthe ripper进行破解NTLMv2。JohntheRipper是一款快速密码破解器,目前可用于Unix,Windows,DOS和OpenVMS等多种版本。它的主要目的是检测弱Unix密码。除了支持各种Unix系统上最常见的几种密码哈希类型之外,还支持WindowsLM哈希,在社区增强版本中,还支持大量其他哈希和密码。
默认kali中已经安装该工具,启动命令是john。John可以使用外部字典,使用--wo选项指定外部字典,本例中,我们没有使用外部字典,而是使用john的默认字典,因此没有使用--wo选项。命令如下图。
可以看出,破解出密码后,就显示到屏幕上。由于我们的密码比较简单,所以很快就破解出来。
如果收集到很多凭据,可以通过cat*NTLMv2* > NTLMv2.txt将所有的NTLMv2凭据汇聚到一个文件中,然后使用该文件同时破解多个密码。
防御措施
为了防止在局域网内遭到NetBIOS名称欺骗和LLMNR欺骗攻击,可以考虑关闭NetBIOS和LLMNR服务。不过在关闭这些服务以后,可能用户的一些正常需求会受到影响。
关闭NetBIOS
依次点击控制面板->网络和Internet->网络连接,右击本地连接或者无线网络连接,选择“属性->Internet协议版本4->属性->高级”,在WINS标签栏中的NetBIOS设置中禁用NetBIOS,如图9所示。
关闭LLMNR
点击开始->运行,输入gpedit.msc,如图10所示,打开本地组策略管理器。
依次点击计算机配置->管理模板->网络->DNS客户端,如图11所示。
在右侧的设置里,双击最下面的“关闭多播名称解析”,选择“已禁用”,并应用,如图12所示。
(完)