2022.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 ,显示帮助就可以用了
1、利用tshark去掉原始pcap文件里的icmp协议数据包
平台: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 就可以运行了
2、利用tcpreplay重置IP和MAC地址
-
将上面处理后的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 参数的介绍(搬运自上面的参考链接)
-a Split traffic in Auto Mode 一般情况下都需要该参数,表示按模式自动/client分离的流量生成cache文件-i <capfile> : Input capture file to process,要输入的pcap-o <outputfile> :Output cache file name,要输出的pcap
tcprewrite就是改写pcap包里的报文头部,包括2层, 3层, 4层, 5-7层。
tcprewrite的参数:
|$ tcprewrite --enet-smac=host_src_mac:client_src_mac
| --enet-dmac=host_dst_mac:client_dst_mac
| --endpoints=host_dst_ip:client_dst_ip
| --portmap=old_port1:new_port1, old_port2:new_port2
| -i input.pcap
| -c input.cache
| -o out.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 2022.6.29更新
1. Win10用powershell对文件批量改名
参考链接:
我的原始文件名是Amazon.pcap.TCP_3-0-87-74_80_192-168-123-19_57940.pcap ,因为文件名中有.pcap 导致tcpprep无法处理。要修改为Amazon_TCP_3-0-87-74_80_192-168-123-19_57940.pcap (发现不处理也可以运行)
- 在开始菜单中打开Windows powershell ISE,以管理员权限运行
- 输入下面的内容
Set-ExecutionPolicy Remotesigned
$FolderPath = 'D:\work\Amazon-ALL'
$Newname = 'Amazon_'
$Oldname = 'Amazon.pcap.'
dir $FolderPath -Include "*.*" -Recurse | ForEach-Object{Rename-Item $_.FullName $_.FullName.Replace($Oldname,$Newname)}
Set-ExecutionPolicy Restricted
- 保存成
.ps1 文件后,以管理员权限运行powershell,输入set-executionpolicy remotesigned 修改执行策略,再点击绿色三角运行。
2. kali下用tcpprep批量处理pcap文件
- 新建.sh 脚本
- 输入内容
#!/bin/bash
path="/home/kali/Downloads/tcpreplay-4.4.0/session/whatsapp/"
cd $path
find ./ -name '*.pcap' | while read i
do
echo $i
tcpprep -a client -i $i -o /home/kali/Downloads/tcpreplay-4.4.0/session/whatsapp/test.cache
sleep 1s
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=/home/kali/Downloads/tcpreplay-4.4.0/session/whatsapp/test.cache --infile=$i --outfile=/home/kali/Downloads/tcpreplay-4.4.0/0001/whatsapp/$i -C
done
3. crgwin安装tcpreplay整理
参考:Windows安装tcpreplay及其他Linux软件
- flex-2.6.4
make 报错configure.ac:59: error: required file 'build-aux/compile' not found
configure.ac:59: 'automake --add-missing' can install 'compile'
configure.ac:59: error: required file 'build-aux/config.guess' not found
configure.ac:59: 'automake --add-missing' can install 'config.guess'
configure.ac:59: error: required file 'build-aux/config.sub' not found
configure.ac:59: 'automake --add-missing' can install 'config.sub'
解决方案:
automake --add-missing
configure : error : no acceptable C compiler found in $PATH 打开cygwin安装包exe,安装gcc组件,参考Cygwin及Wget安装
|