iT邦幫忙

2025 iThome 鐵人賽

DAY 8
1
佛心分享-IT 人自學之術

從零開始的 Linux 世界系列 第 8

【Day.8】實作後觀念釐清!

  • 分享至 

  • xImage
  •  

前面兩天不知道大家看完的想法是什麼,感覺滿硬的!

今天輕鬆的聊聊觀念和基礎知識,不然好像不知道我們做這些實做的用意在哪裡?

首先,我們把整個流程先說明一次,打通一下任督二脈!然後補充一些文章中沒提到的內容,幫大家補血之外也算是給我自己做的筆記。文章篇幅長,你可以先挑你有興趣的小節看一下就好!

❓ 我們做了什麼

  1. 成功將 Linux 架起來,也學會了基礎的指令,能夠簡單的操作 Linux。
  2. 理解 Linux 使用者與權限設定。
  3. 學會 GPG 非對稱式加密文件。
  4. 能夠讓雙系統(Windows、Linux)互相溝通的能力。
  5. 對電腦底層系統有初步的瞭解(Powershell)。

這些對於一個駭客或是做滲透測試來說都是非常簡單或甚至可以說是基礎的能力,後面還會再講到「封包」的概念,因為這都是「你如何傳遞訊息給別人的過程,以及怎麼從別人傳遞給你訊息的拆解」,也就是所謂的「網路」。

❓ 什麼是 WSL

Windows System for Linux(適用於 Windows 的子系統 Linux) 是一種輕量化的虛擬環境,更快、效率更高、相容性更強。

過去我們在 Windows 系統中如果要架設 Linux 環境需要依賴第三方的虛擬機器,像是:VirtualBoxVMware,這類虛擬機器是完整的模擬了「硬體設備」。

就像前面曾經說過在 Linux 的世界中所有東西都是一個「檔案」也就是說 GPU、顯示卡、記憶體、硬碟、主機板都是一個檔案,它當然很強大,但同時所需要的效能較高、消耗的資源也較多。

所以才會選擇使用 WSL 來架設我們的環境,尤其現在大家應該也都使用 Windows 10/11 以上的版本,而它們都是有支援 WSL,科技日新月異之下,我們當然也要跟著學最新技術囉!

當然,你如果真的對虛擬環境的需求很大,也建議你可以去學習 VirtualBox、VMware,只是我這邊不會提到!給大家打個預防針,避免你花太多時間在我的文章上哈哈。

❓ OSI 網路七層架構

我們曾經有提到電腦硬體設備包括:GPU、顯示卡、記憶體、硬碟、主機板,還有最重要的「網路介面卡」。電腦到底是怎麼透過「網路」讓你能從台北傳訊息到高雄,甚至傳送到美國的朋友呢?最簡單理解的方式就是:

發送:你的電腦 → 網路線 → 家裡的數據機 → 電線杆 → 中華電信基地台 → 海底電纜
接收:海底電纜 → 美國某電信的基地台 → 電線杆 → 他家的數據機 → 網路線 → 他的電腦

而這個過程僅花費 120 ~ 280 毫秒,幾乎在一秒之內瞬間完成,你的朋友和你聊天都是秒讀秒回,根本感覺不到。有沒有突然覺得跨國傳訊息還這麼快很神奇阿!


那在電腦環境裡面又怎麼看這些訊息傳輸經過哪裡呢?OSI 七層架構中有提到:

https://ithelp.ithome.com.tw/upload/images/20250923/20176048itIYx1cwf3.png

  1. 實體層(Physical Layer):就是剛剛提到的電線杆、光纖、數據機、Wi-Fi 訊號、基地台天線…等等。
  2. 資料連接層(Data Link Layer):你電腦的網卡(NIC)、乙太網路、Wi-Fi 協定。
  3. 網路層(Network Layer):前天提到的 IPv4 就是這層,還有子網路遮照、預設閘道...等等。
  4. 傳輸層(Transport Layer):電腦總共有「65536」個 Port,但因為是從 0 開始計算,所以是「0 ~ 65535」。像是 22 給 SSH、80 給 HTTP、443 給 HTTPS。我自己以前做全端工程師的時候架設網站就很常用到 80443,以及 PostgreSQL 資料庫的 5432
  5. 會話層(Session Layer):比方說你打 ssh ray@192.168.1.xxx,幫你維持這個連線狀態。
  6. 表現層(Presentation Layer):像我們昨天玩過的 GPG 加解密,或是壓縮、編碼。
  7. 應用層(Application Layer):讓人能直接用的 Line、Email,或是之前提到的 sshscp 指令。

❓ 封包、連接阜、子網路遮照是什麼

網路上的訊息不是「整塊」送出去的,而是被切成一小塊一小塊的封包 (Packet)

每個封包都像一個包裹,外面有標籤(來源 IP、目的 IP、Port…),裡面才是資料(文字、圖片、影片片段…)。在傳送過程中,TCP 封包會帶有一些控制旗標 (Flags),讓電腦知道「這個封包要怎麼處理」,例如:

縮寫 全名 中文 功能說明
URG Urgent Pointer 緊急指針 不等待前面封包,優先處理。
ACK Acknowledgement 確認 告訴對方「我收到封包了」,標示為 1(預設 0)。
PSH Push 推送 要求資料立即交給應用程式處理(不用等緩衝區排隊)。
RST Reset 復位 中斷連線,如果封包異常或無回應就拒絕。
SYN Synchronisation 同步 建立連線時使用(常見於三向交握)。
FIN Finish 完成 用於結束連線,表示資料傳輸完畢。

連接阜就很像你家的信箱,郵差寄信到你家的時候不是直接塞進你家門,而是放在「信箱」暫存,等你有空的時候再去拿出來,所以它只是一個「接口」。而常用的連接阜有:

Port 協定 / 服務 說明
20 / 21 FTP 檔案傳輸協定(20 資料傳輸,21 控制)
22 SSH / SFTP 遠端登入、安全檔案傳輸
23 Telnet 遠端登入(明文傳輸,不安全,幾乎淘汰)
25 SMTP 電子郵件傳送(伺服器之間轉寄郵件)
53 DNS 網域名稱解析服務
80 HTTP 網頁服務(未加密)
143 IMAP 郵件接收協定(比 POP3 更進階)
443 HTTPS 網頁服務(加密,最常用)
3306 MySQL MySQL 資料庫
5432 PostgreSQL PostgreSQL 資料庫
8080 HTTP 常見的 HTTP 替代 port(測試環境常用)

實際上很多 Port 已被標準協定佔用,0 ~ 1023 是「well-known ports」。


至於子網路遮照應該有學過「網路與通訊」課程的大學生們應該有些印象,簡單來說就很像社區巷子裡面從 1 號一直到 256 號住戶一樣,郵差可以快速的辨識包裹是誰家的?要把包裹丟到哪個信箱裡面?

前兩天的實做中我們很常用到的 IPv4 你可以觀察一下,它的結構是不是「四組三位數」構成的呢?例如:192.168.1.10172.37.32.120

事實上在「計算機概論」裡面就有提到說:電腦的基礎運算單位是二進制(bit),以 0 和 1 表示。8 個 bit 組成 1 個 byte(位元組),而 IPv4 位址就是由 32 bits(4 個 bytes) 構成。你可以參考這篇文章瞭解數字轉換系統。

以及 「bit」、「byte」、「kilobyte」、「megabyte」位元組,儲存容量單位的關係,可以參考這篇文章

那 IPv4 使用的是 32 位元(bits),由四個 8-bit 組成,也就是我們常見的四組十進制數字,例如:192.168.1.10。每組的範圍是 0~255,所以 IPv4 總共有 2^32 ≈ 4,294,967,296 (大約 42 億)個可能的位址。

子網路遮罩則是用來切割「網路位址」和「主機位址」,以 255.255.255.0 為例:

二進制 = 11111111.11111111.11111111.00000000

# 前 24 個 1 → 表示 網路位址 部分
# 後 8 個 0 → 表示 主機位址 部分

常見的範例有:

子網路遮罩 CIDR 可用主機數 範例
255.0.0.0 /8 16,777,214 10.0.0.0 – 10.255.255.255
255.255.0.0 /16 65,534 172.16.0.0 – 172.16.255.255
255.255.255.0 /24 254 192.168.1.0 – 192.168.1.255
255.255.255.240 /28 14 192.168.1.0 – 192.168.1.15
255.255.255.255 /32 1 192.168.1.10 單一主機

所以像 192.168.1.10/24,後面的 /24 代表「網路位址佔 24 bits,主機位址佔 8 bits」。最多支援 2^8 - 2 = 254 台主機,因為要扣掉「第一個網路位址」和「最後一個廣播位址

簡單計算一下,一台電腦有 65536 個 port,乘上大約 42 億個 IPv4 位址,那就會有
65536 × 4,200,000,000 ≈ 275,251,200,000,000275 兆 個潛在的服務組合。(當然現實世界並不會真的開這麼多服務啦哈哈哈)。

❓ 為什麼使用 GPG 做加密,底層的邏輯是什麼

這邊說實在真的太硬核了,牽涉到數學問題。

簡單來說我們 GPG 使用的「非對稱式加密」運用了像 RSA 加密演算法DSA 數位簽章演算法,邏輯就是我們前面提到的每個人自行產生公鑰、私鑰,然後用這些鑰匙互相加解密的過程。

公鑰就像你的鎖頭,任何人都能用它鎖上信件;私鑰就像你的鑰匙,只有你能打開。

還記得我們在設定 GPG 的時候讓大家前面三題都選擇預設就好嗎?

我們選擇的是 ECC 橢圓曲線密碼學,現今流行的加密貨幣也是使用這種密碼學來做為基礎,甚至還摻雜一些 Hash 雜湊函演算法

產生的過程非常快,也非常方便,畢竟有很多 function 可以使用,但壞處就是逆向解密的時候就非常困難,即使是超級電腦,也需要極長的時間(可能數百年甚至數千年)才能暴力破解。但它的優勢是密碼長度比 RSA 還短,但是安全性跟 RSA 一樣。

❓ 要怎麼知道使用者名稱

每次要 scp 檔案給對方的時候都不知道前面 username 要填入什麼?沒關係,這是新手最常卡住的地方,但其實很簡單!只要在 Terminal 下 whoami 就會跳出來囉!

https://ithelp.ithome.com.tw/upload/images/20250923/201760486aRWaRi2hA.png

以我的 Windows Terminal 來說,我的使用者名稱就是 ray,那你傳送檔案的時候就用 scp <filename> ray@192.168.1.xxx:/<directory> 就可以囉!

❓ PowerShell、Command、Terminal 的差異

  • Command Prompt (cmd):老派的 DOS 磁碟作業系統,支援的指令很少,但輕便快速。
  • PowerShell:現代化,支援物件導向,能跑各種自動化腳本,如果是資工、資管的朋友對這個概念肯定不陌生,用途就是透過程式指令讓你能跟硬體設備溝通。
  • Terminal:統稱「文字介面視窗」,不等於任何 Shell 程式,本質只是顯示平台,所以只要是黑底白字的介面都可以叫做 Terminal。
名稱 平台 特性
cmd Windows 老 DOS 風格,輕便簡易
PowerShell Windows 物件導向、強大
Terminal Windows/Linux/macOS 視窗介面,裡面可以跑不同 Shell (bash, zsh, pwsh)

在 Linux 裡面常見的 Shell 是 bashzsh,而在 MacOS 常見的是 zsh,應該有自己摸索過大概就會知道這個概念。

❓ 防火牆為什麼會阻擋雙系統環境溝通

我們在 Windows 和 Kali Linux 之間傳檔案的時候,常常會遇到一個問題:
明明我可以 ping 到對方,卻沒辦法 sshscp 進去。這時候最常見的原因就是「防火牆擋住了」。

防火牆就像是你家社區的大門警衛,會檢查「誰能進來、誰不能進來」。
雖然 Windows 和 WSL(Kali Linux)都在同一台電腦上,但它們之間的連線走的是 虛擬網卡 (vEthernet),對 Windows 來說,這就像是一台「外部電腦」要進來,所以它還是會套用防火牆規則。

當我們在 Windows 開啟 OpenSSH Server 的時候,系統會自動幫你加一條防火牆規則,不過預設只允許 Private 網路。
這就導致 WSL 這種虛擬網卡被當成「外部網路」,連線請求自然就被丟掉了。

解法就是:手動新增一條防火牆規則,允許 TCP port 22Any Profile 下都能通過。

這樣 WSL 才能順利透過 SSH 連到 Windows,達成雙系統的互通。

所以防火牆並不是壞東西,它的存在就是為了保護你的系統不被亂連。只是我們在做實驗時,必須調整規則,讓自己的虛擬環境能互相溝通哦!

❓ 接下來要做什麼

不知道學資工和資管的同學們有沒有回想起大學時候學的東西呢?感覺很熟悉,但是好像都沒用到,其實這些都是在幫你未來打基礎喔!

我會嘗試去介紹 NmapWireShark 這兩個工具,讓你慢慢地學會「什麼是滲透測試」,今天就是先把使用這兩個工具的基礎觀念先釐清!希望對你有幫助~


上一篇
【Day.7】滲透測試的第一步:GnuPG 加密文件(下)
下一篇
【Day.9】Nmap 諸神之眼!開始使用 Kali Linux 工具
系列文
從零開始的 Linux 世界9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言