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