緯育 2026-0515

出自頂極製作所
於 2026年5月15日 (五) 13:46 由 Kuyohong留言 | 貢獻 所做的修訂 (建立內容為「本次講座主要介紹了網路資訊收集與封包處理的工具與技術。前半部分介紹了Shodan和Fofa這類被動資訊收集網站,示範如何…」的新頁面)
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)

本次講座主要介紹了網路資訊收集與封包處理的工具與技術。前半部分介紹了Shodan和Fofa這類被動資訊收集網站,示範如何搜尋網路上暴露的伺服器、網路攝影機等設備資訊,並說明其搜尋語法與使用限制。後半部分深入探討了基於Python的強大封包處理工具Scapy,從其簡易性與基本操作開始,詳細闡述了Scapy的功能、優勢、運作邏輯及使用方法。課程涵蓋了如何定義與堆疊網路協定層(如IP、TCP、ICMP、ARP)、查看與修改封包內容、以及使用send、sendp、sr、sr1等指令發送封包並接收回應。此外,還介紹了多種實用的輔助函式,如獲取網路介面資訊、產生隨機MAC/IP位址等。最後,透過取得閘道器MAC位址的實際案例,展示了Scapy的彈性與多種操作方法,並預告下午課程將深入探討TCP服務偵測與防火牆偵測的理論與實作。

被動資訊收集工具

  • Shodan介紹
    • 被稱為「暗黑Google」,主要收集Google不收錄的主機相關資訊,如伺服器、Locker等。
    • 擁有自己的搜尋語法,但非免費服務,價格從每月69美元到1099美元不等。
    • 未註冊會員(依賴IP)使用次數有限(約兩三次),之後會被要求付費或登錄。
    • 註冊免費帳號後,每天有10次搜尋額度。
    • 搜尋結果會分類呈現(如國家、服務類型),並列出符合條件的機器列表。
  • Fofa介紹
    • 由中國開發的網路空間資產搜尋工具,功能與Shodan類似。
    • 同樣使用特定語法進行搜尋,例如尋找開放FTP服務(Port 21或20)的設備。
  • 工具使用與限制
    • 講師嘗試演示搜尋FTP、遠端桌面(Port 3389)和網路攝影機,但因現場使用次數耗盡而失敗。
    • 強調使用這些工具會被記錄IP,多次嘗試後會被限制。

Scapy封包處理工具

  • Scapy基本介紹與入門
    • Scapy是一個用Python寫的封包處理程式,核心是讓使用者自訂、偽造、發送及解碼封包,達到「只有你想不到,沒有你做不到」的靈活性。
    • 可用於網路測試、掃描、追蹤分析及網路攻擊,能替代arpspoof、nmap、hping等多種資安工具。
    • 啟動與安裝:
      • 啟動指令為 sudo scapy,建議使用 sudo 以確保權限。
      • 安裝方式包括使用Kali Linux內建版、在Ubuntu上用apt安裝,或直接從官方管道安裝最新版。
  • Scapy的運作與優點
    • 運作邏輯:製作封包 -> 發送封包 -> 接收封包。
    • 高度靈活性:可直接用Scapy語法構建特定修改過的封包,無需尋找現成工具。
    • 邏輯簡單:操作流程直觀。
    • 速度快:一行指令即可完成封包的製作與發送。
    • 不主動解讀封包:與Wireshark不同,Scapy只會將封包的原始值解碼後顯示,不進行額外翻譯(如告知這是Echo Reply)。
  • 建立與查看封包
    • 使用變數建立封包:透過Python語法建構封包並存入變數,如 p = IP(dst="github.com")/ICMP()。
    • 查看協定欄位與內容:
      • [協定名稱]().display() 或 show():列出某協定所有可用的欄位。
      • ls([協定名稱]):列出協定的欄位及其預設值。
      • [變數].show2():查看封包的詳細堆疊結構與各欄位的值。
      • 直接輸入變數名:顯示封包摘要資訊。
  • 修改與發送封包
    • 修改封包:可直接修改變數封包中的欄位,如 pkttest2['IP'].dst = "192.168.1.1"。
    • 發送指令:
      • send():僅發送三層(Layer 3)以上封包,二層資訊由系統自動填寫,為「發後不理」指令。
      • sendp():發送二層(Layer 2)封包,允許使用者自訂二層標頭。
      • sr():發送封包並等待接收所有回應,直到手動中斷。
      • sr1():發送一個封包並只等待接收一個回應。
      • srp() 和 srp1():對應sr()和sr1(),但用於發送二層封包。
    • 發送參數:可使用 inter(間隔)、loop(循環)、count(數量)等參數。
  • Scapy的預設行為與注意事項
    • 自動填入欄位:若未指定,Scapy會填入預設值,如本機IP/MAC、相近的來源埠號、以及自動計算的校驗和,可能洩漏自身資訊。
    • 自動路由判斷:若有多個網路介面,會自動判斷並選擇路由。
    • 效能問題:因Python效能限制,大量發送封包時可能出現延遲,建議搭配Wireshark等抓包工具確認。
  • Scapy的實用輔助函式
    • 網路介面資訊:getiflist() (所有介面), getifaddr('eth0') (IP位址), getifhwaddr('eth0') (MAC位址)。
    • 快速獲取MAC位址:getmacbyip("192.168.10.2") 可直接透過IP取得MAC位址。
    • 產生隨機資料:
      • RandomMAC(): 產生隨機MAC位址。
      • RandomIP(): 產生隨機IP位址,可用於洪水攻擊。
      • RandShort(): 產生亂數數字,適用於TCP的Sequence Number。
      • RandNum(min, max): 產生指定範圍的隨機數字。
      • RandString(size): 產生指定長度的隨機位元組字串。
  • Scapy的應用實例
    • 取得Gateway的MAC位址:
      • 方法一(單行指令): sr1(ARP(op=1, pdst="192.168.10.2")),直接在指令中建構ARP請求。
      • 方法二(變數封包): 先建立ARP封包變數 ansmac = ARP(op=1, pdst="192.168.10.2"),再用 sr1(ans_mac) 發送。
    • 其他應用:收集主機存活資訊、偵測TCP/UDP服務、偵測防火牆、利用殭屍主機進行Idle Scan等,皆需基於對TCP理論的深刻理解。

2026-0515-01.png