ARP欺骗的实现

安全 黑客攻防
ARP欺骗是用处很大的一个技术,我们的路由器整天在欺骗我们的PC,没有这个欺骗我们就不能上网。

ARP欺骗是用处很大的一个技术,我们的路由器整天在欺骗我们的PC,没有这个欺骗我们就不能上网。

先稍微说下我们每天经历的ARP欺骗,比如早上开路由器开PC,我们上Google,PC在发送IP包之前(假设Google的IP为173.194.72.94,当然事先要先通过DNS服务器获取Google的IP,这个不多谈)要先这个IP包装配为以太网帧,所以PC必须要知道Google服务器端MAC,才能填充好以太网帧。要想知道Google的MAC地址,我们的PC就要发送ARP广播请求,跟你一个局域网里的所有以太网设备都能收到这个请求,你希望有人告诉自己与173.194.72.94匹配的MAC地址是多少,因为我们的PC跟Google的服务器不在一个局域网里,所以Google服务器没法收到你的ARP请求,但是如果这个局域网中有其他PC知道的话,它收到这个请求就会给你发送ARP应答告诉你,如果没人知道怎么办?只能靠骗了!这个骗子就是路由器,这也是它的一个职责。路由器用自己的MAC地址冒充Google服务器的MAC地址,给你发ARP应答糊弄你,你收到应答后喜得不行,然后把所有帧都发给了路由器。下面我们就看路由器时怎么欺骗你的。

路由器能捕捉到这个局域网里广播帧,假设路由器捕捉到的PC的ARP广播帧写成十六进制为:

[plain]

FFFFFFFFFFFFCE1A8206DA0708060001080006040001CE1A820C6B07C0A8127A000000000000C0A8127B00000B00482A00000D00000060FB5EFB61FB

按以太网帧结构把这个帧分解后为:

[cpp]

FFFFFFFFFFFF---目的MAC,因为是广播帧,所以MAC地址全为1

CE1A8206DA07---源MAC,这里就是你PC的MAC

0806—---帧类型(以太网帧都是这个数)

0001----硬件类型(以太网帧都是这个数)

0800----协议类型(以太网帧都是这个数)

06----硬件地址长度(以太网帧都是这个数)

04----协议地址长度(以太网帧都是这个数)

0001—---操作字段(0001为ARP请求,0002为ARP应答)

CE1A820C6B07---源mac,还是你的PC的MAC地址

C0A8127A-------源IP地址,就是你的PC的ip

000000000000---目的mac,因为不知道,所以把这6个字节胡乱填充一下就好

ADC2485E-------目的ip,就是Google的IP

00000B00482A00000D00000060FB5EFB61FB---这18个字节都是填充,就是为了凑够以太网帧最小长度60字节

然后路由器收到PC的ARP广播请求后就给你发送应答,这个应答帧为:

[plain]

CE1A8206DA07000A3501FA1708060001080006040002000A3501FA17ADC2485ECE1A8206DA07C0A8127A00000B00482A00000D00000060FB5EFB61FB

按照以太网帧格式拆分后为:

[cpp]

CE1A8206DA07---目的MAC,ARP应答不是广播帧,它直接把PC的MAC地址当成目的MAC

000A3501FA17---源MAC,这个是冒牌的,值本来该是Google服务器的MAC地址,但是这里路由器用自己的MAC来冒充

0806—---帧类型(以太网帧都是这个数)

0001----硬件类型(以太网帧都是这个数)

0800----协议类型(以太网帧都是这个数)

06----硬件地址长度(以太网帧都是这个数)

04----协议地址长度(以太网帧都是这个数)

0002—---操作字段(1为ARP请求,2为ARP应答)

000A3501FA17---源MAC

ADC2485E-------源IP地址,这个必须是ARP请求中的那个目的IP,也就是Google的IP。这个是重中之重,我的代码在这犯过错误,如果PC收到应答后检查这个IP发现与自己请求的目的IP不一样,心说,莫名其妙,我什么时候请求这个IP的MAC地址了?滚!它就会果断抛弃这个帧,然后继续请求,谁知道Google的MAC地址呀!!!

CE1A8206DA07---目的mac也就是PC的MAC地址

C0A8127A-------目的ip,就是PC的IP

00000B00482A00000D00000060FB5EFB61FB---这18个字节都是填充,为了凑够以太网帧最小长度60字节,这个应答完全照抄了请求的填充,这些数都无所谓。

PC在收到这个帧后,就真以为那个MAC地址是Google的,然后就把帧一股脑全发给路由器了。之后你就可以上Google了。

责任编辑:蓝雨泪 来源: 红黑联盟
相关推荐

2013-09-17 09:08:07

ARP欺骗IP

2019-10-31 08:43:43

ICMPARP协议ARP欺骗

2010-07-06 16:22:01

2010-09-07 10:44:14

2010-09-16 15:39:18

2013-04-01 10:12:39

2011-04-06 10:23:46

2009-07-15 20:44:17

2010-06-12 17:33:31

2011-04-06 10:03:16

2009-12-17 10:14:14

2009-01-11 10:30:00

2010-06-21 17:51:53

Linux Arp命令

2010-09-29 10:21:50

2009-07-13 11:47:58

2010-08-20 10:41:43

2009-06-30 18:53:14

2010-01-11 10:46:31

2010-09-16 16:06:37

2009-12-25 15:38:46

点赞
收藏

51CTO技术栈公众号