<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    Linux網絡抓包分析工具

    VSole2023-05-05 09:30:07

    一、tcpdump

    1、作用

    tcpdump 指令可列出經過指定網絡界面的數據包文件頭,可以將網絡中傳送的數據包的 “頭” 完全截獲下來提供分析。它支持針對網絡層、協議、主機、網絡或端口的過濾,并提供 and、or、not 等邏輯語句來幫助你摘取有用信息。
    由于它需要將網絡接口設置為混雜模式,普通用戶不能正常執行,但具備 root 權限的用戶可以直接執行它來獲取網絡上的信息

    其他抓包工具

    • wireshark具有圖形化和命令行兩種版本,可以對 tcpdump 抓的包進行分析,其主要功能就是分析數據包。
    • ngrep它將抓到的包數據以文本形式直接顯示出來,適用于包數據包含文本的[抓包]分析 (如 HTTP、MySQL)

    2、命令選項

    tcpdump [選項] [協議] [數據流方向] [范圍]
    • -a 將網絡地址和廣播地址轉變成名字
    • -A 以 ASCII 格式打印出所有分組,并將鏈路層的頭最小化
    • -b 數據鏈路層上選擇協議,包括 ip/arp/rarp/ipx 都在這一層
    • -c 指定收取數據包的次數,即在收到指定數量的數據包后退出 tcpdump
    • -d 將匹配信息包的代碼以人們能夠理解的匯編格式輸出
    • -dd 將匹配信息包的代碼以 c 語言程序段的格式輸出
    • -ddd 將匹配信息包的代碼以十進制的形式輸出
    • -D 打印系統中所有可以監控的網絡接口
    • -e 在輸出行打印出數據鏈路層的頭部信息
    • -f 將外部的 Internet 地址以數字的形式打印出來,即不顯示主機名
    • -F 從指定的文件中讀取表達式,忽略其他的表達式
    • -i 指定監聽網絡接口
    • -l 使標準輸出變為緩沖形式,可以數據導出到文件
    • -L 列出網絡接口已知的數據鏈路
    • -n 不把網絡地址轉換為名字
    • -N 不輸出主機名中的域名部分,例如 www.baidu.com 只輸出 www
    • -nn 不進行端口名稱的轉換
    • -P 不將網絡接口設置為混雜模式
    • -q 快速輸出,即只輸出較少的協議信息
    • -r 從指定的文件中讀取數據,一般是 - w 保存的文件
    • -w 將捕獲到的信息保存到文件中,且不分析和打印在屏幕
    • -s 從每個組中讀取在開始的 snaplen 個字節,而不是默認的 68 個字節
    • -S 將 tcp 的序列號以絕對值形式輸出,而不是相對值
    • -T 將監聽到的包直接解析為指定的類型的報文,常見的類型有 rpc(遠程過程調用)和 snmp(簡單網絡管理協議)
    • -t 在輸出的每一行不打印時間戳
    • -tt 在每一行中輸出非格式化的時間戳
    • -ttt 輸出本行和前面以后之間的時間差
    • -tttt 在每一行中輸出 data 處理的默認格式的時間戳
    • -u 輸出未解碼的 NFS 句柄
    • -v 輸出稍微詳細的信息,例如在 ip 包中可以包括 ttl 和服務類型的信息
    • -vv 輸出相信的保報文信息

    3、tcpdump 表達式

    關于數據類型的關鍵字

    包括 host、port、net:

    host 192.168.100.1 表示一臺主機,net 192.168.100.0 表示一個網絡網段,port 80 指明端口號為 80,在這里如果沒有指明數據類型,那么默認就是 host

    數據傳輸方向的關鍵字

    包括 src、dst、dst or src、dst and src,這些關鍵字指明了傳輸的方向,比如 src 192.168.100.1 說明數據包源地址是 192.168.100.1。dst net 192.168.100.0 指明目的網絡地址是 192.168.100.0,默認是監控主機對主機的 src 和 dst,即默認監聽本機和目標主機的所有數據
    協議關鍵字
    包括 ip、arp、rarp、udp

    其他關鍵字

    • 運算類型:or、and、not、!
    • 輔助功能型:gateway、less、broadcast、greater

    4、tcpdump 捕獲方式

    tcpdump [協議類型] [源或目標] [主機名稱或 IP] [or/and/not/! 條件組合] [源或目標] [主機名或 IP] [or/and/not/! 條件組合] [端口] [端口號] …… [or/and/not/! 條件組合] [條件]
    > tcpdump  ip dst 192.168.10.1 and src 192.168.10.10 and port 80 and host  !www.baidu.com
    

    tcpdump

    默認監聽在第一塊網卡,監聽所有經過此網卡的數據包

    > tcpdump  -i  ens33
    
    監聽指定網卡 ens33 的所有傳輸數據包

    > tcpdump -i ens33 host 192.168.100.10  
    
    捕獲主機 192.168.100.10 經過網卡 ens33 的所有數據包(也可以是主機名,但要求可以解析出 IP 地址)

    • 第一列:報文的時間
    • 第二列:網絡協議 IP
    • 第三列:發送方的 ip 地址、端口號、域名,上圖顯示的是本機的域名,可通過 / etc/hosts 查看本機域名
    • 第四列:箭頭 >, 表示數據流向
    • 第五列:接收方的 ip 地址、端口號、域名,
    • 第六列:冒號
    • 第七列:數據包內容,報文頭的摘要信息,有 ttl、報文類型、標識值、序列、包的大小等信息
    > tcpdump host 192.168.130.151 and  192.168.130.152or192.168.130.153192.168.130.152or192.168.130.153
    
    捕獲主機 192.168.56.209 和主機 192.168.56.210 或 192.168.56.211 的所有通信數據包
    > tcpdump ip host node9 and not www.baidu.com
    
    捕獲主機 node9 與其他主機之間(不包括 www.baidu.com)通信的 ip 數據包
    > tcpdump ip host node9 and ! www.baidu.com
    
    捕獲 node9 與其他所有主機的通信數據包(不包括 www.baidu.com)
    > tcpdump -i ens33 src node10
    
    捕獲源主機 node10 發送的所有的經過 ens33 網卡的所有數據包
    > tcpdump -i ens33 dst host www.baidu.com
    
    捕獲所有發送到主機 www.baidu.com 的數據包
    監聽主機 192.168.56.1 和 192.168.56.210 之間 ip 協議的 80 端口的且排除 www.baidu.com 通信的所有數據包:
    > tcpdump ip dst 192.168.56.1 and src 192.168.56.210 and port 80 and host ! baidu.com
    
    也可以寫成 tcpdump ip dst 192.168.56.1 and src 192.168.56.210 and port 80 and host not www.baidu.com,即 not 和!都是相同的取反的意思
    > tcpdump arp
    
    監控指定主機的通信數據包與 1.9.1 方式相同
    > tcpdump tcp port 22 and host 192.168.56.210
    
    捕獲主機 192.168.56.210 接收和發出的 tcp 協議的 ssh 的數據包
    tcpdump udp port 53
    監聽本機 udp 的 53 端口的數據包,udp 是 dns 協議的端口,這也是一個 dns 域名解析的完整過程

    5、常用的過濾條件

    tcpdump 可以支持邏輯運算符

    and: 與運算,所有的條件都需要滿足,可用 “and”和 “&&” 表示
    or:或運行,只要有一個條件滿足就可以,可用 “or” 和“|”表示
    not:取反,即取反條件,可以用 “not” 和“!”表示
    > tcpdump icmp and src 192.168.100.10 -i ens33 -n
    

    過濾 icmp 報文并且源 IP 是 192.168.100.10

    關注[入門小站]領資料。

    多條件格式
      在使用多個過濾條件進行組合時,有可能需要用到括號,而括號在 shell 中是特殊符號,又需要使用引號將其包含。用括號的主要作用是邏輯運算符之間存在優先級,!>and > or, 為例條件能夠精確所以需要對一些必要的組合括號括起來,而括號的意思相當于加減運算一樣,括起來的內容作為一個整體進行邏輯運算。

    過濾源地址是 192.168.100.1 并且目的地址是 192.168.20.20 的數據包或者 ARP 協議的包

    > tcpdump **src** host 192.168.10.10 -i ens33 -n -c 5
    
    過濾源 IP 地址是 192.168.10.10 的包

    > tcpdump **dst** host 192.168.10.10 -i ens33 -n -c 5
    
    過濾目的 IP 地址是 192.168.10.10 的包

    基于端口進行過濾
    > tcpdump port 22 -i ens33 -n -c 5  
    > 過濾端口號為 22 即 ssh 協議的
    

    關注[入門小站]領資料。

    >  tcpdump portrange 22-433 -i ens33 -n -c 8
    
    過濾端口號 22-433 內的數據包

    二、wireshark

    1、什么是 wireshark

    Wireshark 是一個網絡封包分析軟件。網絡封包分析軟件的功能是捕獲網絡數據包,并盡可能顯示出最為詳細的網絡封包資料。Wireshark 使用 WinPCAP 作為接口,直接與網卡進行數據報文交換

    2、安裝 wireshark

    Linux 中有兩個版本的 wireshark,一個是 wireshark,這個版本是無圖形化界面,基本命令是”tshark“。
    一個是 wireshark-gnome(界面版本),這個版本只能安裝在支持 GUI 功能的 Linux 的版本中。
    > yum -y install wireshark // 安裝無圖形化版本  
    > yum -y install wireshark-gnome // 安裝圖形化版本
    

    :這里的通過 yum 進行安裝,需要提前做好 epel 源(即紅帽操作系統額外拓展包),裝上了 EPEL 之后,就相當于添加了一個第三方源。官方的 rpm repository 提供的 rpm 包也不夠豐富,很多時候需要自己編譯那太辛苦了,而 EPEL 可以解決官方 yum 源數據包不夠豐富的情況。

    安裝epel源

    >  yum -y install epel-release
    

    3、tshark 命令

    tshark 是 wireshark 的命令行工具  
         tshark 選項 參數  
        -i:指定捕獲的網卡接口,不設置默認第一個非環回口接口  
        -D:顯示所有可用的網絡接口列表  
        -f:指定條件表達式,與 tcpdump 相同  
        -s:設置每個抓包的大小,默認 65535,多于這個大小的數據將不會不會被截取。  
        -c:捕獲指定數量的數據包后退出  
        -w:后接文件名,將抓包的結果輸出到. pcap 文件中,可以借助其他網絡分析工具進行分              析,也可以使用重定向 > 把解碼后的輸出結果以 txt 的格式輸出。  
        -p:設置網絡接口以非混合模式工作,即只關心和本機有關的流量  
        -r:后接文件路徑,用于分析保持好的網絡包文件,比如 tcpdump 的輸出文件  
        -n:禁止所有地址名字解析,即禁止域名解析, 默認是允許所有  
       -N:指定對某一層的地址名字解析,如果 - n 和 - N 同時存在,則 - n 將被忽略,如果兩者都不寫,則會默認打開所有地址名字解析  
             m:代表數據鏈路層  
             n:代表網絡層  
             t:代表傳輸層  
        -V:設置將解碼結果的細節輸出,否則解碼結果僅顯示一個 packet 一行的 summary  
        -t:設置結果的時間格式  
             ad:表示帶日期的絕對時間  
             a:表示不帶日期的絕對時間  
             r:表示從第一個包到現在的相對時間  
             d:表示兩個相鄰包之間的增量時間
    tshark -f "icmp" -i ens33 -V -c 1
    

    過濾 icmp 報文,并展開詳細信息

    tshark -f "arp" -i ens33  
    
    過濾 arp 報文

    4、圖形化界面

     

    三、Tcpdump 和 wireshark 合用

    Tcpdump 解析報文信息沒有 wireshark 詳細,所以可以通過 Tcpdump 捕獲數據并輸出,再通過 wireshark 進行解析,輸出文件格式為. pcap 或者其他

    在虛擬機上通過 wireshark 讀取

    使用 ip.addr == [ip 地址號] 可以過濾掉無關 ip

      圖形讀取

    用 wireshark 直接打開查看

    wiresharktcpdump
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    它支持針對網絡層、協議、主機、網絡或端口的過濾,并提供 and、or、not 等邏輯語句來幫助你摘取有用信息。輔助功能型:gateway、less、broadcast、greater4、tcpdump 捕獲方式tcpdump [協議類型] [源或目標] [主機名稱或 IP] [or/and/not/!條件組合] [端口] [端口號] ……
    Network_Assessment是一款功能強大的網絡可疑活動監控工具,該工具在WiresharkTCPdump的加持下,可以幫助廣大研究人員根據記錄下的網絡流量數據,來檢測和判斷正在監控的目標網絡中是否存在惡意活動。
    本文將展示如何使用 tcpdump 抓包,以及如何用 tcpdumpwireshark 分析網絡流量。文中的例子比較簡單,適合作為入門參考。基礎環境準備為方便大家跟著上手練習,本文將搭建一個容器環境。HTTP/TCP 抓包接下來我們用 wget 獲取一個網站的首頁文件,同時 tcpdump 抓包,對抓 到的網絡流量進行分析。HTTP 請求:下載測試頁面example.com 是一個測試網站,wget 是一個 linux 命令行工 具,可以下載網絡文件。
    結合分布式OSSIM部署特點實現遠程多點采集數據包進行分析的實例。每個傳感器和OSSIM Server之間通訊正常。各個傳感器所連接的均為相應交換機的SPAN口。抓包時可以不必輸入,除非確切知道要捕獲的機器之間通訊。為了便于觀察,對于選中的包系統會用綠色高亮顯示出來。右邊方框顯示的是中間內容的可顯示字符。③host 192.168.150.10:顯示目的或來源IP地址為192.168.150.10的數據包。顯示來源為UDP或TCP,并且端口號在3000至5500范圍內的數據包。
    FastCGI與PHP-FPM FastCGI 快速通用網關接口(Fast Common Gateway Interface/FastCGI)是一種讓交互程序與Web服務器通信的協議。FastCGI是早期通用網關接口(CGI)的增強版本。FastCGI致力于減少網頁服務器與CGI程序之間交互的開銷,從而使[服務器可以同時處理更多的網頁請求。
    利用SSRF滲透內網主機
    2021-12-26 07:39:35
    接下來PHP解析器會解析php.ini文件,初始化執行環境,然后處理請求,再以規定CGI規定的格式返回處理后的結果,退出進程,Web server再把結果返回給瀏覽器。這就是一個完整的動態PHP Web訪問流程。
    接下來,我們通過wireshark來查找pcap文件中的丟包線索。結論1、1句忠告:不能通過判斷數據包是否已被接收端收到來判斷pcap中是否丟包。
    小白必看:超詳細的Wireshark使用教程
    一次HTB的取證之旅
    2021-12-09 16:21:43
    記錄一次HTB的取證旅途
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类