Packetforge-ng使用指南

Packetforge-ng是配合aircrack-ng使用的生成包的工具,本文主要介绍了一些使用参数和示例

Packetforge-ng

​ packetforge-ng是用于创建用来注入的加密数据包的工具。可以使用packetforge-ng创建各种类型的数据包,例如ARP请求包、UDP、ICMP和自定义数据包,最常见的用途是为后续注入创建ARP请求。

​ 要创建加密数据包,必须具有PRGA(伪随机生成算法)文件。这用于加密创建的数据包。通常通过aireplay-ng chopchop碎片攻击获得。

用法

Usage: packetforge-ng

Forge options

  • -p :设置帧控制字节(十六进制)
  • -a : 设置AP的MAC地址
  • -c : 设置目的MAC地址
  • -h : 设置源MAC地址
  • -j : 设置FromDS位
  • -o : 清除ToDS位
  • -e : 禁用WEP加密
  • -k < ip[ : port]> : 设置目标IP[端口]
  • -l < ip[:port]> : 设置源IP[端口](短划线,小写字母L)
  • -t ttl : 设置生存之间
  • -w : 将数据包写入此pcap文件

Source options

  • -r : 从原始文件中读取数据包
  • -y : 从此文件中读取PRGA

Mode

  • - -arp:伪造ARP数据包(-0)
  • - -udp:伪造UDP数据包(-1)
  • - -icmp:伪造ICMP数据包(-2)
  • - -null:构建一个空包(-3)
  • - -custom:构建自定义数据包(-9)

用法示例

生成arp请求包

首先,使用aireplay-ng chopchopfragmentation方法获取xor文件(PRGA)

然后使用以下命令:

packetforge-ng -0 -a 00:14:6C:7E:40:80 -h 00:0F:B5:AB:CB:9D -k 192.168.1.100 -l 192.168.1.1 -y fragment-0124-161129.xor -w arp-request

其中:

  • -0表示希望生成arp请求数据包
  • -a 00:14:6C:7E:40:80是接入点MAC地址
  • -h 00:0F:B5:AB:CB:9D是要使用的源MAC地址
  • -k 192.168.1.100是目标IP。 IE在一个arp中,它是“谁有这个IP”
  • -l 192.168.1.1是源IP。 IE在arp中它是“告诉这个IP”
  • -y fragment-0124-161129.xor
  • -w arp-packet

如果我们正在欺骗我们自己的AP,那么刚刚伪造的包可以使用我们自己的秘钥进行加密。所以要看到刚刚创建的数据包,可以进行解密:

输入“airdecap-ng -w <接入点加密密钥> arp-request”

结果如下所示:

1
2
3
4
5
6
Total number of packets read             1
Total number of WEP data packets 1
Total number of WPA data packets 0
Number of plaintext data packets 0
Number of decrypted WEP packets 1
Number of decrypted WPA packets 0

要查看刚刚解密的数据包,请输入“tcpdump -n -vvv -e -s0 -r arp-request-dec”

结果如下所示:

1
2
3
>reading from file arp-request-dec, link-type EN10MB (Ethernet)
>18:09:27.743303 00:0f:b5:ab:cb:9d > Broadcast, ethertype ARP (0x0806), length 42: arp who-has 192.168.1.100 tell 192.168.1.1
>

正如我们预料之中。

我们可以用下面的命令将我们构建的ARP-request包注入

aireplay-ng -2 -r arp-request ath0

收到回复:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
   Size: 68, FromDS: 0, ToDS: 1 (WEP)

BSSID = 00:14:6C:7E:40:80
Dest. MAC = FF:FF:FF:FF:FF:FF
Source MAC = 00:0F:B5:AB:CB:9D

0x0000: 0841 0201 0014 6c7e 4080 000f b5ab cb9d .A....l~@.......
0x0010: ffff ffff ffff 8001 6c48 0000 0999 881a ........lH......
0x0020: 49fc 21ff 781a dc42 2f96 8fcc 9430 144d I.!.x..B/....0.M
0x0030: 3ab2 cff5 d4d1 6743 8056 24ec 9192 c1e1 :.....gC.V$.....
0x0040: d64f b709 .O..

Use this packet ? y

Saving chosen packet in replay_src-0124-163529.cap
You should also start airodump-ng to capture replies.
End of file.

通过在上面输入“y”,然后注入我们刚刚使用packetforge-ng创建的数据包。

生成空数据包

这个选项允许我们产生LLC 空数据包。这些可能是最小的包而且不包含任何数据。选项“-s” 用来手动设置数据包的大小。这是一种生成用来注入的小包的简单方法。

大小值-s定义了未加密数据包的绝对大小,所以在加密后需要添加8个字节来获得最终长度(iv + idx为4个字节,icv为4个字节)。该值还包括长度为24字节的802.11标头。

命令:

packetforge-ng –null -s 42 -a BSSID -h SMAC -w short-packet.cap -y fragment.xor

其中:

  • -null表示生成LLC空数据包(需要双短划线)。
  • -s 42指定要生成的分组长度。
  • -a BSSID是接入点的MAC地址。
  • -h SMAC是要生成的数据包的源MAC地址。
  • -w short-packet.cap是输出文件的名称。
  • -y fragment.xor是包含PRGA的文件的名称。

生成自定义数据包

如果要生成客户端数据包,首选选择创建数据包的工具。这里可以是一个特殊的工具,一个十六进制编辑器或者是从过去抓取的包。然后将其保存为pcap文件,在此之后,运行命令:

packetforge-ng -9 -r input.cap -y keystream.xor -w output.cap

这其中:

  • -9表示生成自定义数据包。
  • -r input.cap是输入文件。
  • -y keystream.xor是包含PRGA的文件。
  • -w output.cap是输出文件。

当它运行时,packetforge-ng将询问使用哪个数据包然后输出该文件

使用技巧

大多数接入点实际上并不关心用于arp请求的IP。因此,您可以将255.255.255.255用于源和目标IP。

所以packetforge-ng命令变为:

packetforge-ng -0 -a 00:14:6C:7E:40:80 -h 00:0F:B5:AB:CB:9D -k 255.255.255.255 -l 255.255.255.255 -y fragment-0124-161129.xor -w arp-request

用法故障排除

包括-j 和 -o 标志位

人们常犯的一个错误是包含 -j和 -o标志中的任何一个或两个,并创建了无效的数据包。这些标志调整生成的数据包中的FromDS和ToDS标志。除非你正在做一些特别的事情,并且真的知道你在做什么,否则不要使用它们。一般来说,它们不是必需的。

Error message “Mode already specified”

这个错误通常是由于使用了数字1(-1),而不是使用L的小写形式(-l)

输入:

packetforge-ng -0 -a 00:14:6C:7E:40:80 -h 00:09:5B:EC:EE:F2 -k 255.255.255.255 -1 255.255.255.255 -y 00:14:6C:7E :40:80-03-00-14-6C-7E-40-80.xor -w arp-request

输出:

1
2
Mode already specified.
"packetforge-ng --help" for help.

这是因为使用了-1(数字1)而不是正确的-l(小写字母L)。所以只需使用“-l”即可。