• 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
    在这里插入图片描述
    到这里就处理完啦~

  • 相关阅读:
    列表页面新增 字段查询 ,点击查询后,前端页面和后端控制台 出现红色报错信息,查询数据失败。
    【java核心技术】Java知识总结 -- 泛型程序设计一
    SpingMyc项目如何搭建
    z-library应急办法
    奉劝不要在ElementPlus中使用el-table渲染大量树形结构数据
    计算机毕业设计ssm基于vuejs的二手车交易平台ue120系统+程序+源码+lw+远程部署
    nginx路由location匹配规则及其优先级
    loss不降低原因以及解决方法
    FITC-PSA豌豆凝集素,PSA-FITC,豌豆凝集素修饰绿色荧光素
    Jenkins部署python接口自动化测试
  • 原文地址:https://blog.csdn.net/qq_40859587/article/details/125502232