2012年(47)
分类: 网络与安全
2012-05-21 11:13:11
结构e t h e r _ h e a d e r定义了以太网帧首部;结构a r p h d r定义了其后的5个字段,其信息 定义常量 #define EPT_IP 0x0800 /* type: IP */ 定义以太网首部 定义以太网arp字段 unsigned char arp_sha[6]; /* sender hardware address */ 定义整个arp报文包,总长度42字节 实例分析下,先看一个请求包 我把原始数据考了过来 0000 ff ff ff ff ff ff 00 0c f1 d4 d9 60 08 06 00 01 ...........`.... 紧跟着的6个字节是以太网源地址就是发送者的mac地址 00 0c f1 d4 d9 60 是我的mac地址 真类型占两个字节 所以是 08 06 到这里以太网头就完了,08 06指的是后面的数据是属于arp包的 接着分析arp包。头两个字节是硬件类型 00 01 接着两个字节是协议类型arp使用的是ip协议代号08 00 硬件地址长度协议地址长度分别是6和4.这与arp报文格式是对应的(更详细信息可以参考TCP-IP详解卷1) 后面的2个字节op指的是这是一个请求包还是应答包,分别对应的值是0x0001和0x0002,原始数据里是 00 01 所以这是一个请求包,然后6个字节又是发送者mac地址00 0c f1 d4 d9 60 ,后面4个字节是发送者ip 地址c0 a8 01 0f ,换成比较容易理解的10进制格式就是192 168 1 15,这是我的ip,然后的6个字节留空00 00 00 00 00 00 在arp请求包里也可以是其他数据 因为等会 ip地址为c0 a8 01 02 (192.168.1.2)会把自己的mac地址填充那6个字节,
然后在把这个包发送出去,这样一次来回就可以让两台终端互相知道对方的ip和mac。 接着在看下应答数据包 头6个字节是本地的mac地址(00 0c f1 d4 d9 60)。 接着的6个字节就是对方的mac地址(00 40 d0 92 7c 1f),这样就知道了对方地址。加进缓存表 仔细看可以发现应答包比请求包对了18个字节,应答包有60个字节,后面的18个字节是填充字节,构造应答包是不用管,只是把arp包的op(操作类型选择)填充0x0002就可以了 未完待续...... ...... 继续分析下arp欺骗,这几天的研究成果。 先构造下网络环境 网关:192.168.1.1 mac: aa aa aa aa aa arp欺骗有3种基本方式 1. 主机C冒充网关欺骗主机B, |
ARP数据包的各种类型
总的说来,ARP数据包分两种,请求和应答。
以下是一些正常的ARP数据包。
1,下面是一个ARP请求包:
以太网 - II[0/14]
目标地址: FF:FF:FF:FF:FF:FF[0/6]
源地址: 00:13:D4:70:ED:63[6/6]
协议类型: 0x0806[12/2]
ARP - 地址解析协议[14/28]
硬件类型: 1(以太网)[14/2]
协议类型: 0x0800[16/2]
硬件地址长度: 6[18/1]
协议地址长度: 4[19/1]
操作类型: 1(ARP 请求)[20/2]
源物理地址: 00:13:D4:70:ED:63[22/6]
源IP地址: 192.168.0.200[28/4]
目标物理地址: 00:00:00:00:00:00[32/6]
目标IP地址: 192.168.0.222[38/4]
额外数据:[42/18]
字节数: 18 bytes[42/18]
FCS - 帧校验序列:
FCS:0x1093A7B1(计算出的)
意思是:200要和222通信前就要先知道222的MAC地址。问谁是222?请告诉200.请注意以太网的地址是FF:FF:FF:FF:FF:FF,ARP协议中的目标物理地址是00:00:00:00:00:00
2,下面是一个ARP应答包
以太网 - II[0/14]
目标地址: 00:13:D4:70:ED:63[0/6]
源地址: 00:19:21:CA:B7:08[6/6]
协议类型: 0x0806[12/2]
ARP - 地址解析协议[14/28]
硬件类型: 1(以太网)[14/2]
协议类型: 0x0800[16/2]
硬件地址长度: 6[18/1]
协议地址长度: 4[19/1]
操作类型: 2 (ARP 响应)[20/2]
源物理地址: 00:19:21:CA:B7:08[22/6]
源IP地址: 192.168.0.222[28/4]
目标物理地址: 00:13:D4:70:ED:63[32/6]
目标IP地址: 192.168.0.200[38/4]
额外数据:[42/18]
字节数: 18
FCS - 帧校验序列:
FCS:0x01C929A9(计算出的)
意思是:222应答200.告诉200我的MAC地址是00:19:21:CA:B7:08。这样在双方的ARP缓存表中就有了对方的地址。他们就可以正常通信了。
这两种数据包在局域网中很普遍,可以是网关和其它机器发起请求,本机应答,也可以是本机向网关或别的机器发起请求,网关或别的机器应答。
3,下面这个ARP请求包,目的是为了检查局域网中是否与自己的IP有冲突。,如果网内与自己相同的IP,就会发出应答包。就是我们常看到的报IP冲突。(注意源IP和目的IP相同)
以太网 - II[0/14]
目标地址: FF:FF:FF:FF:FF:FF[0/6]
源地址: 00:13:D3:B8:14:2D[6/6]
协议类型: 0x0806[12/2]
ARP - 地址解析协议[14/28]
硬件类型: 1(以太网)[14/2]
协议类型: 0x0800[16/2]
硬件地址长度: 6[18/1]
协议地址长度: 4[19/1]
操作类型: 1(ARP 请求)[20/2]
源物理地址: 00:13:D3:B8:14:2D[22/6]
源IP地址: 192.168.0.169[28/4]
目标物理地址: 00:00:00:00:00:00[32/6]
目标IP地址: 192.168.0.169[38/4]
额外数据:[42/18]
字节数: 18 bytes[42/18]
FCS - 帧校验序列:
FCS:0x9A3BEC05(计算出的)
4,下面是一个网关或其它机器(装了特定软件)发出的一个广播包,目的是广播正确的网关地址。当然网关要有此功能才行,也是很多防ARP欺骗软件一个主要功能。注意数据包中的目标IP和目标物理地址格式。
以太网 - II[0/14]
目标地址: FF:FF:FF:FF:FF:FF[0/6]
源地址: 00:19:E0:25:77:FF[6/6]
协议类型: 0x0806[12/2]
ARP - 地址解析协议[14/28]
硬件类型: 1(以太网)[14/2]
协议类型: 0x0800[16/2]
硬件地址长度: 6[18/1]
协议地址长度: 4[19/1]
操作类型 2(ARP 响应)[20/2]
源物理地址: 00:E0:FC:48:91:54[22/6]
源IP地址: 192.168.0.1[28/4]
目标物理地址: 01:01:01:01:01:01[32/6]
目标IP地址: 1.1.1.1[38/4]
额外数据:[42/2]
字节数: 2 bytes[42/2]
FCS - 帧校验序列:
FCS:0xCA212540(计算出的)
以下是一些不正常的ARP数据包。
不正常的ARP数据包总有一些特点,就是不真实性。有时是以太网地址与下面的ARP协议中的地址不一样,有时是ARP协议中的IP地址或MAC地址是假的。以下红色部分为假地址。
1,下面是让一个机器产生IP冲突的ARP应答包。(注意源和目标的IP相同,而源和目标的MAC不同)
以太网 - II[0/14]
目标地址: 00:13:D4:70:ED:63[0/6]
源地址: AD:E8:48:02:6D:14[6/6]
协议类型: 0x0806[12/2]
ARP - 地址解析协议[14/28]
硬件类型: 1(以太网)[14/2]
协议类型: 0x0800[16/2]
硬件地址长度: 6[18/1]
协议地址长度: 4[19/1]
操作类型: 2(ARP 响应)[20/2]
源物理地址: AD:E8:48:02:6D:14[22/6]
源IP地址: 192.168.0.200[28/4]
目标物理地址: 00:13:D4:70:ED:63[32/6]
目标IP地址: 192.168.0.200[38/4]
额外数据:[42/18]
字节数: 18 bytes[42/18]
FCS - 帧校验序列:
FCS:0x232FBD99(计算出的)
2,这是一个让200不能和156不能通信的ARP应答包,(注意200的MAC地址是假的)
以太网 - II[0/14]
目标地址: 00:14:2A:77:21:1C[0/6]
源地址: 07:46:31:01:AE:98[6/6]
协议类型: 0x0806[12/2]
ARP - 地址解析协议[14/28]
硬件类型: 1(以太网)[14/2]
协议类型: 0x0800[16/2]
硬件地址长度: 6[18/1]
协议地址长度: 4[19/1]
操作类型: 2(ARP 响应)[20/2]
源物理地址: 07:46:31:01:AE:98[22/6]
源IP地址: 192.168.0.200[28/4]
目标物理地址: 00:14:2A:77:21:1C[32/6]
目标IP地址: 192.168.0.156[38/4]
额外数据:[42/18]
字节数: 18 bytes[42/18]
FCS - 帧校验序列:
FCS:0x6016DF8D(计算出的)
3,下面是一个让200不能上网的ARP应答包,它告诉了200一个错误的网关地址。
以太网 - II[0/14]
目标地址: 00:13:D4:70:ED:63[0/6]
源地址: 9E:87:A4:0A:30:5F[6/6]
协议类型: 0x0806[12/2]
ARP - 地址解析协议[14/28]
硬件类型: 1(以太网)[14/2]
协议类型: 0x0800[16/2]
硬件地址长度: 6[18/1]
协议地址长度: 4[19/1]
操作类型: 2(ARP 响应)[20/2]
源物理地址: 9E:87:A4:0A:30:5F[22/6](假的)
源IP地址: 192.168.0.1[28/4]
目标物理地址: 00:13:D4:70:ED:63[32/6]
目标IP地址: 192.168.0.200[38/4]
额外数据:[42/18]
字节数: 18 bytes[42/18]
FCS - 帧校验序列:
FCS:0x2DFE1259(计算出的)
4,下面也是一个让200不能上网ARP应答包,它告诉网关(0.1)一个200的错误MAC。
以太网 - II[0/14]
目标地址: 9E:87:A4:0A:30:5F[0/6]
源地址: 00:13:D4:70:ED:66[6/6]
协议类型: 0x0806[12/2]
ARP - 地址解析协议[14/28]
硬件类型: 1(以太网)[14/2]
协议类型: 0x0800[16/2]
硬件地址长度: 6[18/1]
协议地址长度: 4[19/1]
操作类型: 2(ARP 响应)[20/2]
源物理地址: 00:13:D4:70:ED:66 [22/6](假的)
源IP地址: 192.168.0.200[28/4]
目标物理地址: 9E:87:A4:0A:30:5F [32/6](正确的)
目标IP地址: 192.168.0.1[38/4]
额外数据:[42/18]
字节数: 18 bytes[42/18]
FCS - 帧校验序列:
FCS:0x2DFE1259(计算出的)
要识别不正常的ARP数据包,掌握正确的IP和MAC是很必要的。