ARP数据包构造
构造ARP数据包
ARP数据包默认由操作系统自动发送。用户可以自己构造ARP包,向目标主机发送请求,从而获取目标主机的MAC地址。这时,可以使用netwox工具提供的编号为33的模块。
(1)查看netwox所在主机默认的ARP包的相关信息
执行命令如下:
C:\Program Files (x86)\netw\netw539>netwox 33
Ethernet________________________________________________________.
| 50:E5:49:EB:46:8D->00:08:09:0A:0B:0C type:0x0806 |
|_______________________________________________________________ |
ARP Request_____________________________________________________.
| this address : 50:E5:49:EB:46:8D 0.0.0.0 |
| asks : 00:00:00:00:00:00 0.0.0.0 |
|_______________________________________________________________ |
上述输出信息中,Ethernet部分为以太网信息。ARP Request部分为ARP请求。this address表示源地址信息。其中,50:E5:49:EB:46:8D为源主机MAC地址;asks为目标地址信息,这里为ARP请求包。由于还没有构造请求,因此地址为0。
(2)构造ARP请求包,请求目标主机192.168.12.102
执行命令如下:
C:\Program Files (x86)\netw\netw539>netwox 33
Ethernet________________________________________________________.
| 50:E5:49:EB:46:8D->00:08:09:0A:0B:0C type:0x0806 |
|_______________________________________________________________ |
ARP Request_____________________________________________________.
| this address : 50:E5:49:EB:46:8D 0.0.0.0 |
| asks : 00:00:00:00:00:00 192.168.12.102 |
|_______________________________________________________________ |
此时,ARP Request部分asks中的00:00:00:00:00:00为目标MAC地址,因为正在请求目标主机的MAC地址,所以为00:00:00:00:00:00。192.168.12.102为目标主机的IP地址,表示向该主机进行ARP请求。
(3)验证构造的ARP请求包,使用Wireshark进行抓包
如图所示,其中,第一个数据包为构造的ARP请求包。在Address Resolution Protocol(request)部分中,Opcode的值为request(1),表示该数据包为ARP请求包;Target MAC address的值为00:00:00_00:00:00(00:00:00:00:00:00),表示此时没有获取目标MAC地址;Target IP address的值192.168.12.102,表示请求主机的IP地址。
(4)如果请求的目标主机存在,将成功返回ARP响应数据包
如上图所示。其中,第2个数据包为ARP响应数据包。在Address Resolution Protocol(reply)部分中,Opcode的值为reply(2),表示该数据包为ARP响应包;Sender IP address的值为192.168.12.102,表示此时源主机为目标主机;Sender MAC address的值为Giga-Byt_17:cf:21(50:e5:49:17:cf:21),表示50:e5:49:17:cf:21为目标主机192.168.12.102的MAC地址。
构造免费ARP数据包
用户可以使用netwox工具中编号为33的模块构造免费的ARP数据包。执行命令如下:
(1)构造免费的ARP数据包,设置源IP地址和目标IP地址为192.168.59.132,执行命令如下:
C:\Program Files (x86)\netw\netw539>netwox 33 -g 192.168.59.132 -i 192.168.59.132
Ethernet________________________________________________________.
| F8:94:C2:D8:08:28->00:08:09:0A:0B:0C type:0x0806 |
|_______________________________________________________________|
ARP Request_____________________________________________________.
| this address : F8:94:C2:D8:08:28 192.168.59.132 |
| asks : 00:00:00:00:00:00 192.168.59.132 |
|_______________________________________________________________|
(2)使用Wireshark进行抓包,验证构造的免费ARP数据包,如下图所示。
其中,第一个数据包的Info列显示Gratuitous ARP for 192.168.59.132(Request),表示该数据包为构造的免费ARP数据包。在Address Resolution Protocol(request/gratuitous ARP)部分中,Sender IP address和Target IP address的值为同一个IP地址192.168.59.132。
伪造ARP响应
正常情况下,向目标主机发送ARP请求,如果主机存在,将会得到一个ARP响应;如果主机不存在,将不会得到ARP响应。伪造ARP响应是指伪造一个不存在的主机的ARP响应。例如,黑客在攻击局域网中的主机时,会扫描局域网中的所有主机,然后对发现的主机实施攻击。如果伪造了ARP响应包,会误导黑客以为扫描到的主机是存在的,从而起到了迷惑作用。伪造ARP响应需要使用netwox工具中编号为73的模块。
【例】以主机A为基础实施伪造ARP响应,伪造模拟主机192.168.59.136,其MAC地址为A1:B2:C3:D4:E5:F6。已知局域网中另一主机为主机B,其IP地址为192.168.59.135。具体步骤如下:
(1)在模拟之前,验证局域网中是否存在主机192.168.59.136。在主机B上使用arping命令ping该主机。执行命令如下:
root@dev:~# arping 192.168.59.136
ARPING 192.168.59.136 from 192.168.59.135 eth0
没有任何输出信息,表示主机192.168.59.136不存在。
(2)在主机A上伪造ARP响应,创建虚拟主机192.168.59.136,设置其MAC地址为A1:B2:C3:D4:E5:F6。执行命令如下:
root@dev:~# netwox 73 -i 192.168.59.136 -e A1:B2:C3:D4:E5:F6
执行命令后没有任何输出信息,但是成功创建模拟的主机192.168.59.136。
(3)再次在主机B上使用arping命令ping该主机。执行命令如下:
root@dev:~# arping 192.168.59.136
ARPING 192.168.59.136 from 192.168.59.135 eth0
Unicast reply from 192.168.59.136 [A1:B2:C3:D4:E5:F6] 56.346ms
Unicast reply from 192.168.59.136 [A1:B2:C3:D4:E5:F6] 35.184ms
Unicast reply from 192.168.59.136 [A1:B2:C3:D4:E5:F6] 50.823ms
Unicast reply from 192.168.59.136 [A1:B2:C3:D4:E5:F6] 46.639ms
以上输出信息表示已经成功向主机192.168.59.136发出arping命令,并得到了对应的MAC地址A1:B2:C3:D4:E5:F6,表示该主机是存在的。
(4)为了验证整个过程,捕获数据包进行查看,如下图所示。
其中,第1个数据包为ARP请求包,可以看到源IP地址为192.168.59.135(主机B),目标IP地址为192.168.59.136(虚拟主机)。这说明的确向虚拟主机发送了ARP请求。
(5)查看对应的响应包,如下图所示。
其中,第2个数据包为ARP响应包,可以看到源IP地址为192.168.59.136(虚拟主机的),目标主机的IP地址为192.168.59.135(主机B),源MAC地址为a1:b2:c3:d4:e5:f6(假的),目标MAC地址为00:0c:29:ca:e4:66(主机B)。这说明虚拟主机成功给主机B返回了响应。
周期性发送ARP响应包
正常情况下,ARP响应是基于ARP请求的。只有发送了ARP请求才会得到ARP响应,并且发送一次ARP请求只会得到一个响应。周期性发送ARP响应包,是指在没有ARP请求的情况下,以广播的形式多次发送ARP响应。netwox工具提供编号为80的模块,可以模拟计算机定期发送ARP数据包,从而更新其他主机的ARP缓存表。在ARP攻击中,该功能可以达到欺骗的目的,使受害者将数据包发送到错误的MAC地址主机(攻击主机),从而导致数据包被监听。
【例】已知netwox所在主机为主机A,主机B的IP地址为192.168.59.135。使用netwox工具发送ARP响应包,以更换ARP缓存表中主机的MAC地址信息。
(1)在发送ARP响应之前,在主机B上查看主机ARP缓存表信息,执行命令如下:
root@dev:~# arp -a
localhost (192.168.59.136) at 00:0c:29:bc:a4:89 [ether] on eth0
localhost (192.168.59.132) at 00:0c:29:aa:e0:27 [ether] on eth0
localhost (192.168.59.125) at 00:0c:29:ca:e4:99 [ether] on eth0
localhost (192.168.59.160) at a1:b2:c3:d4:e5:f6 [ether] on eth0
localhost (192.168.59.254) at 00:50:56:f8:bb:0f [ether] on eth0
localhost (192.168.59.2) at 00:50:56:ea:f3:a1 [ether] on eth0
上述输出信息中,主机192.168.59.136的MAC地址为00:0c:29:bc:a4:89。
(2)创建虚拟主机192.168.59.136,并向该主机发送ARP响应包,设置MAC地址为00:01:01:21:22:23,执行命令如下:
root@dev:~# netwox 80 -i 192.168.59.136 -e 00:01:01:21:22:23
执行命令后没有任何输出信息。
(3)此时再次在主机B上查看主机ARP缓存表信息,执行命令如下:
root@dev:~# arp -a
localhost (192.168.59.136) at 00:01:01:21:22:23 [ether] on eth0
localhost (192.168.59.132) at 00:0c:29:aa:e0:27 [ether] on eth0
localhost (192.168.59.125) at 00:0c:29:ca:e4:99 [ether] on eth0
localhost (192.168.59.160) at a1:b2:c3:d4:e5:f6 [ether] on eth0
localhost (192.168.59.254) at 00:50:56:f8:bb:0f [ether] on eth0
localhost (192.168.59.2) at 00:50:56:ea:f3:a1 [ether] on eth0
上述输出信息中,主机192.168.59.136的MAC地址由原来的00:0c:29:bc:a4:89变为了00:01:01:21:22:23。
(4)为了验证发送的ARP响应包,捕获数据包进行查看,如下图所示。其中,第27~33个数据包为重复发送的ARP响应包。