滲透測試(penetration testing,pentest)是實施安全評估(即審計)的具體手段。方法論是在制定、實施信息安全審計方案時,需要遵循的規則、慣例和過程。測試的時長取決于系統的規模和復雜程度。測試和報告生成的平均時間為2-3周。
滲透測試流程:
1. 前期交互 (Pre-engagement Interactions)
滲透測試團隊與客戶組織進行交互討論,最重要的是確定滲透測試的范圍、目標、限制條件以及服務合同細節。其中定義范圍可以說是滲透測試中最重要的組成部分之一,客戶完全不知道他們需要測試的是什么也有可能,問卷調查是一種較好的形式,客戶必須回答幾個問題,以便可以正確地估計參與范圍。
該階段通常涉及收集客戶需求、準備測試計劃、定義測試范圍與邊界、定義業務目標、項目管理與規劃等活動。和客戶對上述目標達成一致意見后,拿到正式的授權委托書。
2. 情報搜集 (Intelligence Gathering)
滲透測試團隊盡可能地使用多種信息搜集工具,嘗試獲取更多關于目標組織網絡拓撲、系統配置與安全防御措施的信息。滲透測試者可以使用的情報搜集方法包括網站微信微博、郵箱、Google Hacking、whois查詢、掃描探測、網絡監聽、社交網絡等。
情報搜集能力是滲透測試者一項非常重要的技能,只有建立在足夠信息分析的基礎上,滲透測試才能游刃有余。因為信息越多,發現漏洞的幾率越大。其中我們會重點學習常用的一些掃描探測的工具如 netdiscover, nmap, appscan, nessus 和 nikto 。
3. 威脅建模 (Threat Modeling)
在搜集到充分的情報信息之后,滲透測試團隊成員要坐下來進行威脅建模與攻擊規劃。在威脅建模過程中,要對客戶公司的組織資產進行分類和羅列,舉例如下:
4. 漏洞分析 (Vulnerability Analysis)
在該階段,高水平的滲透測試團隊還會針對攻擊通道上的一些關鍵系統與服務進行安全漏洞探測與挖掘,期望找出可被利用的未知安全漏洞,并開發出滲透代碼,從而打開攻擊通道上的關鍵路徑。
5. 滲透攻擊 (Exploitation)
滲透攻擊是滲透測試過程中進行精確打擊并最具有魅力的環節。在此環節中,滲透測試團隊需要利用找出的安全漏洞,來真正入侵系統當中,獲得訪問控制權。滲透攻擊可以利用公開渠道可獲取的滲透代碼。
6. 后滲透攻擊 (Post Exploitation)
后滲透攻擊是很能體現滲透測試團隊職業操守與技術能力的環節。
前面的環節可以說都是在按部就班地完成非常普遍的目標,而在這個環節中,在得到客戶允許的情況下,滲透測試團隊進行權限提升并保持對機器的控制以供以后使用,就是常說的后門。同時需要和客戶約定規則,以確保客戶的日常運營和數據不會面臨風險。一些重要的規則舉例如下:
除非事先達成一致,否則將不會修改客戶認為對其基礎設施”至關重要”的服務。
必須記錄針對系統執行的所有修改,包括配置更改。
必須保留針對受損系統采取的詳細操作列表。
密碼(包括加密形式的密碼)將不會包含在最終報告中
測試人員收集的所有數據必須在測試人員使用的系統上加密。
除非客戶在訂立合同/工作說明書中明確授權,否則不得刪除,清除或修改日志。
7. 形成報告 (Reporting)
滲透測試過程最終向客戶組織提交,取得認可并成功獲得合同付款的就是一份滲透測試報告。
這份報告凝聚了之前所有階段之中滲透測試團隊所獲取的關鍵情報信息、探測和發掘出的系統安全漏洞、成功滲透攻擊的過程,滲透過程中用到的代碼(poc,exp等), 以及造成業務影響后果的攻擊途徑,同時還要站在防御者的角度上,幫助他們分析安全防御體系中的薄弱環節、存在的問題,以及修補與升級技術方案。