内网中间人的玩法

渗透测试 2017-11-19

在内网渗透测试中,我们可以欺骗攻击网络配置和服务。这种攻击方式主要针对ARP(地址解析协议)、DHCP(动态主机配置协议)和DNS服务器配置不当造成的安全隐患。还有一种比较常见的攻击方式就是中间人攻击,他能够使我们通过监控网络流量获取敏感信息。我们可以对网络设备采取安全措施来预防攻击。但是,由于一些协议固有的弱点来进行攻击,本文就是利用LLMNR NetBIOS和WPAD机制来进行中间人攻击。

下面我们先了解一下DNS的查询过程,如图所示:

1.jpg

下面是在内网中dns查询的几个关键步骤:

1 文件系统中的hosts文件

配置文件地址:C:WindowsSystem32driversetc

2 本地DNS缓存

CMD命令:ipconfig /displaydns

3 向dns服务器发送dns请求

4 发送LLMNR查询

在DNS查询失败的时候使用

5 发送NetBIOS-NS查询

它工作在OSI模型的会话层。NetBIOS是一个API不是一个windows操作系统之间的协议。

计算机的NetBIOS名字跟电脑名字是一样的

LLMNR和NetBIOS-NS是什么

LLMNR (本地链路多播名称解析)和NetBIOS-NS(名称服务)是windows用于名称解析和沟通的两个组件。LLMNR是在windows vista之后版本中出现的,也算是NetBIOS-NS的延续。

LLMNR为使用IPv4、IPv6或者同时使用这两种地址的设备提供了点对点名称解析服务,可以让同一子网中的IPv4和IPv6设备不需要WINS或DNS服务器就可以解析对方的名称,而这个功能是WINS和DNS都无法完全提供的。虽然WINS可以为IPv4提供客户端-服务器以及点对点名称解析服务,不过并不支持IPv6地址。至于DNS,虽然支持IPv4和IPv6地址,但必须通过专门的服务器才能提供名称解析服务。LLMNR通过在DNS名称解析服务不可用时提供解析服务,弥补了DNS的不足。

LLMNR 协议经常在dns服务器解析不到的时候才会用到且使用的服务端口是5355 TCP/UDP,默认使用的多播服务IP地址是IPv4:224.0.0.252以及IPv6:FF02:0:0:0:0:0:1:3

比如:在内网中ping test.local,首先会去dns服务器查询,在dns服务器未找到的时候,这时查询请求就会重定向到LLMNR协议。

下图是查询时捕获的数据包:

2.jpg

而NetBIOS是本地网络的系统API,它有三种NetBIOS服务:

1 域名服务,使用137端口用于域名注册和域名解析

2 数据分发服务,使用138端口连接通信

3 会话服务,使用139端口面向连接通信

在dns查询失败后,LLMNR会调用NetBIOS,生成一个NetBIOS-NS数据包然后使用广播的方式发送出去。

3.jpg

这个看似没什么坏处的协议,我们可以利用其进行中间人攻击从而获取敏感数据,如用户名,hash等。

测试举例

4.jpg

实现方式

推荐工具:

1 https://github.com/SpiderLabs/Responder

2 msf -- https://www.rapid7.com/db/modules/auxiliary/spoof/llmnr/llmnr_response

3 https://github.com/byt3bl33d3r/MITMf

简要步骤

1 使用Responder指定网络接口并开始监听流量

5.jpg

2 我们尝试连接\filesrvr (一个不存在的主机名)

6.png

3 获取SMB-NTLMv2的哈希

7.jpg

4 我们已经知道了NTLMv2的哈希,这时我们既可以暴力破解也可以哈希传递来利用了。

利用WPAD

什么是WPAD

通常公司内网为了安全,不允许员工直接访问外网的服务,但是允许公司员工通过web代理访问外网资源,但是对于员工来说设置代理又是个麻烦事,所以通常公司使用wpad自动配置代理。

WPAD(web代理自动发现协议-Web Proxy Auto-Discovery Protocol),是客户端通过DHCP或DNS协议探测代理服务器配置脚本url的一种方式。当IE定位脚本并将脚本下载到本地之后,就可以通过该脚本来为不同的url选择相应的代理服务器。目前主流浏览器一般都支持WPAD。

WPAD是如何工作的

客户端想用访问wpad.dat配置代理,在DHCP服务器没有配置wpad的情况下,回去查找以wpad命名的服务器然后寻找对应的文件,然后进行以下步骤:

1 如果DHCP服务器配置了wpad,那么直接从DHCP服务器获取wpad.dat文件然后跳到第4步,否者执行下一步

2 向dns服务器发送请求查找wpad.test.local,然后获取代理配置文件,如果成功跳到第4步,否则执行下一步

3 发送LLMNR查询wpad.test.local,如果成功跳到第4步,不成功代理设置失败

4 下载wpad.dat并且配置

在第一步中使用dns污染攻击到第二步,第二步也可以使用dns污染攻击,这种攻击模式是可以通过配置网络设备去预防的。当通过LLMNR进行查询时,该请求将通过广播发送到网络中的每个客户端。 在这一点上,攻击者可以像wpad服务器那样将他的wpad.dat文件发送给客户端。

重要的是WPAD协议内置于Windows操作系统中。 此配置可以在Internet Explorer浏览器的LAN设置部分中看到。如下图;

8.png

利用WPAD

Responder是中间人攻击很好的实用工具,Responder提供假的WPAD服务器并响应客户端的WPAD名称解析。然后提供假的wpad.dat下载。Responder创建一个身份验证程序,并要求客户端填写域中的账户密码。这样就可以获取到员工的帐号密码。

下面是一个wpad中间人攻击的拓扑图:

9.png

利用Responder的步骤:

1 提供假的http服务器并等待帐号密码

10.png

2 Responder伪造的登录框

11.png

3 获取的明文如下

12.jpg

缓解WPAD攻击的方法

1 在DNS服务器上指定wpad服务器的地址

2 使用组策略设置禁止所有Internet浏览器上的“自动检测代理设置”。


本文由 myh0st 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

楼主残忍的关闭了评论