1、前言
黑客帝國系列片 大家都看過了,知道網絡黑客尼奧發現看似正常的現實世界實際上是由一個名為 “矩陣” 的計算機人工智能系統控制的,然后尼奧見到了黑客組織的首領墨菲斯,三人走上了抗爭矩陣征途的故事 。 那么黑客都是些什么人了? 黑客如今在互聯網上已經不再是鮮為人知的人物,他們已經發展成網絡上的一個獨特的群體。他們有著與常人不同的理想和追求,有著自己獨特的行為模式,網絡上出現了很多由一些志同道合的人組織起來的黑客組織。 在[信息安全]里,“黑客” 指研究智取計算機安全系統的人員。利用公共通訊網路,如互聯網和電話系統,在未經許可的情況下,載入對方系統的被稱為黑帽黑客(英文:black hat,另稱 cracker);調試和分析計算機安全系統的白帽黑客(英語:white hat)。“黑客” 一詞最早用來稱呼研究盜用電話系統的人士。 他們有個共同點都是利用公共通訊網路,進行著不同的活動。 而今天我們的主角也是針對網絡進行[數據采集]與分析的工具,它就是TCPDump。 老樣子,我們本文主要介紹了 LinuxTCPDump 命令使用詳解,文中會通過非常詳細的示例代碼介紹,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨我來一起學習!
2、[TCPDump] 介紹
Linux 作為網絡服務器,特別是作為路由器和網關時,數據的采集和分析是不可少的。 Tcpdump 是一個用于截取網絡分組,并輸出分組內容的工具。 tcpdump 憑借強大的功能和靈活的截取策略,使其成為類 UNIX 系統下用于網絡分析和問題排查的首選工具。
1.tcpdump 可以將網絡中傳送的數據包的 “頭” 完全截獲下來提供分析。
它支持針對網絡層、協議、主機、網絡或端口的過濾,并提供 and、or、not 等邏輯語句來幫助你去掉無用的信息。
2. 同時 tcpdump 提供了源代碼,公開了接口,因此具備很強的可擴展性。
基本上 tcpdump 的總的輸出格式為:系統時間 來源主機. 端口 > 目標主機. 端口 數據包參數 2.1、問題來了:所有用戶都可以采用該命令嗎? 雖然 tcpdump 提供源代碼,公開了接口,具備很強的可擴展性,對于網絡維護和入侵者都是非常有用的工具。 但 tcpdump普通用戶不能正常執行,需要具備 root 權限的用戶才可以直接執行它來獲取網絡上的信息。 2.2、抓包原理 linux 抓包是通過注冊一種虛擬的底層網絡協議來完成對網絡報文(準確的是網絡設備)消息的處理權。 當網卡接收到一個網絡報文之后,它會遍歷系統中所有已經注冊的網絡協議,如以太網協議、x25 協議處理模塊來嘗試進行報文的解析處理。 當抓包模塊把自己偽裝成一個網絡協議的時候,系統在收到報文的時候就會給這個偽協議一次機會,讓它對網卡收到的保溫進行一次處理,此時該模塊就會趁機對報文進行窺探,也就是啊這個報文完完整整的復制一份,假裝是自己接收的報文,匯報給抓包模塊。
2.3、特點
2.3.1.參數化支持
1. 參數 tcpdump 支持相當多的不同參數。 如使用 - i 參數指定 tcpdump 監聽的網絡接口, 使用 - c 參數指定要監聽的數據包數量, 使用 - w 參數指定將監聽到的數據包寫入文件中保存等。 2. 安全 一般情況下網絡硬件和 TCP/IP 堆棧不支持接收或發送與本計算機無關的數據包,為了接收這些數據包,就必須使用網卡的混雜模式,并繞過標準的 TCP/IP 堆棧才行。 在 FreeBSD 下,這就需要內核支持偽設備 bpfilter。因此,在內核中取消 bpfilter 支持,就能屏蔽 tcpdump 之類的網絡分析工具。 并且當網卡被設置為混雜模式時,系統會在控制臺和日志文件中留下記錄,提醒管理員留意這臺系統是否被用作攻擊同網絡的其他計算機的跳板。 3. 解碼 tcpdump 對截獲的數據并沒有進行徹底解碼,數據包內的大部分內容是使用十六進制的形式直接打印輸出的。顯然這不利于分析網絡故障,通常的解決辦法是先使用帶 - w 參數的 tcpdump 截獲數據并保存到文件中,然后再使用其他程序進行解碼分析。當然也應該定義過濾規則,以避免捕獲的數據包填滿整個硬盤。
2.2.2.TCP 功能
tcpDump 將搜索系統中第一個網絡接口,并顯示它截獲的所有數據,這些數據對我們不一定全都需要, 數據太多不利于分析。所以,我們應當先想好需要哪些數據,TcpDump 提供了很多參數供我們選擇數據過濾。
3.服務器安裝 Tcpdump
3.1、安裝 一般情況下 Linux 系統會自帶 tcpdump 工具,如果系統沒有安裝,直接用命令安裝就行了。 在 linux 服務器上我們使用?yum install -y tcpdump?命令來安裝 tcpdump 工具。 3.2、檢查安裝是否正常。 查看安裝版本命令:tcpdump --help
4.tcpdump 命令
4.1.常用功能選項 tcpdump [-adeflnNOpqStvx][-c 數據包數量 >][-dd][-ddd][-F < 表達文件 >][-i < 網絡界面 >][-r < 數據包文件 >][-s < 數據包大小 >][-tt][-T < 數據包類型 >][-vv][-w < 數據包文件 >][輸出數據欄位] 參數說明:
-a 嘗試將網絡和廣播地址轉換成名稱。
-c <數據包數目> 收到指定的數據包數目后,就停止進行傾倒操作。
-d 把編譯過的數據包編碼轉換成可閱讀的格式,并傾倒到標準輸出。
-dd 把編譯過的數據包編碼轉換成 C 語言的格式,并傾倒到標準輸出。
-ddd 把編譯過的數據包編碼轉換成十進制數字的格式,并傾倒到標準輸出。
-e 在每列傾倒資料上顯示連接層級的文件頭。
-f 用數字顯示網際網絡地址。
-F <表達文件> 指定內含表達方式的文件。
-i <網絡界面> 使用指定的網絡截面送出數據包。
-l 使用標準輸出列的緩沖區。
-n 不把主機的網絡地址轉換成名字。
-N 不列出域名。
-O 不將數據包編碼最佳化。
-p 不讓網絡界面進入混雜模式。
-q 快速輸出,僅列出少數的傳輸協議信息。
-r <數據包文件> 從指定的文件讀取數據包數據。
-s <數據包大小> 設置每個數據包的大小。
-S 用絕對而非相對數值列出 TCP 關聯數。
-t 在每列傾倒資料上不顯示時間戳記。
-tt 在每列傾倒資料上顯示未經格式化的時間戳記。
-T <數據包類型> 強制將表達方式所指定的數據包轉譯成設置的數據包類型。
-v 詳細顯示指令執行過程。
-vv 更詳細顯示指令執行過程。
-x 用十六進制字碼列出數據包資料。
-w <數據包文件> 把數據包數據寫入指定的文件。 ?
4.2、輸出內容 基本上 tcpdump 總的的輸出格式為:系統時間 來源主機. 端口 > 目標主機. 端口 數據包參數
5、實操
5.1、常見用法 1. 查看網卡命令:ifconfig 知道了網卡,就可以使用 tcpdump 工具針對服務器上的網卡進行監控、過濾網絡數據了。
2. 查看本地網卡狀態
Iface:存在的網卡。 MTU:最大傳輸單元。 RX-OK RX-ERR RX-DRP RX-OVR:正確接收數據報的數量以及發生錯誤、流式、碰撞的總數。TX-OK TX-ERR TX-DRP TX-OVR:正確發送數據報的數量以及發生錯誤、流式、碰撞的總數。 3. 指定網卡 普通情況下,直接啟動 tcpdump 將監視第一個網絡端口所有流過的數據包。?如果不指定網卡,默認 tcpdump 只會監視第一個網絡接口。 tcpdump -i ens33(網卡名)
4. 監視所有進入或離開主機 xps 的數據包。xps 為主機名。
tcpdump?host?xps 5. 監視指定 ip,截獲指定主機收到和發出的所有數據包。
tcpdump?host?192.168.1.5? 6.截獲主機 192.168.1.5 和 192.168.1.10 或 192.168.1.113 的通信包
tcpdump?host?192.168.1.5?and?(192.168.1.10?or?192.168.1.13)?? 7.打印 xps 與任何其他主機之間通信的 IP 數據包,但不包括與 xps1 之間的通信包
tcpdump?ip?host?xps?and?not?xps1?? 8.截獲主機 192.168.1.5 除了和 192.168.1.13 之外所有的主機通信的 ip 包
tcpdump?ip?host?192.168.1.5?and?!?192.168.1.13?? 9.截獲主機 hostname 發送的所有數據
tcpdump?-i?ens33?src?host?hostname?? 10.截獲送到主機 hostname 的所有數據
tcpdump?-i?ens33?dst?host?hostname 5.2、監聽指定域名 TCP 協議數據包
步驟一、開始監聽指定域名的 ip 包流量:
tcpdump host baidu.com。??
步驟二、打開瀏覽器、訪問 baidu.com
此時、命令行下可以看到客戶端和 baidu 服務之間的 TCP 協議 IP 包、學習網絡協議的時候、配合使用很方便。
2、監聽來自指定域名的 TCP 協議包數據包:
步驟一、開始監聽指定域名的 ip 包流量:
tcpdump src host baidu.com。??
步驟二、打開瀏覽器、訪問 baidu.com
此時、命令行下可以看到客戶端和 baidu 服務之間的 TCP 協議 IP 包、學習網絡協議的時候、配合使用很方便。
3、監聽發送到指定域名的 TCP 協議包數據包:
步驟一、開始監聽指定域名的 ip 包流量:
tcpdump dst host baidu.com。??
步驟二、打開瀏覽器、訪問 baidu.com
此時、命令行下可以看到客戶端和 baidu 服務之間的 TCP 協議 IP 包、學習網絡協議的時候、配合使用很方便。
4、監聽指定端口的 tcp 包: 步驟一、開始監聽:
tcpdump tcp port 80。??
步驟二、打開另外一個終端、使用 nc 192.168.10.188 80 命令訪問 80 端口。
此時、tcpdump 監聽終端下可以看到請求和返回的 ip 包。同理、如果要監聽 udp 包可以用:tcpdump udp port 9999 5.3、tcpdump 與 Wireshark 我們可以把二者進行結合,在 Linux 中抓包,在 windows 中分析包。
tcpdump tcp -i ens33 -t -s 0?-c 5 and dst port !22 and src net 192.168.1.10/24 -w ./targetfile.cap
1.tcp: ip icmp arp rarp 和 tcp、udp、icmp 這些選項等都要放到第一個參數的位置,用來過濾數據報的類型;
2.-i eth1 : 只抓取經過 ens33 的數據包
3.-t: 不顯示時間戳
4.-s 0 : 抓取數據包時默認抓取長度為 68 字節,加上 - S 0 后可以抓取完整的數據包
5.-c 5: 只抓取 5 個數據包
6.dst port ! 22 : 不抓取目標端口為 22 的數據包
7.src net 192.168.1.10/24: 數據包的源網絡地址是 192.168.1.10/24
8.-w ./targetfile.cap: 保存為 cap 文件,方便用 ethereal(wireshark) 分析。
6、結語
tcpdump 針對網絡進行數據采集與分析, 同時保存到指定文件,用 wireshark 來打開查看。可以快速查看符合網絡接口符合某一條件的抓包,方便我們確定網絡問題。
編輯:黃飛
?
評論
查看更多