See You Again

使用tcpdump+Wireshark进行网络抓包分析

互联网上大多数的网络应用都是建立在‘TCP/IP网络协议模型’之上的,无论出于排查问题、测试需要、协议分析、性能分析等目的,都需要对协议进行网络抓包分析。

有很多针对特定协议的抓包工具,比如针对 HTTP 协议的 FiddlerHttpWatch等。这里介绍最通用的一组工具(各层协议数据都可以抓取到):tcpdump + Wireshark。这组工具使用的典型场景为先用tcpdump保存数据包到一个文件里,然后用Wireshark打开文件分析。

tcpdump

tcpdump可以根据一定的条件把网络上的特定数据包‘抓出来’,为什么不直接用Wireshark呢?主要有以下场景:

一般服务器上都会自带这个命令行工具,如果是Android客户端的话需要装一个。注意要加上对应的权限使普通用户也可以执行:

  1. chmod 4755 /usr/sbin/tcpdump

它有很丰富的命令行选项,常见的用法如下:

  1. # 指定某个网卡,某个端口,接收或者发送的包,数据包写入到文件里
  2. tcpdump -i eth1 -s 0 tcp port 8030 and host 119.147.226.73 -vv -w ./target.cap

Wireshark

tcpdump得到的数据并不直观,不利于分析。所以我们保存成文件,然后用Wireshark打开。Wireshark是一个真正强大的协议分析工具,引用官方的介绍:

Wireshark is the world’s foremost network protocol analyzer

来个直观的例子,我要抓取所有的HTTP POST请求的数据包:

从最下面一栏可以看到16进制的数据流以及对应的ASCII字符,这下可以满足一切的分析需求了吧?!

中间一栏Wireshark对各层协议进行了可视化的处理,方便分析。每点击一个区域,下方对应的数据流就会以蓝色高亮进行显示。可以看到从连接层到应用层的各级数据 eth: ethertype :ip :tcp :http :data

当然最常分析的还是应用层的数据了,比如HTTP协议或者建立在应用层上的私有协议。

最上面一栏是过滤条件以及过滤后的请求,其过滤条件也是非常强大,举几个常用的例子:

  1. http contains "google"
  2. ip.src == 192.168.1.1
  3. ip.host == 47.88.23.129 and http
  4. http.request.method == "POST"
  5. tcp.port == 80 and ip.src == 192.168.2.1

分析举例

  1. HTTP Header与Body的分隔符?
    我们知道协议中定义是用一个额外的空行 \r\n 来分割的,通过抓包可以看到 0d 0a 0d 0a ,再反查ASCII字母表,可以验证实现的正确性。

  2. BODY中的数据是什么?
    数据有可能不是直接可读的ASCII编码,更多的可能是加密后的或者二进制的文本,通过右键复制BODY中的16进制数据包,通过转换可以得到更直观的展现,进而方便下一步的分析:

    1. 7b226d616368696e654e616d65223a22474e616158666b6e6d554b4a457562532b30483339773d3d222c226c6f63616c4950223a223130302e38342e34322e323336222c226368616e6e656c73223a5b7b226964223a22752d58507830665a547251517761657348583436486f3751222c226e6f7469667945546167223a22222c22706565725473223a307d2c7b226964223a22642d3937576732316a44324368646a7835476a6a66395a77222c226e6f7469667945546167223a227a584c764a394445753445222c22706565725473223a307d5d7d
    1. {"machineName":"GNaaXfknmUKJEubS+0H39w==","localIP":"100.84.42.236","channels":[{"id":"u-XPx0fZTrQQwaesHX46Ho7Q","notifyETag":"","peerTs":0},{"id":"d-97Wg21jD2Chdjx5Gjjf9Zw","notifyETag":"zXLvJ9DEu4E","peerTs":0}]}

更多参考

2018-04-27 喜欢

Copyright © 2015-2018 转载请注明出处

回到顶部 ↑