TCPflow:在Linux中分析和調(diào)試網(wǎng)絡(luò)流量的利器
譯文【51CTO.com快譯】TCPflow是一款功能強(qiáng)大的、基于命令行的免費(fèi)開源工具,用于在Unix之類的系統(tǒng)(如Linux)上分析網(wǎng)絡(luò)流量。它可捕獲通過TCP連接接收或傳輸?shù)臄?shù)據(jù),并存儲在文件中供以后分析,采用的格式便于協(xié)議分析和調(diào)試。
它實際上是類似tcpdump的工具,因為它處理來自網(wǎng)絡(luò)或存儲文件的數(shù)據(jù)包。它同樣支持tcpdump支持的功能強(qiáng)大的過濾表達(dá)式。唯一的區(qū)別是,tcpflow讓所有TCP數(shù)據(jù)包井然有序,并在單獨的文件(每路方向的數(shù)據(jù)流有一個文件)中組裝每路數(shù)據(jù)流,供以后分析。
功能特性包括一個高級插件系統(tǒng),用于解壓縮壓縮的HTTP連接、撤消MIME編碼或調(diào)用后期處理的第三方程序等等。
TCPflow有許多使用場景,包括了解網(wǎng)絡(luò)數(shù)據(jù)包流量,還支持執(zhí)行網(wǎng)絡(luò)取證分析和泄露HTTP會話的內(nèi)容。
如何在Linux系統(tǒng)中安裝TCPflow?
TCPflow可以在主流GNU/Linux發(fā)行版的官方代碼倉庫中找到,可以使用軟件包管理器安裝它,如下所示。
- $ sudo apt install tcpflow #Debian/Ubuntu
- $ sudo yum install tcpflow #CentOS/RHEL
- $ sudo dnf install tcpflow #Fedora 22+
安裝TCPflow后,可以用超級用戶權(quán)限來運(yùn)行它,不然使用sudo命令。注意:它可偵聽活動的網(wǎng)絡(luò)接口(比如enp0s3)。
- $ sudo tcpflow
- tcpflow: listening on enp0s3
默認(rèn)情況下,TCPflow將所有捕獲的數(shù)據(jù)存儲在表單中有名稱的文件中(如果你使用某些選項,比如timestamp,這可能不一樣)。
- sourceip.sourceport-destip.destport
- 192.168.043.031.52920-216.058.210.034.00443
現(xiàn)在不妨列出目錄,看看TCP流量是否已捕獲在任何文件中。
- $ ls -1
- total 20
- -rw-r--r--. 1 root root 808 Sep 19 12:49 192.168.043.031.52920-216.058.210.034.00443
- -rw-r--r--. 1 root root 59 Sep 19 12:49 216.058.210.034.00443-192.168.043.031.52920
如上所述,每路TCP流量存儲在各自的文件中。從上面輸出可以看出,有三個記錄文件(transcript file),這表明TCPflow呈兩個截然不同的方向,源IP在第一個文件中,目的地IP在第二個文件中,反之亦然。
第一個文件192.168.043.031.52920-216.058.210.034.00443含有從主機(jī)192.168.043.031(TCPflow運(yùn)行所在的localhost,通過端口52920)傳輸?shù)街鳈C(jī)216.058.210.034(遠(yuǎn)程主機(jī),通過端口443)的數(shù)據(jù)。
而第二個文件216.058.210.034.00443-192.168.043.031.52920含有從主機(jī)216.058.210.034(遠(yuǎn)程主機(jī),通過端口443)傳輸?shù)街鳈C(jī)192.168.043.031(TCPflow運(yùn)行所在的localhost,通過端口52920)的數(shù)據(jù)。
還生成了一個XML報告,含有關(guān)于該程序的信息,比如它是如何編譯的、它在哪臺計算機(jī)上運(yùn)行以及每條TCP連接的記錄。
你可能注意到了,TCPflow默認(rèn)情況下將記錄文件存儲在當(dāng)前目錄下。-o選項可幫助你指定將寫入文件的輸出目錄。
- $ sudo tcpflow -o tcpflow_files
- $ sudo ls -l tcpflow_files
- total 32
- -rw-r--r--. 1 root root 1665 Sep 19 12:56 157.240.016.035.00443-192.168.000.103.45986
- -rw-r--r--. 1 root root 45 Sep 19 12:56 169.044.082.101.00443-192.168.000.103.55496
- -rw-r--r--. 1 root root 2738 Sep 19 12:56 172.217.166.046.00443-192.168.000.103.39954
- -rw-r--r--. 1 root root 68 Sep 19 12:56 192.168.000.102.00022-192.168.000.103.42436
- -rw-r--r--. 1 root root 573 Sep 19 12:56 192.168.000.103.39954-172.217.166.046.00443
- -rw-r--r--. 1 root root 4067 Sep 19 12:56 192.168.000.103.45986-157.240.016.035.00443
- -rw-r--r--. 1 root root 38 Sep 19 12:56 192.168.000.103.55496-169.044.082.101.00443
- -rw-r--r--. 1 root root 3159 Sep 19 12:56 report.xml
你還可以將數(shù)據(jù)包的內(nèi)容輸出到stdout,并不將任何捕獲的數(shù)據(jù)存儲到文件,只需使用-c標(biāo)志,如下所示。
想有效地進(jìn)行測試,打開第二個端口,運(yùn)行ping,或瀏覽互聯(lián)網(wǎng)。你應(yīng)該能夠看到ping細(xì)節(jié)或瀏覽細(xì)節(jié)已被TCPflow捕獲。
- $ sudo tcpflow -c
可以捕獲某個端口上的所有流量,比如端口80(HTTP)。以HTTP流量為例,你可以看到HTTP Headers以及隨后的內(nèi)容都在stdout上;如果去除-c參數(shù)選項符,它們都在一個文件中。
- $ sudo tcpflow port 80
想捕獲來自某個網(wǎng)絡(luò)接口的數(shù)據(jù)包,使用-i標(biāo)志來指定接口名稱。
- $ sudo tcpflow -i eth0 port 80
還可以指定目標(biāo)主機(jī)(接受的值是IP地址、主機(jī)名或域名),如下所示:
- $ sudo tcpflow -c host 192.68.43.1
OR
- $ sudo tcpflow -c host www.google.com
你可以使用-a標(biāo)志,啟用使用所有瀏覽器的所有處理,這相當(dāng)于-e all參數(shù)選項符。
- $ sudo tcpflow -a
OR
- $ sudo tcpflow -e all
還可以激活特定的掃描器;可用的掃描器包括md5、http、netviz、tcpdemux和wifiviz(運(yùn)行tcpflow –H,即可查看關(guān)于每個掃描器的詳細(xì)信息)。
- $ sudo tcpflow -e http
OR
- $ sudo tcpflow -e md5
OR
- $ sudo tcpflow -e netviz
OR
- $ sudo tcpflow -e tcpdemux
OR
- $ sudo tcpflow -e wifiviz
下面這個例子顯示了如何啟用除tcpdemux之外的所有掃描器。
- $ sudo tcpflow -a -x tcpdemux
TCPflow通常在捕獲數(shù)據(jù)包之前試圖讓網(wǎng)絡(luò)接口處于混雜模式。可以使用-p標(biāo)志來阻止這種模式,如下所示:
- $ sudo tcpflow -p -i eth0
想讀取來自tcpdump pcap文件的數(shù)據(jù)包,使用-r標(biāo)志。
- $ sudo tcpflow -f file.pcap
可以使用-v或-d 10選項啟用詳細(xì)模式。
- $ sudo tcpflow -v
OR
- $ sudo tcpflow -d 10
重要提醒:TCPflow的一個局限性是,目前它不了解IP片段,因而可能無法正確捕獲作為TCP連接的一部分而傳輸?shù)暮蠭P片段的數(shù)據(jù)。
想了解更多信息和用法選項,請參閱TCPflow參考手冊頁。
- $ man tcpflow
TCPflow Github代碼倉庫:https://github.com/simsong/tcpflow
就是這樣!TCPflow是一款功能強(qiáng)大的TCP流量記錄器,適用于了解網(wǎng)絡(luò)數(shù)據(jù)包流量、執(zhí)行網(wǎng)絡(luò)取證分析等等。試用一下,歡迎交流心得。
原文標(biāo)題:TCPflow – Analyze and Debug Network Traffic in Linux,作者:Aaron Kili
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】