macOS 下使用 tcpdump 抓包

tcpdump 是 Unix/Linux 下的抓包工具瑞筐,在 macOS 上也有實現(xiàn)猪贪。這個命令可以針對指定網(wǎng)卡、端口、協(xié)議進行抓包粱侣,這里記錄下使用方法懂牧。

一巷查、獲取適配器列表

使用 -D--list-interfaces 參數(shù)

$ tcpdump -D

得到如下結(jié)果:

1.en0 [Up, Running]
2.p2p0 [Up, Running]
3.awdl0 [Up, Running]
4.bridge0 [Up, Running]
5.utun0 [Up, Running]
6.en1 [Up, Running]
7.utun1 [Up, Running]
8.en2 [Up, Running]
9.utun2 [Up, Running]
10.lo0 [Up, Running, Loopback]
11.gif0
12.stf0
13.XHC20

其中的適配器名稱部分浮梢,可以使用 -i 參數(shù)監(jiān)聽此適配器的通訊。

二唐含、監(jiān)聽適配器

使用 -i--interface 參數(shù)監(jiān)聽適配器浅浮,適配器可以用序號名字來表示,這些內(nèi)容可以通過 -D 參數(shù)獲取捷枯。macOS 下監(jiān)聽適配器的話滚秩,必須使用 root 權(quán)限。
  
  如果需要詳細查看報內(nèi)容淮捆,可以使用 -X 參數(shù)郁油。

# 監(jiān)聽適配器 en0 的通訊
$ sudo tcpdump -i en0

# 或者使用 --interface 參數(shù)
$ sudo tcpdump --interface en0

# 或者使用 --interface= 參數(shù),效果一樣
$ sudo tcpdump --interface=en0

三攀痊、監(jiān)聽適配器過濾

使用 -D 參數(shù)拿到適配器列表后桐腌,結(jié)合 -i 參數(shù)就可以監(jiān)聽適配器了。但是這樣的話會監(jiān)聽到所有的通訊苟径,可以根據(jù)需要哩掺,針對感興趣的內(nèi)容進行過濾。

1涩笤、過濾主機

  • 抓取所有經(jīng)過 eth1嚼吞,目的或源地址是 192.168.1.1 的網(wǎng)絡(luò)數(shù)據(jù)
$ sudo tcpdump -i eth1 host 192.168.1.1
  • 源地址
$ sudo tcpdump -i eth1 src host 192.168.1.1
  • 目的地址
$ sudo tcpdump -i eth1 dst host 192.168.1.1

2、過濾端口

  • 抓取所有經(jīng)過 eth1蹬碧,目的或源端口是 25 的網(wǎng)絡(luò)數(shù)據(jù)
$ sudo tcpdump -i eth1 port 25
  • 源端口
$ sudo tcpdump -i eth1 src port 25
  • 目的端口
$ sudo tcpdump -i eth1 dst port 25

3舱禽、過濾網(wǎng)段

  • 抓取所有經(jīng)過 eth1,目的或源網(wǎng)段是 192.168 的網(wǎng)絡(luò)數(shù)據(jù)
$ sudo tcpdump -i eth1 net 192.168
  • 源網(wǎng)段
$ sudo tcpdump -i eth1 src net 192.168
  • 目的網(wǎng)段
$ sudo tcpdump -i eth1 dst net 192.168

4恩沽、協(xié)議過濾

$ sudo tcpdump -i eth1 arp
$ sudo tcpdump -i eth1 ip
$ sudo tcpdump -i eth1 tcp
$ sudo tcpdump -i eth1 udp
$ sudo tcpdump -i eth1 icmp

5誊稚、使用表達式

  • 與:&&and
  • 或:||or
  • 非:!not

四、選項

tcpdump 的選項也很多罗心,要想知道所有選項的話里伯,請參考 man tcpdump,下面只記錄 tcpdump 最常用的選項渤闷。

需要注意的是疾瓮,tcpdump 默認只會截取前 96 字節(jié)的內(nèi)容,要想截取所有的報文內(nèi)容飒箭,可以使用 -s number狼电, number 就是你要截取的報文字節(jié)數(shù),如果是 0 的話弦蹂,表示截取報文全部內(nèi)容肩碟。

  • -n 表示不要解析域名,直接顯示 ip凸椿。
  • -nn 不要解析域名和端口
  • -X 同時用 hex 和 ascii 顯示報文的內(nèi)容削祈。
  • -XX-X,但同時顯示以太網(wǎng)頭部脑漫。
  • -S 顯示絕對的序列號(sequence number)髓抑,而不是相對編號。
  • -i any 監(jiān)聽所有的網(wǎng)卡
  • -v, -vv, -vvv:顯示更多的詳細信息
  • -c number: 截取 number 個報文窿撬,然后結(jié)束
  • -A: 只使用 ascii 打印報文的全部數(shù)據(jù)启昧,不要和 -X 一起使用。截取 http 請求的時候可以用 sudo tcpdump -nSA port 80劈伴!

五密末、Flags

tcpdump Flags:

TCP Flag tcpdump Flag Meaning
SYN [S] Syn packet, a session establishment request.
ACK [A] Ack packet, acknowledge sender’s data.
FIN [F] Finish flag, indication of termination.
RESET [R] Reset, indication of immediate abort of conn.
PUSH [P] Push, immediate push of data from sender.
URGENT [U] Urgent, takes precedence over other data.
NONE [.] Placeholder, usually used for ACK.

六、實例

  • 抓取所有經(jīng)過 eth1跛璧,目的地址是 192.168.1.254 或 192.168.1.200 端口是 80 的 TCP 數(shù)據(jù)
$ sudo tcpdump -i eth1 '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host
192.168.1.200)))'
  • 抓取所有經(jīng)過 eth1严里,目標 MAC 地址是 00:01:02:03:04:05 的 ICMP 數(shù)據(jù)
$ sudo tcpdump -i eth1 '((icmp) and ((ether dst host 00:01:02:03:04:05)))'
  • 抓取所有經(jīng)過 eth1,目的網(wǎng)絡(luò)是 192.168追城,但目的主機不是 192.168.1.200 的 TCP 數(shù)據(jù)
$ sudo tcpdump -i eth1 '((tcp) and ((dst net 192.168) and (not dst host 192.168.1.200)))'
  • 只抓 SYN 包
$ sudo tcpdump -i eth1 'tcp[tcpflags] = tcp-syn'
  • 抓 SYN, ACK
$ sudo tcpdump -i eth1 'tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack != 0'
  • 抓 SMTP 數(shù)據(jù)
    抓取數(shù)據(jù)區(qū)開始為 MAIL 的包刹碾,MAIL 的十六進制為 0x4d41494c
$ sudo tcpdump -i eth1 '((port 25) and (tcp[(tcp[12]>>2):4] = 0x4d41494c))'
  • 抓 HTTP GET 數(shù)據(jù)
    GET(注意后面有空格)的十六進制是 0x47455420
$ sudo tcpdump -i eth1 'tcp[(tcp[12]>>2):4] = 0x47455420'
  • 抓 SSH 返回
    SSH- 的十六進制是 0x5353482D
$ sudo tcpdump -i eth1 'tcp[(tcp[12]>>2):4] = 0x5353482D'

抓老版本的 SSH 返回信息座柱,如 SSH-1.99..

$ sudo tcpdump -i eth1 '(tcp[(tcp[12]>>2):4] = 0x5353482D) and (tcp[((tcp[12]>>2)+4):2] = 0x312E)'
  • 抓 DNS 請求數(shù)據(jù)
$ sudo tcpdump -i eth1 udp dst port 53
  • 其他
    -c 參數(shù)對于運維人員來說也比較常用迷帜,因為流量比較大的服務(wù)器物舒,靠人工 CTRL+C 還是抓的太多,于是可以用 -c 參數(shù)指定抓多少個包戏锹。
$ sudo time tcpdump -nn -i eth0 'tcp[tcpflags] = tcp-syn' -c 10000 > /dev/null

上面的命令計算抓 10000 個 SYN 包花費多少時間冠胯,可以判斷訪問量大概是多少。

  • 實時抓取端口號 8000GET 包锦针,然后寫入 GET.log
$ sudo tcpdump -i eth0 '((port 8000) and (tcp[(tcp[12]>>2):4]=0x47455420))' -nnAl -w /tmp/GET.log

七荠察、補充說明

測試過程中,發(fā)現(xiàn)本機發(fā)出的請求沒有被抓到奈搜,不知道是參數(shù)設(shè)置問題還是什么悉盆,暫時先把疑問記錄下來。

八馋吗、參考資料

(完)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末焕盟,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子耗美,更是在濱河造成了極大的恐慌京髓,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件商架,死亡現(xiàn)場離奇詭異堰怨,居然都是意外死亡,警方通過查閱死者的電腦和手機蛇摸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門备图,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赶袄,你說我怎么就攤上這事揽涮。” “怎么了饿肺?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵蒋困,是天一觀的道長。 經(jīng)常有香客問我敬辣,道長雪标,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任溉跃,我火速辦了婚禮村刨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘撰茎。我一直安慰自己嵌牺,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著逆粹,像睡著了一般募疮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上僻弹,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天酝锅,我揣著相機與錄音,去河邊找鬼奢方。 笑死,一個胖子當(dāng)著我的面吹牛爸舒,可吹牛的內(nèi)容都是我干的蟋字。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼扭勉,長吁一口氣:“原來是場噩夢啊……” “哼鹊奖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起涂炎,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤忠聚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后唱捣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體两蟀,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年震缭,在試婚紗的時候發(fā)現(xiàn)自己被綠了赂毯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡拣宰,死狀恐怖党涕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情巡社,我是刑警寧澤膛堤,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站晌该,受9級特大地震影響肥荔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜气笙,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一次企、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧潜圃,春花似錦缸棵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吧凉。三九已至,卻和暖如春踏志,著一層夾襖步出監(jiān)牢的瞬間阀捅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工针余, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留饲鄙,地道東北人。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓圆雁,卻偏偏與公主長得像忍级,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子伪朽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,066評論 2 355