编程教育资源分享平台

网站首页 > 后端开发 正文

【Linux】Linux网络抓包工具 tcpdump详解

luoriw 2024-02-01 14:25:58 后端开发 8 ℃ 0 评论

在本文中,我们将详细讨论tcpdump命令,以及一些有关如何在Linux系统上安装和使用tcpdump的指南。

一、什么是 tcpdump 命令?

tcpdump是一个强大的网络监控工具,它允许用户有效地过滤网络上的数据包和流量。您可以获得有关TCP/IP和网络上传输的数据包的详细信息。tcpdump是一个命令行实用程序,这意味着您可以在没有显示的 Linux 服务器上运行它。

系统管理员还可以将tcpdump实用程序与cron集成,以便自动执行各种任务,例如日志记录。由于其众多功能使其非常通用,因此tcpdump既可以用作故障排除工具,也可以用作安全工具。

二、如何在 Linux 上安装 tcpdump

您可以使用which命令检查系统上是否安装了 tcpdump 。

   which tcpdump

如果输出显示目录路径 ( /usr/bin/tcpdump ),则您的系统已安装该软件包。但是,如果没有,您可以使用系统上的默认包管理器轻松完成。

2.1 Ubuntu上安装tcpdump

$sudo apt-get install libpcap
$sudo apt-get install tcpdump

2.2 Fedora、CentOS和RHEL上安装tcpdump

$sudo yum install -y libpcap
$sudo yum install -y tcpdump

请注意,tcpdump 包需要libcap作为依赖项,因此请确保您也将其安装在系统上。

三、tcpdump使用

命令格式:tcpdump 跟踪范围 选项和对应参数 表达式

man tcpdump

跟踪范围:

可以是某一个接口,也可以是any所有接口。选项和参数完成输出显示符合一定要求功能。表达式完成过滤一些特殊需要的包。

选项和对应参数:

选项

参数说明

-D

是显示所有的可跟踪的接口,可以和ip addr配合使用来确定要抓取的网口数字编号或名称;

-i

端口号 是指定抓取网卡的名称或者数字编号;

-c

用于指定抓取包的包字节数;

-C

用于指定抓取保存文件的大小,单位是兆;

-e

用于显示对应的源,目的的mac地址;

-w

文件路径和文件名,用于指定保存文件的路径和名称,没有指定路径默认在系统默认路径下;

-n

来关闭dns反向解析功能,-nn是关闭反向查询功能并以数字格式显示ip地址端口号,和url地址。不带这个选项回显会很慢。

-x

小写x是用16进制打印从ip层开始的帧内容;

-r

后面跟抓包文件,读取抓包文件

表达式:

协议

如要抓包icmp消息,表达式可以写icmp;

过滤arp和icmp消息可以用 arp or icmp;

方向

方向源src,目的dst

关键词

not非,and与,or或

过滤dhcp消息,就可以用包含udp的端口是68或69的条件实现:

udp port 68 or udp port 69;

四、两种抓包形式

  • 根据IP抓包
#根据IP地址抓包
tcpdump -i ens192 host 172.*.*.*
  
#使用src执行单项抓包
tcpdump -i ens192 src 172.*.*.*
  
#使用dst执行单项抓包
tcpdump -i ens192 dst 172.*.*.*

根据IP抓包结果

  • 根据协议抓包
  • 说明:

    过滤TCP流量,可以指定tcp,也可以指定使用协议6,这两个命令效果一样。

    过滤UDP流量,可以指定udp,也可以指定使用协议17,这两个命令效果也是一样。

    #指定使用tcp抓包
    tcpdump -i ens192 -c 8 tcp
    
    #指定使用协议6
    tcpdump -i ens192 -c 8 proto 6

    指定使用tcp抓包

    指定使用协议6

    五、tcpdump生成抓包文件

    说明:通过tcpdump -w 文件名称 的格式生成抓包文件

    • 执行命令
    # tcpdump -i ens192 -s0 -w /data/temp/cap1.pcap
    • 查看pcap抓包文件

    说明:使用wireshark软件查看抓包文件cap1.pcap

    wireshark软件抓包分析

    六、tcpdump抓包实例

    • HTTP数据包抓包
    # tcpdump -i ens192 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
    • DHCP数据包抓包
    # tcpdump -i ens192 -v -n port 67 or 68
    • DNS请求和响应抓包
    # tcpdump -i ens192 -s0 port 53
    • Cookie抓包
    # tcpdump -i ens192 -nn -A -s0 -l | egrep -i 'Set-Cookie|Host:|Cookie:'
    • 所有ICMP数据包抓包
    # tcpdump -i ens192 -n icmp
    • SMTP/POP3电子邮件抓包
    # tcpdump -i ens192 -nn -l port 25 | grep -i 'MAIL FROM\|RCPT TO'
    • SNMP抓包
    # tcpdump -i ens192 -n -s0 port 161 and udp
    • 所有明文密码抓包
    # tcpdump -i ens192 port http or port ftp or port smtp or port imap or port pop3 or port telnet -l -A | egrep -i -B5 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass |user '
    • 检测网络流量中的端口扫描
    # tcpdump -i ens192 -nn -c 8

    如果您对tcpdump有自己的使用心得和独到见解。欢迎在评论区留言和讨论。


    --END--

    欢迎关注【辉哥传书vlog】头条号,喜欢记得点赞、收藏、评论、转发哦!

    Tags:

    本文暂时没有评论,来添加一个吧(●'◡'●)

    欢迎 发表评论:

    最近发表
    标签列表
    最新留言