20222.6.27
流量分类需要进行ip和mac地址匿名化,因为这两项不可作为特征。
需要工具:kali系统的tcpreplay、wireshark的tshark
参考:从实践中学习wireshark分析——微信读书
tcpreplay介绍及安装——Linux系统
Windows安装tcpreplay及其他Linux软件——这里介绍了如何修改各层信息
看前三个应该就够了,补充一个tcprewrite批量修改pcap数据报文——解释tcprewrite参数
kali安装好了之后是这样的,我这里装的tcpreplay是4.4.0,装4.4.1会报错,猜想原因可能是库不匹配。

在root权限下输入tcpreplay -h,显示帮助就可以用了

平台:Win10
把要处理的pcap文件复制到wireshark安装目录下
以管理员权限运行cmd,进入wireshark安装目录
如果只有一个pcap,直接在cmd里输入
tshark -r whatsapp.pcap -2 -R "not icmp" -w 9whatsapp.pcap
解释一下参数:
-r,读文件,whatsapp.pcap是要读取的文件名
-2 -R ,后面接过滤器,和wireshark界面一样,"not icmp"是去掉icmp协议的数据包,这里要注意前面有个-2
-w 输出文件,9whatsapp.pcap是要输出的文件名
如果有多个pcap要处理,可以写个shell脚本:
1. 在wireshark目录下新建一个txt文件,然后输入
tshark -r Microsof.pcap -2 -R "not icmp" -w 9Microsof.pcap
tshark -r MicrosoftRPCEndpointMapper.pcap -2 -R "not icmp" -w 9MicrosoftRPCEndpointMapper.pcap
tshark -r MS-SQLserver.pcap -2 -R "not icmp" -w MSSQLserver.pcap
……根据自己需求补充就好
这里发现tshark好像不能识别路径分隔符\,如果输入或者输出有分隔符的话会报错,所以之前要把需要处理的pcap都复制到wireshark目录下

2. 写完之后保存,然后重命名为run.bat,在cmd里面输入run就可以运行了

将上面处理后的pcap复制到kali虚拟机中的tcpreplay目录下(应该也可以复制到其他目录,没有tshark那么严格)
如果是处理一个pcap,以root权限输入
tcpprep -a client -i test.pcap -o test1.cache
tcprewrite --srcipmap=0.0.0.0:0.0.0.0 --dstipmap=0.0.0.0:0.0.0.0 --enet-dmac=00:00:00:00:00:00 --enet-smac=00:00:00:00:00:00 --endpoints=0.0.0.0:0.0.0.0 --cachefile=test1.cache --infile=test.pcap --outfile=output.pcap -C
如果是处理多个pcap,新建一个run.sh,写入下面代码,然后保存,在root终端中运行sh run.sh
#! /bin/bash
tcpprep -a client -i Amazon.pcap -o test.cache
tcprewrite --srcipmap=0.0.0.0:0.0.0.0 --dstipmap=0.0.0.0:0.0.0.0 --enet-dmac=00:00:00:00:00:00 --enet-smac=00:00:00:00:00:00 --endpoints=0.0.0.0:0.0.0.0 --cachefile=test.cache --infile=Amazon.pcap --outfile=/home/kali/Downloads/tcpreplay-4.4.0/0000/Amazon.pcap -C
tcpprep -a client -i Cisco.pcap -o test.cache
tcprewrite --srcipmap=0.0.0.0:0.0.0.0 --dstipmap=0.0.0.0:0.0.0.0 --enet-dmac=00:00:00:00:00:00 --enet-smac=00:00:00:00:00:00 --endpoints=0.0.0.0:0.0.0.0 --cachefile=test.cache --infile=Cisco.pcap --outfile=/home/kali/Downloads/tcpreplay-4.4.0/0000/Cisco.pcap -C
tcpprep -a client -i D-link.pcap -o test.cache
tcprewrite --srcipmap=0.0.0.0:0.0.0.0 --dstipmap=0.0.0.0:0.0.0.0 --enet-dmac=00:00:00:00:00:00 --enet-smac=00:00:00:00:00:00 --endpoints=0.0.0.0:0.0.0.0 --cachefile=test.cache --infile=D-link.pcap --outfile=/home/kali/Downloads/tcpreplay-4.4.0/0000/D-link.pcap -C
tcpprep -a client -i facebook.pcap -o test.cache
tcprewrite --srcipmap=0.0.0.0:0.0.0.0 --dstipmap=0.0.0.0:0.0.0.0 --enet-dmac=00:00:00:00:00:00 --enet-smac=00:00:00:00:00:00 --endpoints=0.0.0.0:0.0.0.0 --cachefile=test.cache --infile=facebook.pcap --outfile=/home/kali/Downloads/tcpreplay-4.4.0/0000/facebook.pcap -C
.......根据自己需求补充
需要先用tcpprep将pcap处理为cache文件,然后再用tcpwrite处理cache文件
解释一下tcpprep用到的参数:更多参数解释参考这里
tcpprep -a client -i test.pcap -o test1.cache 将数据包分成客户端和服务器端

-a Split traffic in Auto Mode 一般情况下都需要该参数,表示按模式自动/client分离的流量生成cache文件-i <capfile>: Input capture file to process,要输入的pcap-o <outputfile> :Output cache file name,要输出的pcaptcprewrite就是改写pcap包里的报文头部,包括2层, 3层, 4层, 5-7层。
|$ tcprewrite --enet-smac=host_src_mac:client_src_mac #修改源端和目的端的源mac地址
| --enet-dmac=host_dst_mac:client_dst_mac #修改源端和目的端的目的mac地址
| --endpoints=host_dst_ip:client_dst_ip #修改源端和目的端的目的ip地址
| --portmap=old_port1:new_port1, old_port2:new_port2 #修改源端和目的端的端口号(这个我没用)
| -i input.pcap #输入pcap文件
| -c input.cache #tcpprep划分的cache文件
| -o out.pcap #输出pcap文件
该命令的输入参数是input.pcap和input.cache文件, 结果将另存为out.pcap文件。
该命令将所有input.pcap包里的主机包(由input.cache文件指定哪些包是主机包, 哪些包是客户端包)的源mac地址, 目的mac地址, 目的IP地址分别改为:
host_src_mac,
host_dst_mac
host_dst_ip。
客户端包的源mac地址, 目的mac地址, 目的IP地址分别改为:
client_src_mac,
client_dst_mac,
client_dst_ip。
将主机包端口号由old_port1改为new_port1,
将服务器端端口号由old_port2改为new_port2。
解释一下
tcprewrite --srcipmap=0.0.0.0:0.0.0.0 --dstipmap=0.0.0.0:0.0.0.0 --enet-dmac=00:00:00:00:00:00 --enet-smac=00:00:00:00:00:00 --endpoints=0.0.0.0:0.0.0.0 --cachefile=test1.cache --infile=test.pcap --outfile=output.pcap -C
--srcipmap=0.0.0.0:0.0.0.0:两端的源ip都改为0.0.0.0
--dstipmap=0.0.0.0:0.0.0.0:两端的目的ip都改为0.0.0.0
--enet-dmac=00:00:00:00:00:00:两端的目的mac都改为00:00:00:00:00:00
--enet-smac:两端的源mac都改为00:00:00:00:00:00
--endpoints:将pcap文件中的所有客户端、服务器都改成这一对IP地址
--cachefile:之前处理好的cache
--infile:输入pcap
--outfile:输出pcap
这里是tcprewrite的-h

到这里就处理完啦~