细思极恐的恶作剧——DHCP劫持
一.办公室恶作剧
小明平时用Linux系统办公,办公室内网都是自动获取IP地址,有一天小明早早完成当天的任务,就在网上看起了那些最爱的(哔~~)图片,于是发生了下面一幕:
莫名其妙断网也就算了,重启系统的 DHCP Client 看下详细信息竟然乱入了奇怪的字符串“’Hacked,hahhahaha’”,难道被人黑了自己电脑?作为一个技术宅,自己怎么可以这样任人摆布,简直叔可忍婶不可忍!
再仔细一看详细的输出信息,小明眼前一亮,发现了一个异常的IP地址:140.0.105.1,显示该主机为自己的系统分配了一个 192.168.2.23 的IP。小明很纳闷,自己的内网分明是 140 网段,怎么给分配了这么一个IP?而且内网的 DHCP 服务器 IP 不是 140.0.105.1 ,肯定是这台机器在搞鬼,DHCP 欺骗?
小明向网管咨询了一下 140.0.105.1 这个IP 是谁,才发现是 D 同学的机器,小明心里嘀咕着找到 D 同学问这是怎么回事儿,只见 D 同学一脸坏笑,小明这才发现自己被恶作剧耍了……小明怒不可遏,一股要炸掉地球的怒火吓得 D 同学赶紧求饶,不过小明同学更想知道这背后技术原理的细节,所以答应了 D 同学老实交代,坦白就会从宽。
到底怎么回事呢?重新请求分配 IP 地址就被黑掉,实在匪夷所思。D 同学耐心地为小明同学解释了一番……
二.DHCP欺骗
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一种在局域网中使用的网络协议,它使网络管理员能够集中管理和自动分配IP网络地址,使网络环境中的主机动态获得IP地址、网关地址、DNS服务器地址等信息,并能够提升地址的使用率。在IP网络中,每个连接Internet的设备都需要分配唯一的IP地址。DHCP使网络管理员能从中心结点监控和分配IP地址。当某台计算机移到网络中的其它位置时,能自动收到新的IP地址。
原来 DHCP 协议有这样一个特性:同一局域网中可以同时存在多个 DHCP 服务器,当一个客户端向局域网内广播 DHCP 数据包来请求分配IP地址时,多个收到客户端请求的 DHCP 服务器都会向该客户端发出分配 IP 地址的响应;当客户端接收到多个 DHCP 服务器发来的响应时,一般会采纳第一个收到的 DHCP 响应包中的 IP 地址。
经过 D 同学这么一点拨,小明立刻明白了怎么回事儿:原来 D 同学在局域网内把自己的 140.0.105.2 主机配置 DHCP 服务,作为一个“虚假 DHCP 服务器”与局域网内真实的 DHCP 服务器竞争;当小明的 DHCP 客户端启动时,会向局域网广播 DHCP 请求,D 同学的“虚假 DHCP 服务器”和局域网里真实的 DHCP 服务器都会收到小明的请求,并且都会向小明的 DHCP 客户端发送响应。如果 D 同学的 DHCP 响应最先到达小明那里,小明的 DHCP 客户端就会接受 D 同学的响应,按照 D 同学 DHCP 响应中的 IP 设置,设置自己的IP地址甚至 DNS 服务器地址。
不过小明还是不明白为怎么做到在响应中发送了一个异常字符串“Hacked,hahhahaha”。D 同学一脸诡笑说,这里其实把 DHCP 欺骗和前阵子风靡全球的 Bash-ShellShock 漏洞结合起来了,小明的 Linux 系统 Bash 版本较低,存在 Shellshock 漏洞,而系统自带的 DHCP 客户端实现的时候调用了 Shell 接口,可通过 Shellshock 漏洞远程执行任意命令……
听到这里小明同学惊出一身冷汗:“远程执行任意命令”。寻思幸亏 D 同学只是发了一串无害字符,如果被攻击者利用,后果不堪设想。
三.DHCP 中间人攻击
至此,小明同学拍拍手说,那我回去把 Bash 升级一下,补上 ShellShock 漏洞不就没事儿了?
D 同学诡异地微微一笑:“呵呵~骚年,图样图森破!”
说着 D 同学给小明看了一下刚才恶作剧时抓的数据包:
小明呆呆地看了一下这个数据包,猛地一拍大腿,大喝一声“卧槽!”
原来红框1中的数据就是 D 同学的“虚假 DHCP 服务器”给小明分配的IP地址(虽然这个IP地址并不属于小明及其所在的网段,这应该是一个失误),红框2中的数据给小明指定了一个虚假的网关地址,就是 D 同学的140.0.105.1,红框3中的数据还给小明制定一个虚假的 DNS 服务器地址 192.168.2.20!而最后两个框里的内容,就是 D 同学结合 DHCP 欺骗对 Shellshock 漏洞利用的数据了。
小明舒了口气,定下神来仔细斟酌:如果 D 同学不搞这么明目张胆的恶作剧,而是分配一个有效的同网段 IP 地址给自己,再把虚假的网关地址和 DNS 服务器地址给自己操纵了,自己的流量就完全被 D同学神不知鬼不觉的控制了!如果D同学还同时欺骗了真正的网关,就会劫持自己的流量对自己发动“中间人攻击”;即使D同学只把自己的 DNS 服务器给设置成恶意的地址,把自己“钓鱼”一番,自己也是掉进坑里都浑然不觉,果然,即使自己机器没有 Shellshock 漏洞,也一样被 D 同学玩的团团转……
幸好这只是一场恶作剧,细思极恐的恶作剧!
朋友,您是否也有与小明类似的经历,欢迎分享! |