# 資訊安全 [TOC] ## 觀念 ### 資安是什麽? * [ 2025年2月 臺灣海纜遭人為破壞、醫院遭勒索軟體攻擊](https://www.ithome.com.tw/news/167727) * 事件 * 臺澎三號海纜遭破壞,海巡署扣押具有中資背景的「宏泰」貨輪及8名中國籍船員,後續依國安層級處理。 * 馬偕紀念醫院遭受 CrazyHunter 勒索軟體攻擊,導致北淡兩區急診室受影響,600多臺電腦當機。 * 入侵過程中會從 AD 管道下手,透過弱密碼嘗試取得帳號權限,進而透過 GPO 派送方式發動大範圍勒索加密攻擊。 ::: spoiler **Active Directory(AD)** 企業員工在使用的公司電腦開機後,通常會被要求輸入網域、帳號及密碼,才能存取網路公用資料夾,或是列印文件,並且會受到群組原則(Group Policy)的約束,每3個月必須更換一次密碼,這些機制的背後,其實都與AD網域的帳號認證有關。 **GP(Group Policy)& GPO(Group Policy Objects)** GP,掌控使用者的工作與電腦管理環境 帳戶原則 ( 設定密碼長度、密碼使用期限、帳戶鎖定原則 ) 限制軟體執行 限制存取隨身碟 ( 其他卸除式儲存裝置 ) GPO, 群組原則物件 GPO 一 link 到指定伺服器、網域、組織單位則GPO 設定就會影響。 ::: * 各位社群軟體的照片、訊息呢 ? #### 資安的目的 * 保護資訊及資訊系統免受未經授權危害 * 使用、披露、破壞、修改、檢視、記錄及銷毀 --- #### 資安對象是誰? * 硬體 ( Physical ) * 電腦、主機、伺服器的實體位置 > if 手機被砸爛、電腦泡水、機房被火燒了 * 資料 ( Data ) * 儲存在儲存媒體上的資訊,如文件、數據庫記錄 > if 學校成績全都沒了、銀行數字清空 * 通訊 ( Communication ) * 傳遞訊息的過程 > if 網路間傳遞資料被竄改、人與人之間的溝通有仲介人 * 人 ( Personnel ) * 公司關鍵成員的安全 > if 一家公司的核心成員都被綁走,公司還能營運嗎 ? :::success ![magua](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 保護了對象的什麼? ::: #### 資安三角 CIA * 美國國家標準暨技術研究院(NIST)在 1977 年發行的刊物整合出資安鐵三角 (CIA) 的概念 * 重要性在於保護 **資訊** 的 **機密性**、**完整性**和**可用性** ::: info **美國國家標準暨技術研究院 NIST** * 全名為 National Institute of Standards and Technology * 前身: 國家標準局 * 為產業界、學術界、政府提供了各種測量標準、測試方法、軟體和硬體工具 * 美國聯邦政府的科技標準和測量標準機構 [參考來源](https://nvlpubs.nist.gov/nistpubs/CSWP/NIST.CSWP.04162018.pdf) ::: ![image](https://hackmd.io/_uploads/BJqVYj69Jl.png) > 從內到外講 * 核心 ( 核心資訊安全目標 ) - CIA > 我知道你很急但先別急 * 第一層防護 ( 資訊技術 ) - Communication ( 通訊 ):資訊在網路或系統之間傳輸時的安全性, > ex. 加密技術、防火牆等。 - Hardware ( 硬體 ):伺服器、電腦、網路設備等硬體設備的安全, > ex. 存取控制、加密儲存等。 - Software ( 軟體 ):應用程式、作業系統及各種資訊系統的安全, > ex. 漏洞修補、防毒軟體等。 - 這三個部分負責確保資訊的 CIA 三要素。 * 第二層防護 ( 物理 與 個人 安全 ) - Physical security ( 物理安全 ):指防止未經授權的物理存取, > ex. 門禁系統、監控設備、防火防災措施等。 - Personal security ( 人員安全 ):指確保人員具備足夠的安全意識與行為規範, > ex. 員工背景調查、安全培訓等。 - 這一層確保技術防護措施不會因為人為疏忽或物理入侵而失效。 * 最外層防護 ( 組織層級安全 ) - Organizational security ( 組織安全 ):包括企業或機構層面的安全策略、法律法規、資安管理制度等。 > 例如 ISO 27001 資訊安全管理系統 ( ISMS )、企業內部資安政策等。 > ::: info > NIST CSF(NIST Cybersecurity Framework) > * 網路安全框架,可以增加網路安全 > * 企業或組織的資訊安全風險分為五大類 > 1. 辨別( Identify ):建立組織規則以管理系統、人員、資產、資料和功能的網路安全風險。 > 2. 保護( Protect ):建立和實施適當的安全措施以確保重要服務的運行。 > 3. 偵測( Detect ):制定並實施適當的作為以辨別網路安全事件的發生。 > 4. 回應( Respond ):對偵測到的網路安全事件,規劃並實施適當的行動。 > 5. 復原( Recover ):制定並實施適當的措施以修復因網路安全事件受損的功能和服務。 > > [參考文獻](https://medium.com/upas/%E5%B8%B6%E4%BD%A0%E8%AA%8D%E8%AD%98nist-cybersecurity-framework-303fb84e252c) > ::: - 這一層確保資訊安全不只是技術問題,而是整個組織層級的管理問題。 ::: success ![magua](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 來講講 CIA 吧 ! ::: #### 機密性(Confidentiality) ![image](https://hackmd.io/_uploads/ryXa_6Hjyg.png) * 定義: 採用適當安全機制保護資料以避免暴露於無權限人員或程式之下。這在保護個人隱私、金融交易、企業機密、政府機構機密等方面都至關重要。 ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 想像一下,你的手機裡面裝滿了私密照片、聊天紀錄、銀行帳戶…你當然不希望被別人隨便翻出來,機密性就是確保你的資料 不被亂看、不被偷走! ::: * 會破壞機密性的風險? * 未授權存取:駭客入侵你的電腦,竊取你的私人照片、公司機密檔案。 * 資料外洩:員工離職前偷偷下載公司的機密技術檔案,賣給競爭對手。 * 社交工程攻擊:詐騙集團假裝是銀行客服,打電話騙走你的信用卡資訊。 * 怎麼保護機密性? * 加密 (Encryption): 讓資料變成亂碼,沒有密碼的人看不懂。就像你寄一封信,裡面全是 「#@%&」這種亂碼,只有收信人知道解讀方式。確保即使資料被竊取,駭客也無法解讀內容。 * 使用磁碟加密軟體(ex. VeraCrypt),可以建立實體磁碟上的加密區域、建立加密虛擬磁碟檔案並掛載使用 > VeraCrypt 是一款開放原始碼的即時加密軟體 * 多重驗證 (2FA, MFA) & 角色權限管理 (RBAC, ABAC): * 登入時除了密碼,還要驗證你的手機驗證碼(OTP one time password)或指紋。就像你開保險箱不只需要鑰匙,還要指紋掃描。 * 不同層級的使用者只能存取對應的資料,例如員工不能查看 CEO 的郵件。 > ex.社群帳號設定「好友限定」,陌生人就看不到你的貼文。確保只有被授權的使用者能查看存取資料。 * 資料分池(Sharding)& 金鑰分池(Key Sharding): * 資料分池將一份機密檔案拆成三部分,分別存放在不同伺服器,就算駭客入侵其中一台,也無法看到完整的資料。 * 金鑰分池就是讓多個人分別掌握加密金鑰的一部分,沒有人可以單獨解密資料。即使駭客攻破其中一個資料庫或者金鑰,也無法取得完整的資訊。 --- #### 完整性(Integrity) ![image](https://hackmd.io/_uploads/BkxAOaBjkx.png) - 定義: 完整性就是確保資料在傳輸、儲存、處理的過程中不會被未授權的修改,且修改後可以被偵測到。簡單來說,你看到的東西應該是「原汁原味」,而不是被偷偷改過的! ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 在線上購物時輸入了一筆 $1000 的轉帳,但駭客悄悄在傳輸過程中把數字改成了 $10,000!這時候,如果沒有完整性的保護,你的銀行帳戶可能就會一夜清空。 ::: - 會破壞完整性的風險? - 資料篡改 (Data Tampering): 駭客竄改你的成績單,把 90 分變成 59 分,然後你就延畢了。 - 中間人攻擊 (Man-in-the-Middle Attack, MITM): 你連上免費 Wi-Fi 轉帳時,駭客在中間偷偷修改你的匯款對象,把錢轉到他的帳戶。 * 怎麼確保完整性? - 雜湊函數 (Hashing) & 數位簽章 (Digital Signature) - 雜湊函數 單向不可逆的計算,只要有一點點變動,兩個就是不一樣的東西了 >Hash("apple") → 3f786850e387550fdab836ed7e6dc881 >Hash("Apple") → 37a3b58fb23e2bd1d9af8c3e3e09e33f - 數位簽章 使用私鑰加密、公鑰解密,就是「電子世界的簽名」 >ex. >📩 你收到了一封來自銀行的電子郵件,說你中了 $1000 萬? > 你該怎麼確保這封信真的是銀行發的,而不是詐騙? > > 銀行的流程: > 銀行用雜湊函數算出 email 的雜湊值 > 用 **自己的私鑰** 加密這個值,變成數位簽章 > 把 **數位簽章** 附在 email 裡,然後寄給你 > > 你的流程: > 你用 **銀行的公鑰** 解密數位簽章,得到原本的雜湊值 > 你自己算一次 email 的雜湊值,跟銀行的比對 > > 如果兩者相同 → email 真的來自銀行,沒被改過! > 如果不同 → 這封信可能是詐騙,直接刪掉! --- #### 可用性(Availability) ![image](https://hackmd.io/_uploads/r171FpBokg.png) - 定義: 可用性就是確保系統和資料隨時可用,不會因為攻擊或故障而癱瘓。你應該能在任何時候存取你的銀行帳戶,而不是因為某個駭客搞破壞,你的錢就變成「無法顯示餘額」。 ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 各位同學,如果你在線上考試,結果系統突然崩潰,害你錯過交卷時間! ::: - 會破壞可用性的風險? - DDoS 攻擊與系統過載 指攻擊者透過大量分散的設備發送大量請求,使目標伺服器無法處理正常流量,最終導致伺服器過載,無法提供服務。 > 系統過載 通常是 DDoS 攻擊的結果但有些時候是可能購物網站的雙11大促銷等。 - 硬體故障 & 天然災害: 伺服器當機、機房起火、地震摧毀資料中心,導致網站或服務掛掉。 * 怎麼確保可用性? - 負載平衡 ( Load Balancing ) & 高可用架構 (High Availability, HA) > ex. 演唱會門票開賣,大家全擠在同一個網站,根本搶不到票。 - 防止伺服器被塞爆 - 負載平衡的主要做法 1. 多台伺服器分流 - 讓多台伺服器分擔請求,而不是全都塞到同一台 2. CDN ( 內容傳遞網路, Content Delivery Network ) - CDN 的作用 是把網站的靜態內容(圖片、影片、CSS、JavaScript)快取到全球各地的伺服器,讓使用者能夠從 **最近的伺服器** 獲取內容,加快載入速度。 3. 動態負載調整 ( Auto Scaling ) - 根據流量自動增加或減少伺服器數量,高流量時能應付,低流量時不浪費資源。 > ex. 例如電商網站在雙 11 期間會臨時增加伺服器,避免網站崩潰。 - 萬一真的掛掉 - 高可用性架構 系統無中斷地執行其功能的能力 - 主從備援架構 (Active-Active, Active-Passive) - Active-Active:多台伺服器 同時在運作,流量分配給多台伺服器,即使一台壞了,其他伺服器仍然能運作。 - Active-Passive:只有 一台主要伺服器在運作,當它掛掉時,備援伺服器才會啟動,確保服務不中斷。 - 災難復原 (Disaster Recovery, DR) & 自動備份 - 異地備援 ( Geo-Redundancy),確保即使某個地區的伺服器故障,其他地區仍能提供服務。 - 自動備份,讓資料能夠快速還原,即使勒索病毒攻擊也不怕。 **除了上述說的三要素,其實資安還有三個目標在** * 可鑑別性(Authenticity) 能辨別使用者的身分,究竟誰才是真的,誰才是假的 :::info ![Authenticity](https://hackmd.io/_uploads/BkjLt-1hJx.jpg) 看得出是誰在模仿誰了 ::: * 可歸責性(Accountability) 要追究責任時,有辦法找到是誰的錯 ::: info ![Accountability](https://hackmd.io/_uploads/BJ8b5bkhyg.png) ::: * 不可否認性(Non-repudiation) 假設章魚哥去郵箱收信時,看到海綿寶寶寄了一封信給他,那他和海綿寶寶都不能否認「有寄信」或「有看到信」 因為海綿寶寶「確實」有去寄信,而章魚哥也「確實」有看到海綿寶寶寄信給他 就像派大星「不能否認」自己是派大星一樣,因為這是既定事實 ::: info ![Non-repudiation](https://hackmd.io/_uploads/SyWv9WJ21x.jpg) ::: > [參考](https://ithelp.ithome.com.tw/m/articles/10292943) #### take out 小整理 : * 資安鐵三角(機密性、完整性和可用性): 資訊安全時必須要同時兼顧這三個目標 * 延伸安全性要素(可鑑別性、不可否認性、存取權限控制): 強調如何透過 Authenticity、Non-repudiation 和 Access Control 來實現資訊安全 --- #### AAA ( 3A ) * 認證 (Authentication) > 可鑑別性 * **你是誰 ?** 識別資訊使用者的身分,可記錄資訊被誰所存取使用,例如:透過密碼或憑證方式驗證使用者身分。 * 你所知道的(Something you know):帳號/密碼 * 你所擁有的(Something you have):IC卡、數位裝置、數位簽章、一次性密碼(OTP) * 你所具備的(Something you are):指紋、虹膜、聲紋、臉部特徵、靜脈脈紋、DNA * 授權 (Authorization) > 存取權限控制 Access Control * **你能做什麼?** 依照實際需求給予實體適當的權限 * 常見的分類方法 * 強制存取控制(Mandatory Access Control) * 作業系統強制執行的存取控制機制 ex. 軍事系統中,未經授權的使用者無法查看機密文件,即使是系統管理員也無法隨意更改權限。 * 自由選定存取控制(Discretionary Access Control) * 根據使用者或進程身份來決定訪問權限的機制 ex. 例如,在 Linux 系統中,檔案擁有者可以使用 chmod 指令來設定其他使用者對該檔案的讀寫權限。 * 以角色為基礎的存取控制(Role-Based Access Control) * 使用者獲取特定角色後,自動擁有該角色的權限。 ex. 例如,在企業系統中,「財務人員」角色可存取財務報表,而「工程師」角色則能查看開發文件。 * 紀錄 (Accounting) > 不可否認性 Non-repudiation * **記錄你做了什麼** 為了收集使用者與系統之間互動的資料,留下軌跡紀錄 * 行為 * 量測(Measuring)、監控(Monitoring)、報告(Reporting)與紀錄檔案 (Logging) * 應用 * 幫助未來進行稽核(Auditing)、計費(Billing)、分析(Analysis)、管理 ::: info 名詞定義跟例子 量測(Measuring) 收集並記錄使用者操作與系統狀態資訊,例如開啟應用程式或修改設定。 監控(Monitoring) 持續追蹤系統狀態,發現異常時通知管理者或觸發警報,例如偵測未授權存取。 報告(Reporting) 整理量測與監控數據,提供管理者決策依據,例如每月系統效能報告。 紀錄檔案(Logging) 將監控與報告的資料記錄下來,含時間戳記與事件描述,例如記錄異常登入嘗試。 稽核(Auditing) 檢查系統使用狀況,發掘潛在風險,例如審查使用者權限變更。 計費(Billing) 追蹤系統使用量計算費用,例如雲端服務的流量計費。 分析(Analysis) 檢視紀錄與數據,優化系統效能,例如分析流量趨勢來提升伺服器配置。 ::: --- ### OWASP ![image](https://hackmd.io/_uploads/SJA6upHiyl.png) Open Web Application Security Project * 開放社群 * 非營利性組織 開放式 Web 應用程式安全性專案 (OWASP) 是致力於 Web 應用程式安全性的國際非營利組織而且他們的所有資料都免費提供在它們網站上,這使得==任何人==都能夠改善自己的 Web 應用程式安全性。他們提供的 **資料** 包括檔案、工具、影片和論壇。 :::success ![magua](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 網頁應用程式,作為現代企業運營的核心,常常是攻擊的目標。 ::: ### 什麼是 OWASP 十大漏洞? OWASP Top 10 是一份定期更新的報告,專門列出 Web 應用程式安全領域中最重要的 10 大風險。這份報告由全球安全專家共同整理,提供對關鍵安全問題的深入分析。OWASP 將其定位為一份「檔案」,並建議企業將其納入安全管理流程,以有效降低或防範各類安全威脅。 ![image](https://hackmd.io/_uploads/SkGWZ4Qoyl.png) --- 1. **A01 Broken Access Control** * What is Broken Access Control 應用程式沒能正確限制使用者的行為,造成未經授權的存取或操作。 導致敏感資訊的洩露、資料的修改 & 刪除,甚至執行超出預期的業務功能。 :::success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 本來不能看的資料卻能看到,本來不能改的東西卻能改,等於是門鎖壞了,誰都能進來亂搞。 ::: * 常見攻擊 * Horizontal privilege escalation 水平提權 ```python -- 修改 user_id 後的數字就可以存取其他使用者的帳戶訊息 https://iamexposed.com/home?id=1234&user_id=1234 https://iamexposed.com/home?id=1234&user_id=5678 ``` * URL Server 根據 Request 內的參數將使用者導向到新的網址。 ::: warning 現今考量網路安全大多不用此方法 ::: 流程 1. Server 收到一個 Request 之後,將其所提供的參數擷取出來 > market.com.tw?tmp=apple 2. Server 將提供的參數放進新的網址中 > market.com.tw?item1=apple apple 被擷取出來放進新的網址中 3. Server 將使用者導向新的網址中 4. 瀏覽器再次發送 Request 時便會多了新的參數,Server 便可以再需要這些資訊的時候從網址中取得 > market.com.tw?item1=apple&tmp=orange 瀏覽器加入了新的參數 tmp > market.com.tw?item1=apple&item2=orange orange 被擷取出來放進新的網址中 > market.com.tw?item1=apple&item2=orange&submit=true 瀏覽器加入了新的參數 submit,代表 Server 可以去處理這些資料了,此時網址裡就有紀錄了 item1, item2 * Cookie 未正確驗證 ```python -- 假設某網站使用 user_role Cookie 來決定使用者身份: Set-Cookie: user_role=guest -- 攻擊者發現系統沒有驗證這個值,於是修改 Cookie: Set-Cookie: user_role=admin ``` * Session / Cookie 瀏覽網站時由網路伺服器建立並由網頁瀏覽器存放在使用者電腦或其他裝置的小字串。 ![image](https://hackmd.io/_uploads/Hy5wDN4ike.png) [圖片參考](https://blog.tienyulin.com/session-cookie/) * **Session** HTTP 是沒有狀態的,所以每個Request都是不相關的。 而 session 通常是用來儲存暫時性的資料。 比如說使用者的登入狀態,因為 HTTP 是沒有狀態性的,對於每個 Request 都視是為新的,所以可以透過 Session 紀錄來比對發送 Request 的是誰 ::: success Session 則是一種讓 Request 變成有狀態的機制 ::: * **Session and Cookie 。** * Cookie 用來儲存少量的特定資料,資料不會存在 Server 端的暫存檔,而是放在 Cookie 裡面並存在使用者端的瀏覽器,當瀏覽器和 Server 互動時會隨著 Request 和 Response 來回傳送 而 session 就會放在 cookie 內來回 server。 ::: success 換句話說,互相餵對方餅乾,餅乾內有各種資訊,而上面還有口水可以知道是誰。 ::: > Session 一個暫存檔,會造成以下問題 : 大部分大流量的網站會部署在多台主機上,若是只暫存在某台主機上,下次使用者被導向到其他台主機會找不到之前的 Session 暫存檔 若每次 Request 都存到 Server 暫存檔會造成 Server 負擔太大 ==Session 所需要紀錄的 **資料** 存到資料庫便可以解決上述問題== ::: info 那不用 session 呢 ? ( 既然它這麼多問題,不要用它不就好了 ) ::: * JWT (JSON Web Token) JWT 是一種無狀態的身份驗證技術,常用於 API 身份驗證,避免 Session 需要存放在伺服器上的問題。 > Token : > Server 會在 Response 時回傳一組加密的Token,以提高安全性。 * 有狀態 ( stateful ) vs 無狀態(stateless) * 有狀態 ( stateful ) : * 需要處理 session 資料的儲存和同步,對伺服器資源有較高需求。 * 無狀態(stateless): * 易擴展,減少伺服器負擔,但要依賴Token方式來管理使用者身份。 * 如何防範 ? ✅ 強制存取控制:在後端檢查每個請求的使用者權限,不依賴前端驗證。 ✅ 最小權限原則(Principle of Least Privilege PoLP):僅授予使用者執行其職責所需的最低權限。 ✅ 避免在 URL 內直接使用 ID 參數: Token 來防止 ID 參數被篡改。 > * 最小權限原則 ( PoLP ) 在下方會提到。 --- 2. **A02 Cryptographic Failures** * What is Cryptographic Failures ? 應用程式未能正確地保護敏感資訊 ( 重點是與加密相關的 ) 導致資料洩漏或可被未授權存取 :::success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 資料沒加密或加密方式太爛,駭客輕鬆解開,密碼、信用卡號等機密資訊直接暴露。 ::: > * 常見攻擊 * 未加密的敏感資料 ```python -- 登入請求時,使用明文傳輸帳號密碼: POST http://example.com/login Content-Type: application/json { "username": "admin", "password": "123456" } ``` > 攻擊者可以透過網路封包監聽工具(像是 Wireshark)拿到明文密碼。 * 硬編碼(Hardcoded)密鑰 ```python import hashlib password = "mypassword" SECRET_KEY = "my_super_secret_key_1234" # ❌ 不安全 ``` > 攻擊者可以透過使用 GitHack 還原 git repository,拿到原始碼。 * 如何防範 ✅ 使用 HTTPS 來加密傳輸資料,避免明文傳輸敏感資訊 ✅ 選擇強加密演算法,對稱式加密 AES 或 非對稱式加密 ECC ✅ 不在程式碼中寫入任何關於金鑰的資訊 > HTTPS (HyperText Transfer Protocol Secure) HTTPS 是 HTTP 的安全版本,它透過 TLS (Transport Layer Security) 或舊的 SSL (Secure Sockets Layer) 來加密網路流量,確保資料在使用者端與伺服器之間傳輸時的機密性與完整性。 ![image](https://hackmd.io/_uploads/r1J30kDiJl.png =600x400) ` meme 解釋` > 來點詳細的 HTTPS 請求建立過程 >![image](https://hackmd.io/_uploads/HyCt_VViye.png) > ::: info > 請問 HTTPS 屬於 對稱式加密 還是 非對稱式價密 ? > ::: > > 1. 使用者送出請求 > * 瀏覽器中輸入一個網址並按下「Enter」,瀏覽器會發送一個請求到伺服器 > (例如 https://example.com)。 > 2. TCP 的三次握手 > * 這個過程的資料都是「明文」,也就是沒有加密。 > * 過程 > 1. 你的電腦: 發送一個 SYN 訊號 告訴伺服器它準備好建立連線。 > 2. 伺服器: 回傳一個 SYN-ACK 訊號 伺服器也準備好了並同意建立連線。 > 3. 你的電腦: 再回傳一個 ACK 訊號, 告訴伺服器,我收到了你的訊號,現在可以開始傳送資料了 >3. HTTPS 加密開始 > * **公鑰和私鑰** > * 公鑰: 公開給任何人,任何人都可以用伺服器的公鑰來加密一段資料。 > * 私鑰: 伺服器自己保管的密鑰,用來解密用公鑰加密的資料。 > * 過程 > * 你的電腦 > 用伺服器的 公鑰 加密一個隨機產生的「密鑰」,然後發送給伺服器。 > * 伺服器 > 伺服器 用自己的 私鑰 來解密「密鑰」。 > * 伺服器和你的電腦都 **擁有相同的「密鑰」** > 用來加密和解密之後所有的資料。 :::spoiler SSL vs TLS 比較表 | 項目 | SSL (Secure Sockets Layer) | TLS (Transport Layer Security) | |--------------|----------------------|----------------------| | **含義** | 安全通訊端層 | 傳輸層安全性 | | **版本歷史** | 已被 TLS 取代,版本有 1.0、2.0、3.0 | 升級版,版本有 1.0、1.1、1.2、1.3 | | **活動** | 所有 SSL 版本皆已淘汰 | TLS 1.2 和 1.3 仍在使用 | | **提醒訊息** | 僅 2 種提醒訊息,且未加密 | 已加密且更多樣化 | | **訊息身分驗證** | 使用 MAC | 使用 HMAC | | **加密套件** | 支援含已知漏洞的舊版演算法 | 使用進階加密演算法 | | **交握** | 交握複雜且較慢 | 交握步驟較少,連線速度較快 | * TLS 1.0 和 1.1 被淘汰是因為它們具有多個已知的安全漏洞、過時的加密算法、不支持現代安全特性,且在性能上也落後。 * TLS 1.2 和 1.3 分別在安全性和性能上進行了大量改進,TLS 1.3 特別強調簡化握手過程、提高隱私保護和強制前向保密性,是目前最推薦使用的版本。 AES: 通過密鑰和明文(待加密的數據)進行運算,產生密文,並且對應的解密過程會使用相同的密鑰還原出明文。 ECC: 使用一對公鑰和私鑰來加密和解密數據,與 RSA 類似。 但由於它基於橢圓曲線數學,能夠在較短的密鑰長度下提供與 RSA 相同甚至更高的安全性。 ::: --- 3. **A03 Injection** * What is Injection? 注入的目的是透過將命令注入現有查詢來洩漏或操縱資料庫中的敏感資訊。 * 目的 * 繞過身份驗證 > Bypassing authentication * 洩漏敏感資訊 > Revealing sensitive information * 損害資料完整性 > Compromise data integrity * 清除資料庫 > Erase database * 遠端執行程式碼 > Remote code execution * **methodology** 方法論 **Information Gathering And Vulnerability Detection 資訊收集和漏洞檢測** :::warning * Collect the information about the web application, server, OS, database, ... > 收集有關 Web 應用程式、伺服器、作業系統、資料庫等相關資訊 * Identify vulnerabilities > 識別漏洞 * Evaluate input fields > 評估要輸入的類型 ::: * SQL Injection (SQLi) 技術解析 SQL 注入(SQL Injection, SQLi)是一種**透過操作 SQL 語法**來入侵資料庫的攻擊方式,攻擊者利用應用程式未妥善處理的**使用者輸入**來執行惡意 SQL 語句,進而**竊取、篡改、刪除資料**,甚至取得伺服器控制權限。 --- 📌 常見 SQLi 技術分類 ![image](https://hackmd.io/_uploads/Hyl2OrJhJg.png) | **技術類型** | **描述** | |-------------|---------| | **Union-based** | 利用 `UNION SELECT` 拼接查詢結果,竊取資料 | | **Error-based** | 透過回應錯誤資訊來獲取資料庫資訊 | | **Boolean-based** | 透過 `AND 1=1`、`AND 1=2` 測試回應變化 | | **Time-based** | 透過 `SLEEP(5)` 測試 SQL 執行時間 | | **Stacked Queries** | 執行多個 SQL 指令(`; DROP TABLE users;`) | | **Out-of-band (OOB)** | 透過 DNS 或 HTTP 傳遞資料到攻擊者伺服器 | :::info * Command injection 向程式傳入不安全參數,試圖觸發伺服器端作業系統Shell層命令,如 ls、cat等 正常HTML ```=html <html> <head> <meta charset="UTF-8" /> </head> <body> <form action="test.php" method="post"> <label for="Name">請輸入檔案名稱</label><br> <input type="text" name="Name" id="Name"> <input type="submit"> </form> </body> </html> ``` 在name部分打上 ```=php <?php $command = $_POST["Name"]; echo shell_exec("cat $command"); ?> ``` * XSS (Cross-Site Scripting) 留言板,當其他使用者訪問該頁面,就會竊取使用者的敏感信息 ::: * 如何防範 ✅ 使用參數化查詢(Prepared Statements) 避免 SQL 注入 ✅ 嚴格過濾與轉義使用者輸入 ✅ 限制系統指令執行權限,避免命令注入風險 > 參數化查詢: > 指透過程式設計與資料庫進行查詢資料時,當要查詢的特定欄位數值有變化的時後應透過參數的方式賦值 > 。使用佔位符 (`%s` 或 `?`) 讓資料與 SQL 指令分離 > 。避免特殊字符(如 `'`)影響 SQL 查詢邏輯 --- 4. **A04 Insecure Design** * What is Insecure Design 不安全的設計包括一系列可以嵌入應用程式架構中的弱點。 它側重于應用程式的設計,而不是其實作。 :::success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 系統設計時就沒考慮安全,像是沒有密碼強度限制、沒有多重驗證,等於建房子沒裝門鎖。 ::: * example * 沒有身份驗證機制 ```python @app.route("/admin") def admin_panel(): return "Welcome, Admin!" ``` > 若 `/admin` 沒有驗證機制,攻擊者可直接存取管理後台。 * 如何防範 ✅ 在設計階段就要考量安全,( 雙重驗證 ) ✅ 採用零信任架構,確保所有請求都經過適當驗證 > 雙重驗證(縮寫為 2FA) > 一個驗證過程,要求透過兩個不同的驗證因素來確立身分。 > 簡而言之,這意味著使用者必須先以兩種不同的方式證明其身分,然後才會被授予存取權限。2FA 是多重要素驗證的一種形式。 > 零信任架構(Zero Trust Architecture, ZTA) > > 🌟 核心理念 > 🔹 **永不信任,持續驗證**(Never Trust, Always Verify) > 🔹 不假設內部網路安全,所有存取皆需驗證 > > 🔑 核心原則 > - **最小權限**:僅允許必要的存取權限 > - **持續驗證**:每次存取皆需驗證身份與設備 > - **設備監控**:監控異常行為與安全風險 > - **預設拒絕**:所有存取預設拒絕,需驗證後授權 > > 🔄 零信任 vs 傳統安全 > > | | **傳統模式** | **零信任** | > |---|---|---| > | **信任機制** | 完全信任內網 | 無條件驗證 | > | **存取控制** | 依網路位置 | 依身份、設備、行為分析 | > | **攻擊防禦** | 防火牆 | 持續驗證 | > | **驗證方式** | 單次登入後信任 | 每次存取皆驗證 | --- 5. **A05 Security Misconfiguration** > 以前的 A04 XXE 也提下 * What is Security Misconfiguration 通常是使用預設設定或顯示過多詳細錯誤的結果。例如,一個應用程式可能在向使用者顯示錯誤時描述得過於詳盡,以致於揭示出應用程式中的漏洞。 ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 設定沒調好,該封的沒封,該隱藏的沒隱藏,像是開發環境資訊外洩、小黃書、預設密碼沒改,讓駭客撿便宜。 ::: * example * 忘記關除錯模式 ```python app.run(debug=True) # ❌ 運行 Flask 應用程式時開啟 Debug 模式 ``` > Debug 模式暴露錯誤日誌,讓攻擊者獲取系統資訊。 > Flask: >一個使用 Python 編寫的輕量級 Web 應用框架。 * XXE ( XML External Entity Injection ) > 介紹 E 之前,先介紹 XXL * What is XXL ? XML 是一個純文件型態的檔案格式,目的就是將 data 以簡單的格式儲存,方便 data 在不同平台間傳遞、儲存丶共享等。 * What is XXE ? XXE Injection ,全名 XML External Entity Injection , XML 外部實體注入。會發生 E 主要是因為 parser 沒有禁止使用外部實體,意思是我們可以自行定義-個實體名稱,並在實體內容中定義要伺服器做的行為,因此注入點通常是可以輸入 XML 的位置。 * 假設一個簡單的網站頁面 ![image](https://hackmd.io/_uploads/BJwhU7knye.png) 嘗試將 Body 做以下變化 ![image](https://hackmd.io/_uploads/HyoZPXJ21l.png) 自己額外宣告一個實體 xxe ,目的是輸出本資料夾中的密碼檔,並將原本丟出暱稱的位更改成實體名稱,沒有禁止解析外部實體的狀況下就會獲得: ![image](https://hackmd.io/_uploads/rygZdQJ3ye.png) 洩露 UID 和 GID 訊息會給攻擊者知道 * 系統中存在哪些使用者和群組。 * 哪些服務正在運行(例如 www-data 表示可能有 Web 伺服器)。 * 那根 Security Misconfiguration 有什麼關係? * 以前的預設配置問題 XML 解析庫以前都是預設啟用外部實體處理功能的。 * 如何防範 ✅ 避免使用預設模式,防止系統資訊 ( Debug mode ) ✅ 移除預設帳號與密碼,強制使用強密碼策略 ✅ 定期審查與更新安全設定 --- 6. **A06 Vulnerable and Outdated Components** ? * What is Vulnerable and Outdated Components 許多現代 Web 開發人員在其 Web 應用程式中函式庫和框架之類的元件。這些元件是可協助開發人員避免多餘工作並提供所需功能的軟體;常見範例包括 React 等前端框架以及用於新增分享圖示或 A/B 測試的小型庫。 ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 用了舊版的程式庫、外掛,裡面漏洞一堆,駭客可以利用這些漏洞攻擊系統。 ::: > A/B 測試是一種 **實驗方法**,用來比較兩個不同版本的網頁、按鈕、標題等,找出 **哪個版本效果更好**。 > **假設情境**: 我們想知道 **紅色按鈕** 和 **綠色按鈕** 哪個更能提升點擊率(CTR)。 > - **A 版本**:紅色「立即購買」按鈕 > - **B 版本**:綠色「立即購買」按鈕 > - **結果**:統計哪個按鈕點擊次數較多,決定最終版本。 * example * 使用過時的開源資料庫 ```python { "dependencies": { "express": "3.0.0" } } ``` > 過時的 Express 版本(Express 3.0.0)存在漏洞,攻擊者可透過公開的 CVE(Common Vulnerabilities and Exposures)來發動攻擊。 > CVE: > 公共漏洞和暴露又稱通用漏洞披露、常見漏洞與披露,是一個與資訊安全有關的資料庫,收集各種資安弱點及漏洞並給予編號以便於公眾查閱。此資料庫現由美國非營利組織 MITRE 所屬的 National Cybersecurity FFRDC 所營運維護 。 * 如何防範 ✅ 定期更新 所有依賴的函式庫與框架 ( 自動化: mend.io 工具: osv scanner 、 自己參考 docker hub 之類的製作一份 SBOM ) ✅ 移除未使用的依賴與元件,減少被攻擊機會 :::info mend.io: 自動化平台,能夠檢測和管理開源依賴。 osv scanner (Open Source Vulnerability Scanner): 掃描應用程式中使用的開源組件,提供報告。 SBOM (Software Bill of Materials) : 軟體組成和其所依賴的開源組件的清單 docker hub : 知道現在用的映像有甚麼問題 ::: 7. **A07 Identification and Authentication Failures** * What is Identification and Authentication Failures? 攻擊者可以透過驗證(登入)系統中的漏洞存取使用者帳戶,甚至可以使用管理員帳戶來入侵整個系統。 ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 線上付款的訂單要領貨的時候不小心拿成別人的證件。 ::: * example * 竊取 Session ( Session Hijacking ) ![image](https://hackmd.io/_uploads/BklSPSJ3kg.png) > [參考](https://geekflare.com/es/session-hijacking-prevention/) > 偷取使用者身份 * 竊取 session id * 釣魚網站引誘使用者點擊連結 * session id 儲存在 cookie,利用 XSS 攻擊 * 破解 session id * session id 比較簡單或者可以預測 * 網站自己跳出題示 * 顯示 “密碼錯誤” 或 “無此帳號” 時,這些錯誤訊息暴露了登入資訊的部分 * 如何防範? ✅ 隱藏使用者 session 或是 限制 session 時間 ✅ 加入多因子驗證機制(MFA)指紋、臉部辨識、OTP(一次性密碼)… --- 8. **A08 Software and Data Integrity Failures** * What is Software and Data Integrity Failures? 許多應用程式的功能依賴於第三方外掛程式和其他外部來源,但卻無法始終確保來自這些來源的更新和資料沒有被篡改並且來自預期位置。 ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 來源都不知道,萬一是從我家廁所來的怎辦 ? ::: > 下載或更新的東西沒驗證來源,結果駭客偷偷塞惡意程式進去,使用者一更新就中招。 * example * Supply Chain Attack ```python { "dependencies": { "left-pad": "*" // ❌ 可能下載惡意版本 } } ``` `package.json` vs `package-lock.json` 對比 在軟體開發中,**`package.json`** 和 **`package-lock.json`** 都用於管理 Node.js 專案的相依性,但兩者在安全性方面的作用不同。 | 比較項目 | `package.json` | `package-lock.json` | |----------------------|------------------------------------------------------|------------------------------------------------------| | **用途** | 定義專案所需的相依套件及版本範圍 | 確保每次安裝相同的套件版本,避免不受控的變更 | | **版本管理** | 允許範圍內的版本變動 (`^`, `~`, `*` 等) | **精確鎖定** 下載的套件版本,防止惡意更新 | | **安全性影響** | 可能下載最新但未驗證的版本,增加供應鏈攻擊風險 | **減少** 下載未經驗證版本的風險,確保團隊、CI/CD 環境一致 | | **影響 `npm install`** | 可能因為版本範圍變動下載不同版本 | 強制安裝 `package-lock.json` 中的確切版本,減少意外變更 | > 供應鏈攻擊 > ex. > 駭客透過華碩的軟體更新伺服器,於2019年6月到11月期間,發送惡意軟體,在使用者的電腦中植入後門程式,影響近百萬台電腦。 > ![image](https://hackmd.io/_uploads/H1lt8By31l.png) > [參考](https://www.bnext.com.tw/article/52731/asus-hacker-supplychainattack?) * 如何預防 ? ✅ 使用官方來源與數字簽章來驗證依賴項完整性 ✅ 監控供應鏈依賴,使用 SCA 工具檢測惡意套件 > SCA ( Software Composition Analysis ) > 一種用來檢測和管理軟體依賴庫和開源組件中安全漏洞的工具或方法。 --- 9. **A09 Security Logging and Monitoring Failures** * What is Security Logging and Monitoring Failures ? Web 應用程式沒有採取足夠的措施來偵測資料外洩。 漏洞發生後,平均發現時間約為 200 天。這使攻擊者有大量時間在開發人員沒有任何回應之前造成破壞。 ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 沒記錄可疑行為,駭客都已經在系統裡亂搞很久了,管理員還在打 GAME。 ::: * example 1. 正常情況: * 應用程式應該要有監控機制,當異常存取或大量資料被下載時,能夠發出警報。 * 使用 Splunk 、 ELK 、 Graylog ... 等等 > ELK Stack vs Graylog vs Splunk > | 特性 | ELK Stack | Graylog | Splunk | |-----------|----------|---------|--------| | **開源/商業** | 開源 | 開源 | 商業 (有免費版) | | **易用性** | 學習曲線較陡峭 | 介面直觀,易上手 | 易用,企業級支援 | | **擴充性** | 高度可定製 | 支援多種外掛 | 眾多外掛與集成 | | **即時性** | 需調校效能 | 即時性較強 | 即時分析能力強 | | **社群支援** | 大型社群,活躍 | 社群較小 | 官方支援完善 | | **維護成本** | 需技術能力 | 可能需要額外維護 | 需支付許可證與維護費 | | **適合對象** | 具技術能力的團隊 | 需要簡單易用解決方案的團隊 | 企業級使用者 | | **費用** | 免費 | 免費 | 高 (需購買授權) | 2. 問題 * 缺乏日誌記錄 ```python try: user.login(username, password) except Exception: pass # ❌ 未記錄登入錯誤 ``` > 沒有適當的日誌記錄,管理員無法發現暴力破解攻擊 OR 異常行為。 * 如何防範? ✅ 監控供應鏈依賴,使用 SCA 工具檢測惡意套件 > SCA ( Software composition analysis ) : > 針對軟體的分析,偵測是否有使用開放程式碼 --- 10. A10: Server-Side Request Forgery (SSRF) * What is Server-Side Request Forgery? 伺服器端請求偽造(SSRF)攻擊是指攻擊者向伺服器發送惡意請求,導致伺服器去擷取原本應該被保護的內部資源,進而泄露機密資訊或觸發內部攻擊。 ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 駭客利用伺服器去幫忙發請求,可能可以偷看內部系統資料,甚至發起攻擊。 ::: * example : 1. 正常情況 : * 訪問 **www.example.com/home**,伺服器回應對應的網頁給你。 2. SSRF 攻擊 * 一般情況下,企業內部會有 server 維護各種服務,而外部網路無法連線到企業內部的網路 * 攻擊者先蒐集各種資訊,例如企業內部網路會使用的 API ,最後在沒有取得企業授權時,利用 server 上的漏洞,以授權者的身分發送 request 給內網 ![image](https://hackmd.io/_uploads/HyY80Xy3yg.png) [參考資料](https://ithelp.ithome.com.tw/articles/10274841) * 攻擊者發送特製請求 ```pgsql www.example.com/fetch?url=http://internal-system/admin ``` * 這請求會讓伺服器去訪問 `http://internal-system/admin`,然後伺服器把內部**機密資料**當作回應送回攻擊者,即使攻擊者**本來沒權限直**接訪問這個內部網址。 * 如何防範? ✅ 網路層防禦 > - **限制內部請求範圍**: > 防火牆規則 : 拒絕全部的外部流量,只開放必要的流量 > 切割網路:將遠端功能切割成不同的子網路,降低 SSRF 的影響,限制不同網段之間的流量 > - **設定 DNS 黑名單**: 阻擋伺服器對內部域名解析的請求,避免內部服務被外部請求利用。 ✅ 應用層防禦 > - **URL 檢查和過濾**: 嚴格檢查和過濾來自客戶端的 URL 請求,僅允許請求公開的、經過驗證的資源,並避免讓使用者傳遞內部 URL。 > - **白名單機制**: 只允許特定的可信 URL 發送請求,其他非白名單中的 URL 都應被過濾和拒絕。 --- ### Mitre ATT&CK ![image](https://hackmd.io/_uploads/r17aF3rs1g.png) [ MITRE ATT&CK 參考](https://attack.mitre.org/) 框架介紹 * MITRE - 美國的非營利組織 - 專注於國家安全、網路安全和技術研究 - 提出 ATT&CK 框架 - ATT&CK(Adversarial Tactics, Techniques, and Common Knowledge) - 對抗策略、技巧和常識 - 開放式知識庫 - MITRE Corporation 於 2013 年推出,目前已成為全球網路安全領域的重要參考框架 - 記錄了攻擊者在網路環境中的真實行為、攻擊策略與技術 - 幫助 **分析攻擊模式** 、提升威脅檢測能力,並制定有效的防禦策略 ::: success ![image](https://hackmd.io/_uploads/Sk-Iqu5syg.png) [參考連結](https://www.youtube.com/watch?v=Yxv1suJYMI8) ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 這張圖片裡面遭受了 **幾種** 攻擊和 **攻擊叫什麽** ? ::: - 為什麼要用它呢? - 組織有共同語言與架構方便溝通 - 不同的安全團隊、企業、組織之間可能會用不同的方式來描述攻擊手法,導致溝通困難。 - 一家公司稱某種攻擊為「遠端程式碼執行」,另一家公司稱其為「命令注入」,可能會造成誤解。 - ==各單位對於攻擊步驟的定義不盡相同== - 使紅藍方能夠 **標準化溝通**、**有效分享威脅情報**、**增强資安防禦與應變能力**。 - 架構 * MITRE ATT&CK 框架由 **三個主要矩陣(matrices)** 組成,涵蓋不同的運行環境: | 矩陣 | 適用範圍 | |------|---------| | **Enterprise** | 適用於企業環境(Windows、Linux、macOS、Cloud、SaaS、Containers 等) | | **Mobile** | 適用於 iOS 和 Android 手機攻擊技術 | | **ICS(工業控制系統)** | 適用於 SCADA、PLC 等工控系統的攻擊行為 | * 矩陣的核心組成 * MITRE ATT&CK 框架主要包含 **策略(Tactics)** → **技術(Techniques)與子技術(Sub-Techniques)** → **具體實作過程(Procedures)** 這些組成部分用來描述攻擊者的行為。 ![image](https://hackmd.io/_uploads/rkS9y_Rjyg.png) 來源:https://feifei.tw/attck-intro/ --- 1. 策略 策略簡單點說就是攻擊者在不同階段的目標 ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 例如,我們想看 blueT 洗澡我們應該采取什麽策略? ![blueT](https://hackmd.io/_uploads/BkYWhhrjyl.png) ` 看看他,多帥 <3 ` ::: | 策略 | 攻擊者目標 | 例子 | |---|---|---| | 1. 偵察 | 收集可用來規劃未來行動的資訊 | <font color="#55b685"> 盡可能找關於 BT 的資料 </font> | | 2. 資源開發 | 建立可用於支援營運的資源 | <font color="#55b685"> 開發可以遠端控制 BT 家鏡頭的軟體 </font> | | 3. 初期存取 | 進入您的網路 | <font color="#55b685"> 透過社交軟體讓 BT 安裝我們開發好的惡意軟體 </font> | | 4. 執行 | 執行惡意程式碼 | <font color="#55b685"> 透過滲透 BT 手機或電腦的惡意程式開啟前或後置鏡頭 </font> | | 5. 持續性 | 維持其立足點 | <font color="#55b685"> 假裝成「YT」或「Chrome」,讓偷拍軟體看起來像正常軟體 </font> | | 6. 權限提升 | 獲得更高層級的權限 | <font color="#55b685"> 利用系統漏洞獲取 BT 手機或電腦的 root 權限,完全控制攝影功能 </font> | | 7. 防禦迴避 | 免遭到偵測 | <font color="#55b685"> 利用加密技術,防止偷拍影像被 BT 刪除或追蹤 </font> | | 8. 憑證存取 | 取得帳戶名稱和密碼 | <font color="#55b685"> 透過鍵盤側錄程式(Keylogger)記錄 BT 的社交媒體帳密,把照片發在 moli 群 </font> | | 9. 探索 | 深入了解您的環境 | <font color="#55b685"> 進入 BT 的電腦或手機,查找有沒有裸露照片或影片 </font> | | 10. 橫向移動 | 在您的環境中移動 | <font color="#55b685"> 透過 BT 的筆電入侵家庭 WiFi,然後控制家中所有智能鏡頭多角度偷拍 </font> | | 11. 收集 | 收集與其目標相關的資料 | <font color="#55b685"> 透過遠端操控智能鏡頭,執行居家網路攝影機,錄下洗澡影片。</font> | | 12. 命令與控制 | 與受感染的系統通訊以進行控制 | <font color="#55b685"> 建立 「我 - BT 的電腦或手機 - 鏡頭 」或「我 - 鏡頭 」能夠安全傳輸資料的通道 </font> | | 13. 外洩 | 竊取資料 | <font color="#55b685"> 透過 P2P 網路或 Telegram 傳輸偷拍內容給自己 </font> | 14. 影響 | 整個攻擊鏈的最後一步希望達成的最終效果 | <font color="#55b685"> 以 BT 隱私影片進行勒索,要求支付比特幣贖金 </font> | ::: info * 他實際的樣子 which mean 這教材真的是 濃縮 再 濃縮 ![image](https://hackmd.io/_uploads/r1SuRO5jye.png) ::: 2. 技術(Techniques) 技術描述了攻擊者如何實現每個戰術。例如: | 技術 ID | 名稱 | 策略 | |---------|------------------------------|----------------------| | **T1595** | Active Scanning(主動掃描) | 偵察(Reconnaissance) | | **T1587** | Develop Capabilities (培養能力) | 資源開發 (Resource Development) | | **T1566** | Phishing(網路釣魚) | 初始存取(Initial Access) | | **T1190** | Exploit Public-Facing Application (利用面向公眾的應用程式)| 初期存取 (Initial Access)| | **T1204** | User Execution (使用者執行)| 執行(Execution)| | **T1059** | Command and Scripting Interpreter(指令與腳本) | 執行(Execution) | ::: info ![image](https://hackmd.io/_uploads/Bk-ZJFqjyl.png) ![image](https://hackmd.io/_uploads/ryqMJtcoJg.png) ![image](https://hackmd.io/_uploads/ryISJFcjJe.png) ![image](https://hackmd.io/_uploads/HyMdyYcsyx.png) ::: 2.1 子技術(Sub-techniques) 技術可能有更細的子技術。例如: | 技術 | 子技術 | |------|--------------------------------------------------| | **T1566 - Phishing(網路釣魚)** | **T1566.001** - Spearphishing Attachment(帶附件的釣魚郵件) | | | **T1566.002** - Spearphishing Link(帶惡意連結的釣魚郵件) | | | **T1566.003** - Spearphishing via Service(透過第三方服務的釣魚) | 3. Procedures(攻擊過程) - 攻擊者實際動手做事情的那一套具體步驟,簡單來說,就是「怎麼做」的細節。這裡面會包含**用什麼工具、下什麼命令、或者使用哪種腳本**來達成某項攻擊技術。 ::: success ![image](https://hackmd.io/_uploads/Sk-Iqu5syg.png) ![image](https://hackmd.io/_uploads/SJereY9s1g.png) ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 挖洞攻擊 => T1XXX.00X 位於 策略 12 的 某項技術內 用了 “鏟子”。 天梯攻擊 => T10XX.01X 位於 策略 9 的 某項技術內 “梯子” 。 ::: ## 攻擊者角度看侵入性檢測 > 深 ### 什麼是侵入型檢測? 侵入型檢測(Intrusion-based Testing)是一種主動測試系統安全性的方式,透過模擬真實攻擊者的行為來發掘系統的漏洞。這與傳統的防禦機制不同,防禦側主要是監測、偵測和防範攻擊,而侵入型檢測則是站在「攻擊者」的角度,主動出擊來找問題。 這種方法可以進一步細分成 * 弱點掃描(Vulnerability Scanning) * 滲透測試(Penetration Testing) * 紅隊(Red Team)攻擊模擬 而這些往往會參考 MITRE ATT&CK 框架來規劃攻擊策略。 ### Mitre ATT&CK Enterprises 14 項攻擊策略 ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 目標看BT洗澡 ::: 1. Reconnaissance 偵查 ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 盡可能找關於 BT 的資料 ::: - 攻擊者在一開始試著收集可用來規劃未來行動的資訊 - 利用收集的資訊規劃攻擊行動 * 常見手法: - T1595 - Active Scanning 主動掃描 👉 用 Nmap 掃描伺服器,找開放的漏洞。 - Tools 講解 - Nmap(Network Mapper) ![image](https://hackmd.io/_uploads/SyLuZFqike.png) - 主要用途:掃描是否有開放的連接埠 > 開始 Lab 前請打開課前讓你們準備的 HTB 搜尋 Linkvortex 靶機 :::danger 所有的 Lab 請在靶機上測試 !!很重要 ::: :::success Nmap 的小小 Lab: 對一個靶機的 ip 進行掃描 ``` nmap -sSCV -Pn 10.10.11.47 ``` `-sS`(隱藏 SYN 掃描) 使用 TCP SYN 掃描,發送 SYN 封包給目標但不建立完整的 TCP 連線(類似半開放掃描),比較隱匿且有效率。 `-sC`(使用內建腳本掃描) 這會執行 Nmap 預設的 NSE(Nmap Scripting Engine)腳本,用來探測常見漏洞、獲取額外資訊(如 HTTP banner、SSH 版本等)。 相當於 --script=default,執行預設的安全測試腳本。 `-sV`(服務版本探測) 掃描目標開放的服務版本,嘗試辨別特定的軟體名稱和版本號,例如: ``` 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.29 ((Ubuntu)) ``` `-Pn`(不進行 Ping 探測) 略過 ICMP(Ping)探測,直接掃描目標。 預設情況下,Nmap 會先 Ping 目標主機,如果沒回應則認為主機關閉; 使用 -Pn,即使主機不回應 Ping,仍然嘗試掃描開放的端口。 適用於防火牆封鎖 ICMP 回應的環境。 ![r1DGJEEj1g](https://hackmd.io/_uploads/HkcgLK5j1x.png) **<font color="eda35e">使用場景:IP 、 domain...</font>** **<font color="eda35e">可以獲得什麼:開啟的 port 服務</font>** ::: - ffuf - 是一款高效的 Web Fuzzer - 用於目錄爆破、子域名爆破 :::success ffuf 的小小 lab: 進行子域名爆破 ``` ffuf -u http://linkvortex.htb/ -w /home/kjie/Downloads/main.txt -H "Host:FUZZ.linkvortex.htb" -mc 200 ``` - `-u http://linkvortex.htb/`:指定目標 URL - `-w '/home/kjie/Downloads/main.txt'`:使用字典,依序替換 URL 中的 FUZZ - `-H "Host:FUZZ.linkvortex.htb"`:替換 HTTP request header 中的 Host 部分,進行子域名測試 - `-mc 200`:僅回應 HTTP 狀態碼 200 的結果 ![image](https://hackmd.io/_uploads/rkLNn3LsJx.png) ::: --- 2. Resource Development 資源開發 ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 開發可以遠端控制 BT 家 鏡頭的軟體 ::: - 攻擊者準備自己的工具與基礎設施,如釣魚網站、惡意軟體、假冒帳戶等。 - 常見手法: - T1587 - Develop Capabilities 培養能力 👉 攻擊者建立自己的攻擊工具。 - Malware 惡意軟體 - 試圖破壞安全性或試圖改變正常的程序之軟體 - 利用軟體去禁用或損壞系統 - 這些軟體被設計用於盜取資訊、破壞電腦系統、操縱電腦等等。 - 常見惡意軟體 - 病毒與蠕蟲(Viruses & Worms) - 這類惡意軟體會自我複製,透過各種方式感染其他系統或檔案。 - 病毒(Viruses):需要宿主檔案才能運行,透過開啟感染的檔案來傳播。 - 常見例子:Melissa 病毒(透過電子郵件附件傳播)、Michelangelo 病毒(特定日期激活,刪除硬碟資料) - 蠕蟲(Worms):能獨立運行,通常透過網路自動傳播,不需要宿主檔案。 - 常見例子:SQL Slammer(影響全球網路,癱瘓銀行與機場系統)、Blaster Worm(Windows 漏洞攻擊,導致電腦頻繁重新開機) - 木馬程式(Trojan Horse) - 這類惡意軟體通常偽裝成合法軟體,一旦執行後,會在系統中執行惡意行為。 - 常見例子: - Zeus 木馬(竊取銀行帳戶登入資訊,影響全球金融系統)、Emotet(最著名的銀行木馬,透過垃圾郵件傳播)、Agent Tesla(竊取密碼與鍵盤記錄,專門攻擊企業) - 後門程式(Backdoor & Trap Door) - 這類程式允許攻擊者繞過系統的正常驗證機制,秘密存取系統或網路。 - 常見例子: - Poison Ivy(遠端控制木馬,讓攻擊者完全掌控電腦)、DarkComet(用於監視與控制受害者的系統)、Back Orifice(早期的遠端控制木馬,專門攻擊 Windows 系統) - 間諜軟體(Spyware) - 這類軟體會在使用者不知情的情況下蒐集個人資訊,如鍵盤記錄、螢幕截圖等。 - 常見例子: - FinSpy(FinFisher)(政府機構使用的監控軟體,收集個人隱私資訊)、Pegasus(最強大的間諜軟體,攻擊 iPhone 和 Android 手機)、Xnspy(商業間諜軟體,專門監控手機活動) - 勒索軟體(Ransomware) - 這類惡意軟體會加密受害者的檔案,要求支付贖金來解鎖。 - 常見例子: - WannaCry(影響全球 150 多個國家,導致醫院與企業停擺)、Locky(透過電子郵件傳播,專門加密企業檔案)、REvil(Sodinokibi)(針對大型企業勒索數百萬美元) - 廣告軟體(Adware) - 這類軟體會強制顯示廣告,可能會降低系統效能,甚至暗中安裝更多惡意軟體。 - 常見例子: - Fireball(中國開發的惡意廣告軟體,影響全球 2.5 億台電腦)、Gator(早期的廣告軟體,蒐集使用者瀏覽資料並強制推送廣告)、Superfish(聯想筆電預裝的廣告軟體,影響使用者隱私與安全) --- 3. Initial Access 初期存取 ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 透過社交軟體 ( IG 、 Telegram 、 FB ) 讓 BT 安裝我們開發好的惡意軟體。 ::: - 駭客在發動攻擊之前,摸索入侵途徑的方法 - 藉由第一次進入,建立一個方便進出的方法,讓攻擊者能方便未來繼續進入 * 常見手法: - T1190 - Exploit Public-Facing Application 👉 攻擊公開的 Web 服務漏洞,如 SQL Injection、Command Injection。 - 根據已知系統弱點 - 針對對外公開之軟體與設備進行弱掃 - 大多為軟體漏洞及錯誤、臨時故障或伺服器設定錯誤 - 通常是針對 OWASP Top 10 漏洞 - 實際例子 - **Command Injection** - Ghost 任意檔案讀取漏洞 (CVE-2023-40028) - 此腳本利用 Ghost CMS 中的漏洞從伺服器讀取任意檔案 ![S1qpw7wq1e](https://hackmd.io/_uploads/BJI-48Hskg.png) - Tools 講解 - sqlmap 一款開源的自動化 SQL 注入工具,用於測試 Web 應用程式是否存在 SQL 注入漏洞。它能夠自動偵測並利用 SQL 注入,支援多種資料庫管理系統(如 MySQL、PostgreSQL、MSSQL 等),還可用來查看資料庫結構、擷取資料,甚至嘗試獲取資料庫的權限控制資訊 - 主要用途:自動化 SQL 注入測試、查看資料庫。 自動化 SQL 注入測試: ``` sudo sqlmap -u '<url>' ``` sqlmap 會自動執行內建用來測試 sql injection 的腳本 ![螢幕擷取畫面 2025-03-09 212848](https://hackmd.io/_uploads/BkZDb7jikx.png) 查看資料庫: 如果能取得登入帳密,可以透過 sqlmap 查看整個資料庫 ``` sudo sqlmap -u '<url>' --cookie='<cookie value>' <參數> ``` ![螢幕擷取畫面 2025-03-03 200814](https://hackmd.io/_uploads/SkEzhGmj1g.png) ![螢幕擷取畫面 2025-03-03 201949](https://hackmd.io/_uploads/SJE9AfQs1e.png) ![螢幕擷取畫面 2025-03-03 201455](https://hackmd.io/_uploads/Hk0KTfXikl.png) ![螢幕擷取畫面 2025-03-03 201812](https://hackmd.io/_uploads/rJq8RM7oke.png) ![螢幕擷取畫面 2025-03-03 202429](https://hackmd.io/_uploads/B149kX7iJx.png) ![螢幕擷取畫面 2025-03-03 202459](https://hackmd.io/_uploads/SJ3jkQmj1e.png) ![螢幕擷取畫面 2025-03-03 203138](https://hackmd.io/_uploads/Hy0FWm7j1e.png) ![螢幕擷取畫面 2025-03-03 203243](https://hackmd.io/_uploads/ryx9-XXokg.png) 4. Execution 執行 ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 趁 BT 去廁所,把惡意程式偷偷置入到 BT 手幾,以此開啟前或後置鏡頭。 ::: - 攻擊者執行惡意程式來控制系統。 * 常見手法: - T1204 - User Execution - 利用社交工程攻擊 - 欺騙使用者執行惡意程式碼或指令,進而取得對系統的訪問權限。 - 進一步展開攻擊行動,例如安裝後門、下載更多惡意工具、提升權限等。 - 根據執行類型可再分成 - 惡意連結 (Malicious Link) - 攻擊者利用惡意連結誘導使用者執行應用程式或下載惡意軟體。 - HTML Smuggling 攻擊(利用瀏覽器下載惡意執行檔) ::: info 真實案例: 2021 年,ZLoader 惡意軟體透過 HTML Smuggling 技術,嵌入惡意 JavaScript 於釣魚郵件,繞過電子郵件防護,下載惡意程式以竊取銀行憑證。 手法:郵件內的 HTML 附件內含 Base64 加密的 JavaScript 當受害者開啟 HTML 檔時,JavaScript 會解碼並在本機自動組裝 ZLoader 執行檔,並執行 ✅ 成功下載 ZLoader 之後,惡意軟體開始執行! 對策: 限制 HTML 附件執行權限 保持作業系統 & 防毒軟體更新 不要開啟陌生郵件附件或連結 ::: - 惡意檔案(Malicious File) - 受社交工程、網路釣魚影響,使用者收到惡意檔案,有可能是檔案、可執行檔 - 看起來無害,但其實危險性極高 - 甚至有些會利用密碼保護檔案,並提供密碼供解鎖,讓它看起來很正常 - 惡意映像檔(Malicious Image) - Docker 的 Container - 運行時設置惡意軟體 - image 會上傳至公共的網站 - 會看起來很無害,使用者不會意識到有惡意問題 :::info ![docker](https://hackmd.io/_uploads/rkvtpmooyl.png) 開放源始碼的軟體容器平台,將軟體打包成貨櫃/軟體的貨運服務 簡單說明:Docker 就像一艘大貨櫃船,它可以將各種貨物(應用程式及其相關環境)打包成一個個貨櫃(Container, 容器),並在任何支援 Docker 的港口(系統)上卸貨。這種技術可以避免港口規格不同而產生的各種問題,並且讓船長(開發者)可以專心開船送貨(應用程式本身的開發)。 簡單點講docker就像雅房裡面,每個房間只有床和一些基本家具,沒有自己專用廚房和浴室設備,通常會由多個房間共用一套廚房和衛浴。每個 Container 都有自己的應用程式和相關環境,但作業系統等基礎設施是由所有 Container 共享的 ::: --- 5. Persistence 持續性 ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 假裝成「YT」或「Chrome」,讓偷拍軟體看起來像正常軟體,這樣就不會被發現了。 ::: - 確保自己能夠反覆進入受害電腦 - 保持使用者的立足點 - 常見手法: - T1098 - Account Manipulation 帳戶操作 - 攻擊者利用合法的系統帳戶,篡改權限、新增隱藏帳戶,確保自己能夠持續存取系統。 - 攻擊方式: - 竄改 AD(Active Directory)帳戶權限,提升自己的權限 - 修改密碼策略,防止受害者移除惡意帳戶 - 增加 SSH 密鑰,讓攻擊者可以遠端存取系統 - T1136 - Create Account 建立新帳戶 - 攻擊者在受害系統內偷偷新增新帳戶,確保即使主要攻擊途徑被封鎖,他仍然能透過這些後門帳戶存取系統。 - T1037 - Boot or Logon Initialization Scripts 開機或登入初始化腳本 - 攻擊者利用 Windows 開機腳本(Group Policy、Startup Folder)或 Linux 啟動腳本(.bashrc、cronjobs),讓惡意程式在系統重啟後仍能自動執行。 ![image](https://hackmd.io/_uploads/r1aLvbxh1x.png) --- 6. Privilege Escalation 權限提升 ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 利用系統漏洞獲取 BT 手機的 root 權限,完全控制攝影功能 。 ::: - 實現的技術、方法常與 Persistence 重疊 - 尋找系統漏洞讓自己擁有 root 的權限 * 常見手法: - T1068 - Exploiting Vulnerabilities(利用漏洞) - 駭客會利用系統或軟體的漏洞來獲得更高的權限。例如,Windows 可能有未修補的 PrintNightmare 漏洞,駭客可以利用它來取得 SYSTEM 權限。 - T1548 - Abuse Elevation Control Mechanism(濫用權限提升機制) - 在 Windows 上,駭客可以利用 UAC(使用者帳戶控制)繞過 來獲得管理員權限。 - 在 Linux 上,攻擊者可能會利用 sudo 設定錯誤來執行 root 命令。 ::: success Sudo 權限錯誤提權(GTFOBins) 如果 sudo -l 顯示某些命令可以 無密碼執行,可能代表有權限提升漏洞。 檢查 sudo 權限 ```sudo -l``` 顯示 ```(ALL) NOPASSWD: /usr/bin/vim``` 代表可以利用 Vim 來取得 root 權限。 利用 Vim 取得 root ```sudo vim -c ':!sh'``` 這會直接打開 root shell,讓駭客完全控制系統。 ![image](https://hackmd.io/_uploads/By5cYZehyg.png) ::: --- 7. Defense Evasion 防禦規避 ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 利用加密技術,防止偷拍影像被 BT 刪除或追蹤 ::: - 當駭客成功滲透系統後,他們的下一步並不是馬上攻擊,而是要 **避免被發現**。因為現代的資安機制非常完善 * 常用手法: - T1071.001 - Application Layer Protocol: Web Protocols(加密通訊以防止流量監測) - 在將偷拍影像上傳到遠端伺服器時,使用 TLS/HTTPS 加密通道,防止安全工具或流量監控軟體攔截這些影像。 - 使用 P2P 傳輸技術來進一步隱藏影像的去向,防止追蹤伺服器 IP。 - T1027 - Obfuscated Files or Information(繞過安全檢測的加密技術) - 避免將偷拍的影像存儲在常見的 DCIM 或 Pictures 目錄中,而是存放在不顯眼的應用內部目錄 - 可以將偷拍的影像隱藏在其他無害檔案(如 PDF、圖片 EXIF 資料中) > P2P(Peer-to-Peer,點對點) > 去中心化的網路架構,讓裝置(節點)直接互相連接並共享資源,無需中央伺服器。每個節點既能請求資源(客戶端),也能提供資源(伺服器)。 --- 8. Credential Access 取得身分驗證 ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 透過鍵盤側錄程式(Keylogger)記錄 BT 的社交媒體帳密,把照片發在 moli 群 。 ::: - 攻擊者的目標是竊取使用者的登入憑證(例如帳號、密碼、憑證令牌、指紋資料等),以取得更高的權限或持續存取受害者的系統。 * 常見手法: - T1056.001 - Credential Access(竊取帳密) - 在受害者裝置上安裝鍵盤側錄(Keylogger) - 瀏覽器側錄:惡意瀏覽器插件或 JavaScript Keylogger 監控社交媒體登入時的鍵盤輸入。 - T1078 - Use of Valid Accounts(登入社交媒體) - 使用竊取的憑證登入社交媒體,會採取以下方式繞過安全驗證: - 使用受害者的裝置登入或模擬真實環境(如使用受害者的 IP 地址或裝置指紋),避免觸發異常登入警告。 - T1110.002 - Brute Force: Password Cracking(暴力破解:密碼破解) - John the Ripper 可使用**字典攻擊**(Dictionary Attack)或 **彩虹表**(Rainbow Table)來破解密碼雜湊。 - Tools 講解 ![20141088Ldwmocy7TZ](https://hackmd.io/_uploads/ByQ-jQoske.png =225x200) - John the Ripper John the Ripper 是一個工具集,包含了多個專用的輔助工具,用於從各種檔案和系統中提取密碼雜湊值,這些雜湊值便於進一步進行破解,這邊挑其中兩個工具 zip2john 跟 john 來介紹 - zip2john:從加密的 ZIP 檔案中提取密碼雜湊 - john:使用提取到的密碼雜湊進行密碼破解 找到了一個需要密碼的 zip 檔,先用 zip2john 提取出密碼雜湊 ![螢幕擷取畫面 2025-03-09 230313](https://hackmd.io/_uploads/rJfRa7si1g.png) ![image](https://hackmd.io/_uploads/HJ12AmjiJl.png) 接著用 john 進行密碼破解,得到密碼:741852963 ![image](https://hackmd.io/_uploads/HJyKJEojJl.png) --- 9. Discovery 環境資訊發現 ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 偷偷進入 BT 的電腦或手機,看看有沒有裸露照片或影片 。 ::: - 目標是收集更多裝置的資訊 * 常見手法: - T1083 - File and Directory Discovery(檔案與目錄發現) - 掃描目標裝置上的檔案與目錄,以尋找可能存放裸露影像或影片的資料夾,如: - Windows / macOS / Linux ``` C:\Users\username\Pictures\ C:\Users\username\Videos\ D:\Backup\(外接硬碟可能存放敏感資料) /Users/username/Pictures/(Mac) /home/user/Pictures/(Linux) ``` - Android / iOS ``` /DCIM/Camera/(手機相機照片) /Pictures/Screenshots/(截圖資料夾) /Movies/(影片資料夾) /WhatsApp/Media/WhatsApp Images/(WhatsApp 下載的照片) /Telegram/Telegram Images/(Telegram 下載的照片) ``` - 網路設定發現(T1016) → 確保偷拍影像可以順利上傳,而不被流量監測阻擋。 - 周邊裝置發現(T1120) → 偵測藍牙耳機、USB 裝置,確保偷拍影像可以存取適當的存儲裝置。 - 應用程式發現(T1518.001) → 檢查防毒軟體、相機應用,決定是否需要進一步規避偵測。 - 輸入法發現(T1217) → 監測受害者的鍵盤輸入方式,作為鍵盤側錄(Keylogger)的輔助資訊。 --- 10. Lateral Movement 橫向移動 ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 透過 BT 的筆電入侵家庭 WiFi,然後控制家中所有智能鏡頭多角度偷拍 。 ::: - 成功入侵某台電腦或手機後,試著橫向移動到受害者的其他設備或帳戶,讓我們控制更多咚咚。 * 常用手法: - T1018 - Remote System Discovery(掃描內部網路設備) - 使用網路掃描工具例如 ```nmap``` 來列出所有連接 Wi-Fi 的裝置(智能攝影機、電視、手機、NAS 等)。 - 確定受害者家中使用的攝影機品牌與 IP 位址,準備入侵。 - T1123 - Audio/Video Capture - 許多智慧攝影機透過 RTSP(Real Time Streaming Protocol) 進行影音串流,攻擊者可直接存取監視器畫面。 --- 11. Collection 搜集 ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 透過遠端操控智能鏡頭,執行居家網路攝影機,錄下洗澡影片。 ::: - 在受害系統中尋找、聚集想要的資料 - 常用手法: - T1005 - 本地檔案與資料蒐集 (Data from Local System) - 攻擊者從本地磁碟蒐集有價值的資料,如文檔、資料庫、日誌檔案等。 - T1119 自動化資料挖掘 (Automated Collection) - 使用自動化工具批量搜尋並收集目標系統內的檔案或資料。 - 攻擊案列 - 摩根大通 (JPMorgan Chase) 資料外洩 (2014): - 駭客入侵 JPMorgan 的內部網路,竊取超過 8300 萬筆客戶資訊,主要透過自動化工具蒐集機密資料。 - Equifax 資料洩露 (2017): - 駭客利用 Web 伺服器漏洞取得 Equifax 的存取權,並從系統中蒐集大量個人辨別資訊(PII)。 --- 12. Command and Control 指令與控制 ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 建立 「我 - BT 的電腦或手機 - 鏡頭 」或「我 - 鏡頭 」能夠安全傳輸資料的通道 。 ::: - 建立與受害者系統的遠端通訊管道 - 常用手法: - T1071 應用層協議 (Application Layer Protocol) - 攻擊者利用常見的應用層協議(HTTP、HTTPS、DNS、SMTP)進行 C2 通訊,以避免偵測。 > C2(Command and Control,指令與控制) > 指攻擊者與受害系統之間的通訊通道,用來遠端控制受感染的設備(如電腦、伺服器、物聯網裝置)。 - 攻擊案列 - SolarWinds 攻擊 (2020): - 駭客透過惡意更新感染 SolarWinds Orion 軟體,用 HTTPS 加密通道與 C2 伺服器通訊,以隱藏惡意活動。 --- 13. Exfiltration 竊取資料 ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 想辦法把影片搞到手。 ::: * 透過 P2P 網路、Telegram、雲端 傳輸偷拍內容給自己 * 常見手法 * T1567.002 - 雲端存儲外洩 * 駭客利用雲端儲存空間(如 Google Drive、Dropbox)上傳資料,避免流量異常偵測。 * T1030 - 透過 P2P 傳輸 * 駭客利用 P2P 傳輸資料,隱匿外洩來源,逃避監控。 * 攻擊案例 * Tesla 員工內部洩密 (2018) * 某 Tesla 員工未經授權將公司內部程式碼壓縮加密後,傳輸至個人 Google Drive。 --- 14. Impact ::: success ![Adobe Express - file (1)](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 以 BT 隱私影片進行勒索,要求支付比特幣贖金或是~~威脅當我男友~~。 ::: * 執行 **破壞性攻擊 ( Destructive Attack )** * 加密勒索、資料刪除、系統破壞。 * 目的 * 想出名 * 炫耀技能 * 表達政治或宗教立場 * ~~太愛 BT~~ * 常見手法 * T1486 - 勒索軟體 (Data Encrypted for Impact) * 駭客使用勒索軟體 (如 LockBit, Conti, REvil) 加密企業重要資料,要求支付贖金。 * 攻擊案例 * Colonial Pipeline 勒索攻擊 (2021) * 駭客組織 DarkSide 透過勒索軟體攻擊美國最大燃油管道系統,導致東岸燃油供應短缺,最終企業支付 440 萬美元贖金。 ### 弱點掃描 ![image](https://hackmd.io/_uploads/rkcEWqRoye.png) > ref: https://www.leacloud.com/security/?gad_source=1&gclid=CjwKCAjwvr--BhB5EiwAd5YbXm4RTL13MvmBQ2zTkKyAJKdCKGtulSQxFDCYpo8a1CzPDIP0PvAvHBoCvwIQAvD_BwE #### 目的 - 它通常是 **自動化** 的工具,對單一標的進行掃描嘗試發現已知的安全漏洞 - 弱掃就像是在身體檢查,拿著一張安全檢查清單,看看有沒有高血壓、常見病等等。它通常是 自動化 的,透過工具快速掃描系統中的已知漏洞 #### 攻擊方視角 & 行為 - 策略(Tactics): - 初始存取(Initial Access) - 發現(Discovery) - 技術(Techniques): - 公開漏洞掃描(T1595) - 外部服務漏洞(T1190) - 具體實作(Procedures): - 使用 Shodan, Google 等各種搜尋工具尋發現未修補的漏洞類似(CVE-2021-44228)。 - 一些常見的 "防毒軟體" 對電腦進行掃描 - Nmap 勉强也算(因爲它掃出來的東西不算漏洞) :::success 有些文章標題滿聳動,稱Shodan是世界上最危險的搜尋引擎, 雖然一樣是搜尋引擎,Shodan可不像是Google那樣的搜尋引擎, Shodan算是去搜尋網際網路中連上網的裝置, 然後利用監聽或是分析的方式返回裝置的資訊,也會揭露一些弱點, 總之是跟Google那樣的搜尋非常不一樣,很簡單上手, 可以隨便查個東西就知道哪裡不一樣了XD Shodan上可以搜尋IP、可以搜尋網址, 還有一些熱門搜尋關鍵字像是Webcam,cisco等等 網路上也有一些搜尋過濾的方式教學。 不過如果對網路、網路攻擊這些不熟悉,也沒特定目的, 搜尋到東西之後也看不懂可以幹嘛就是了。 但說它危險嗎?強大好用的東西應該多少都伴隨著危險, 再來我覺得一般人想利用Shodan要達到一些惡意的行為,也是很不容易啦XD 當然對於滲透測試或是駭客來說,就是個好工具了。 ::: - 弱點掃描的局限性 - 只能發現漏洞,不能確保它們是否可利用。 - 容易誤報,需要人工驗證。 ### 滲透測試 ( Penetration Testing,PenTest) - 定位 - 滲透測試不只是「找」漏洞,而是驗證這些漏洞是否真的能被利用。換句話說,就是發現門窗有縫隙後,測試是否真的能撬開進去。 #### 攻擊方視角 & 行為 - 策略(Tactics): - 執行(Execution) - 權限提升(Privilege Escalation) - 橫向移動(Lateral Movement) - 技術(Techniques): - T1190 - SQL Injection/Web漏洞(Exploit Public-Facing Application) - T1059.001 - PowerShell 攻擊(Command and Scripting Interpreter: PowerShell) - T1068 - 權限提升漏洞(Exploitation for Privilege Escalation) - 具體實作(Procedures): - 利用 SQL Injection 讀取密碼 → 利用反彈 Shell 這個方法獲得控制 → 提權漏洞獲取系統權限 :::info ![magua](https://hackmd.io/_uploads/Sk_gt_Yikg.png) : 還記得前面的 Mitre Att&Ck 嗎!!! ::: ### 紅隊 Red Team - 定位: - 紅隊比滲透測試更接近「真正的攻擊者」,不只是測試技術漏洞,還會模擬社交工程、釣魚郵件、物理入侵等多種攻擊手法,甚至會滲透 **整個組織**。 如果說滲透測試是一場「測驗」,紅隊則是模擬「真實對戰」,單是偵察時間範圍可能是幾週到幾個月,測試藍方 **整個組織** 的整體防禦能力。 - 主要任務: - 模擬高端攻擊者(如 APT)行為,測試企業整體安全防禦能力 > APT:進階持續性威脅(advanced persistent threat)指隱匿而持久的電腦入侵過程。 - 工作方式舉例: - T1566 - 釣魚郵件(Phishing):假冒 IT 部門發送釣魚郵件,讓員工點擊惡意連結,獲取 VPN 憑證 - T1200 - 惡意 USB(Hardware Additions):在公司停車場丟幾個寫著「薪資單」的 USB,看看有沒有人會插入辦公電腦 - T1078 - 使用合法帳戶登入,低調潛伏(Valid Accounts)用合法帳戶登入,低調潛伏數週,觀察企業內部網路的敏感資料 ### 小總結:如何選擇適合的安全測試方式? **安全測試類型比較表** | 測試類型 | ATT&CK 策略 | 主要目的 | 適用對象 | 優點 | 缺點 | |-----------|-------------------------|----------------------------------|-----------------------|-----------------------------------------|-----------------------------------------| | **弱點掃描** | 初始存取、發現 | 找到已知漏洞 | 企業 IT 安全團隊 | 自動化、高效,可快速發現大量已知漏洞 | 可能存在偽陽性,無法確認漏洞是否可被利用 | | **滲透測試** | 初始存取、執行、權限提升 | 驗證漏洞是否可被攻擊利用 | 企業安全測試團隊 | 可驗證漏洞可利用性,提供更準確的風險評估 | 受範圍限制,通常有時間性測試 | | **紅隊攻擊** | 全面模擬攻擊 | 測試團隊的整體防禦能力 | 金融、政府、大型企業 | 可模擬真實攻擊情境,測試整體安全防禦能力 | 需要長期運行,對業務影響較大 | * 企業應該根據需求選擇適合的安全測試方式,若只是找漏洞,弱點掃描就夠了。 * 若要驗證漏洞影響,則需要滲透測試。 * 若要測試整體安全性,則需要紅隊攻擊模擬。 ## 組織防護 > 廣 ### 藍隊 Blue Team - 什麽是藍隊? - 藍隊(Blue Team)是指企業或組織內部負責防禦與應對網路攻擊的安全團隊。他們的主要目標是保護系統、網路和數據,防範攻擊者(如紅隊或真實的駭客)滲透並造成損害。 - 主要圍繞 **情資**、**偵測**、**防禦** 和 **管理** 這四個關鍵部分 - 如果說紅隊模擬的是「真實對戰」,那麼藍隊則是在這場對戰中負責守住每一道防線。他們需要持續監控全網路的異常動態,並在攻擊發生時能夠即時辨別、分析與封鎖攻擊路徑,從而保護整個組織的資訊資產。藍隊的反應與調查往往持續數週甚至更長,重點在於追蹤攻擊來源、修補漏洞與加固防禦措施,確保組織在面對各種複合性威脅時始終處於安全狀態。 ![upload_ae52d6d21e85d12ce55c7cd1b5020ba1](https://hackmd.io/_uploads/Hkn89G1nJe.png) 來源:https://ithelp.ithome.com.tw/m/articles/10350539 ### 綜合安全防護體系 > 重要工具補充說明: > 1. SIEM (Security Information and Event Management) :::success 一種安全管理系統,主要用來收集、分析 來自不同設備的日誌與事件,並提供即時監控、威脅偵測與事件回應。 SIEM 主要功能: **集中日誌管理**:收集企業內各種設備的日誌(Syslog、Windows Event Log等)。 **事件關聯分析**:透過規則或用機器學習分析事件,發現異常模式。 **即時警報**:偵測到安全威脅時觸發警報。 **合規報告**:協助企業符合一些安全標準(如 ISO 27001)。 **威脅獵捕**(Threat Hunting):主動搜尋潛在威脅。 **事故調查**:提供可視化工具,幫助資安團隊回溯攻擊路徑。 ::: > 2. IDS (Intrusion Detection System ) :::success - IDS IDS (入侵偵測系統)是一種被動式監控系統,主要用來偵測可疑行為,發現潛在攻擊並發出警報。簡單來講就是資安界的監視器加警報系統,它的工作就是盯著你的網路,看看有沒有可疑的行為發生,發現問題時就會發警報,提醒你:「欸,有人好像要闖空門了!」 - IDS 在幹嘛? - 監控你的網路流量,看看有沒有駭客的攻擊行為 - 偵測異常行為,例如某台電腦突然大量對外發送資料(可能是惡意軟體在竊取資料) - 記錄攻擊細節,幫助資安人員分析發生了什麼事 - 比對攻擊特徵: 特徵值偵測(Signature-based Detection):透過已知攻擊的特徵庫(如 SQL Injection、XSS)來辨別攻擊。 - 偵測帳戶登入情形有無異常,有些帳戶不能被登入,像是 system account - IDS的類型 - HIDS(Host-based IDS,主機型 IDS): 部署在個別主機(如伺服器、工作站),監測系統日誌、檔案變更、使用者行為。通常用在檢查主機上可疑的使用者和軟體活動。 :::info 檢查當前 login 使用者指令 | 命令 | 描述 | 輸出內容 | |-----------|------------------|----------| | `who` | 列出目前登入者 | 使用者名稱、終端、登入時間 | | `w` | 顯示使用者及系統狀況 | 詳細使用者資訊、閒置時間、負載等 | | `users` | 輸出登入者名稱列表 | 空格分隔的使用者名稱 | | `last` | 顯示歷史登入記錄 | 過去的登入、登出時間及來源資訊 | ::: - NIDS(Network-based IDS,網路型 IDS): 通常部署在邊界網路 (DMZ),監聽所有網路流量,分析是否有異常行為。 ::: info DMZ 通常位於邊界網路內,是一個與內部網路和外部網路相隔離的區域。在這個區域中,可以放置需要對外提供服務的伺服器,例如 Web server 或 Mail server。這樣的設定有助於保護內部網路免受外部攻擊,同時允許外部使用者訪問特定的公開服務。 ::: ::: > 3. 補充三種偵測工具 EDR/NDR/XDR > | | **EDR(端點偵測與回應)** | **NDR(網路偵測與回應)** | **XDR(延伸偵測與回應)** | |------|----------------|----------------|----------------| | **監控範圍** | 端點設備(PC、伺服器) | 網路層(流量、封包) | 端點 + 網路 + 雲端 + SIEM | | **防禦重點** | 惡意程式、勒索病毒、端點攻擊 | 異常流量、內部橫向移動 | 關聯分析多個安全威脅來源 (每個東西都會看,結合並分析) | | **適用場景** | 企業端點防禦、勒索病毒防禦 | 零信任架構(Zero Trust)、監控橫向攻擊 | 整合 SIEM、NDR、EDR,提升 SOC 效率 | --- #### 藍隊防禦策略與架構 (技術) 藍隊主要負責防禦、監控與回應,這部分內容重點在於實際上藍方的策略與架構 - 弱點掃描 - 定期進行弱點掃描,以確認自身系統的安全程度 :::success **弱點掃描目的**: - **版本探測防護**:對外部可見的服務進行版本隱藏或模糊處理,減少攻擊者獲取準確版本資訊的可能性。 - **漏洞掃描與管理**:使用漏洞掃描工具檢查系統,確保已知漏洞得到即時修補,降低被攻擊者利用的風險。 - **資產安全管理**:確保所有系統和應用程式的版本資訊都是最新且受支援的。 ::: - 防禦技術與應對 - 設定 IPS (入侵防禦系統),主動封鎖與減輕攻擊 :::success **IPS(入侵防禦系統)** IPS 是一種主動式防禦系統,能夠偵測並即時阻擋攻擊,防止攻擊。IPS 跟 IDS 很像,也會監控網路流量,但關鍵差別是 IPS 不只發警報,還會直接動手擋掉攻擊! - IPS 在做什麼? - 即時阻擋駭客攻擊,例如發現有惡意流量就直接封鎖 - 主動防禦,過濾異常行為確保你的網路不會被利用來進行攻擊 > 舉個例子:如果 IDS 是監視器,那 IPS 就是一個超強保全,當它發現有壞人要闖進來,會直接關門爆打順便報警。 ::: - 實施網路分段、防火牆與多重要素驗證等技術手段 :::success - **網路分段技術** - **功能** - **提升安全性** 若某一子網路遭到攻擊,攻擊者將難以進一步侵入其他區域,有效限制了安全事件的影響範圍 - **改善效能** 分散流量,避免單一區域因大量流量而產生擁塞,確保關鍵應用或服務能夠穩定運作 - **便於管理與合規** 將敏感系統或資訊隔離到專屬區域,讓監控、維護和符合法規要求變得更加容易 - **種類** - **物理分段** 利用實體設備(如路由器、交換機、防火牆等)在硬體層面上劃分網路。這種方式通常成本較高,但可提供較強的物理隔離。 - **邏輯分段** 使用軟體技術實現虛擬劃分,例如虛擬區域網路(VLAN)、子網路規劃或軟體定義網路(SDN)。邏輯分段不需要額外的實體設備,可根據需求動態調整,靈活性較高。 ::: - 應用加密技術來保護數據在傳輸和存儲過程中的機密性與完整性 - 部署 VPN,確保遠程連接與通訊安全 - 演練與持續改進 - 定期進行紅藍對抗演練,以測試與改進防禦策略 - 依據最新威脅情報調整安全措施,定期更新防禦 --- #### 企業安全運營體系 (管理) 著重於建立整個企業層面的安全運作框架,整合策略、流程、組織與技術措施,形成一個全方位、持續運作的安全防護體系 - 安全治理與策略 - 企業需制定安全政策、風險管理計劃與標準 (如 ISO/IEC 27001、 NIST 網路安全框架(CSF) 等) :::success - ISO/IEC 27001 是由國際標準化組織(ISO)和國際電工委員會(IEC)聯合發布的資訊安全管理標準,裡面說明了建立、實施、維護和持續改進資訊安全管理系統(ISMS)的要求,核心內容為: - **系統性地檢驗資訊安全風險**:需系統性地評估其資訊安全風險,考慮可能的威脅、弱點以及對業務的影響。 - **設計與實施資訊安全控管措施**:針對不可接受的風險,應設計並實施連貫且全面的資訊安全控制措施,或採取其他風險管理方案(如風險避免或轉移)。 - **持續改進的管理流程**:應採用總體管理流程,確保資訊安全控制措施持續符合資訊安全需求,並適應環境變化。 :::info **總體管理流程** - **建立資訊安全政策**:制定明確的資訊安全目標和策略,確保與組織的整體目標一致。 - **進行風險評估**:識別和評估資訊安全風險,考慮潛在威脅和弱點。 - **實施控制措施**:根據風險評估結果,採取適當的技術和管理控制措施來減輕風險。 - **持續監控與審查**:定期監控資訊安全狀態,進行內部審計,確保控制措施的有效性。 - **持續改進**:根據監控和審查結果,持續改進資訊安全管理系統,以適應新的挑戰和需求。 ::: - NIST 網路安全框架 (CSF, Cybersecurity Framework) 是由美國國家標準與技術研究院(NIST)開發的框架,為了協助組織管理和降低網路安全風險,核心流程為: 1. **辨別**(Identify):了解組織的環境,以管理網路安全風險。 2. **防護**(Protect):制定適當的保障措施,確保關鍵基礎設施服務的穩定 3. **偵測**(Detect):持續監測,以辨別各種網路安全事件的發生。 4. **回應**(Respond):針對已辨別的網路安全事件採取適當的行動。 5. **恢復**(Recover):採用合適計劃以恢復受損的功能和服務。 ::: - 軟體開發安全 (Secure Software Development Lifecycle, SSDLC) - 將安全措施嵌入軟體開發全流程 :::success SSDLC 是一種將安全實踐系統性地整合到軟體開發過程每個階段的框架 階段包括: **需求分析**:收集並分析軟體需求,確保安全需求被充分考慮。 **設計**:在設計階段整合安全控制措施,確保架構的安全性。 **實作**:在撰寫程式碼過程中遵循安全標準,減少漏洞的產生。 **測試**:進行安全測試,如滲透測試,確保軟體無已知漏洞。 **部署**:在部署過程中實施安全設定,防止潛在的安全問題。 **維護**:持續監控並更新軟體,修補新出現的安全漏洞。 ::: - 事件響應與危機管理 - 制定並演練安全事件響應計劃 - 定義事故通報流程與應急措施 - 安全培訓與意識提升 - 針對藍隊成員及全體員工進行安全意識培訓 - 分享攻防案例,強化實戰經驗 --- ### 安全運作中心 (SOC, Security Operations Center) 一個扮演 **藍方** 的資安團隊 - SOC 的核心目標是 **即時偵測** 與 **應對** 各類網路攻擊 - SOC 分層架構: - L1 – 安全分析員(Tier 1: Security Analyst) - 監視 SIEM 警報,篩選事件的嚴重性。 - 分析攻擊日誌,確認是否為誤報。 - 針對低風險事件,依照標準流程(SOP)應對。 - L2 – 資深分析員(Tier 2: Incident Responder) - 深入調查威脅來源、分析入侵範圍。 - 執行數位鑑識,分析惡意軟體或攻擊行為。 - 針對中高風險事件制定應變計劃。 - L3 – 威脅獵人與研究員(Tier 3: Threat Hunter & Threat Researcher) - 主動尋找隱藏的攻擊行為(APT)。 - 研究新型攻擊技術,開發偵測規則。 - 分析攻擊手法,撰寫報告並提升防禦策略。 - SOC 經理(SOC Manager) - 管理 SOC 營運,確保事件回應流程順暢。 - 分析整體安全狀況,調整策略。 - 與 IT 團隊、CISO(首席資訊安全官)協調安全計畫。 * 監控與威脅偵測(Monitoring & Threat Detection)& 應對處理 - 使用 SIEM(Security Information and Event Management,安全資訊與事件管理) 平台來收集、分析來自伺服器、網路設備、防火牆、端點等的日誌與流量。依據 MITRE ATT&CK 框架對應攻擊策略與技術,分析威脅來源。 * 可疑活動: 1. 異常流量(例如內部設備突然發送大量封包到未知 IP) - 例如,內部設備突然開始向外發送大量封包到未知 IP,這可能表明某些設備正在進行資料外洩。 - 進一步檢查: - 通過 SIEM 查看相關的登錄日誌、網路流量,並發現此帳號登入後立即開始進行異常的資料外洩行為。攻擊者利用 DNS 隧道技術外洩敏感數據。 - MITRE ATT&CK 框架中的對應技術:資料竊取(Exfiltration) -> DNS 隧道(T1071.004),這是一種通過 DNS 協議將數據外洩的技術。 - 應對與處理: - SOC 可以針對這個 資料竊取 行為啟動應對程序,通報相關部門,並隔離該設備。 2. 異常登入行為(例如凌晨有異常帳號登入) - 例如,某帳戶在非工作時間(如凌晨)突然進行登入操作,這可能表示該帳號已被盜用。 - 進一步檢查: - SOC 可以檢查並分析來自 Identity Provider (IdP) 和 Authentication Logs 的登入日誌,以發現有異常模式的帳號(如不同國家或城市的 IP 地址)。 - MITRE ATT&CK 框架中的對應技術:初始存取(Initial Access) -> 賬戶接管(T1071.004)。攻擊者可能通過弱密碼、憑證竊取等方式獲得使用者的登錄權限。 - 應對與處理: - 臨時鎖定帳號:一旦發現異常登入行為,SOC 可以立即鎖定帳戶以防止進一步的攻擊。 - 強化身份驗證機制:如果該帳號沒有啟用多重要素認證(MFA),應立即要求啟用 MFA。 - 進行全面的安全檢查:對所有使用者進行檢查,確保其他帳號不會遭到類似攻擊。 - 通知管理部門與使用者:告知相關使用者和管理員帳號的異常活動,並要求更改密碼。 - 根源分析:確定攻擊者是如何獲得帳號存取權限的,是否有其他潛在的安全漏洞,並進行修補。 - 使用 IDS (入侵偵測系統) 來監控網路與系統異常行為 - IDS 可以識別的一些攻擊行為範例: - 內部偵察: - 例如,IDS 可能發現某些可疑的內部掃描行為,這些行為顯示攻擊者在試圖獲得有關網路和系統的更多信息,以便進一步執行攻擊。 - MITRE ATT&CK 框架中的對應技術:發現(Discovery) -> 網路掃描(T1046)。攻擊者可能使用網路掃描工具來識別網路中的其他設備或服務,為橫向移動或提升權限做準備。 - 應對與處理: - 隔離受影響設備:一旦確認有內部偵察或漏洞利用的行為,SOC 會立即隔離該設備或終端,防止攻擊擴散。 - 封鎖異常流量:如果 IDS 偵測到來自攻擊者的異常流量,SOC 會透過防火牆、IPS(入侵防禦系統)等設備封鎖相關流量,阻止攻擊者進一步行動。 ## summary 這次課程內容介紹了網路資訊安全的基礎知識,涵蓋攻擊者與防守者的策略。首先,講解了資安核心概念 CIA 及相關防護措施。接著,詳細說明了 OWASP 十大漏洞及其風險,並介紹了 Mitre ATT&CK 框架作為對抗攻擊的策略和技術。 在攻擊者角度,探討了弱點掃描、滲透測試和紅隊演練等安全測試方法。藍隊則側重於防護策略,包括使用 SIEM 系統、IDS/IPS、網路分段、加密和 VPN 部署等技術。最後,介紹了安全運營中心(SOC)的角色、層級架構以及如何通過安全治理和事件響應來保護企業安全。