Windows名称解析与相应攻击方法

目录

名称解析的主要协议

DNS

dns协议支持IPV4,IPV6,DNS服务器DNS服务的监听端口是UDP/53。

工作机理

1.读取本机的DNS缓存,即HOST文件来进行DNS名称解析 2.若本地没有对应的名称记录,则请求网络配置的DNS服务器 3.若DNS服务器也没有对应响应,则DNS质询失败。

NETBIOS

netbois 监听端口为 UDP/137,它不支持IPV6,它与DNS的不同是它除了通过特定服务器还可以通过广播来进行名称解析。

工作机理(H-节点)

1.检查本地NetBois缓存,有缓存则完成名称解析。(使用nbtstat -c命令查看本机的 NetBIOS 缓存) 2.若无缓存,且配置了WINS服务器,则通过WINS服务器来进行名称解析(和DNS服务器很像) 3.若没有WINS服务器或者WINS服务器无响应,则向当前网段发送广播进行质询(和ARP有点像),若有主机响应则完成名称解析 4.若广播后无任何主机响应,则读取本地Imhosts文件,其存在于C:\Windows\System32\drivers\etc\,(和DNS本地查询很像)

节点类型

NETBIOS的实际工作情况并不是像刚刚说的那么死板,实际上,NETBIOS名称解析有四种不同的工作顺序.

B-节点(broadcast,广播)

当 Windows 尝试解析名称时,首先检查 NetBois缓存,如果此行不通,Windows 就会发送广播,如果广播依然失败的话,那Windows 才会检查实际的 LMHOSTS 文件。

P-节点(per-to-per,对等)

这种方法并不使用广播,而是在计算机启动时,在网络中的 WINS 服务器上注册它们的名称,当计算机需要解析名称时,它会发送一个解析请求给 WINS 服务器。这种方法只在 WINS 服务器正常运行时有效,如果 WINS 服务器失败,则无法进行名称解析。

M-节点(mixed,混合)

Windows 联合使用 B 节点和 P 节点,并且默认使用 B 节点,如果 M 节点不能利用广播进行名称解析,它就使用 P 节点的 WINS 服务器来完成工作。

H-节点(hybrid,混合)

同样也是联合使用 B 节点和 P 节点,但工作方式相反,如果使用 WINS 服务器方式不能成功,则使用 B 节点的工作来完成工作。此节点模式也是目前 Windows 系统默认使用的节点模式

节点模式可以在ipconfig /all 的节点类型处看到。

img

LLMNR

LLMNR不依赖于任何独立服务器 ,它仅靠多播来实现名称解析。它再Windows Vista版本之后出现。 它又被称作“多播DNS”,监听端口为 UDP/5355

工作机理

1.检查NetBios缓存。 2.若无缓存,则向当前网域发送广播。 3.若有主机响应,则解析成功。反之则不成功。

针对名称解析的攻击方法

LLMNR 投毒

下图为LLMNR的正常流程

image-20210715155226199

被毒化后

image-20210715160154939

实际上LLMNR投毒并不复杂,无非就是应答LLMNR请求包从而冒充自己为另一台主机。 在内网环境中诸多名称解析服务都是通过DNS完成的,只有少数如SMB共享和ping还有远程连接(win10会先通过DNS进行解析,DNS解析失败才会使用LLMNR)会使用LLMNR进行名称解析。

smb请求一个不存在的smb地址,触发LLMNR名称解析(win10)

image-20210715183113916

远程连接一个不存在的主机,触发LLMNR名称解析(WIN10

image-20210715193226761

LLMNR投毒的主要攻击方式就是通过在某一机器发起SMB请求时进行冒充,截获目标在SMB通信中发送的hash并进行解密,从而获取用户的密码hash。 或者冒充WEB服务器进行钓鱼(由于目前LLMNR解析往往只用于SMB和ICMP还有RDP,所以与HTTP沾边的方法很难用到)。

SMB爆破hash

我们有必要了解一下,SMB的工作机制。

实际上SMB在确认对方身份时,用的是NTLM协议。

所以我们可以通过xss向一个web页面中插入像这样的代码

<img src=\\test\1.jpg>

其中test这一个SMB名称实际上是不存在的,故访问该页面的主机会通过LLMNR去广播解析这个名称对应的IP。我们这个时候将其劫持,回应说自己便是test,接下来就会进入到SMB的身份验证环节:我们向发送SMB请求的机器发送一个challenge,对方便会返回一个其用自己HASH加密的加密字符串response(也就是NTLMv2)过来。我们拿到response后通过爆破工具进行爆破其密钥,便有爆破出其CLIENT HASH的可能性。

我们用responder进行毒化,在用户访问一个不存在的SMB路径时进行LLMNR应答,发送challenge:1122334455667788并截获其NTLMv2

image-20210715191634220

随后将NTLMv2-SSP HASH复制到一个文件中,将爆破的密码列表放入另一个文件中。

hashcat -m 5600 hash.txt password.txt

image-20210715192447073

成功爆破出