网络分析:网络抓包工具介绍

tlin82大约 3 分钟networkingnetworkingsniffer

提示

方便自己快速上手使用,备查

工具

工具选项:

  • 使用netsh trace命令行 (Windows)
  • Network Monitor 3.x (Windows)
  • WireShark (Windows /Linux)
  • tcpdump (Linux)

使用Netsh Trace

Windwos原生自带命令抓包,不需要安装任意软件,局限是只有抓包功能,没有分析功能,如果需要分析,需要导出到其他工具,例如Network monitor 3.x或Wireshak。

比较合适不想或不能安装额外软件的环境。

  • 使用
  1. 启动管理员命令行,启动:
C:> netsh trace start persistent=yes capture=yes tracefile=c:\temp\nettrace-boot.etl
  1. 停止则执行:
C:\>netsh trace stop
  1. 最后把ETL文件和CAB文件拷贝出来,使用其他分析工具分析,例如Network Monitor 3.x 如果是拿到Wireshark下,需要把ETL转换成pcag,转换工具: ETL2PCAGopen in new window

使用Network Monitor 3.x

(无)

使用Wireshark

(无)

使用Tcpdump

1. 基础使用常用参数

$ tcpdump -i eth0 -nn -s0 -v port 80 -w output.pcag -A 
  • -i : 选择要捕获的接口,通常是以太网卡或无线网卡,也可以是 vlan 或其他特殊接口。如果该系统上只有一个网络接口,则无需指定。

  • -nn : 单个 n 表示不解析域名,直接显示 IP;两个 n 表示不解析域名和端口。这样不仅方便查看 IP 和端口号,而且在抓取大量数据时非常高效,因为域名解析会降低抓取速度。

  • -s0 : tcpdump 默认只会截取前 96 字节的内容,要想截取所有的报文内容,可以使用 -s number, number 就是你要截取的报文字节数,如果是 0 的话,表示截取报文全部内容。

  • -v : 使用 -v,-vv 和 -vvv 来显示更多的详细信息,通常会显示更多与特定协议相关的信息。

  • -A 表示使用 ASCII 字符串打印报文的全部数据,这样可以使读取更加简单,方便使用 grep 等工具解析输出内容。

  • host 抓特定主机(目的和源)

  • port 指定端口

  • -w 写入输出到文件

  • -l 行缓冲模式。把实时输出通过管道给其他工具,例如grep

2. 高级使用举例

  • 提取HTTP用户代理
$ tcpdump -nn -A -s1500 -l | grep "User-Agent:"
  • 提取 HTTP POST 请求中的密码
$ tcpdump -s 0 -A -n -l | egrep -i "POST /|pwd=|passwd=|password=|Host:"
  • 提取Cookies
$ tcpdump -nn -A -s0 -l | egrep -i 'Set-Cookie|Host:|Cookie:'
  • 抓取 SMTP/POP3 协议的邮件
$ tcpdump -nn -l port 25 | grep -i 'MAIL FROM\|RCPT TO'
  • 更多使用参考:

来源:米开朗基杨 Tcpdump 示例教程open in new window