找回密码
 开放注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

搜索
查看: 1131|回复: 1

ARP欺骗的实现

[复制链接]
已绑定手机

192

主题

7146

回帖

1401

牛毛

VIP推广永久卡

http://www.gxcpcb.com 硅芯创科技

积分
1422
QQ
发表于 2012-12-14 14:21:50 | 显示全部楼层 来自 广东省深圳市
让我多了解一些知识
已绑定手机

22

主题

17

回帖

120

牛毛

一级牛人

积分
120
QQ
 楼主| 发表于 2012-12-13 16:20:52 | 显示全部楼层 |阅读模式 来自 陕西省西安市
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]
FFFFFFFFFFFFCE1A8206DA070****0001CE1A820C6B07C0A8127A000****0000C0A8127B00***00B00***82A00***00D000****0060FB5EFB61FB
按以太网帧结构把这个帧分解后为:
[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
000****0000---目的mac,因为不知道,所以把这6个字节胡乱填充一下就好
ADC2485E-------目的ip,就是Google的IP
00***00B00***82A00***00D000****0060FB5EFB61FB---这18个字节都是填充,就是为了凑够以太网帧最小长度60字节

然后路由器收到PC的ARP广播请求后就给你发送应答,这个应答帧为:
[plain]
CE1A8206DA07***00A3501FA170****2000A3501FA17ADC2485ECE1A8206DA07C0A8127A00***00B00***82A00***00D000****0060FB5EFB61FB
按照以太网帧格式拆分后为:
[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
00***00B00***82A00***00D000****0060FB5EFB61FB---这18个字节都是填充,为了凑够以太网帧最小长度60字节,这个应答完全照抄了请求的填充,这些数都无所谓。

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

您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

帮助|Archiver|小黑屋|通信管理局专项备案号:[2008]238号|NB5社区 ( 皖ICP备08004151号;皖公网安备34010402700514号 )

GMT+8, 2025-4-29 00:20 , Processed in 0.222096 second(s), 39 queries .

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表