【1.4.6】使用netwox构造IP数据包
为了更好地掌握 IP 协议,下面使用 netwox 工具提供的模块来构建各种 IP 数据包。
一、构建 IP 数据包
netwox 工具提供编号为 38 的模块,用来构造 IP 数据包。用户不仅可以设置源IP地址和目标 IP 地址,还可以设置 TTL、数据分片等字段。
【示例】构造 IP 数据包。
-
不指定选项,直接运行该模块。执行命令如下:
root@daxueba:~# netwox 38
输出信息如下:
IP______________________________________________________________.
|version| ihl | tos | totlen |
|___4___|___5___|____0x00=0_____|___________0x0014=20___________|
| id |r|D|M| offsetfra |
|_________0x87D6=34774__________|0|0|0|________0x0000=0_________|
| ttl | protocol | checksum |
|____0x00=0_____|____0x00=0_____|____________0x2ADB_____________|
| source |
|________________________192.168.59.131_________________________|
| destination |
|____________________________5.6.7.8____________________________|
在输出信息中,第一行 IP 表示当前数据包是基于 IP 协议的。包中的字段值均为默认值。例如,源 IP 地址为 192.168.59.131,目的 IP 地址为 5.6.7.8。
-
指定源 IP 地址为 192.168.59.132,目标 IP 地址为 192.168.12.101。执行命令如下:
root@daxueba:~# netwox 38 -l 192.168.59.132 -m 192.168.12.101
输出信息如下:
IP______________________________________________________________.
|version| ihl | tos | totlen |
|___4___|___5___|____0x00=0_____ |___________0x0014=20___________|
| id |r|D|M| offsetfrag |
|__________0x1B26=6950__________ |0|0|0|________0x0000=0_________|
| ttl | protocol | checksum |
|____0x00=0_____|____0x00=0_____ |____________0xD68A_____________|
| source |
|________________________192.168.59.132_________________________ |
| destination |
|________________________192.168.12.101_________________________ |
从上述输出信息中可看出,源IP地址由原来的 192.168.59.131 变为了 192.168.59.132,目的 IP 地址由原来的 5.6.7.8 变为了 192.168.12.101。
- 通过抓包,验证构造的 IP 数据包。捕获到的数据包如图所示。其中,第 2个 数据包为构造的数据包。源 IP 地址为 192.168.59.132,目标 IP 地址为 192.168.12.101,协议为 IPv4。
二、基于 Ethernet 层构造 IP 数据包
netwox 工具提供编号为 34 的模块,用于指定 IP 数据报的以太层字段信息。
【示例】指定 IP 数据报的以太层字段信息。
-
不指定选项,直接运行该模块,查看默认设置。执行命令如下:
root@daxueba:~# netwox 34
输出信息如下:
Ethernet________________________________________________________.
| 00:0C:29:CA:E4:66->00:08:09:0A:0B:0C type:0x0800 |
|_______________________________________________________________|
IP______________________________________________________________.
|version| ihl | tos | totlen |
|___4___|___5___|____0x00=0_____|___________0x0014=20__________ |
| id |r|D|M| offsetfrag |
|_________0xE1C2=57794________ |0|0|0|________0x0000=0_________|
| ttl | protocol | checksum |
|____0x00=0_____|____0x00=0_____|____________0xD0EE_____________|
| source |
|________________________192.168.59.131_________________________|
| destination |
|____________________________5.6.7.8____________________________|
在输出信息中,第一行 Ethernet 表示当前数据包的以太网层字段信息。这些字段值均为默认值。例如,当前以太网的源 MAC 地址为 00:0C:29:CA:E4:66,目标 MAC 地址为 00:08:09:0A:0B:0C。
- 指定以太网的源 MAC 地址和目标 MAC 地址。设置源 MAC 地址为 00:0C:29:C4:8A:DE,目标 MAC 地址为 00:0C:29:D0:21:23,目标 IP 地址为 192.168.59.156。
执行命令如下:
root@daxueba:~# netwox 34 -a 00:0C:29:C4:8A:DE -b 00:0C:29:D0:21:23
输出信息如下:
Ethernet________________________________________________________.
| 00:0C:29:C4:8A:DE->00:0C:29:D0:21:23 type:0x0800 |
|_______________________________________________________________ |
IP______________________________________________________________.
|version| ihl | tos | totlen |
|___4___|___5___|____0x00=0_____|___________0x0014=20___________ |
| id |r|D|M| offsetfrag |
|_________0x6983=27011__________|0|0|0|________0x0000=0_________ |
| ttl | protocol | checksum |
|____0x00=0_____|____0x00=0_____|____________0x492E_____________ |
| source |
|____________________________192.168.59.131_________________________ |
| destination |
|____________________________192.168.59.156__________________________|
从输出信息可以看到,以太网的 MAC 地址由原来的 00:0C:29:CA:E4:66 变为了 00:0C:29:C4:8A:DE,目标 MAC 地址由原来的 00:08:09:0A:0B:0C 变为了 00:0C:29:D0:21:23。
- 验证构造的数据包,使用 Wireshark 工具捕获数据包,如图所示。其中,第 2 个数据包为构造的 IPv4 数据包。在 Ethernet II 部分中,源 MAC 地址为指定的 00:0C:29:c4:8a:de,目标 MAC 地址为指定的 00:0c:29:d0:21:23。
三、利用分片实施洪水攻击
IP 协议在传输数据包时,经常会进行分片传输。例如,当一个设备准备传输一个IP数据包时,它将首先获取这个数据包的大小,然后获取发送数据包所使用的网络接口的最大传输单元值(MTU)。如果数据包的大小大于 MTU,则该数据包将被分片。
将一个数据包分片包括下面几步:
- 设备将数据包分为若干个可成功进行传输的数据包。
- 每个 IP 数据包的首部的总长度域会被设置为每个分片的片段长度。
- 更多分片标志将会在数据流的所有数据包中设置为 1,除了最后一个数据包。
- IP 数据包头中分片部分的分片偏移将会被设置。
- 数据包被发送出去。
目标主机收到分片包后,会根据分片信息重组报文。如果发送大量的无效 IP 分片包,会造成洪水攻击。用户可以使用 netwox 工具中编号为 74 的模块实施洪水攻击。
已知目标主机 IP 地址为 192.168.59.135,使用 netwox 工具向目标主机发送大量的 IP 分片实施洪水攻击,执行命令如下:
root@daxueba:~# netwox 74 -i 192.168.59.135
执行命令后没有任何输出信息,但是会向目标主机发送大量的 IP 分片数据包。如果使用 Wireshark 工具抓包,可以捕获到大量的 IP 分片数据包,如图所示。
图中显示了大量的 IPv4 数据包,Info 列中的 Fragmented IP protocol 信息表示数据包为 IP 分片数据包。
参考资料
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn