109 年 國立成功大學電腦與通信工程研究所丁組《資訊安全概論》
第 1 題20 分
a) What is Phishing Attack?
b) What are the techniques that a Phishing Attacker needs?
c) What causes Phishing Attack easily success?
d) What might happened next after phishing attack?
e) How to prevent phishing attacks?
登入後即可作答並保存紀錄。
此題主要在測試考生對網路釣魚(Phishing)的理解,包含其定義、攻擊手法、成功原因、後果以及防禦策略。
a) Phishing Attack 的定義
Phishing 是一種利用欺騙手段,誘使受害者洩漏敏感資訊(如帳號密碼、信用卡號、個人身分資訊等)的網路攻擊。攻擊者通常偽裝成合法、可信的機構或個人,透過電子郵件、即時訊息、社交媒體或惡意網站等方式進行。
b) Phishing Attacker 所需的技術
Phishing 攻擊者通常需要具備以下技術和能力:
- 社會工程學 (Social Engineering):這是 Phishing 的核心。攻擊者需要了解人性的弱點,例如貪婪、恐懼、好奇心、信任感等,並利用這些弱點來操縱受害者。
- 偽裝與詐騙 (Impersonation and Deception):能夠模仿合法機構(如銀行、電子商務網站、政府機關、知名公司)的品牌、標誌、語氣和風格,製作逼真的詐騙訊息或網站。
- 網頁製作與架設 (Web Development and Hosting):能夠快速架設仿冒網站,以竊取使用者輸入的資訊。這可能涉及基本的 HTML、CSS、JavaScript 知識,以及網域註冊、網頁伺服器租用等。
- 郵件發送與管理 (Email Sending and Management):能夠大量發送偽裝的電子郵件,並可能使用郵件伺服器、DNS 紀錄(如 SPF, DKIM, DMARC)的知識來規避垃圾郵件過濾。
- 惡意軟體開發/取得 (Malware Development/Acquisition):有時 Phishing 會結合惡意軟體,例如透過附件或連結散播病毒、勒索軟體、鍵盤側錄程式等。
- 資訊收集 (Information Gathering):能夠透過公開資訊(如社交媒體、公司網站)或資料外洩事件,收集目標的個人資訊,以便進行更具針對性的攻擊(Spear Phishing)。
- 規避偵測 (Evasion Techniques):了解如何規避防毒軟體、防火牆、垃圾郵件過濾器等安全措施。
c) Phishing Attack 容易成功的幾個原因
- 人性弱點的利用:攻擊者利用人們的恐懼(如帳戶被盜用)、貪婪(如中獎訊息)、好奇(如「你被標記了」)、信任(假冒熟人或權威機構)等心理。
- 視覺上的高度仿冒:攻擊者能製作出與官方網站、電郵非常相似的視覺內容,讓受害者難以辨識真偽。
- 緊迫感的營造:訊息中常強調「立即行動」、「帳戶將被凍結」、「限時優惠」,迫使受害者在未仔細思考下做出反應。
- 技術門檻低:許多 Phishing 工具和服務(包括仿冒網站模板、大量發送郵件的服務)可以在暗網上輕易取得,降低了攻擊門檻。
- 安全意識不足:許多使用者缺乏足夠的網路安全知識,無法辨識 Phishing 的跡象。
- 行動裝置的普及:在手機上,網址可能被截斷,或視覺元素顯示不完整,更容易被欺騙。
- 帳戶綁定與單一密碼:使用者常在多個網站使用相同密碼,一旦一個帳戶被攻破,其他帳戶也可能受到影響。
第 2 題20 分
a) What is buffer overflow attack?
b) Describe the two types of buffer overflow attacks.
c) How to prevent buffer overflow.
登入後即可作答並保存紀錄。
此題主要測試考生對緩衝區溢位 (Buffer Overflow) 攻擊的理解,包括其定義、常見類型及防禦方法。
a) Buffer Overflow Attack 的定義
緩衝區溢位攻擊是一種常見的軟體漏洞利用,發生在程式嘗試將超過其緩衝區(一段連續的記憶體區域)容量的資料寫入時。當程式沒有正確檢查輸入資料的大小,導致資料溢出到相鄰的記憶體區域時,攻擊者就可以利用這個溢出,覆寫重要的程式資料,例如返回位址 (return address) 或函式指標 (function pointer),進而控制程式的執行流程,達到執行任意程式碼 (arbitrary code execution) 的目的。
b) 兩種緩衝區溢位攻擊的類型
緩衝區溢位攻擊主要有兩種類型,取決於溢位發生在記憶體堆疊 (stack) 還是堆積 (heap):
-
堆疊緩衝區溢位 (Stack-based Buffer Overflow):
- 機制:這是最常見的類型。當一個函式被呼叫時,局部變數、函式參數以及返回位址會被儲存在記憶體堆疊上。如果一個函式接收的輸入資料超過了其局部變數緩衝區的大小,這些資料就會溢出,覆寫堆疊上的其他資料,最關鍵的是可以覆寫返回位址。攻擊者可以將返回位址修改為指向攻擊者注入的惡意程式碼(Shellcode)的位址,當函式返回時,程式就會跳轉到惡意程式碼執行。
- 範例:例如,一個函式使用
strcpy或gets這樣不安全的函式來複製使用者輸入到一個固定大小的字元陣列(緩衝區),而沒有檢查輸入字串的長度。
-
堆積緩衝區溢位 (Heap-based Buffer Overflow):
- 機制:堆積用於動態記憶體分配(例如使用
malloc或new)。堆積上的資料結構(如佇列、鏈結串列、物件)如果存在緩衝區溢位漏洞,攻擊者可以利用溢出覆寫相鄰資料結構的控制資訊,例如指標、大小欄位等。這可能導致後續的記憶體操作(如釋放記憶體、讀取資料)行為異常,進而導致程式崩潰或執行任意程式碼。 - 範例:例如,在處理使用者上傳的檔案元數據時,如果檔案大小資訊驗證不足,導致寫入檔案內容時發生溢位,可能破壞相鄰的檔案結構資訊,進而被利用。
- 機制:堆積用於動態記憶體分配(例如使用
c) 如何防止 Buffer Overflow
防止緩衝區溢位攻擊需要從軟體開發的各個層面進行防護:
- 安全的程式碼撰寫實踐:
- 使用安全的函式:避免使用如
gets()、strcpy()、strcat()、sprintf()等不安全的 C 語言函式,這些函式無法限制資料長度。
- 使用安全的函式:避免使用如
第 3 題20 分
a) Explain what a nonce is and the reason for using a nonce.
b) Describe how a man-in-the-middle attack may be performed on a Wi-Fi network and the consequences of such an attack.
c) Explain how a man-in-the-middle attack on a Wi-Fi network can be defeated.
登入後即可作答並保存紀錄。
此題考察考生對密碼學中「Nonce」概念的理解,以及在無線網路環境下的中間人攻擊 (Man-in-the-Middle, MitM) 的手法、後果與防禦策略。
a) Nonce 的定義與使用原因
- 定義:Nonce 是 "Number used once" 的縮寫,意即「僅使用一次的數字」。它是一個在加密通訊中,通常是隨機產生或基於時間戳記但確保在特定時間範圍內不重複的數值。
- 使用原因:Nonce 的主要目的是防止重放攻擊 (Replay Attack)。在許多加密協定中,攻擊者可能截獲合法的加密訊息,然後在稍後將同一訊息重新傳送給接收者,以達到欺騙、重複執行操作(如重複轉帳)或獲取未經授權的存取。
- 防止重放攻擊:透過在每條訊息中加入一個唯一的 Nonce,接收方可以檢查收到的 Nonce 是否是它期望的下一個值(例如,一個遞增的計數器)或是否已經處理過。如果 Nonce 不正確或已重複使用,接收方就會拒絕該訊息。
- 提升加密強度:在某些加密模式(如流式加密)中,Nonce 也被用來確保即使使用相同的金鑰加密相同的明文,每次加密的結果(密文)都是不同的。例如,在 AES-CTR 模式中,Nonce 與計數器結合用於生成每次加密的唯一金鑰流。
- 一次性密碼本 (One-Time Pad, OTP):在理論上最安全的 OTP 中,金鑰必須是真正隨機且僅使用一次的,這也是 Nonce 的一種極端應用。
b) Wi-Fi 網路上的 Man-in-the-Middle (MitM) 攻擊手法與後果
MitM 攻擊是指攻擊者插入到兩個通信方之間,竊聽、修改或攔截它們之間的通信,而通信雙方卻不知道攻擊者的存在。在 Wi-Fi 網路上,常見的 MitM 攻擊手法包括:
-
偽造接入點 (Rogue Access Point / Evil Twin):
- 手法:攻擊者架設一個與合法 Wi-Fi 網路名稱 (SSID) 相同或極為相似的惡意無線接入點。使用者可能會誤以為這是合法的網路而連上。一旦使用者連上,所有經過該惡意 AP 的流量都會經過攻擊者。
- 進階手法:攻擊者也可能在合法 AP 附近,使用更強的信號來誘使附近的裝置斷開與合法 AP 的連接,並自動連接到惡意 AP。
-
ARP 欺騙 (ARP Spoofing):
- 手法:在已連接到同一個 Wi-Fi 網路的攻擊者,可以透過發送偽造的 ARP (Address Resolution Protocol) 回應封包,欺騙網路上的其他裝置(如受害者電腦和路由器),讓它們認為攻擊者的 MAC 位址對應著目標 IP 位址(例如,預設閘道器的 IP 位址或受害者的 IP 位址)。這樣,目標流量就會被導向攻擊者,攻擊者再將流量轉發給真正的目的地,從而實現竊聽。
- 工具:如
arpspoof、ettercap等工具常用於此。
-
DNS 欺騙 (DNS Spoofing):
- 手法:當使用者嘗試訪問一個網站(如
www.bank.com)時,DNS 查詢會將網域名稱轉換為 IP 位址。攻擊者可以透過 ARP 欺騙攔截 DNS 查詢,然後發送偽造的 DNS 回應,將合法網域名稱指向攻擊者控制的 IP 位址,從而將使用者導向惡意網站(如仿冒的銀行登入頁面)。
- 手法:當使用者嘗試訪問一個網站(如
-
SSL/TLS 劫持 (SSL/TLS Stripping/Hijacking):
- 手法:即使網站使用 HTTPS 加密,攻擊者也可以透過上述方法攔截流量,然後嘗試強制降級連接(SSL Stripping),讓瀏覽器與攻擊者建立 HTTPS 連接,而攻擊者再與目標伺服器建立 HTTPS 連接。或者,攻擊者可以向受害者發送偽造的 SSL 憑證,誘騙瀏覽器信任該憑證。
第 4 題10 分
a) What is SQL injection in Web Security?
b) How can the programmer to avoid the SQL injection?
登入後即可作答並保存紀錄。
此題旨在測試考生對 SQL Injection 攻擊的理解,包括其定義以及預防措施。
a) SQL Injection in Web Security 的定義
SQL Injection (SQL 注入) 是一種常見的 Web 安全漏洞,發生在 Web 應用程式未能正確過濾或消毒使用者輸入的資料,導致惡意 SQL 語句被注入到應用程式的後端資料庫查詢中。攻擊者可以透過在輸入欄位(如搜尋框、登入表單、URL 參數)中插入特殊的 SQL 代碼,來欺騙資料庫執行非預期的命令。
其核心在於,Web 應用程式將使用者輸入的資料直接拼接到 SQL 查詢字串中,而不是將其視為單純的資料值。當使用者輸入的資料包含 SQL 的特殊語法(如引號 '、分號 ;、註解 -- 或 #、AND, OR 等邏輯運算符)時,這些語句就會被資料庫解釋為 SQL 命令的一部分,而非僅僅是待查詢的資料。
SQL Injection 的潛在危害包括:
- 資料竊取:未經授權存取、讀取、下載資料庫中的敏感資訊(如使用者帳號密碼、信用卡號、個人資料)。
- 資料修改與破壞:修改、刪除、插入資料庫中的內容。
- 資料庫管理權限獲取:透過注入命令來執行資料庫管理操作。
- 系統控制:在某些情況下,甚至可以透過資料庫執行作業系統命令,進而控制整個伺服器。
- 拒絕服務 (Denial of Service):透過執行耗費資源的查詢來使資料庫癱瘓。
b) 如何避免 SQL Injection
開發者可以採取以下措施來防止 SQL Injection 攻擊:
- 參數化查詢 (Parameterized Queries) / 預處理語句 (Prepared Statements):
- 原理:這是最有效且最推薦的方法。參數化查詢將 SQL 查詢的結構與要查詢的資料分開。應用程式會預先定義 SQL 語句的模板,其中包含參數佔位符(例如
?或:name)。然後,使用者輸入的資料會作為參數單獨傳遞給資料庫系統。資料庫驅動程式會確保這些參數值被正確地處理和轉義,使其始終被視為純粹的資料,而不是 SQL 代碼的一部分。 - 範例:
- 原理:這是最有效且最推薦的方法。參數化查詢將 SQL 查詢的結構與要查詢的資料分開。應用程式會預先定義 SQL 語句的模板,其中包含參數佔位符(例如
第 5 題10 分
a) What is Botnet?
b) Describe the architecture and transmission protocol of the three types of Botnet.
登入後即可作答並保存紀錄。
此題旨在測試考生對 Botnet 的理解,包括其定義、結構以及不同類型 Botnet 的傳輸協定。
a) Botnet 的定義
Botnet (殭屍網路) 是一組被惡意軟體(稱為 "bot" 或 "zombie")感染的電腦或其他聯網設備(如 IoT 裝置),並由攻擊者(稱為 "botmaster" 或 "herder")集中或分散控制的一系列受感染主機。這些被感染的裝置在無使用者察覺或同意的情況下,被用於執行各種惡意活動,例如:
- 分散式阻斷服務攻擊 (DDoS Attack)
- 發送垃圾郵件 (Spamming)
- 竊取敏感資訊(如帳號密碼、信用卡號)
- 散播惡意軟體
- 點擊詐騙 (Click Fraud)
- 挖礦 (Cryptocurrency Mining)
b) Botnet 的架構與傳輸協定(三種類型)
Botnet 的架構主要分為三種類型,它們在控制與通訊 (Command and Control, C&C 或 C2) 的方式上有所不同:
-
集中式 Botnet (Centralized Botnet):
- 架構:這是最傳統的 Botnet 架構。所有被感染的 bot 會連接到一個或幾個由 botmaster 控制的 C&C 伺服器。botmaster 透過這些伺服器向 bot 發送指令,並從 bot 處接收結果。
- 傳輸協定:
- IRC (Internet Relay Chat):早期 Botnet 常使用 IRC 協定。bot 會加入一個特定的 IRC 頻道,botmaster 則透過 IRC 指令與 bot 進行通訊。IRC 協定簡單,易於實現,但容易被偵測和封鎖。
- HTTP/HTTPS:現代 Botnet 更多使用 HTTP 或 HTTPS 協定。bot 會週期性地向 C&C 伺服器發送請求(稱為 "polling"),檢查是否有新的指令。HTTPS 的使用可以加密通訊,增加偵測難度。C&C 伺服器可能偽裝成合法的網站。
- P2P (Peer-to-Peer):雖然 P2P 也可以用於分散式 Botnet,但在集中式 Botnet 中,有時也會用 P2P 的方式來傳遞 C&C 指令,例如 bot 之間可以互相轉發指令,但最終指揮權仍在 botmaster 控制的節點。
-
分散式 Botnet (Decentralized Botnet) / P2P Botnet:
- 架構:與集中式 Botnet 不同,分散式 Botnet 沒有單一的 C&C 伺服器。取而代之的是,bot 之間形成一個 P2P 網路。
第 6 題10 分
How are one-time password systems implemented?
登入後即可作答並保存紀錄。
此題主要測試考生對一次性密碼 (One-Time Password, OTP) 系統實現方式的理解。
一次性密碼 (OTP) 系統是一種安全機制,用於在驗證過程中,提供一個僅能使用一次的臨時密碼,以增強安全性,防止重放攻擊和密碼竊取。OTP 系統的實現主要有以下幾種方式:
-
基於時間的 OTP (Time-based One-Time Password, TOTP):
- 原理:這是目前最常見的 OTP 實現方式。它基於一個共享的秘密金鑰 (shared secret key) 和一個時間戳記 (timestamp)。
- 生成過程:
- 在使用者註冊時,系統會生成一個唯一的秘密金鑰,並將其安全地儲存在伺服器端,同時也將其(通常透過掃描 QR Code 或手動輸入)提供給使用者,由使用者儲存在 OTP 裝置(如手機 App)中。
- OTP 裝置和伺服器端都使用相同的秘密金鑰和時間戳記。
- 兩端都會定期(通常是每 30 或 60 秒)執行一個密碼學演算法(最常見的是 HMAC-SHA1 或 HMAC-SHA256,遵循 OATH TOTP 標準)。
- 這個演算法會將秘密金鑰和當前時間(通常是從 Unix epoch 開始的秒數,除以一個時間步長,如 30 秒)作為輸入,產生一個固定長度的雜湊值。
- 這個雜湊值會進一步被截斷或轉換,生成一個短的數字序列(通常是 6 位數),這就是 OTP。
- 驗證過程:使用者在登入時,會顯示當前的 OTP。伺服器端使用相同的秘密金鑰和時間戳記,透過相同的演算法計算出預期的 OTP。如果使用者提供的 OTP 與伺服器計算的 OTP 在一個很小的時間窗口內(允許一些時鐘偏差)匹配,則驗證成功。
- 生成過程:
- 常見實現:Google Authenticator, Microsoft Authenticator, Authy 等手機 App,以及許多硬體 OTP token。
- 原理:這是目前最常見的 OTP 實現方式。它基於一個共享的秘密金鑰 (shared secret key) 和一個時間戳記 (timestamp)。
-
基於事件/計數器 OTP (Event-based/Counter-based One-Time Password, HOTP):
- 原理:與 TOTP 類似,HOTP 也基於一個共享的秘密金鑰。但它不使用時間戳記,而是使用一個計數器 (counter)。
- 生成過程:
- 同樣需要共享的秘密金鑰,儲存在伺服器和 OTP 裝置中。
- 每次產生 OTP 時,計數器會加一。
- 演算法(如 HMAC-SHA1/SHA256)將秘密金鑰和當前的計數器值作為輸入,產生 OTP。
- 驗證過程:伺服器端會維護一個與使用者裝置同步的計數器。當使用者提供 OTP 時,伺服器會使用相同的秘密金鑰和一系列可能的計數器值(例如,伺服器上的計數器值加 0 到 N,其中 N 是一個小範圍,以處理網路延遲或使用者跳過 OTP 的情況)來計算預期的 OTP。如果其中一個計算結果與使用者提供的 OTP 匹配,則驗證成功,並且伺服器會將該使用者的計數器更新到匹配的位置。
- 生成過程:
- 常見實現:一些早期的硬體 OTP token,或在離線(無時間同步)環境中使用。
- 原理:與 TOTP 類似,HOTP 也基於一個共享的秘密金鑰。但它不使用時間戳記,而是使用一個計數器 (counter)。
第 7 題10 分
Why an asymmetric encryption algorithm uses two keys?
登入後即可作答並保存紀錄。
此題在於測試考生對非對稱加密(公鑰密碼學)基本原理的理解,特別是為何需要兩個金鑰。
非對稱加密演算法(也稱為公鑰密碼學)之所以使用兩個金鑰,是因為其數學原理和設計目標與對稱加密不同。這兩個金鑰是數學上相關聯的,但從其中一個金鑰推導出另一個金鑰在計算上是不可行的。這兩個金鑰分別是:
-
公鑰 (Public Key):
- 特性:公鑰是可以公開散播,任何人都可以取得。
- 用途:
- 加密:任何人都可以使用對方的公鑰來加密訊息,確保只有持有對應私鑰的接收者才能解密。
- 驗證簽章:用於驗證由對應私鑰所產生的數位簽章。
-
私鑰 (Private Key):
- 特性:私鑰必須由其所有者嚴格保密,絕對不能洩漏。
- 用途:
- 解密:用於解密由對應公鑰加密的訊息。
- 產生簽章:用於對訊息進行數位簽章,證明訊息來源的真實性和完整性。
為何需要兩個金鑰?
非對稱加密演算法的設計,利用了某些數學上的困難問題,例如大數質因數分解(RSA)、離散對數問題(Diffie-Hellman, DSA, ECC)等。這些數學問題的特性使得:
- 單向性 (One-way Function):從金鑰對中的一個金鑰(例如公鑰)計算出另一個金鑰(私鑰)是極其困難的,甚至在實際計算時間內是不可能的。這保證了私鑰的安全性,即使公鑰被公開。