滲透測試(PenTest)基礎指南

2022-07-14 12:00:11

什麼是滲透測試?

滲透測試(Penetration Test,簡稱為 PenTest),是指通過嘗試利用漏洞攻擊來評估IT基礎設施的安全性。這些漏洞可能存在於作業系統、服務和應用程式的缺陷、不當設定或有風險的使用者行為中。這種評估也有助於驗證防禦機制的有效性以及終端使用者是否遵守安全政策。
​ 

滲透測試通常使用手動或自動技術來系統地破壞伺服器、端點、網路應用、無線網路、網路裝置、移動裝置和其他潛在的暴露點。一旦某個系統的漏洞被成功利用,測試人員會嘗試利用被破壞的系統繼續攻擊其他內部資源,特別是,會通過許可權升級逐步獲取更高階別的安全許可和對電子虛擬資產和資訊的更深入存取。
​ 

通過滲透測試成功暴露的任何安全漏洞資訊通常會被彙總提交給 IT 和網路系統經理,以幫助這些專業人士做出戰略性結論並調整修復工作的優先順序。滲透測試的根本目的是衡量系統或終端客戶被破壞的可能性,並評估此類事件可能對相關資源或操作產生的任何後果。
​ 

把滲透測試看成是試圖通過自己動手來確認是否有人能闖入你的房子可能更好理解。滲透測試人員也被稱為道德駭客,使用受控環境評估IT基礎設施的安全性,以安全地攻擊、識別和利用漏洞。區別在於他們不是檢查門窗,而是測試伺服器、網路、網路應用程式、移動裝置和其他潛在的突破口,以發現整套系統的弱點。
​ 
​ 

滲透測試的5個階段

滲透測試的整體流程可以分為5個階段:規劃和偵查、掃描、獲取存取許可權、維持存取許可權、分析。
​ 

1、 規劃和偵查

第一階段主要包含以下兩個內容:

  • 定義測試的目標和範圍,包括要處理的系統和要使用的測試方法
  • 收集情報(例如,網路和域名、郵件伺服器)以更好地瞭解目標的工作方式及其潛在漏洞
    ​ 

2、 掃描

滲透測試人員會使用工具來檢測目標網站或系統的弱點,包括開放的服務、應用安全問題以及開源漏洞。滲透測試人員根據他們在偵查和測試期間發現的內容使用各種工具。通常包含以下兩類工具:

  • 靜態分析:檢查應用程式的程式碼,以預估它在執行時的行為方式。這類工具可以一次性掃描整個程式碼。
  • 動態分析:在執行狀態下檢查應用程式程式碼。這是一種更實際的掃描方式,因為它可以實時檢視應用程式的效能。
    ​ 

3、 獲取存取許可權

攻擊者的動機可能包括竊取、更改或刪除資料,轉移資金或是損害公司聲譽等。因此,這一階段會使用網路應用攻擊,例如跨站指令碼攻擊、SQL隱碼攻擊和後門等攻擊方式,以發現目標漏洞。滲透測試人員會確定最合適的工具和技術來獲得對系統的存取,然後利用這些漏洞,以瞭解她們可能造成的損害。
​ 

4、 維持存取

這一階段的目標是看這些漏洞是否可以在目標系統中保持足夠長的時間以達成攻擊者的目的。這是為了模擬複雜的持續性威脅,這些威脅通常在系統中停留數月以竊取企業中最敏感的資料。
​ 

5、 分析

滲透測試的結果隨後會組合成一份報告,包含以下內容:

  • 被利用的具體漏洞
  • 被存取的敏感資料
  • 滲透測試人員能夠留在系統中而不被發現的時間

安全人員對這些資訊進行分析,以幫助設定企業的WAF設定和其他應用安全解決方案,以修補漏洞和阻止未來可能產生的攻擊。
​ 
​ 

應該授予滲透測試人員多少許可權?

根據滲透測試的目標,測試人員能夠獲取不同等級的資訊或是目標系統的存取許可權。在某些情況下,滲透測試團隊會在開始時採取某種方法並一直堅持下去。其他時候,隨著滲透測試期間對系統認識的深入,測試團隊也會迭代其測試策略。因此,有3個層次的滲透測試存取許可權:
​ 

  • Opaque Box:測試團隊對目標系統的內部結構毫無瞭解。他們需要像駭客一樣行事,探測可以從外部利用的任何弱點。
  • Semi-opaque Box:團隊掌握了一套或多套憑證。並且知道目標的內部資料結構、程式碼和演演算法。滲透測試人員可能會根據詳細的設計檔案,如目標系統的架構圖,設計測試方案。
  • Transparent Box:滲透測試人員擁有存取系統、系統元件(包括原始碼、二進位制、容器和其他執行在該系統上的伺服器)的許可權。這種方法可以在最短的時間內為目標系統提供最高階別的保障。
    ​ 
    ​ 

滲透測試的型別

全面的滲透測試對於優化風險管理至關重要,這需要測試你所在環境中的所有區域:

  • Web App:測試人員檢測安全控制的效率並查詢隱藏的漏洞、攻擊模式以及其他導致 Web App 被破壞的潛在安全缺口。
    ​ 

  • 移動應用:利用自動化和擴充套件的手動測試,測試人員可以尋找在移動裝置上執行的應用程式二進位制檔案和相應的伺服器端功能的漏洞。伺服器端的漏洞包括對談管理、加密問題、認證和授權問題以及其他常見的網路服務漏洞。
    ​ 

  • 網路:這種測試可以確定外部網路和系統中的常見漏洞和關鍵漏洞。專家們會設定一個檢查表,其中包括加密傳輸協定、SSL證書範圍問題、管理服務的使用等測試用例。
    ​ 

  • 雲:雲環境與傳統本地環境存在巨大的差異。通常情況下,安全責任是由使用環境的企業和雲服務提供商共同承擔。正因為如此,滲透測試需要一套專門的技能和經驗來仔細檢查雲的各個環節,如設定、API、各種資料庫、加密方式、儲存和安全控制。
    ​ 

  • 容器:從 Docker 獲得的容器往往存在漏洞,並且可以被大規模利用。錯誤設定也是與容器及其環境相關的常見風險。以上這兩種風險都可以通過專業的滲透測試發現。

​ 

  • 嵌入式裝置(IoT):嵌入式或物聯網裝置(如醫療裝置、汽車、智慧家居、智慧手錶等)由於其較長的使用週期、電源限制、監管要求以及位置分散等特性,需要獨特的軟體測試方法。專家們在進行徹底的通訊分析的同時,還需要進行使用者端/伺服器分析,以確定在相關使用場景中是否會出現漏洞。
    ​ 

  • API:採用自動和手動測試技術力求覆蓋 QWASP API 安全 Top 10 名單。測試人員尋找的一些安全風險和漏洞包括 Broken Object Level Authorization(BOLA)、使用者認證、過度的資料暴露、缺乏資源/速率限制等等。
    ​ 

  • CI/CD 流水線:現代 DevSecOps 實踐將自動化和智慧程式碼掃描工具整合到 CI/CD 流水線中。除了發現已知漏洞的靜態工具外,自動滲透測試工具也可以被整合到 CI/CD 流水線中,以模擬駭客的行為方式來破壞應用程式的安全。自動化的 CI/CD 滲透測試可以發現隱藏的漏洞和攻擊模式,這些漏洞和攻擊模式在靜態程式碼掃描中是無法發現的。
    ​ 
    ​ 

為什麼滲透測試如此重要?

識別並對安全風險進行優先排序

滲透測試評估了企業保護其網路、應用程式、端點和使用者的能力,以防止外部或內部試圖規避安全策略來獲得對敏感資料的存取。
​ 

智慧管理漏洞

滲透測試會向企業提供關於可利用的安全威脅的實際資訊。通過執行滲透測試,你可以主動識別哪些漏洞是致命的,哪些是不太重要的,哪些是假陽性。這使你的組織能夠更明智地確定補救措施的有限次序、應用所需的安全修補程式,並更有效地分配安全資源,以確保它們發揮最大優勢。
​ 

識別現有的安全專案是否在正常執行

沒有對整個環境的適當可見性就貿然改變安全策略可能會導致你所解決的安全問題都是一些實質上不會造成任何傷害的問題。滲透測試不僅能告訴你元件是否在正常執行,它們還可以進行質量檢查,所以通過滲透測試你也會發現什麼策略是最有效的,什麼工具可以提供最高的投資回報率。
​ 

符合監管要求

滲透測試幫助企業解決審計和合規性問題。通過利用企業的基礎設施,滲透測試可以準確地證明攻擊者是如何獲得敏感資料的。隨著攻擊策略的發展和演變,定期的強制測試可以確保企業在漏洞被利用之前發現並修復安全弱點,從而領先一步。
​ 

此外,對於審計人員來說,這些測試還可以驗證其他規定的安全措施是否到位或者正常工作。滲透測試所生成的詳細報告還可以幫助企業說明其在維護所需的安全控制方面做出了盡職的工作。