• ip mac地址匿名化


    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,显示帮助就可以用了

    在这里插入图片描述


    1、利用tshark去掉原始pcap文件里的icmp协议数据包

    平台:Win10

    1. 把要处理的pcap文件复制到wireshark安装目录下

    2. 以管理员权限运行cmd,进入wireshark安装目录

    3. 如果只有一个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是要输出的文件名
      在这里插入图片描述

    4. 如果有多个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
      ……根据自己需求补充就好
      
      • 1
      • 2
      • 3
      • 4

      这里发现tshark好像不能识别路径分隔符\,如果输入或者输出有分隔符的话会报错,所以之前要把需要处理的pcap都复制到wireshark目录下
      在这里插入图片描述
      2. 写完之后保存,然后重命名为run.bat,在cmd里面输入run就可以运行了

      在这里插入图片描述


    2、利用tcpreplay重置IP和MAC地址

    1. 将上面处理后的pcap复制到kali虚拟机中的tcpreplay目录下(应该也可以复制到其他目录,没有tshark那么严格)

    2. 如果是处理一个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
      
      • 1
      • 2
    3. 如果是处理多个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
      .......根据自己需求补充
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10

      需要先用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,要输出的pcap

    tcprewrite就是改写pcap包里的报文头部,包括2层, 3层, 4层, 5-7层。

    tcprewrite的参数:

    |$ 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文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    该命令的输入参数是input.pcapinput.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
    在这里插入图片描述
    到这里就处理完啦~

  • 相关阅读:
    SQL Server详细使用教程(包含启动SQL server服务、建立数据库、建表的详细操作) 非常适合初学者
    Bug的严重等级和优先级别与分类
    H3C 交换机配置SSH
    Android的设计模式-装饰者模式
    大数据培训之配置Hbase支持Phoenix创建二级索引
    信息学奥赛一本通(c++):1401:机器翻译
    哲学家和程序员眼中的web3:密码学、分布式与博弈论
    浅浅的 Cmake
    从零开始学习-python的应用范围
    微信小程序开发之路⑤
  • 原文地址:https://blog.csdn.net/qq_40859587/article/details/125502232