封包裡的秘密
whoami
-
fallnight
-
資工三甲
-
113屆 會長
-
女婕思
outline
-
我們如何看到網頁?
-
背後的過程發生了什麼?
-
-
什麼是封包?
-
為什麼要看封包?
-
現實中藍隊的角色
-
-
抓封包的工具 -> Wireshark
-
用 Wireshark 實際看封包 & 惡意封包
聽完今天的課程內容,你將會...
-
知道封包是啥,也會用 Wireshark!
-
能看懂封包的內容
-
對於網路概論的東西有概念 (一起歐趴💯
-
了解人生還很長,不要真的一個個去看封包(x
-
總之就是從入門到...入土(?
-
好了不說廢話了快開始吧~
我們如何看到網頁?
🖥️
URL 請求網頁資訊
回應,呈現網頁
瀏覽器
(Client)
伺服器
(Server)
過程中發生了什麼?
過程中發生了什麼?
分成兩部分:
- 使用者端按下 Enter 後,請求被送出前
- 請求被送出後,到達伺服器端之前的過程
網路世界的地圖:網路模型

舉個栗子 - 買手機
📱
選了一台心儀的手機
📦
裝進盒子裡
選擇寄送方式:
掛號 or 平信
📝
貼上貨運單
填寫收件地址
🛬
搭上飛機準備送到台灣
🏢
從國外抵達台灣後的
辨別不同大樓的編號
舉個栗子 - 買手機
📱
選了一台心儀的手機
📦
裝進盒子裡
選擇寄送方式:
掛號 or 平信
📝
貼上貨運單
填寫收件地址
🛬
搭上飛機準備送到台灣
🏢
從國外抵達台灣後的
辨別不同大樓的編號
舉個栗子 - 買手機
📱
選了一台心儀的手機
📦
裝進盒子裡
選擇寄送方式:
掛號 or 平信
📝
貼上貨運單
填寫收件地址
🛬
搭上飛機準備送到台灣
🏢
從國外抵達台灣後的
辨別不同大樓的編號
舉個栗子 - 買手機
📱
選了一台心儀的手機
📦
裝進盒子裡
選擇寄送方式:
掛號 or 平信
📝
貼上貨運單
填寫收件地址
🛬
搭上飛機準備送到台灣
🏢
從國外抵達台灣後的
辨別不同大樓的編號
舉個栗子 - 買手機
📱
選了一台心儀的手機
📦
裝進盒子裡
選擇寄送方式:
掛號 or 平信
📝
貼上貨運單
填寫收件地址
🛬
搭上飛機準備送到台灣
🏢
從國外抵達台灣後的
辨別不同大樓的編號
舉個栗子 - 買手機
📱
選了一台心儀的手機
📦
裝進盒子裡
選擇寄送方式:
掛號 or 平信
📝
貼上貨運單
填寫收件地址
🛬
搭上飛機準備送到台灣
🏢
從國外抵達台灣後的
辨別不同大樓的編號
對應網路世界
📱
選了一台心儀的手機
📦
裝進盒子裡
📝
貼上貨運單
🛬
🏢
- 應用層
- HTTP
- 傳輸層
- TCP/UDP
- 網路層
- IP
- 實體層
- 網路線、電波
辨別不同大樓的編號
搭上飛機準備送到台灣
- 鏈結層
- MAC
對應網路世界
📱
選了一台心儀的手機
📦
裝進盒子裡
📝
貼上貨運單
🛬
🏢
- 應用層
- HTTP
- 傳輸層
- TCP/UDP
- 網路層
- IP
- 實體層
- 網路線、電波
搭上飛機準備送到台灣
辨別不同大樓的編號
- 鏈結層
- MAC
對應網路世界
📱
選了一台心儀的手機
📦
裝進盒子裡
📝
貼上貨運單
🛬
🏢
- 應用層
- HTTP
- 傳輸層
- TCP / UDP
- 網路層
- IP
- 實體層
- 網路線、電波
搭上飛機準備送到台灣
辨別不同大樓的編號
- 鏈結層
- MAC
對應網路世界
📱
選了一台心儀的手機
📦
裝進盒子裡
📝
貼上貨運單
🛬
🏢
- 應用層
- HTTP
- 傳輸層
- TCP/UDP
- 網路層
- IP
- 實體層
- 網路線、電波
搭上飛機準備送到台灣
辨別不同大樓的編號
- 鏈結層
- MAC
對應網路世界
📱
選了一台心儀的手機
📦
裝進盒子裡
📝
貼上貨運單
🛬
搭上飛機準備送到台灣
🏢
- 應用層
- HTTP
- 傳輸層
- TCP/UDP
- 網路層
- IP
- 鏈結層
- MAC
- 實體層
- 網路線、電波
辨別不同大樓的編號
對應網路世界
- 應用層
- HTTP
- 傳輸層
- TCP/UDP
- 網路層
- IP
- 實體層
- 網路線、電波
📱
選了一台心儀的手機
📦
裝進盒子裡
📝
貼上貨運單
🛬
搭上飛機準備送到台灣
🏢
辨別不同大樓的編號
- 鏈結層
- MAC
對應一下
🎁
📦
📦
🎁
📫
要送出的請求資訊
加上一層層的資訊
封裝成封包
拿到送出的請求資訊
透過一層層的資訊
知道下一步往哪走

✈️
🛫
✈️
✈️
🛬
✈️
包裹在飛機上的運送過程
某個國外的寄送地
台灣
轉機
轉機
轉機
轉機
📦
📦
📦
📦
📦
📦
🖥️
網路世界也是類似的
送出請求的
使用者端 (Client)
給出回應的
伺服器端 (Server)
路由器
路由器
路由器
路由器
路由器
路由器
過程中會遇到的問題
✈️
🛫
✈️
🛬
出發地
目的地
轉機
轉機
- 包裹可能會...
- 遺失、送錯地方
- 被摔壞、爆開
- 被壞人打開
在網路世界對應的問題
🖥️
使用者
伺服器
路由器
路由器
路由器
- 封包在傳遞過程中可能會...
- 遺失
- 損毀
- 被駭客側錄,拿到機密資訊
如何解決問題?
- 在現實世界可以
- 找商家反應處理
- 在網路世界可以
- 利用 SSL / TLS 為封包加密
- HTTP -> HTTPS
✈️
🛫
出發地
轉機
伺服器
路由器
路由器
什麼是「封包」?
封包 (Packet)
-
網路傳輸的基本單位
-
帶著資料在路由器之間穿梭,抵達目的地
-
大小容量有限制
-
傳輸的資料會被切割成小塊,每一小塊就是一個封包
-
-
常見的副檔名為 .pcapng 或 .pcap
封包攜帶了什麼?
-
Header
-
在外側貼的各種標籤資訊
-
來源 IP
-
目的地 IP
-
來源 Port 號
-
目的地 Port 號
-
-
Payload
-
裡面攜帶的內容
- 請求或回應的內容
-
封包中實際要傳輸的資料本體
-
例如: 網頁的 HTML 碼、Email 內文、LINE 的訊息
-
為什麼要看封包?
現實中是誰在看封包?
讓我們進入藍隊的世界
向保全一樣的 SoC 團隊
- Security Operations Center,簡稱 SoC,安全營運中心
- 負責 24 小時全天候監控組織的資訊安全
- 監控網路流量、系統日誌
- 透過 SIEM 等工具做自動監測,即時發現異常活動並自動通報人員處理
向保全一樣的 SoC 團隊
- 發生資安事件時,團隊立即啟動應變程序
- 隔離感染系統
- 阻擋攻擊來源
- 還原或切換受到影響的服務
- 進行調查和處置
-
SIEM
- Security Information and Event Management , 安全資訊與事件管理
- 像個中央監控室
- 將資料整合成一個可視化平台
- IDS / IPS
- WAF
- 防火牆
- 防毒軟體
- ...

自動化的防禦產品
SIEM 整合了 ...
- IDS
- Intrusion Detection System , 入侵檢測系統
- 監控網路流量,發現可疑 IP 來源或行為時發出警報
- IPS
- Intrusion Prevention System , 入侵預防系統
- 監控、發現可疑IP或行為時,採取行動、預防入侵
- 防火牆
- WAF
- Web Application Firewall , 網站應用程式防火牆
- 檢查封包內攜帶的請求內容是否有攻擊腳本
- ex. 看到類似 XSS 的攻擊就擋下
- WAF
<script>alert("XSS")</script>SIEM 整合了 ...
所以到底什麼時候要看封包呢?
- 設計防禦產品時
- 實際去查看惡意封包的運作過程,決定如何規則
- 還原事件前後因果時
- 從事件發生時產生的封包內找線索,了解事情經過
- CTF 題目
- 有些 CTF 會把 flag 藏在封包裡,如果連封包都不會看的話就直接無解 (x
有什麼工具可以看封包呢?
工具介紹
- 圖形化介面 (GUI)
- Wireshark
- 命令指令介面 (CLI)
- Tshark
- tcpdump
- 常用指令:
ip a # 列出當前正在使用的網卡
tshark -D # 列出可選的網卡名稱
tcpdump -D
tshark -i eth0 # 在指定網卡上擷取封包
tcpdump -i eht0
# 監聽與指定 IP 相關的流量
tshark -i eth0 -f "host XX.XX.XX.XX"
tcpdump -i eth0 -nn 'host XX.XX.XX.XX'
# 將擷取的流量都儲存為 .pcap 的封包檔案中
tshark -i eth0 -w output.pcap
tcpdump -i eth0 -w capture.pcap
# 讀取檔案並顯示所有內容
tshark -r output.pcap
tcpdump -r output.pcapWireshark
- 免費開源的封包分析工具
- 它可以...
- 即時監聽,捕捉特定網段上經過的所有封包
- 封包解析,看到...
- 來源和目的地 IP、使用的 Port 號
- 協定類型(HTTP、TCP 等)
- 實際傳輸的資料內容
- 過濾功能,只看特定 IP 或協定的封包
- 圖形化介面,新手友好,操作簡單!
但實際上企業不會用 Wireshark,因為...
-
封包數量太大
- 每小時可能產生數 GB 到數 TB
- 儲存成本極高,難以長期保存
-
效能問題
- Wireshark 不適合全天候運行
- 無法處理高流量環境
-
功能缺乏
- 沒有告警機制
- 沒有集中管理或分析功能
Wireshark 安裝
- 使用 kali 內建好的 Wireshark
- 所以跟上週一樣匯入虛擬機!
- 如果想在 Windows 安裝的話可以參考這邊
Wireshark 安裝
實際打開一個封包看看吧!
開什麼?
- 選擇網段 -> 乙太網路 (eth)
- 若要開啟檔案的話,直接拖曳進來即可

裡面有什麼資訊呢?
- No.
- 封包的編號
- Time
- 封包被捕捉到的時間
- Source
- 封包的來源 IP 位址,表達 "誰送出的"
- Destination
- 封包的目的地 IP 位址,表達 "要送給誰"
- Protocol
- 使用的網路協定
- 例如: HTTP、TCP、UDP等
- Length
- 封包的大小,單位為 bytes
- Info
- 封包的內容摘要

嘗試看懂各個封包在做什麼吧!
還記得協定 (Protocol) 嗎?
- 用來規範雙方通訊行為的規則
- 常見協定有
- HTTP / HTTPS
- TCP
- UDP
- ...
舉個栗子 - TCP
- 送出請求
- TCP 建立連線
- 三向交握
- 第一次握手 (SYN)
- .129 作為來源向目的地 .130 發送
- 第二次握手 (SYN+ACK)
- .130 作為來源向目的地 .129 發送
- 第三次握手 (ACK)
- .129 作為來源向目的地 .130 發送
- 第一次握手 (SYN)
- 三向交握
- 連線建立完成,開始傳送資料
- 例如 HTTP 請求
- TCP 建立連線

TCP 建立連線 - 三向交握
- 第一次握手 (SYN)
- Client 向 Server 傳送一個帶有 SYN 的封包
- 表示「想建立連線」
- 第二次握手 (SYN+ACK)
- Server 向 Client 回覆一個帶有 SYN 與 ACK 的封包
- 表示「我收到了,也準備好建立連線」
- 第三次握手 (ACK)
- Client 向 Server 再回覆一個帶有 ACK 的封包
- 表示「確認收到回應」

打開後裡面有什麼?
- 打開一個正在做 TCP 三向交握的第一次握手的封包
- 會發現有四行待展開的資訊
- 每一行都有自己的特點
- Frame
- MAC 位址
- IP 位址
- TCP

打開後裡面有什麼?
-
打開一個正在做 TCP 三向交握的第一次握手的封包
- 會發現有四行待展開的資訊
- 每一行都有自己的特點
- Frame --> 實體層
- MAC 位址 --> 鏈結層
- IP 位址 --> 網路層
- TCP --> 傳輸層
-
應用層?
- 還在三向交握的第一次握手,不需要傳輸應用層資料

三向交握哪裡看?
- 展開傳輸層 (Transmission Control Protocol) 的資訊
- 往下滑,找到 Flags 再繼續展開
- 此 Flags 非彼 Flag
- 這裡有各種 Flags (旗標)
- 但只有 SYN 對應的是 1
- 表示此封包只帶有 SYN 旗標
- 往下滑,找到 Flags 再繼續展開

再換一個打開後裡面有什麼?
- 找個三向交握結束之後的 HTTP 請求封包打開它
- 會發現比剛剛的 TCP 多了一行 Hypertext Transfer Protocol
- 一樣,每一行都有自己的特點
- Frame、eth0 --> 實體層
- MAC 位址 --> 鏈結層
- IP 位址 --> 網路層
- TCP --> 傳輸層
- HTTP --> 應用層

找到請求的資訊
- 展開應用層 (Hypertext Transfer Protocol) 的資訊
- 在下方可以看到這次請求的網址

找到回應的內容
-
找個在 HTTP 請求之後回應的 HTTP 封包打開它
- 展開應用層下方的 Line-based text data 的那行
- 就能看到這次回應的網頁原始碼
- 展開應用層下方的 Line-based text data 的那行

其他協定 - UDP
- 送就對了,不管有沒有送達,也不管資料是否完整
- 犧牲可靠性,換取即時性
-
用在即時通訊、直播、線上遊戲等
- 中間如果缺失幾個封包我們也只會覺得可能是網路卡了
- 但我們在乎連線速度,所以這時適合用 UDP
-
TCP 與 UDP 的不同之處
- TCP 利用三向交握確認連線正常後才傳輸資料
- UDP 直接傳輸不做確認
TCP 與 UDP 的差異: https://ithelp.ithome.com.tw/articles/10294859
其他協定 - ICMP
- 常見於網路診斷
- 使用 ping 指令,就會收到 ICMP 的封包
- Echo request 與 Echo reply
- ex. ping 8.8.8.8
- 使用 ping 指令,就會收到 ICMP 的封包

Wireshark 功能操作
過濾掉不想要的雜項
- 介面上方有個過濾器 (Filter)
- 可以用的指令
//只查看 HTTP 封包
http
//只查看 TCP 封包
tcp
//只查看與特定 IP 位址相關的流量
ip.addr == XX.XX.XX.XX
//指查看訪問了特定網站的 HTTP 流量
http.host contains "xxxx.com"一次看到完整的封包內容
- 封包大小有限制,應用層裝不下全部的內容
- 會分多個封包依序傳送
- 一個個打開查看很麻煩
- 在 HTTP 封包上按右鍵,再依序選
- Fllow
- HTTP stream 或是 TCP stream 等
- 就可以一次瀏覽完整內容了!
- 左下角的 "Entire conversation" 可以切換只查看某 IP 向另一個 IP 發送的內容
- 右下角 "Stream 0" 可以切換查看不同 stream 的內容
Lab Time !
-
打開 lab.pcapng,從裡面找到以下兩個 flag
- 0x1:在請求的網頁原始碼中尋找 flag 吧!
- 0x2:找找傳送的帳號密碼吧!(flag 為 NISRA{密碼} )
來看看攻擊中的封包
SYN Flood 攻擊
- 持續送出三向交握中的第一次握手的 SYN 封包
- 正常來說是
- 送出帶有 SYN 的封包
- 對方收到後給出 SYN+ACK 回應的封包
- 收到之後再送出 ACK 封包表達有收到
- 惡意行為
- 持續送出 SYN
- 完全不管對方的回應,就當作自己沒收到
- 大量占用對方的系統資源,使其無法正常提供服務
- 正常來說是
SYN Flood 攻擊

反射型 XSS
-
將惡意程式藏在網址列或表單中
-
讓使用者點擊帶有惡意程式的連結或提交表單
http://www.example.com/upload?id=<script>alert(1);</script>
http://www.example.com/upload?id=
%3Cscript%3Ealert%28%29%3B%3C%2Fscript%3E
-
從 HTTP 封包中找出類似的 URL,判斷是 XSS 攻擊
課後問卷~

Wireshark 與封包
By fallnight
Wireshark 與封包
- 121