伪造ICMP数据包的Ethernet层

用户不仅可以对 ICMP 数据包的 IPv4 层进行伪造,还可以对 ICMP 数据包的 Ehternet 层进行伪造。这时,需要使用 netwox 工具中编号为 37 的模块。该模块可以伪造 ICMP 数据包的 MAC 地址信息。

【实例】基于主机 192.168.59.131,伪造 ICMP 数据包的 Ethernet 层信息。

1) 查看 ICMP 包的 Ehternet 默认值,执行命令如下:

root@daxueba:~# netwox 37

输出信息如下:
Ethernet________________________________________________________.
| 00:0C:29:AA:E0:27->00:08:09:0A:0B:0C type:0x0800                    |
|_______________________________________________________________      |
IP______________________________________________________________.
|version|  ihl  |      tos      |            totlen                   |
|___4___|___5___|____0x00=0_____|___________0x001C=28___________      |
|              id                     |r|D|M|       offsetfrag        |
|__________0x18A0=6304__________|0|0|0|________0x0000=0_________      |
|      ttl      |   protocol    |           checksum                  |
|____0x00=0_____|____0x01=1_____|____________0x9A08_____________      |
|                            source                                   |
|________________________192.168.59.131_________________________      |
|                          destination                                |
|____________________________5.6.7.8____________________________      |
ICMP4_echo reply________________________________________________.
|     type      |     code      |           checksum                  |
|____0x00=0_____|____0x00=0_____|_________0xFFFF=65535__________      |
|              id               |            seqnum                   |
|___________0x0000=0____________|___________0x0000=0____________      |
| data:                                                               |
|_______________________________________________________________      |
在以上输出信息中,第一行 Ethernet 表示 ICMP 数据包是基于以太网的数据包。

默认源 MAC地址为 00:0C:29:AA:E0:27,目标 MAC 地址为 00:08:09:0A:0B:0C。

2) 伪造源 MAC 地址为 11:22:33:AA:BB:CC,指定目标 IP 地址为 192.168.59.135,MAC 地址为 00:0C:29:CA:E4:66。执行命令如下:

root@daxueba:~# netwox 37 -a 11:22:33:aa:bb:cc -m 192.168.59.135 -b 00:0c:29:ca:e4:66 -o 8

输出信息如下:
Ethernet________________________________________________________.
| 11:22:33:AA:BB:CC->00:0C:29:CA:E4:66 type:0x0800                    |
|_______________________________________________________________      |
IP______________________________________________________________.
|version|  ihl  |      tos      |            totlen                   |
|___4___|___5___|____0x00=0_____|___________0x001C=28___________      |
|              id                     |r|D|M|       offsetfrag        |
|__________0x246B=9323__________|0|0|0|________0x0000=0________       |
|      ttl      |   protocol    |           checksum                  |
|____0x00=0_____|____0x01=1_____|____________0x9E08_____________      |
|                            source                                   |
|________________________192.168.59.131_________________________      |
|                          destination                                |
|________________________192.168.59.135_________________________      |
ICMP4_echo reply________________________________________________.
|     type      |     code      |           checksum                  |
|____0x00=0_____|____0x00=0_____|_________0xFFFF=65535__________      |
|              id               |            seqnum                   |
|___________0x0000=0____________|___________0x0000=0____________      |
| data:                                                               |
|_______________________________________________________________      |
从 Ethernet 部分可以看到,源 MAC 地址由原来的 00:0C:29:AA:E0:27 变为了 11:22:33:aa:bb:cc;目标 MAC 地址由原来的 00:08:09:0A:0B:0C 变为了 00:0C:29:CA:E4:66;而 IP 部分 Source 的值保留原来的值。

3) 为了验证构建的 ICMP 数据包,可以捕获数据包查看,如图所示。

从第 6 个数据包的 Ethernet II 部分可以看到,Source 的值为 11:22:33:aa:bb:cc,是伪造的 MAC 地址。

在 Internet Control Message Protocol 部分中,Type 值为 8,Code 值为 0,表示该数据包为 ICMP 请求包。

4) 选择第7个数据包进行查看,如图所示。

从该数据包的 Ethernet II 部分可以看到,源 MAC 地址为目标主机的 MAC 地址 00:0c:29:ca:e4:66,目标 MAC 地址为实施主机的 MAC 地址 00:0c:29:aa:e0:27。这表示目标主机成功给伪造 MAC 地址的主机进行了回复。

在 Internet Control Message Protocol 部分中,Type 值为 0,Code 值为 0,表示该数据包为 ICMP 响应包。