我是怎么莫名地劫持了自己的 DHCP 的


Docker 技术鼻祖系列

1. DNS 抢答

我们都知道,传统的 DNS 走的是 UDP 协议,在大陆的网络环境下,DNS 请求是可以被抢答的,不信你看:

# 美西的机器
root@pf:~# dig www.bennythink.com +short
104.27.167.30
104.27.166.30

# 大陆的机器
➜  ~ dig www.bennythink.com +short
67.15.129.210

天知道国内这个这是个什么 IP!

DNS 抢答有不少优点,比如:

  • 对于国内用户而言,DNS 请求不再需要一层层递归到原始 NS 服务器了

  • 整个大陆有超多 POP 为对应的请求响应,缩小了延迟

  • 减少了 NS 服务器的压力和请求次数

唯一的问题就是:

  • 它解析出来的 IP 是不能用的

2. DHCP

对于 DHCP 的简要原理,在之前的博文(我们的 IP 是怎么来的——从本地路由 DHCP 到 IANA 的 “公网” IP 分配[1])中我们知道,和 DNS 类似,它也是一个走 UDP 的,随缘返回的一个协议,但是和 DNS 不同,大部分的 DHCP 请求都是在一些内网中,由于路由器广播域的限制,DHCP 请求一般不会被漏到公网中。

DHCP Error

前段时间在配置一个网络的时候,插上自己电脑的网线发现 IP 不再是熟悉的 192.168.1.xxx ,而变成了 10.19.89.xxx,“但是依然可以正常上网”。

这个时候第一反应是访问一下之前的网关 192.168.1.1,发现能 ping 通,也可以正常地访问到对应的配置页面。

这个时候问题就非常奇怪了,除了在寝室内有配置过这个段以外,应该不会在什么地方配置这么个段吧…

思前想后终于想到了在某个图形化的界面上配置过这么个 IP 段:

然后突然想到了角落的一台 NUC,那还是几天之间为了保证国内其他地区用户可以通过它连接到国内大内网中而随意开的一个 SoftEther VPN Server,最初尝试失败之后就被搁置了,没想到它的 SecureNAT 功能在本地内网内成为了一个 DHCP 服务器继续发光发热。

DHCP Packet

在大概确认了来源之后,就开始打开 Wireshark 开始抓包了,很快就可以看到又如下的包:

从上面的包中我们可以看到,我的电脑先是对外发了一个 DHCP Discovery 的广播包,然后有两个 DHCP 服务器给我们客户端发了 Offer ,分别是 192.168.1.1 和 10.19.89.1,且后者先给的 Offer,于是我们的客户端接受了这个 10.19.89.1 的 Offer。

由于没有配置 IP 地址、网关、DNS 等,在网络上是寸步难行的,因此首先需要从 DHCP 那获得这些。然而,既然连 IP 地址都没有,那又是如何通信的?显然,只能发到广播地址(255.255.255.255)上,而自己则暂时使用无效的 IP 地址(0.0.0.0)。(事实上,链路层的通信只要有 MAC 地址就行,IP 地址已属于网络层了,但 DHCP 由于某些特殊需要使用的是 UDP 协议)

因为是发往广播,内网环境里的所有用户都能听到。如果存在多个 DHCP 服务器,则分别予以回复;用户则选择最先收到的。由于规则是如此简单,以至于用户没有选择的余地。

来源:https://www.jianshu.com/p/aed707f183c5

所以之前的问题也就非常明显了,由于自己的配置失误,被内网另一个 DHCP 服务器抢答了 DHCP 请求(连网关都抢过去了),所有的流量都走了那台 NUC,然后那台 NUC 再向上转发了对应的流量。

这个时候另一个问题出现了,为什么同在 192.168.1.0/24 网段下的 NUC 可以更快地发出 DHCP Offer 呢?

所以在一个内网下,如果想要劫持原有用户流量我们可以走 ARP 欺骗的路子,如果希望劫持新用户的流量,还可以考虑一下 DHCP 抢答的方式(当然,成功率随缘),这个时候回头来看一下在学校里面非常常用的 EtterCap 的 DHCP Spoof 功能…

感慨万千…

参考资料

[1]

我们的 IP 是怎么来的——从本地路由 DHCP 到 IANA 的 “公网” IP 分配: https://nova.moe/how-the-ips-are-assigned/

原文链接:https://nova.moe/multiple-dhcp-answer/


你可能还喜欢

点击下方图片即可阅读

Awesome Kubernetes 系列:第一期

云原生是一种信仰 ????

码关注公众号

后台回复◉k8s◉获取史上最方便快捷的 Kubernetes 高可用部署工具,只需一条命令,连 ssh 都不需要!

点击 "阅读原文" 获取更好的阅读体验!

❤️给个「在看」,是对我最大的支持❤️
网络安全DHCP实验主要是为了测试和评估机器或网络DHCP服务的安全性。DHCP是动态主机配置协议,用于自动为网络中的设备分配IP地址和其他相关配置信息。然而,由于其工作原理的特殊性,DHCP协议也存在一些安全风险,例如IP冲突、IP盗用、DHCP劫持等。 在进行DHCP实验之前,首先需要建立一个实验环境,包括一台DHCP服务器和多台需要连接到网络的客户端设备。实验中可以使用虚拟机软件搭建实验环境,如VMware或VirtualBox。 DHCP安全实验可以从以下几个方面展开。首先,可以测试DHCP服务器的容错性,即当服务器出现故障时,是否能够自动切换到其他备用服务器,以确保网络的连通性。其次,可以测试DHCP服务器的鉴权机制,即是否能够对接入网络的设备进行身份验证,并拒绝非授权设备的连接请求。 另外,还可以进行DHCP DOS(拒绝服务)攻击实验,即通过发送大量的欺骗性DHCP请求,来占用服务器资源,从而导致合法用户无法获取到IP地址和其他配置信息。 此外,还可以对DHCP服务器进行安全策略配置,限制并监控DHCP报文的传输,以防止非法的DHCP劫持。同时,还可以通过对客户端设备的网络设置进行分析,发现和阻止未经授权的DHCP服务器的出现。 最后,对实验中发现的问题和安全漏洞进行总结和报告,以提出相应的改进建议和安全措施。 综上所述,网络安全DHCP实验可以全面评估和测试DHCP服务的安全性,帮助提升网络的安全性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值