基于pcap实现旁路抓包,抓取Filezilla上传的文件数据包,存入redis

需求

基于pcap实现旁路抓包,抓取Filezilla上传的文件数据包,并生成文件.实现上传的文件与通过抓包生成的文件内容保持一致

技术点

libpcap

pcap是Packet Capture Libray的英文缩写,即数据包捕获函数库。该库提供的C函数接口用于捕捉经过指定网络接口的数据包,该接口应该是被设为混杂模式。这个在原始套接子中有提到。Libpcap提供的接口函数实现和封装了与数据包截获有关的过程。
Libpcap提供了用户级别的网络数据包捕获接口,并充分考虑到应用程序的可移植性。Libpcap可以在绝大多数Linux平台上运行。在Windows平台上,也有一款与其功能类似的开发库:Wincap。
主要功能:
数据包捕获:捕获流经网卡的原始数据包
自定义数据包发送:构造任何格式的原始数据包
流量采集与统计:采集网络中的流量信息
规则过滤:提供自带规则过滤功能,按需要选择过滤规则

它的应用范围非常广泛,典型应用包括TCPDUMP,玩罗协议分析器,网络流量发生器,网络入侵检测系统,网络扫描器和其他安全工具。

libpcap是一个独立于系统的用户级的API接口:基于pcap实现旁路抓包,抓取Filezilla上传的文件数据包,存入redis

FTP协议

FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
2种工作方式:
PORT方式:21用于传输控制信息, 20 用于传输文件数据
1.客户端发送PORT命令通知服务器 客户端那个端口用于文件传输
2. 服务器与PORT通知的端口建立TCP连接,发送文件。
被动模式(PASV):则具体最终使用哪个端口要服务器端和客户端协商决定

实现方案:

  1. 采用 hiredis 库操作Redis
  2. 虚拟机上 FTP 服务器采用 PORT方式进行文件传输 (21端口 用于传输控制信息 20 端口用于数据传输)
  3. 抓包工具 解析发送到21端口报文,解析出STOR 命令,进而获取文件名
  4. 抓包工具 解析 20端口的报文, 解析出文件数据, 并把文件数据使用有序集合存储到redis ( “zadd file:文件名 TCP序号 数据包包BCD格式”)

实验结果:

  1. FileZilla 上传内容为735个"1" 的文件111111.txt基于pcap实现旁路抓包,抓取Filezilla上传的文件数据包,存入redis

  2. 查看redis入库结果
    基于pcap实现旁路抓包,抓取Filezilla上传的文件数据包,存入redis
    3.日志分析
    基于pcap实现旁路抓包,抓取Filezilla上传的文件数据包,存入redis
    基于pcap实现旁路抓包,抓取Filezilla上传的文件数据包,存入redis
    基于pcap实现旁路抓包,抓取Filezilla上传的文件数据包,存入redis

拓展