运维之网络安全抓包—— WireShark 和 tcpdump

为什么要抓包?何为抓包?

抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。为什么要抓包?因为在处理 IP网络的故障时,经常使用以太网抓包工具来查看和抓取 IP网络上某些 端口或某些网段的数据包,并对这些数据包进行分析,定位问题。

一:WireShark工具:

  Wireshark是一个非常好用的抓包工具,当我们遇到一些和网络相关的问题时,可以通过这个工具进行分析,不过要说明的是,这只是一个工具,用法是非常灵活的。

  1、过滤器的区别

    捕捉过滤器(CaptureFilters):你要抓什么包。需要在开始捕捉前设置。 

           显示过滤器(DisplayFilters):抓完包之后你要过滤掉不需要的包,查看自己想要的包。

  2、捕捉过滤器的语法:

    语法:  Protocal | Direction | Host(s) | Value | Logical Operations | Other expression

    例子:     tcp    dst    1.1.1.1  80       and         tcp dst 2.2.2.2

  语法说明:

  Protocal(协议):可能的值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp. 如果没有特别指明是什么协议,则默认使用所有支持的协议。

  Direction(方向):可能的值: src, dst, src and dst, src or dst。如果没有特别指明来源或目的地,则默认使用 “src or dst” 作为关键字。例如,”host 10.2.2.2″与”src or dst host 10.2.2.2″是一样的。 

  Host(s)(主机):可能的值: net, port, host, portrange,如果没有指定此值,则默认使用”host”关键字。例如,”src 10.1.1.1″与”src host 10.1.1.1″相同。

  Value(值):也就是Host(s)里的值。

  Logical Operations(逻辑运算):可能的值:not(!), and(&&), or(||),否(“not”)具有最高的优先级。或(“or”)和与(“and”)具有相同的优先级,运算时从左至右进行。

          例如, “not tcp port 3128 and tcp port 23″与”(not tcp port 3128) and tcp port 23″相同。 “not tcp port 3128 and tcp port 23″与”not (tcp port 3128 and tcp port 23)”不同。

  Other expression(其他表达式):配合Logical Operations 在加一些上面语法中的表达式。

例子:  
tcp dst port 3128  //捕捉目的TCP端口为3128的封包。

ip src host 10.1.1.1  //捕捉来源IP地址为10.1.1.1的封包。 

host 10.1.2.3  //捕捉目的或来源IP地址为10.1.2.3的封包。 

ether host e0-05-c5-44-b1-3c //捕捉目的或来源MAC地址为e0-05-c5-44-b1-3c的封包。如果你想抓本机与所有外网通讯的数据包时,可以将这里的mac地址换成路由的mac地址即可。 

src portrange 2000-2500  //捕捉来源为UDP或TCP,并且端口号在2000至2500范围内的封包。 

not imcp  //捕捉除了icmp以外的所有封包。(icmp通常被ping工具使用) 

src host 10.7.2.12 and not dst net 10.200.0.0/16 //捕捉来源IP地址为10.7.2.12,但目的地不是10.200.0.0/16的封包。 

(src host 10.4.1.12 or src net 10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8  //捕捉来源IP为10.4.1.12或者来源网络为10.6.0.0/16,目的地TCP端口号在200至10000之间,并且目的位于网络 10.0.0.0/8内的所有封包。 

src net 192.168.0.0/24  或  src net 192.168.0.0 mask 255.255.255.0  //捕捉源地址为192.168.0.0网络内的所有封包。

      3、显示过滤器的语法:

      语法:Protocol.String1.String2 | Comparison Operator | Value | Logical Operations | Other expression

      例子: ftp. passive. ip == 10.2.3.4 xor icmp.type

    语法说明:

     Protocol(协议):您可以使用大量位于OSI模型第2至7层的协议。点击"Expression..."按钮后,您可以看到它们。如:IP,TCP,DNS,SSH、

    String(子协议):对各种协议以及它们子类的说明。String1,String2(可选项)

    Comparison Operator(比较操作):大于> ,小于<

    Logical Operations(逻辑运算):not(!), and(&&), or(||)。

    Other expression(其他表达式):配合Logical Operations 在加一些上面语法中的表达式。

  

例子: 
snmp || dns || icmp //显示SNMP或DNS或ICMP封包。  

ip.addr == 10.1.1.1  //显示来源或目的IP地址为10.1.1.1的封包。 

ip.src != 10.1.2.3 or ip.dst != 10.4.5.6  //显示来源不为10.1.2.3或者目的不为10.4.5.6的封包。 换句话说,显示来源IP除了10.1.2.3之外或目的IP除了10.4.5.6之外的任意IP的封包。

ip.src != 10.1.2.3 and ip.dst != 10.4.5.6  //显示来源不为10.1.2.3并且目的IP不为10.4.5.6的封包。换句话说,显示的封包将会为: 来源IP:除了10.1.2.3以外任意;同时须满足,目的IP:除了10.4.5.6以外任意封包。

tcp.port == 25  //显示来源或目的TCP端口号为25的封包。  tcp.dstport == 25  //显示目的TCP端口号为25的封包。  tcp.flags  //显示包含TCP标志的封包。  

tcp.flags.syn == 0×02  //显示包含TCP SYN标志的封包。  如果过滤器的语法是正确的,表达式的背景呈绿色。如果呈红色,说明表达式有误。

二、TCPDUMP命令: 

  tcpdump 是一个运行在命令行下的嗅探工具。它允许用户拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包。 

   tcpdump采用命令行方式,它的命令格式为:   

      tcpdump [-aAdDefhIJKlLnNOpqRStuUvxX] [ -B size ] [ -c count ] [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ] [ -i interface ] [ -j tstamptype ] [ -M secret ] [ -Q|-P in|out|inout ] [ -r file ]

            [ -s snaplen ] [ -T type ] [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z command ] [ -Z user ] [ expression ]

  1. tcpdump的选项介绍   

  -a 将网络地址和广播地址转变成名字;
  -d 将匹配信息包的代码以人们能够理解的汇编格式给出;
  -dd 将匹配信息包的代码以c语言程序段的格式给出;
  -ddd 将匹配信息包的代码以十进制的形式给出;
  -e 在输出行打印出数据链路层的头部信息;
  -f 将外部的Internet地址以数字的形式打印出来;
  -l 使标准输出变为缓冲行形式;
  -n 不把网络地址转换成名字;
  -t 在输出的每一行不打印时间戳;
  -v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
  -vv 输出详细的报文信息;
  -c 在收到指定的包的数目后,tcpdump就会停止;
  -F 从指定的文件中读取表达式,忽略其它的表达式;
  -i 指定监听的网络接口;
  -r 从指定的文件中读取包(这些包一般通过-w选项产生);
  -w 直接将包写入文件中,并不分析和打印出来;
  -T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议;)

<think>首先,用户的问题是:“我想学习使用Wireshark分析TCPDump文件的技巧 请问Wireshark 分析 TCPDump 文件的使用技巧”。这基于之前的引用内容,涉及WiresharkTcpdump。 系统级指令: - 所有行内数学表达式必须使用$...$格式。但在这个问题中,可能没有数学表达式,所以我不需要添加任何数学内容。 - 独立公式必须使用$$...$$格式并单独成段。同样,可能不适用。 - LaTeX语法正确:确保任何LaTeX都正确。 - 使用中文回答:整个回答要用中文。 - 生成相关问题:在回答结束后,生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识:例如[^1]。参考提供的引用,我需要引用[^1]、[^2]、[^3]、[^4]。 用户可见层: - 回答结构清晰,帮助用户逐步解决问题。 - 保证回答真实可靠:基于提供的引用。 提供的引用: - 引用[1]:关于Linux中的网络协议分析,WiresharkTcpdump的使用。 - 引用[2]:网络故障处理及分析工具:WiresharkTcpdump集成。 - 引用[3]:Tcpdump抓包Wireshark报文分析,包括TCP三次握手四次挥手。 - 引用[4]:运维网络安全抓包——WireSharktcpdump,包括一些命令行选项。 用户的问题具体是关于使用Wireshark分析Tcpdump文件的技巧。所以,我需要聚焦在如何用Wireshark打开分析由tcpdump捕获的文件。 关键点: - tcpdump捕获的数据包可以保存为文件,通常是.pcap格式。 - Wireshark可以读取这些文件进行分析。 - 技巧包括:如何打开文件、过滤数据、分析特定协议等。 结构化回答: 1. **介绍**:简要解释WiresharkTcpdump的集成。 2. **步骤**:逐步指导如何分析Tcpdump文件。 3. **技巧最佳实践**:提供具体技巧。 4. **引用**:在相关部分添加引用标识。 5. **相关问题**:在结束时生成相关问题。 生成相关问题: - 基于用户查询,生成3个左右相关问题。 确保回答真实可靠:使用提供的引用信息。例如: - 引用[2]提到:将tcpdump捕获与Wireshark分析结合。 - 引用[3]讨论:Tcpdump抓包Wireshark分析,包括TCP握手。 - 引用[4]给出tcpdump命令选项。 回答大纲: 1. **开头**:解释Wireshark如何分析Tcpdump文件。 2. **步骤详解**: - 如何捕获数据包用tcpdump并保存为文件。 - 如何在Wireshark中打开该文件。 - 使用Wireshark的分析功能:过滤、统计、协议分析等。 3. **具体技巧**: - 过滤数据包。 - 分析TCP连接(如三次握手)。 - 使用高级特性。 4. **引用**:在描述时添加引用标识。 5. **结尾**:总结。 6. **相关问题**。 用中文写回答。 最终输出格式: - 回答部分。 - §§相关问题§§ - 相关问题列表。</think>### Wireshark 分析 Tcpdump 文件的使用技巧 Wireshark 是一款强大的网络协议分析工具,它可以读取由 Tcpdump 捕获的数据包文件(通常为 `.pcap` 或 `.pcapng` 格式),并提供图形化界面进行深度分析。这种结合方式在网络故障排查、安全审计性能优化中非常高效,尤其当您无法直接在目标系统上运行 Wireshark 时,Tcpdump 的轻量级捕获功能就显得尤为重要[^2]。下面我将逐步介绍使用技巧,确保您能高效分析 Tcpdump 文件。技巧基于真实实践,并参考了相关文档。 #### 步骤 1: 准备工作 – 捕获并保存 Tcpdump 文件 在分析前,您需要先使用 Tcpdump 捕获网络流量并保存为文件。Tcpdump 是命令行工具,适合在服务器或嵌入式设备上运行。以下是一个基本命令示例: ```bash tcpdump -i eth0 -w capture.pcap port 80 ``` - **技巧**: - 使用 `-w` 选项指定输出文件名(如 `capture.pcap`),确保文件格式兼容 Wireshark。 - 添加过滤条件(如 `port 80`)只捕获 HTTP 流量,减少文件大小分析负担[^4]。 - 如果文件过大,用 `-c count` 限制数据包数量(如 `-c 1000` 只抓 1000 个包),避免 Wireshark 加载缓慢[^4]。 #### 步骤 2: 在 Wireshark 中打开 Tcpdump 文件 打开 Wireshark,选择 "File" > "Open",然后浏览到您的 `.pcap` 文件。Wireshark 会自动加载并解析数据包。 - **技巧**: - **快速加载大文件**:如果文件很大(如超过 100MB),启用 "Use ring buffer" 选项(在捕获设置中),或使用 Wireshark 的 "Import from Hex Dump" 功能处理部分数据[^2]。 - **文件兼容性**:Tcpdump 生成的文件通常兼容 Wireshark,但如果遇到错误,检查文件头是否损坏。您可以用 `tcpdump -r capture.pcap` 验证文件完整性[^3]。 #### 步骤 3: 分析数据包的核心技巧 Wireshark 提供了丰富的分析功能。以下是关键技巧: - **过滤数据包**: - 在过滤栏输入表达式,如 `tcp.port == 80` 只看 HTTP 流量,或 `ip.src == 192.168.1.1` 过滤特定源 IP。这能快速定位问题,减少干扰[^1]。 - 高级技巧:使用组合过滤,如 `tcp.flags.syn == 1 and tcp.flags.ack == 0` 查找 TCP SYN 包(三次握手的第一步),便于诊断连接问题[^3]。 - **协议流分析**: - **TCP 连接分析**:右键点击任意 TCP 包,选择 "Follow" > "TCP Stream",查看完整会话(如 HTTP 请求/响应)。这对于分析三次握手四次挥手特别有用,Wireshark 会用颜色高亮 SYN、ACK、FIN 包[^3]。 - **统计工具**:使用 "Statistics" 菜单下的功能: - "Protocol Hierarchy" 查看各协议占比,快速识别异常流量。 - "Conversations" 分析主机间通信,检测带宽滥用或攻击[^1]。 - **解码诊断**: - 如果 Tcpdump 文件包含加密流量(如 HTTPS),Wireshark 可能无法直接解码。技巧:导入服务器密钥(通过 "Edit" > "Preferences" > "Protocols" > "TLS"),但需注意安全权限[^2]。 - 对于性能问题,用 "IO Graphs"(在 "Statistics" 下)绘制流量图,检查延迟或丢包。例如,设置 Y 轴为 "Bytes/tick" 监控带宽峰值[^1]。 #### 步骤 4: 高级优化问题排查 - **保存导出**:分析后,导出特定数据包(选择包后 "Export Specified Packets"),或保存过滤结果为新文件。这方便共享报告。 - **集成 Tcpdump 选项**:Tcpdump 的某些捕获选项(如 `-s snaplen` 设置抓包长度)影响 Wireshark 分析。技巧:捕获时用 `-s 0` 抓完整包,避免截断[^4]。 - **常见错误处理**:如果 Wireshark 显示 "Malformed Packet",可能是 Tcpdump 捕获时丢包。解决:在 Tcpdump 命令中添加 `-B buffer_size` 增加缓冲区(如 `-B 4096`)[^4]。 #### 总结 通过 Wireshark 分析 Tcpdump 文件,您能结合命令行捕获的灵活性图形化分析的深度。关键技巧包括高效过滤、流跟踪统计工具的使用,这些方法在网络故障排查中能显著提升效率[^2][^3]。记住,实践是掌握的关键 – 尝试分析真实捕获文件(如引用中提到的 HTTP 流量示例)[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值