網(wǎng)絡(luò)分析利器:Tshark

tshark是wireshark網(wǎng)絡(luò)分析工具下的一個(gè)分支,主要用于命令行環(huán)境進(jìn)行抓包、分析记焊,尤其對協(xié)議深層解析時(shí),tcpdump難以勝任的場景中栓撞。

主要參數(shù)

抓包接口類

-i 設(shè)置抓包的網(wǎng)絡(luò)接口遍膜,不設(shè)置則默認(rèn)為第一個(gè)非自環(huán)接口
-D 列出當(dāng)前存在的網(wǎng)絡(luò)接口
-f 設(shè)定抓包過濾表達(dá)式
-s 設(shè)置每個(gè)抓包的大小,默認(rèn)為65535腐缤,多于這個(gè)大小的數(shù)據(jù)將不會(huì)被程序記入內(nèi)存捌归、寫入文件。(這個(gè)參數(shù)相當(dāng)于tcpdump的-s岭粤,tcpdump默認(rèn)抓包的大小僅為68)
-p 設(shè)置網(wǎng)絡(luò)接口以非混合模式工作惜索,即只關(guān)心和本機(jī)有關(guān)的流量。
-B 設(shè)置內(nèi)核緩沖區(qū)大小剃浇,僅對windows有效巾兆。
-y 設(shè)置抓包的數(shù)據(jù)鏈路層協(xié)議,不設(shè)置則默認(rèn)為-L找到的第一個(gè)協(xié)議虎囚,局域網(wǎng)一般是EN10MB等角塑。
-L 列出本機(jī)支持的數(shù)據(jù)鏈路層協(xié)議,供-y參數(shù)使用淘讥。  

抓包進(jìn)度控制

-c 抓取的packet數(shù)圃伶,在處理一定數(shù)量的packet后,停止抓取蒲列,程序退出窒朋。
-a 設(shè)置tshark抓包停止向文件書寫的條件,事實(shí)上是tshark在正常啟動(dòng)之后停止工作并返回的條件蝗岖。條件寫為test:value的形式侥猩,如“-a duration:5”表示tshark啟動(dòng)后在5秒內(nèi)抓包然后停止;“-a filesize:10”表示tshark在輸出文件達(dá)到10kB后停止抵赢;“-a files:n”表示tshark在寫滿n個(gè)文件后停止欺劳。

文件控制

-b 設(shè)置ring buffer文件參數(shù)唧取。
    ring buffer的文件名由-w參數(shù)決定。-b參數(shù)采用test:value的形式書寫划提》愕埽“-b duration:5”表示每5秒寫下一個(gè)ring buffer文件;“-b filesize:5”表示每達(dá)到5kB寫下一個(gè)ring buffer文件腔剂;“-b files:7”表示ring buffer文件最多7個(gè)媒区,周而復(fù)始地使用驼仪,如果這個(gè)參數(shù)不設(shè)定掸犬,tshark會(huì)將磁盤寫滿為止。
-r 設(shè)置tshark分析的輸入文件绪爸。tshark既可以抓取分析即時(shí)的網(wǎng)絡(luò)流量湾碎,又可以分析dump在文件中的數(shù)據(jù)。-r不能是命名管道和標(biāo)準(zhǔn)輸入奠货。

過濾處理

-R 設(shè)置讀冉槿臁(顯示)過濾表達(dá)式(read filter expression)。不符合此表達(dá)式的流量同樣不會(huì)被寫入文件递惋。注意柔滔,讀取(顯示)過濾表達(dá)式的語法和底層相關(guān)的抓包過濾表達(dá)式語法不相同萍虽。類似于抓包過濾表達(dá)式睛廊,在命令行使用時(shí)最好將它們quote起來。
-n 禁止所有地址名字解析(默認(rèn)為允許所有)杉编。
-N 啟用某一層的地址名字解析超全。“m”代表MAC層邓馒,“n”代表網(wǎng)絡(luò)層嘶朱,“t”代表傳輸層,“C”代表當(dāng)前異步DNS查找光酣。如果-n和-N參數(shù)同時(shí)存在疏遏,-n將被忽略。如果-n和-N參數(shù)都不寫救军,則默認(rèn)打開所有地址名字解析财异。
-d 將指定的數(shù)據(jù)按有關(guān)協(xié)議解包輸出。如要將tcp 8888端口的流量按http解包缤言,應(yīng)該寫為“-d tcp.port==8888,http”宝当。注意選擇子和解包協(xié)議之間不能留空格。

輸出格式

-w 設(shè)置raw數(shù)據(jù)的輸出文件胆萧。這個(gè)參數(shù)不設(shè)置庆揩,tshark將會(huì)把解碼結(jié)果輸出到stdout俐东。“-w-”表示把raw輸出到stdout订晌。如果要把解碼結(jié)果輸出到文件虏辫,使用重定向“>”而不要-w參數(shù)。
-F 設(shè)置輸出raw數(shù)據(jù)的格式锈拨,默認(rèn)為libpcap砌庄。“tshark -F”會(huì)列出所有支持的raw格式奕枢。
-V 設(shè)置將解碼結(jié)果的細(xì)節(jié)輸出娄昆,否則解碼結(jié)果僅顯示一個(gè)packet一行的summary。
-x 設(shè)置在解碼輸出結(jié)果中缝彬,每個(gè)packet后面以HEX dump的方式顯示具體數(shù)據(jù)萌焰。
-T 設(shè)置解碼結(jié)果輸出的格式,包括text,ps,psml和pdml谷浅,默認(rèn)為text扒俯。
-t 設(shè)置解碼結(jié)果的時(shí)間格式∫环瑁“ad”表示帶日期的絕對時(shí)間撼玄,“a”表示不帶日期的絕對時(shí)間,“r”表示從第一個(gè)包到現(xiàn)在的相對時(shí)間墩邀,“d”表示兩個(gè)相鄰包之間的增量時(shí)間(delta)掌猛。
-S 在向raw文件輸出的同時(shí),將解碼結(jié)果打印到控制臺(tái)磕蒲。
-l 在處理每個(gè)包時(shí)即時(shí)刷新輸出留潦。
-X 擴(kuò)展項(xiàng)。
-q 設(shè)置安靜的stdout輸出(例如做統(tǒng)計(jì)時(shí))
-z 設(shè)置統(tǒng)計(jì)參數(shù)辣往。

其它

-h 顯示命令行幫助兔院。
-v 顯示tshark的版本信息。
-o 重載選項(xiàng)站削。

基本用法

在linux下安裝(debian或ubuntu)

sudo apt-get install tshark
安裝完成后在抓包之前坊萝,可以先檢查版本、查看幫助等了解tshark初步了解

查看tshark版本

tshark -v

列出當(dāng)前存在的網(wǎng)絡(luò)接口

tshark -D
網(wǎng)卡描述依據(jù)OS有不同的編號方式许起,在不了解網(wǎng)絡(luò)設(shè)備及編號情況下十偶,一般先用“tshark -D”查看網(wǎng)絡(luò)接口的編號以供-i參數(shù)使用。
注: linux可以結(jié)合ifconfig命令查看

tshark對指定網(wǎng)卡監(jiān)聽园细,抓包

sudo tshark -i <interface>

抓取網(wǎng)卡eth0的流量并寫入capture123.pcap

tshark -i eth0 -w capture123.pcap

讀取之前的文件capture123.pcap

tshark -i eth0 -r capture123.pcap

抓取網(wǎng)卡eth0的流量10分鐘

tshark -i eth0 -a duration:600

注: 默認(rèn)時(shí)間單位為秒

抓取網(wǎng)卡eth0的10000個(gè)數(shù)據(jù)包

tshark -c 10000 -i eth0

抓取網(wǎng)卡eth0涉及192.168.1.1的流量報(bào)文

tshark -i eth0 -f “host 192.168.1.1”
注: 與wireshark惦积、tcpdump一致,均使用BPF過濾表達(dá)式

抓取網(wǎng)卡eth0指定協(xié)議的流量報(bào)文

tshark -i eth0 -f “<協(xié)議名>”
協(xié)議名可以為: tcp, udp, dns, icmp, http等

案例

實(shí)時(shí)打印當(dāng)前mysql查詢語句

tshark -s 512 -i eth1 -n -f 'tcp dst port 3306' -R 'mysql.query' -T fields -e mysql.query

說明:

  • -s 512 :只抓取前512個(gè)字節(jié)數(shù)據(jù)
  • -i eth0 :監(jiān)聽eth0網(wǎng)卡
  • -n :禁止域名解析
  • -f ‘tcp dst port 3306’ :只捕捉協(xié)議為tcp,目的端口為3306的數(shù)據(jù)包
  • -R ‘mysql.query’ :過濾出mysql.query查詢語句的報(bào)文
  • -T fields -e mysql.query :打印mysql查詢語句

實(shí)時(shí)打印當(dāng)前http請求的url(包括域名)

tshark -s 512 -i eth1 -n -f 'tcp dst port 8000' -R 'http.host and http.request.uri' -T fields -e http.host -e http.request.uri -l | tr -d '\t'

說明:

  • -s 512 :只抓取前512個(gè)字節(jié)數(shù)據(jù)
  • -i eth1 :監(jiān)聽eth1網(wǎng)卡
  • -n :禁止網(wǎng)絡(luò)對象名稱解析
  • -f ‘tcp dst port 8000’ :只捕捉協(xié)議為tcp,目的端口為8000的數(shù)據(jù)包
  • -R ‘http.host and http.request.uri’ :過濾出http.host和http.request.uri
  • -T fields -e http.host -e http.request.uri :打印http.host和http.request.uri
  • -l :輸出到標(biāo)準(zhǔn)輸出

讀取之前抓包文件進(jìn)行報(bào)文數(shù)據(jù)分析

需要從抓包的文件evidence04.pcap中提取出報(bào)文相關(guān)數(shù)據(jù)信息猛频,如時(shí)間狮崩、源IP蛛勉、目的IP、協(xié)議名睦柴、源Port诽凌、標(biāo)Port、包大小等信息坦敌,最后輸出到csv文件侣诵。

tshark -r evidence04.pcap -T fields -e frame.time_relative -e ip.src -e ip.dst -e ip.proto -e tcp.srcport -e tcp.dstport -e frame.len -E header=n -E separator=, -E quote=n -E occurrence=f > output.csv

說明:

-r evidence04.pcap 需要分析的報(bào)文記錄文件(pcap格式)
-T fields 輸出格式,選fields按字段狱窘,也可以選json等其他格式杜顺,需結(jié)合-e 及 -E使用
-e frame.time_relative 取出相對封包時(shí)間的欄位資料
-e ip.src 提取源IP
-e ip.dst 提取目的IP
-e ip.proto 提取協(xié)議名
-e tcp.srcport 提取源Port
-e tcp.dstport 提取目的Port
-e frame.len 提取包大小
-E header=n 是否輸出字段名稱(cvs的第1行)
-E separator=, 指定分割符,/t是tab训柴,/s是一格空格
-E quote=n 指定是否對字段用引號哑舒,d是雙引號,s是單引號幻馁,n是不用
-E occurrence=f 多值時(shí)是否保留,f是第一個(gè)值越锈,l是最后一個(gè)值仗嗦,a是所有值都列出,默認(rèn)全部
> output.csv 輸出文件路徑及名稱

參考:


本文使用知識(shí)共享協(xié)議署名-非商業(yè)性使用-相同方式共享 (BY-NC-SA 4.0) 協(xié)議

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市丹弱,隨后出現(xiàn)的幾起案子德撬,更是在濱河造成了極大的恐慌,老刑警劉巖躲胳,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蜓洪,死亡現(xiàn)場離奇詭異,居然都是意外死亡坯苹,警方通過查閱死者的電腦和手機(jī)隆檀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粹湃,“玉大人恐仑,你說我怎么就攤上這事∥” “怎么了裳仆?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長孤钦。 經(jīng)常有香客問我歧斟,道長记某,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任构捡,我火速辦了婚禮液南,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘勾徽。我一直安慰自己滑凉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布喘帚。 她就那樣靜靜地躺著畅姊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吹由。 梳的紋絲不亂的頭發(fā)上若未,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機(jī)與錄音倾鲫,去河邊找鬼粗合。 笑死,一個(gè)胖子當(dāng)著我的面吹牛乌昔,可吹牛的內(nèi)容都是我干的隙疚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼磕道,長吁一口氣:“原來是場噩夢啊……” “哼供屉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起溺蕉,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤伶丐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后疯特,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哗魂,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年辙芍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了啡彬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡故硅,死狀恐怖庶灿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吃衅,我是刑警寧澤往踢,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站徘层,受9級特大地震影響峻呕,放射性物質(zhì)發(fā)生泄漏利职。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一瘦癌、第九天 我趴在偏房一處隱蔽的房頂上張望猪贪。 院中可真熱鬧,春花似錦讯私、人聲如沸热押。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽桶癣。三九已至,卻和暖如春娘锁,著一層夾襖步出監(jiān)牢的瞬間牙寞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工莫秆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留间雀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓馏锡,卻偏偏與公主長得像雷蹂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子杯道,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容