利用NetBIOS欺骗攻击盗取hash

2022-05-30 15:32:39 浏览数 (2)

链路本地多播名称解析LLMNR)是一个基于域名系统(DNS)数据包格式的协议,IPv4和IPv6的主机可以通过此协议对同一本地链路上的主机执行名称解析。

在DNS 服务器不可用时,DNS 客户端计算机可以使用本地链路多播名称解析 (LLMNR—Link-Local Multicast Name Resolution)(也称为多播 DNS 或 mDNS)来解析本地网段上的名称。例如,如果路由器出现故障,从网络上的所有 DNS 服务器切断了子网,则支持 LLMNR 的子网上的客户端可以继续在对等基础上解析名称,直到网络连接还原为止。

LLMNR和NetBIOS

LLMNR的工作过程

(1) 主机在自己的内部名称缓存中查询名称。如果在缓存中没有找到名称,那么主机就会向自己配置的主DNS服务器发送查询请求。如果主机没有收到回应或收到了错误信息,主机还会尝试搜索配置的备用DNS服务器。如果主机没有配置DNS服务器,或者如果在连接DNS服务器的时候没有遇到错误但失败了,那么名称解析会失败,并转为使用LLMNR。

(2) 主机通过UDP写发送多播查询,查询主机名对应的IP地址,这个查询会被限制在本地子网(也就是所谓的链路局部)内。

(3) 链路局部范围内每台支持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%System32driversetchosts) 2. DNS缓存/DNS服务器 3. 链路本地多播名称解析(LLMNR)和NetBIOS名称服务(NBT-NS)

也就是说,如果在缓存中没有找到名称,DNS名称服务器又请求失败时,Windows系统就会通过链路本地多播名称解析(LLMNR)和Net-BIOS名称服务(NBT-NS)在本地进行名称解析。这时,客户端就会将未经认证的UDP广播到网络中,询问它是否为本地系统的名称。这就产生了一个安全问题。由于该过程未被认证,并且广播到整个网络,从而允许网络上的任何机器响应并声称是目标机器。通过工具监听LLMNR和NetBIOS广播,攻击者可以伪装成受害者要访问的目标机器,并从而让受害者交出相应的登陆凭证。

LLMNR和NetBIOS欺骗

原理探究

在使用传输控制协议 (TCP) 和互联网协议 (IP) 堆栈的网络(包括当今大多数网络)上,需要将资源名称转换为 IP 地址以连接到这些资源。因此,网络需要将“resource.domain.com”解析为“xxxx”的 IP 地址,以便准确知道将流量发送到何处。Microsoft Windows 客户端在尝试将名称解析为地址时遵循一系列方法,在成功将名称与 IP 地址匹配时停止搜索。

当计算机请求网络资源时,它通常遵循下面指定的查询层次结构(使用略有不同的配置)来识别目标资源。一旦名称被识别,它就会停止。

1. 检查以确认请求是否针对本地机器名称。 2. 检查最近成功解析的名称的本地缓存。 3. 搜索本地主机文件,该文件是存储在本地计算机上的 IP 地址和名称列表。根据设备的不同,此文件可能已加载到本地缓存中。 4. 查询 DNS 服务器(如果已配置)。 5. 如果启用了 LLMNR,则跨本地子网广播 LLMNR 查询以询问其对等方进行解析。 6. 如果启用了 NetBIOS,如果名称不在本地 NetBIOS 缓存中,则通过向本地子网广播 NetBIOS-NS 查询来尝试 NetBIOS 名称解析。如果如此配置,此步骤可能会使用 Windows Internet 名称服务 (WINS) 服务器以及 LAN 管理器主机 (LMHOSTS) 文件。

注意,计算机的 NetBIOS 名称及其主机名可以不同。但是,在大多数情况下,NetBIOS 名称与完整主机名相同或截断后的版本。IP 的 NetBIOS 名称解析可以通过广播通信、使用 WINS 服务器或使用 LMHOSTS 文件进行。

深入探究

这些协议的主要问题是受害计算机对其网络段内的其他设备的固有信任。如果计算机无法在上面列出的前四个步骤中识别出它正在寻找的资源,我们最喜欢的本地名称解析协议就会发挥作用。最好的例子是当用户输入错误的资源名称或请求不再可访问的资源时。

这种情况经常发生在网络的用户段,这就是攻击者进入的地方。一旦攻击者注意到网络上正在通过 LLMNR 或 NetBIOS-NS 请求这些资源,攻击者就无法阻止对受害计算机的响应,并且实际上是在告诉请求资源的主机自己就是被寻找的那个资源。事实上,我们可以更进一步的受害计算机,你应该尽快使用凭证跟我进行认证。果然,受害计算机使用其网络凭据的散列版本来响应攻击者。

与易受攻击的网络发现协议相关的利用步骤如下:

这里的通常目标是让攻击者从受害机器获取用户凭据。最后,要以“明文”形式获得实际密码,以便可用于获得网络身份验证,必须以 NetNTLMv2 格式破解散列密码。

另一个可能的攻击向量是攻击者将凭据在内网环境内进行碰撞。这种方法类似于前面描述的方法,不同之处在于攻击者不是简单地保存凭据,而是将它们瞄准内网内的其他系统。如果该帐户的凭据在其他系统上有效,则攻击者可以成功访问该系统,这里跟hash传递的思路有一点类似。

攻击

使用responder工具,在kali里自带。

Responder是监听LLMNR和NetBIOS协议的工具之一,能够抓取网络中所有的LLMNR和NetBIOS请求并进行响应,获取最初的账户凭证。

Responder会利用内置SMB认证服务器、MSSQL认证服务器、HTTP认证服务器、HTTPS认证服务器、LDAP认证服务器,DNS服务器、WPAD代理服务器,以及FTP、POP3、IMAP、SMTP等服务器,收集目标网络中的明文凭据,还可以通过Multi-Relay功能在目标系统中执行命令。

在渗透测试中,使用responder并启动回应请求功能,responder会自动回应客户端的请求并声明自己就是被输入了错误主机名称的那台主机,然后尝试建立SMB连接。对于SMB协议,客户端在连接服务端时,默认先使用本机的用户名和密码hash尝试登录,此时攻击者就可以得到受害机的Net-NTML Hash,并用john、hashcat等工具破解出客户端当前用户的明文密码。

开启监听

responder -I eth0 -f

•-I:指定使用的网卡

•-f: 允许攻击者查看受害者指纹

这里可以看到LLMNR跟NBT-NS都已经打开

靶机操作

这里需要注意的是靶机需要在家庭网络或公共网络下,因为必须要确保凭据通过smb协议传输

这里让靶机访问一个不存在的主机地址,也可以命令行输入net use \gha

当计算机请求网络资源时,它通常遵循下面指定的查询层次结构(使用略有不同的配置)来识别目标资源。一旦名称被识别,它就会停止。

1. 检查以确认请求是否针对本地机器名称。 2. 检查最近成功解析的名称的本地缓存。 3. 搜索本地主机文件,该文件是存储在本地计算机上的 IP 地址和名称列表。根据设备的不同,此文件可能已加载到本地缓存中。 4. 查询 DNS 服务器(如果已配置)。 5. 如果启用了 LLMNR,则跨本地子网广播 LLMNR 查询以询问其对等方进行解析。 6. 如果启用了 NetBIOS,如果名称不在本地 NetBIOS 缓存中,则通过向本地子网广播 NetBIOS-NS 查询来尝试 NetBIOS 名称解析。如果如此配置,此步骤可能会使用 Windows Internet 名称服务 (WINS) 服务器以及 LAN 管理器主机 (LMHOSTS) 文件。

注意,计算机的 NetBIOS 名称及其主机名可以不同。但是,在大多数情况下,NetBIOS 名称与完整主机名相同或截断后的版本。IP 的 NetBIOS 名称解析可以通过广播通信、使用 WINS 服务器或使用 LMHOSTS 文件进行。

深入探究

这些协议的主要问题是受害计算机对其网络段内的其他设备的固有信任。如果计算机无法在上面列出的前四个步骤中识别出它正在寻找的资源,我们最喜欢的本地名称解析协议就会发挥作用。最好的例子是当用户输入错误的资源名称或请求不再可访问的资源时。

这种情况经常发生在网络的用户段,这就是攻击者进入的地方。一旦攻击者注意到网络上正在通过 LLMNR 或 NetBIOS-NS 请求这些资源,攻击者就无法阻止对受害计算机的响应,并且实际上是在告诉请求资源的主机自己就是被寻找的那个资源。事实上,我们可以更进一步的受害计算机,你应该尽快使用凭证跟我进行认证。果然,受害计算机使用其网络凭据的散列版本来响应攻击者。

与易受攻击的网络发现协议相关的利用步骤如下:

这里的通常目标是让攻击者从受害机器获取用户凭据。最后,要以“明文”形式获得实际密码,以便可用于获得网络身份验证,必须以 NetNTLMv2 格式破解散列密码。

防范

1.最实用的方法在每台计算机的 NIC 上禁用 NetBIOS 并通过 DHCP 禁用 LLMNR ,但是这对于一些需要使用到NetBIOS和LLMNR服务的组织不太友好,所以更好的方法是每个系统的主机防火墙上通过阻止 NetBIOS 协议和 TCP 端口 139 以及 LLMNR UDP 端口来限制出站 NetBIOS 和 LLMNR 流量5355。这样就可以有效的防止这几个端口流量出站。

2.但是使用禁用端口流量的方法并不保险,可能攻击者会使用端口的方法从另外端口将NetBIOS和LLMNR的流量转发出站。所以另外一种防范办法就是将默认端口改成一些不会引起攻击者注意的高端口,即将端口重定向。这种重定向的方法修改注册表里面的PortNumber修改即可。

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminalServerWdsrdpwdTdstcp] [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminalServerWinStationsRDP-Tcp]

3.跟第一点防范方法比较相似的另外一种方法便是给这几个端口配置IPsec安全策略,这样在攻击者试图这几个端口进行扫描的时候就不会得到任何回应。

0 人点赞