Cybersecurity[2] 網路概論 = ## 網際網路 Internet - **Inter**connected **net**works - network 將多個計算機、設備或系統連接在一起使其能彼此通信 - Internet:網路組成的網路 - Protocols:裝置間互相溝通的規則 - ex. HTTP、DNS、IP、TCP、UDP ### Internet Standards - RFC:各種 protocols 的書面標準 - [IETF](https://www.ietf.org):網際網路工程工作小組 - 修訂 protocols 的協會 ![Screenshot 2025-12-02 at 2.46.27 AM](https://hackmd.io/_uploads/By5czvjZWx.png) - host/end system(device):連接網路的設備 - ex. PC、伺服器、行動裝置、行動電話 - router/switch:傳輸(forward)資料(封包 packet,小段的資料) - 路由器 - router:不同網路間傳遞資料 - switch:同一網路間傳遞資料 - communication links:連接設備的線路 - 通訊連結 - 存取點、wired links - 資料傳輸速率 = 頻寬 (bandwidth, bps) - network:上面那張圖每一個藍藍的一塊便是一個 network ## IP 位址(Internet Protocol Address) - 裝置在網路上的門牌地址 - 分類: - 公網 IP(Internet) - 私網 IP(區域網路) ### Local Area Network - 區域網路,LAN - 在同一個 network 裡 - 連到同一個 router 就算是同一個 LAN - 192.168.0.0–192.168.255.255(65,536 個 IP 位址)、172.16.0.0–172.31.255.255(1,048,576 個 IP 位址)、10.0.0.0–10.255.255.255(16,777,216 個 IP 位址) ### 查詢自己的 IP #### Windows ``` $ ipconfig ``` - Wireless LAN adapter / Ethernet adapter → `IPv4 Address` #### macOS Wi-Fi: ``` $ ipconfig getifaddr en0 ``` 有線網路: ``` $ ipconfig getifaddr en1 ``` #### Linux ``` $ ip a ``` - wlan0 / eth0 --- ## Port(通訊埠) - 同一台電腦上不同服務的門號 - 格式:`IP:Port`(ex. 192.168.1.12:8080) - 常見 Port: - 80:HTTP - 443:HTTPS - 22:SSH - 53:DNS --- ## DNS(Domain Name System) - 網域名稱系統 - 將人們可讀取的網域名稱 (ex. www.amazon.com) 轉換為機器可讀取的 IP 地址 (ex. 192.0.2.44) ### 查詢 DNS ``` $ nslookup google.com ``` --- ## 封包(Packet) - Internet 傳資料切成很多小塊:**封包** - 網路傳輸的最小單位 - 封包包含:來源 IP、目的 IP、協定(TCP / UDP / ICMP …)、內容(payload) - 資料傳輸:不斷送出封包,對方收到後再組合回完整內容 --- ## 基本網路工具 ### ping ``` $ ping google.com ``` - 確認能否到達目標 - 看延遲、有沒有封包遺失 - timeout:無法到達 - ICMP 網際網路控制訊息協定 ### traceroute / tracert Windows: ``` $ tracert google.com ``` macOS/Linux: ``` $ traceroute google.com ``` - 可以看出封包經過的完整路徑 ### curl - 打網址就是一個 HTTP GET - curl 可以看完整的 Raw Request 和 Response ``` curl -v http://google.com ``` ### nc - Netcat - TCP/UDP 網路程式 - 可以做網路連線和其他客戶端或伺服器端連線 ``` $ nc <ip> <port> ``` ### Wireshark - 用來看封包長什麼樣子 #### 選介面 - en0:wifi - en1:有線網路 - File > Open 可以直接開 .pcap/.pcapng - 上面的按鈕鼠標放上去就可以看他可以幹嘛 #### Filter - 打在這按 Enter 後等他跑完 ![Screenshot 2025-12-02 at 4.46.04 AM](https://hackmd.io/_uploads/H1ysA_iW-g.png) - mac 版還在跑的時候視窗最下面會顯示 - windows 我不知道 - 等於:== - 不等於:整串前面加 not | 查看內容 | 語法 | |----------|-------------| | 過濾 IP | `ip.addr == <IP>` | | 過濾協議 | `tcp`、`udp`、`ssh`、`ftp`、`icmp`、`ssl`、`http`、`smtp` | | 只看往某 IP | `ip.dst == <IP>` | | 只看從某 IP | `ip.src == <IP>` | | 過濾端口 | `tcp.port eq 443`、`tcp.dstport == 80 or tcp.srcport == 80` | | 過濾方向 | `src`、`dst` | | 過濾 HTTP | `http.request.method == "HEAD\GET\POST"` | | HTTP 字串 | `http.request.uri contains "string"`、`http contains "string"` | #### 點選封包 - Packet List - 位於最上方,一行代表一個封包 - 常見欄位: - No.(編號) - Time(時間) - Source(來源 IP) - Destination(目的 IP) - Protocol(協定) - Length(封包長度) - Info(封包摘要) - Packet Details - 位於中間,可展開每一層協定。 - 常見層級: - Frame - Ethernet II - Internet Protocol (IP) - TCP / UDP - Application Layer(HTTP / DNS / TLS 等) - 每一層有對應欄位,可使用 ▶ 展開查看內容。 - Packet Bytes - 位於最下方。 - 顯示封包的十六進位資料與 ASCII 解碼。 --- ## 題單 - [what's a net cat?](https://play.picoctf.org/practice/challenge/34) - [PcapPoisoning](https://play.picoctf.org/practice/challenge/362) - [Ph4nt0m 1ntrud3r](https://play.picoctf.org/practice/challenge/459) - [Packets Primer](https://play.picoctf.org/practice/challenge/286) --- ## References - https://ir.lib.cyut.edu.tw/bitstream/310901800/22692/2/ComputerNetworks_RWHung.pdf - https://hackmd.io/@JasonVerse/H1S5dub3a - https://aws.amazon.com/tw/route53/what-is-dns/ - https://www.cisco.com/c/zh_tw/support/docs/ios-nx-os-software/ios-software-releases-121-mainline/12778-ping-traceroute.html - https://hackmd.io/@chiau/SyTXIDZake - https://www.cloudflare.com/zh-tw/learning/network-layer/what-is-a-packet/ - https://ithelp.ithome.com.tw/m/articles/10377373 - https://bc-1221.medium.com/3%E5%88%86%E9%90%98%E7%B6%B2%E8%B7%AF%E5%9F%BA%E7%A4%8E-%E4%BB%80%E9%BA%BC%E6%98%AFip-port-%E9%80%A3%E6%8E%A5%E9%98%9C-68faac6ff29 - https://cloud.tencent.com/developer/article/1618433