[網路入門] 003 給資安新手的 TCP/IP 協定基礎篇

前言

如果說程式語言是與電腦溝通的方式,那麼網路協定就是電腦與電腦之間溝通的共同語言。對資安人員來說,理解 TCP/IP 協定不是選修,而是必修。無論你想進行滲透測試、分析惡意流量、設定防火牆規則,還是理解各種網路攻擊的原理,都必須先搞懂網路是怎麼運作的。

這篇文章將從最基礎的概念開始,帶你理解 TCP/IP 協定的核心知識。我會盡量用生活化的比喻來解釋抽象的概念,並在最後示範如何用工具實際觀察網路封包。

為什麼資安人員必須懂 TCP/IP?

在深入技術細節之前,先讓我們看看 TCP/IP 知識在資安工作中的實際應用:

滲透測試:掃描目標主機的開放埠口、識別執行的服務、分析網路架構,這些都需要理解 TCP/IP。

封包分析:當你用 Wireshark 捕捉網路流量時,如果看不懂那些封包代表什麼意思,就只是在看一堆亂碼。

攻擊手法理解:SYN Flood、ARP Spoofing、DNS Hijacking、Man-in-the-Middle⋯⋯這些攻擊手法的名稱本身就包含了協定名稱,不懂協定就無法理解攻擊原理。

防火牆與 IDS 設定:設定防火牆規則需要指定協定、埠口、IP 位址;分析入侵偵測系統的警報需要理解異常流量的特徵。

事件調查:當發生資安事件時,分析網路日誌、追蹤攻擊來源、還原攻擊過程,都仰賴對網路協定的理解。

網路通訊的基本概念

在進入 TCP/IP 之前,我們先建立一些基本概念。

什麼是協定(Protocol)?

協定就是一套雙方都同意遵守的規則。想像你要寄一封國際信件:

  • 信封上要寫收件人地址、寄件人地址
  • 地址的格式有固定寫法(國家、城市、街道、門牌)
  • 要貼足夠的郵票
  • 郵局會根據地址決定如何轉送

網路協定也是類似的概念。它規定了:
– 資料要用什麼格式包裝
– 要包含哪些必要資訊(來源、目的地等)
– 資料如何傳送和接收
– 出錯時如何處理

什麼是封包(Packet)?

當你在網路上傳送資料時,資料不會一次全部送出,而是被切割成許多小塊,每一塊就叫做「封包」。

為什麼要這樣做?想像一條馬路,如果有一輛超長的卡車佔據整條路,其他車都動不了。但如果把貨物分裝到很多小貨車上,大家就可以交替使用道路。網路封包的概念類似——把資料分成小塊,讓網路資源可以被多人共用。

每個封包除了攜帶一部分資料外,還會包含「標頭」(Header)資訊,記錄這個封包要送到哪裡、從哪裡來、是第幾個封包等資訊。

OSI 模型與 TCP/IP 模型

要理解網路通訊,我們需要一個框架來組織各種協定。最常被提到的是 OSI 七層模型和 TCP/IP 四層模型。

OSI 七層模型

OSI(Open Systems Interconnection)是一個理論模型,把網路通訊分成七層,每一層負責特定的功能:

┌─────────────────────────────────────────────────────────┐
│  第 7 層:應用層(Application Layer)                    │
│  → 使用者直接接觸的層,如網頁瀏覽器、電子郵件            │
│  → 協定:HTTP、HTTPS、FTP、SMTP、DNS、SSH               │
├─────────────────────────────────────────────────────────┤
│  第 6 層:表現層(Presentation Layer)                   │
│  → 資料格式轉換、加密解密、壓縮解壓縮                    │
│  → 例如:SSL/TLS 加密、JPEG 圖片編碼                    │
├─────────────────────────────────────────────────────────┤
│  第 5 層:會議層(Session Layer)                        │
│  → 建立、管理、終止應用程式之間的連線                    │
│  → 例如:NetBIOS、RPC                                   │
├─────────────────────────────────────────────────────────┤
│  第 4 層:傳輸層(Transport Layer)                      │
│  → 端點對端點的資料傳輸、流量控制、錯誤處理              │
│  → 協定:TCP、UDP                                       │
├─────────────────────────────────────────────────────────┤
│  第 3 層:網路層(Network Layer)                        │
│  → 邏輯定址、路由選擇、封包轉送                          │
│  → 協定:IP、ICMP、ARP                                  │
├─────────────────────────────────────────────────────────┤
│  第 2 層:資料連結層(Data Link Layer)                  │
│  → 實體定址(MAC 位址)、訊框處理、錯誤偵測              │
│  → 例如:Ethernet、Wi-Fi、交換器運作                    │
├─────────────────────────────────────────────────────────┤
│  第 1 層:實體層(Physical Layer)                       │
│  → 實際的電子訊號、光訊號、無線電波傳輸                  │
│  → 例如:網路線、光纖、無線電波、Hub                    │
└─────────────────────────────────────────────────────────┘

一個簡單的記憶口訣(從第 7 層到第 1 層):All People Seem To Need Data Processing

對應:Application、Presentation、Session、Transport、Network、Data Link、Physical

TCP/IP 四層模型

在實務上,我們更常使用 TCP/IP 模型,它把 OSI 的七層簡化成四層:

┌─────────────────────────────────────────────────────────┐
│  應用層(Application Layer)                             │
│  → 對應 OSI 的第 5、6、7 層                              │
│  → HTTP、HTTPS、FTP、SSH、DNS、SMTP、Telnet            │
├─────────────────────────────────────────────────────────┤
│  傳輸層(Transport Layer)                               │
│  → 對應 OSI 的第 4 層                                    │
│  → TCP、UDP                                             │
├─────────────────────────────────────────────────────────┤
│  網路層(Internet Layer)                                │
│  → 對應 OSI 的第 3 層                                    │
│  → IP、ICMP、ARP                                        │
├─────────────────────────────────────────────────────────┤
│  網路介面層(Network Interface Layer)                   │
│  → 對應 OSI 的第 1、2 層                                 │
│  → Ethernet、Wi-Fi                                      │
└─────────────────────────────────────────────────────────┘

資料封裝的過程

當你在瀏覽器輸入網址按下 Enter,資料會從最上層開始,一層一層往下封裝:

使用者:我要看 www.example.com 的網頁

應用層:產生 HTTP 請求
       ┌──────────────────────────┐
       │      HTTP 請求資料       │
       └──────────────────────────┘
                  ↓
傳輸層:加上 TCP 標頭(來源埠口、目的埠口等)
       ┌─────────┬────────────────┐
       │TCP 標頭 │  HTTP 請求資料  │
       └─────────┴────────────────┘
                  ↓
網路層:加上 IP 標頭(來源 IP、目的 IP 等)
       ┌─────────┬─────────┬──────────────┐
       │IP 標頭  │TCP 標頭 │ HTTP 請求資料 │
       └─────────┴─────────┴──────────────┘
                  ↓
網路介面層:加上乙太網路標頭和尾端
       ┌──────────┬─────────┬─────────┬──────────────┬─────┐
       │乙太網標頭│IP 標頭  │TCP 標頭 │ HTTP 請求資料 │ FCS │
       └──────────┴─────────┴─────────┴──────────────┴─────┘
                  ↓
          轉換成電子訊號透過網路線傳出去

接收端會進行相反的過程,一層一層拆開封裝,最後把 HTTP 請求交給網頁伺服器處理。

網路層:IP 協定

IP(Internet Protocol)是網路層最重要的協定,負責將封包從來源送到目的地。

IP 位址

IP 位址就像網路世界的門牌號碼,用來識別網路上的每一台設備。目前有兩個版本:

IPv4:由 4 組數字組成,每組 0-255,例如 192.168.1.100。總共可以表示約 43 億個位址,目前已經不夠用了。

IPv6:由 8 組十六進位數字組成,例如 2001:0db8:85a3:0000:0000:8a2e:0370:7334。位址空間極大,足夠未來使用。

本文主要以 IPv4 為例。

特殊的 IP 位址

有些 IP 位址有特殊用途,身為資安人員必須熟悉:

私有 IP 位址(不會在公開網路上使用):
10.0.0.0 ~ 10.255.255.255(Class A)
172.16.0.0 ~ 172.31.255.255(Class B)
192.168.0.0 ~ 192.168.255.255(Class C)

迴路位址(Loopback)
127.0.0.1:指向本機自己,常用於測試

廣播位址
255.255.255.255:向同一網段所有設備廣播

APIPA 位址
169.254.x.x:當 DHCP 取得 IP 失敗時自動指派

子網路遮罩(Subnet Mask)

子網路遮罩用來區分 IP 位址中哪些部分是「網路位址」,哪些是「主機位址」。

IP 位址:      192.168.1.100
子網路遮罩:   255.255.255.0

轉成二進位:
IP:          11000000.10101000.00000001.01100100
遮罩:        11111111.11111111.11111111.00000000
              ├────── 網路部分 ──────┤├─主機─┤

網路位址:192.168.1.0(前 24 位元)
主機位址:100(後 8 位元)

另一種表示方式是 CIDR 標記法:192.168.1.100/24,意思是前 24 位元是網路部分。

IP 封包結構

IP 封包的標頭包含許多重要資訊:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version|  IHL  |    ToS        |          Total Length         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Identification        |Flags|      Fragment Offset    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  TTL  |    Protocol           |         Header Checksum       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Source IP Address                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Destination IP Address                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Options (if any)                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            Data                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

幾個重要欄位:

  • Version:IP 版本(4 或 6)
  • TTL(Time To Live):封包的存活時間,每經過一個路由器減 1,歸零就丟棄(防止封包無限循環)
  • Protocol:上層協定(6 = TCP、17 = UDP、1 = ICMP)
  • Source IP Address:來源 IP 位址
  • Destination IP Address:目的 IP 位址

資安相關:IP Spoofing

因為 IP 封包的來源位址是由發送方填寫的,攻擊者可以偽造來源 IP,這就是「IP Spoofing」。這種技術常用於:

  • DDoS 攻擊:偽造來源 IP 讓受害者無法追蹤真正的攻擊來源
  • 繞過存取控制:某些系統只允許特定 IP 存取,偽造 IP 可能繞過這種限制
  • 反射攻擊:把來源 IP 設成受害者的 IP,讓第三方伺服器的回應「反射」到受害者

傳輸層:TCP 與 UDP

傳輸層負責端點對端點的資料傳輸。兩個最重要的協定是 TCP 和 UDP。

埠口(Port)的概念

一台電腦可能同時執行多個網路程式(瀏覽器、郵件軟體、遊戲等),埠口號碼用來區分資料要交給哪個程式處理。

埠口號碼範圍是 0-65535,分成三類:

Well-Known Ports(0-1023):保留給常見服務
– 20, 21:FTP
– 22:SSH
– 23:Telnet
– 25:SMTP
– 53:DNS
– 80:HTTP
– 443:HTTPS
– 3389:RDP

Registered Ports(1024-49151):註冊給特定應用程式
– 3306:MySQL
– 5432:PostgreSQL
– 8080:HTTP 替代埠口

Dynamic/Private Ports(49152-65535):動態分配給客戶端程式

TCP(Transmission Control Protocol)

TCP 是一個「連線導向」的協定,提供可靠的資料傳輸。

TCP 的特點
可靠性:確保資料完整送達,遺失會重傳
有序性:封包會按照順序重組
流量控制:防止發送方傳太快,接收方來不及處理
錯誤檢測:透過校驗和檢測資料是否損壞

適用場景:網頁瀏覽、檔案傳輸、電子郵件等需要確保資料完整的應用

TCP 三向交握(Three-Way Handshake)

這是建立 TCP 連線的過程,也是資安人員必須熟悉的重要概念:

    客戶端                                      伺服器
       │                                          │
       │  ① SYN (seq=100)                        │
       │ ──────────────────────────────────────► │
       │     「嘿,我想建立連線,我的序號是 100」  │
       │                                          │
       │  ② SYN-ACK (seq=300, ack=101)           │
       │ ◄────────────────────────────────────── │
       │ 「好的,我收到了。我的序號是 300,        │
       │   期待你的下一個封包序號是 101」          │
       │                                          │
       │  ③ ACK (seq=101, ack=301)               │
       │ ──────────────────────────────────────► │
       │     「收到,連線建立完成」                │
       │                                          │
       │  ═══════ 連線建立,開始傳輸資料 ═══════  │
       │                                          │
  1. SYN:客戶端發送 SYN(同步)封包,表示想建立連線
  2. SYN-ACK:伺服器回應 SYN-ACK,表示同意連線
  3. ACK:客戶端發送 ACK(確認),連線建立完成

TCP 四向揮手(Four-Way Handshake)

結束連線的過程:

    客戶端                                      伺服器
       │                                          │
       │  ① FIN                                  │
       │ ──────────────────────────────────────► │
       │     「我要結束連線了」                    │
       │                                          │
       │  ② ACK                                  │
       │ ◄────────────────────────────────────── │
       │     「好的,我知道了」                    │
       │                                          │
       │  ③ FIN                                  │
       │ ◄────────────────────────────────────── │
       │     「我這邊也準備好結束了」              │
       │                                          │
       │  ④ ACK                                  │
       │ ──────────────────────────────────────► │
       │     「好,掰掰」                          │
       │                                          │

資安相關:SYN Flood 攻擊

SYN Flood 是一種經典的 DoS 攻擊:

  1. 攻擊者發送大量 SYN 封包(通常用偽造的來源 IP)
  2. 伺服器回應 SYN-ACK 並等待 ACK
  3. 因為來源 IP 是假的,ACK 永遠不會來
  4. 伺服器的連線佇列被塞滿,無法處理正常請求

防禦方式包括:SYN Cookies、限制同一 IP 的連線數、防火牆過濾等。

TCP 封包標誌位元(Flags)

TCP 封包有幾個重要的標誌位元:

標誌 全名 用途
SYN Synchronize 發起連線
ACK Acknowledgment 確認收到
FIN Finish 結束連線
RST Reset 強制重置連線
PSH Push 立即將資料推送給應用程式
URG Urgent 緊急資料

在滲透測試中,Nmap 等工具會利用不同的標誌組合來進行埠口掃描:

  • SYN 掃描:發送 SYN,收到 SYN-ACK 表示埠口開放
  • FIN 掃描:發送 FIN,某些系統對關閉的埠口會回 RST
  • NULL 掃描:不設任何標誌
  • XMAS 掃描:設定 FIN、PSH、URG 標誌

UDP(User Datagram Protocol)

UDP 是一個「非連線導向」的協定,提供快速但不可靠的傳輸。

UDP 的特點
不可靠:不保證資料送達,也不會重傳
無序:封包可能亂序到達
無連線:不需要先建立連線,直接發送
低延遲:少了確認機制,速度更快
標頭小:只有 8 bytes(TCP 標頭至少 20 bytes)

適用場景:即時串流、線上遊戲、DNS 查詢、VoIP 等

UDP 封包結構

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Source Port          |       Destination Port        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Length             |           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             Data                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

相比 TCP,UDP 的標頭簡單很多。

TCP vs UDP 比較

特性 TCP UDP
連線方式 連線導向 非連線導向
可靠性 可靠(確認、重傳) 不可靠
順序 保證順序 不保證
速度 較慢 較快
標頭大小 20-60 bytes 8 bytes
流量控制
使用場景 HTTP、FTP、SSH、SMTP DNS、DHCP、串流、遊戲

應用層常見協定

應用層是使用者最直接接觸的一層,以下介紹幾個重要的協定。

HTTP/HTTPS

HTTP(HyperText Transfer Protocol) 是網頁傳輸的基礎協定,使用埠口 80。

HTTP 請求方法:
GET:取得資源
POST:提交資料
PUT:更新資源
DELETE:刪除資源
HEAD:只取得標頭
OPTIONS:查詢支援的方法

HTTP 是明文傳輸,所有資料(包括密碼)都可以被中間人看到。

HTTPS 就是 HTTP + TLS/SSL 加密,使用埠口 443。現代網站都應該使用 HTTPS。

資安相關

  • 中間人攻擊:攻擊者可以攔截並修改 HTTP 流量
  • SSL Stripping:強制將 HTTPS 降級為 HTTP
  • 憑證相關攻擊:偽造憑證、憑證驗證繞過

DNS(Domain Name System)

DNS 將網域名稱(如 www.google.com)轉換成 IP 位址,使用埠口 53(通常是 UDP,大型回應用 TCP)。

DNS 查詢過程:

使用者輸入 www.example.com
        │
        ▼
┌──────────────────┐
│ 本機 DNS 快取     │ ─── 有快取 ──► 直接回傳 IP
└──────────────────┘
        │ 無快取
        ▼
┌──────────────────┐
│ 本地 DNS 伺服器   │ ─── 有快取 ──► 回傳 IP
└──────────────────┘
        │ 無快取
        ▼
┌──────────────────┐
│ 根域名伺服器      │ ──► 「去問 .com 伺服器」
└──────────────────┘
        │
        ▼
┌──────────────────┐
│ .com 域名伺服器   │ ──► 「去問 example.com 伺服器」
└──────────────────┘
        │
        ▼
┌──────────────────┐
│ example.com 伺服器│ ──► 「IP 是 93.184.216.34」
└──────────────────┘
        │
        ▼
   回傳給使用者

資安相關

  • DNS Spoofing/Cache Poisoning:污染 DNS 快取,將網域指向惡意 IP
  • DNS Tunneling:利用 DNS 查詢來傳輸資料,繞過防火牆
  • DNS Amplification Attack:利用 DNS 進行 DDoS 反射放大攻擊

DHCP(Dynamic Host Configuration Protocol)

DHCP 自動分配 IP 位址給網路上的設備,使用埠口 67(伺服器)和 68(客戶端)。

DHCP 過程(DORA):
1. Discover:客戶端廣播「誰可以給我 IP?」
2. Offer:DHCP 伺服器回應「我可以給你這個 IP」
3. Request:客戶端「好,我要這個 IP」
4. Acknowledge:伺服器「OK,這個 IP 給你了」

資安相關

  • DHCP Starvation:耗盡所有可用 IP,導致正常設備無法連網
  • Rogue DHCP:架設假的 DHCP 伺服器,分配惡意的網路設定

ARP(Address Resolution Protocol)

ARP 將 IP 位址轉換成 MAC 位址(實體網卡位址)。

當電腦 A(192.168.1.10)要傳資料給電腦 B(192.168.1.20):
1. A 廣播:「192.168.1.20 的 MAC 位址是什麼?」
2. B 回應:「我是 192.168.1.20,我的 MAC 是 AA:BB:CC:DD:EE:FF」
3. A 記住這個對應關係(ARP 快取)

資安相關:ARP Spoofing

這是區域網路中非常常見的攻擊:

  1. 攻擊者對受害者說:「我是閘道器」(偽造 ARP 回應)
  2. 攻擊者對閘道器說:「我是受害者」
  3. 所有流量都會經過攻擊者 → 中間人攻擊!
正常情況:
受害者 ◄──────────────────────────────► 閘道器 ◄───► Internet

ARP Spoofing 後:
受害者 ◄───► 攻擊者 ◄───► 閘道器 ◄───► Internet
              (中間人)

ICMP(Internet Control Message Protocol)

ICMP 用於網路診斷和錯誤報告。最常見的應用是 pingtraceroute

常見 ICMP 類型:
– Type 0:Echo Reply(ping 回應)
– Type 3:Destination Unreachable
– Type 8:Echo Request(ping 請求)
– Type 11:Time Exceeded(TTL 歸零)

資安相關

  • Ping of Death:發送超大的 ICMP 封包造成系統崩潰(已修補)
  • ICMP Flood:大量 ping 造成 DoS
  • ICMP Tunneling:利用 ICMP 封包傳輸資料

實戰:使用 Wireshark 觀察封包

理論講了這麼多,現在讓我們實際觀察網路封包!

安裝 Wireshark

Windows/macOS:到 https://www.wireshark.org 下載安裝

Linux(Debian/Ubuntu)

sudo apt update
sudo apt install wireshark
sudo usermod -aG wireshark $USER
# 登出再登入讓群組生效

基本操作

  1. 開啟 Wireshark
  2. 選擇要監聽的網路介面(通常選有流量的那個)
  3. 開始擷取封包

觀察 TCP 三向交握

  1. 開啟 Wireshark 開始擷取
  2. 在瀏覽器開啟任意網站(如 http://example.com)
  3. 停止擷取
  4. 在過濾器輸入:tcp.flags.syn == 1

你應該可以看到 SYN 封包。找到對應的封包,右鍵選擇「Follow > TCP Stream」可以看到完整的連線過程。

常用過濾語法

# 過濾特定 IP
ip.addr == 192.168.1.100

# 過濾來源 IP
ip.src == 192.168.1.100

# 過濾目的 IP
ip.dst == 192.168.1.100

# 過濾特定埠口
tcp.port == 80
udp.port == 53

# 過濾 HTTP 流量
http

# 過濾 DNS 流量
dns

# 過濾 TCP SYN 封包
tcp.flags.syn == 1 && tcp.flags.ack == 0

# 組合過濾
ip.addr == 192.168.1.100 && tcp.port == 443

觀察 DNS 查詢

  1. 開啟 Wireshark 開始擷取
  2. 在終端機執行:nslookup google.com
  3. 停止擷取
  4. 過濾:dns

你可以看到 DNS 查詢(Query)和回應(Response),包含查詢的網域名稱和回傳的 IP 位址。

觀察 ARP

  1. 清除 ARP 快取:
    • Windows:arp -d *(需管理員權限)
    • Linux:sudo ip neigh flush all
  2. 開啟 Wireshark,過濾 arp
  3. ping 同一網段的其他設備
  4. 觀察 ARP Request 和 Reply

實用指令整理

Windows

# 查看 IP 設定
ipconfig /all

# 查看路由表
route print

# 查看 ARP 快取
arp -a

# 查看連線狀態
netstat -ano

# DNS 查詢
nslookup example.com

# 追蹤路由
tracert example.com

# 測試連線
ping example.com

Linux

# 查看 IP 設定
ip addr
# 或
ifconfig

# 查看路由表
ip route
# 或
route -n

# 查看 ARP 快取
ip neigh
# 或
arp -a

# 查看連線狀態
ss -tuln
# 或
netstat -tuln

# DNS 查詢
dig example.com
# 或
nslookup example.com

# 追蹤路由
traceroute example.com

# 測試連線
ping example.com

# 查看封包(需要 root)
tcpdump -i eth0

# 查看特定埠口的封包
tcpdump -i eth0 port 80

資安應用總整理

學完 TCP/IP 基礎,你可以開始探索以下資安主題:

網路掃描

使用 Nmap 掃描目標:

# 基本掃描
nmap 192.168.1.1

# SYN 掃描(半開放掃描)
nmap -sS 192.168.1.1

# UDP 掃描
nmap -sU 192.168.1.1

# 掃描特定埠口
nmap -p 80,443,22 192.168.1.1

# 服務版本偵測
nmap -sV 192.168.1.1

中間人攻擊(學習用途)

使用 arpspoof(Kali Linux):

# 開啟 IP 轉發
echo 1 > /proc/sys/net/ipv4/ip_forward

# ARP 欺騙
arpspoof -i eth0 -t 192.168.1.100 192.168.1.1
arpspoof -i eth0 -t 192.168.1.1 192.168.1.100

⚠️ 警告:只能在你有授權的環境中練習!

防禦建議

根據本文介紹的攻擊手法,對應的防禦措施:

攻擊 防禦措施
IP Spoofing 入口過濾、uRPF
SYN Flood SYN Cookies、Rate Limiting
ARP Spoofing 靜態 ARP、Dynamic ARP Inspection
DNS Spoofing DNSSEC、DNS over HTTPS
中間人攻擊 使用 HTTPS、VPN、憑證驗證

延伸學習資源

想要深入學習,推薦以下資源:

書籍
– 《TCP/IP Illustrated》by W. Richard Stevens(經典教材)
– 《Computer Networking: A Top-Down Approach》

線上資源
– Wireshark 官方文件:https://www.wireshark.org/docs/
– RFC 文件:https://www.rfc-editor.org(協定的正式規格)

實作練習
– TryHackMe:有專門的網路基礎房間
– Hack The Box:實際的滲透測試練習
– PicoCTF:適合初學者的 CTF 平台

工具
– Wireshark:封包分析
– Nmap:網路掃描
– tcpdump:命令列封包擷取
– Scapy:Python 封包操作庫

總結

這篇文章涵蓋了 TCP/IP 協定的基礎知識:

  1. 網路模型:OSI 七層與 TCP/IP 四層的對應關係
  2. IP 協定:IP 位址、子網路遮罩、封包結構
  3. 傳輸層:TCP 的三向交握、四向揮手、UDP 的特性
  4. 應用層協定:HTTP、DNS、DHCP、ARP、ICMP
  5. 資安相關:各種網路攻擊手法與防禦方式
  6. 實戰工具:Wireshark 使用與常用網路指令

網路協定的知識體系龐大,這篇文章只是入門。但有了這些基礎,你已經可以開始進行封包分析、理解滲透測試工具的運作原理,以及更深入地學習各種網路攻擊與防禦技術。

記住,最好的學習方式就是動手實作。打開 Wireshark,開始觀察你電腦上的網路流量吧!透過實際觀察封包,你會更深刻地理解這些協定是如何運作的。

下一步,你可以嘗試:
– 用 Wireshark 分析你日常的網路活動
– 學習使用 Nmap 進行網路掃描
– 在虛擬環境中練習 ARP Spoofing
– 研究 TLS/SSL 握手過程
– 學習如何設定防火牆規則

祝你學習順利!🔒

飛飛
飛飛

講師學歷:臺科資工所、逢甲資工系畢業。
技術專長:OSINT、滲透測試、網站開發、專業易懂教育訓練。
證照書籍:OSCP、OSCE³、著《資安這條路:領航新手的 Web Security 指南》。
教學經驗:60+ 企業教學經驗、指導過上百位學員。
教學特色:新手友善、耐心指導、擅長圖解(流程圖、心智圖)引導學習。
社群經驗:目前經營全臺資安社群 CURA,曾任臺科資安社社長、逢甲黑客社社長。
社群交流:LINE 社群《飛飛的資安大圈圈》,即時分享經驗、鼓勵交流。
社群分享:FB 粉專《資安這條路,飛飛來領路》,分享文章與圖卡整理。
個人網站:feifei.tw 分享資安技術文章;pbtw.tw 分享 AI 相關應用;ssdlc.feifei.tw 分享軟體安全開發流程文章。