作者 | 陳峻
審校 | 重樓
引言

不知有多少“曾夢想仗劍走天涯”的網絡與信息安全從業者,是因為滲透測試的初心而步入這個行業的。不過,您是否對滲透測試及其漏洞掃描的相關概念感到既熟悉又陌生呢?您是否覺得自己還停留在從工作實踐中積累的感性認識呢?下面,我們將為您梳理滲透測試的各個實施階段,流程示例,典型工具,以及自動化開源方案。
滲透測試的階段
從概念上說,滲透測試是一種通過模擬“友好的”黑客,來識別和利用安全漏洞的過程。作為一種標準化的系統性方法,它旨在提高目標系統與組織的安全態勢。如下圖所示,滲透測試往往從規劃和收集信息開始,根據目標需求的不同,或是以報告發現到的漏洞、或是以保持訪問控制作為結束。
滲透測試的各個階段
規劃與偵察
計劃階段旨在獲取目標的所有相關信息,例如通過網絡釣魚攻擊捕獲詳細的技術數據。這些細節方面的信息,對于后續過程的開展,起到了至關重要的影響。
而偵察階段主要是通過主動和被動兩種基本方法,收集大量的基本數據。其中,主動偵查很容易引起目標組織的注意;而被動偵察則以更加隱蔽、難以識別的方式間接收集信息。不過,相比被動方法的復雜與耗時,主動方法雖不夠細致,但效率更高。
掃描
掃描階段的主要目的是以最小的被發現代價,深入挖掘目標,收集有價值的信息,如同從一堆亂七八糟的物品中篩選出隱藏的寶石。例如,針對Web應用,我們可以掃描CSRF潛在漏洞和XSS端點等。定位入侵點后,我們便可以調查該端口上運行的服務類型,進而判定其是否存在防火墻或WAF。下圖展示了可開展的多種掃描類型。
各種掃描類型
作為滲透測試的重要一環,漏洞掃描往往被細化為分析評估數據,通過逆向工程研究漏洞和錯誤的成因。通常,漏洞掃描與評估需要我們投入大量的時間和精力,以了解不同信息之間的相互關系,進而準確地發現可能被利用的入侵點。當然,像exploit-db之類的在線數據庫,可以為我們提供針對CVE的可利用漏洞列表,以及相關的PoC代碼及其詳細信息。
利用和獲取訪問
一旦發現可被利用的漏洞,攻擊者需要盡快謹慎地利用漏洞,對目標系統予以非法訪問。其中,最常見的莫過于使用遠程代碼執行(RCE)和后門。作為最危險的漏洞類型,RCE漏洞往往表現對輸入與輸出缺乏檢查,以及存在可被篡改的代碼邏輯。后門則有兩類:自定義后門通常與欺騙目標下載惡意文件有關,而錯誤配置的后門則開放了開發者的隱蔽訪問模式。
報告和控制
作為一名道德黑客,滲透測試的最后往往是撰寫報告。在報告中,您需要闡述采取的步驟、發現的問題、可利用的漏洞、面臨風險的資產、以及取得的成果等。這些有價值的信息可以協助組織確定針對攻擊預防的優先級,從而有的放矢。
滲透測試的流程
在不斷變化的網絡威脅領域,我們有必要根據上述不同的實施階段,為滲透測試創建一套能夠輕松集成各種工具的工作流程。例如,我們可以首先使用Amass收集Web應用系統的子域地址,接著利用DnsDumpster提取IP地址,或使用regex來提取諸如URL、IP、端口等必要的數據,然后通過Nmap進行基于腳本的漏洞分析。下圖展示了一個典型的滲透測試流程模型:
流程模型示例
該流程的特點是能夠合理地整合各個測試工具之間的關聯,讓一種工具的輸出能夠影響另一種工具的配置,從而使得針對Web應用的枚舉流程更加流暢和簡化。當然,隨著時間的推移、威脅的演化、以及Web環境的復雜化,安全專家需要通過持續關注細節和積累實戰經驗,來不斷修訂和完善該測試流程。
滲透測試的工具
顯然,滲透測試離不開工具的使用。讓我們來試想一位安全專家被要求對某個Web應用開展滲透測試。那么他會根據自己的工作經驗開展如下工作:
- 選用Python作為自動化腳本的基礎,開發各種工作流。
- 通過Sublist3r使用開源網絡情報(OSINT),來枚舉和收集目標Web的子域。
- 通過Nmap使用Sublist3r的輸出結果,對發現的子域進行有針對性的掃描,以了解開放的端口和網絡服務等攻擊面。
- 以Nmap掃描結果為基礎,配置Burp Suite,查找SQL注入和跨站腳本等常見漏洞。
- 以Burp Suite掃描到的漏洞為指導,通過Dirb枚舉目標應用目錄和文件,以查找Web服務器上的隱藏資源。
- 參照Dirb的發現,使用Nikto進行更全面、更深入的漏洞分析,總結出Web服務器上的已知漏洞、錯誤配置、以及過時的軟件版本,并形成有關安全風險的綜合報告。
典型工具的綜合運用
隨著網絡安全威脅的不斷變化,滲透測試工具也應持續迭代、與時俱進。以Metasploit為代表的漏洞利用平臺與框架不但能夠提供友好的用戶界面,而且可以支持更廣泛的漏洞類型,為安全專家提供直觀、高效的自動漏洞利用執行流程。目前,整合威脅情報信息已成為一項標準功能。有的工具甚至采用了人工智能和機器學習等技術,來提高對于新型網絡威脅和漏洞的識別和排序的精確度和有效性。
自動化開源方案
隨著越來越多的組織實現了持續、快速的軟件交付,自動化滲透測試方案也在不斷與DevOps工作流進行整合。它可以在開發管道的不同階段引入安全測試。同時,隨著無服務器架構在云計算環境的普及,我們也可以通過創建或修改現有的自動化工具,以評估云基礎架構的安全性。對此,安全專家可以將如下開源的工具與方案,整合到現有的測試流程中,以免去自己動手編寫系統代碼和腳本的煩惱:
- Rayder:是一款簡化的工作流應用,可用于運行復雜的編排映射。該工具通過YAML來映射不同的命令和工具,來運行偵查任務。當然,我們需要使用命令來告知其該如何執行、保存和定位輸出。
- MetaHub:是一個上下文框架,可根據環境與核心要求,自動編譯與上下文相關的資產。該工具主要適用于與云服務和AWS相關的操作。
- Vortex:該工具有助于偵查、枚舉和開發等多種任務的自動化。
- Osmedeus:是一個龐大的框架,幾乎涵蓋了自動化枚舉和偵查的所有要求,可被用于掃描Git存儲庫、某個子域、以及云服務發行版。
小結
當然,您可以自行在GitHub上搜索可用于持續集成與持續部署的Python軟件包。例如,使用GitHub Actions、GitLab CI或Jenkins等工具,可建立持續集成和測試的管道,以確保自動化測試流程的有效性、靈活性。
可以說,滲透測試流程的自動化使得安全團隊能夠從重復性任務中解脫出來,簡化了資源的使用率,縮短了漏洞掃描與評估的時間,進而讓組織能夠動態地應對不斷變化的威脅形勢,保護自身的敏感數據和數字資產。
【參考文獻】Penetration Testing And Vulnerability Scanning -- Morpheuslord
作者介紹
陳峻(Julian Chen),51CTO社區編輯,具有十多年的IT項目實施經驗,善于對內外部資源與風險實施管控,專注傳播網絡與信息安全知識與經驗。
























