CTF頂級工具與資源
- 2020 年 1 月 20 日
- 筆記
CTF(奪旗賽)有助提升安全技術,可為公司企業和組織機構發現安全人才。運用這些工具和框架設計並舉行自己的CTF活動吧!

知己知彼百戰不殆。想要阻止網絡攻擊者,就得像網絡攻擊者那樣思考。這是一種需要實踐的技術,為了得到這種實踐,業界創辦了各種CTF比賽,同台競技,比拼誰能更快更好地拿下服務器,贏取黑客技術名聲。
不久以前,這種活動的名聲和合法性還令人質疑。如今,即便參賽者多以化名參加,且扮演反派入侵者的角色,CTF也是全然公開而備受推崇的了。
企業安全人員參加CTF是一場白帽子的雙贏活動。安全人員在CTF中學習新技術,實踐困難情況處理,並與安全界其他大牛把酒言歡建立聯繫。而且,CTF的作用還不僅止於此。
相當數量的企業實際上將CTF當成了自身社區推廣和招聘策略的一部分。CTF能使人對網絡安全產生興趣,尤其是學生;還能幫助企業識別有前途的非傳統潛力股人才。
網頁一搜就能搜出很多CTF資源列表,其中很多都託管在GitHub上。有些資源是用於構建CTF的,有些則是輔助參賽者的,還有些二者兼而有之,比如awesome-ctf、AnarchoTechNYC和zardus。
最大的資源集是黑客資源。所有黑客資源,無論防禦性的還是攻擊性的,都是CTF資源:源代碼和二進制靜態分析、數據包捕獲、調試器、反編譯器、堆可視化工具、散列值破解器、圖像編輯器和網絡掃描器等等。每個安全專家都有自己的最愛工具集,但CTF可能會要求他們去尋找新的工具。
Didier Stevens 和他編寫的工具非常有用。Didier最初專精PDF、微軟Office文檔和其他複雜數據文件分析工具,這些工具中很多都能用來實施攻擊。如今他的工具集涵蓋甚廣,對檢查和創建惡意文件幫助很大。他的所有工具都託管在GitHub代碼庫中。
CTF分類
CTF分兩派:攻防戰模式和解題模式。
- 攻防戰模式
此類CTF中,參賽者分成兩隊,每隊都分配有一個計算環境——可能僅僅是一台服務器。兩隊任務相同:攻擊對方系統,並防禦己方系統。每方系統中都含有一些信息性旗標供攻擊者找出並奪取。這就是「奪旗賽」這一名稱的由來。
攻防模式下,防禦者需盡其所能地保護自身服務器:修復所有軟件漏洞,甚至模糊不明的那些;防火牆只允許必要的服務出入;確保所有口令都是強口令,賬戶只具備必要的最小權限……
至於攻擊者,需運用滲透技術獲取防守方服務器的訪問權。誠然,如果攻擊者能拿到root權限,競賽便會很快結束,但根據所涉及的應用和服務,更有限的攻擊便已足夠。
- 解題模式
解題錦標賽模式中,多支隊伍競相解決題板上不同分值的難題。解出題目找到旗標的隊伍便可將之提交到計分系統,獲得相應分數,並繼續迎戰下一個難題。計時結束之時,得分最高的團隊勝出。
因為便於組織和管理,解題模式CTF遠比攻防模式更為盛行。
- 山王模式
山王模式中,每支隊伍努力奪下並守住服務器控制權。計時結束之時掌控服務器最久的團隊獲勝。這種模式是攻防CTF的一個變種。
幾種模式各有千秋。解題模式有利於構築問題解決技術集,山王模式CTF是很好的事件響應、規劃和協作的訓練場。總之,只要能讓安全人員走出舒適區,無論哪種類型的訓練都能有所收益。
CTF競賽哪裡尋?
開放競賽全球各地一直都有。此類活動的一個主要舉辦地是在CTFtime網站。大部分的活動都是解題模式,比如說,2018年的152項活動中,只有16項是攻防模式,占絕大多數的135項都是解題模式。
若說CTFtime是CTF界的ESPN,那麼CTF界的超級碗當屬DefCon——拉斯維加斯舉辦的年度黑客盛會。2018年第26屆DefCon的CTF勝出者是DEFKOR00T團隊。DefCon CTF 的所有過往記錄和完整資料都保存在他們的服務器上。另一項著名CTF隨年度NorthSec安全大會而生,在蒙特利爾舉辦。
DefCon這種大會總有個舉辦地,但大多數CTF是線上賽。國家網絡聯盟(NCL)組織面向高中生和大學生的解題模式CTF,有明確的賽季和賽程。
CTFTime上的大多數比賽都是小型安全愛好者團體組織的,但也有例外。2018年末就見證了趨勢科技的 CTF 2018,決賽在東京舉辦,其中囊括了山王模式競賽。另一方面,2019年4月20,托馬斯·傑斐遜科技高中的計算機安全俱樂部將在弗吉尼亞州費爾法克斯舉行為期6天的比賽。沒錯,這確實是個高中舉辦的CTF。美國空軍為初高中學生舉行網絡愛國者(CyberPatriot)競賽。
DefCon這種主流安全大會上的CTF確實引人注目,因此很多企業也開展了自己的CTF項目。這種活動是很好的學習途徑,還能讓安全人員從瑣碎的企業日常安全工作中切換出來,換換腦子,充盈下身心。
打造自己的CTF
如何組織自己的CTF?作為企業,慣於改進和支持專業產品的你可能會對自己的發現倍感失望。並沒有太多現成的CTF供你選擇,但你可以收集無數細節,將它們組織成自身獨特和頗具挑戰性的競賽。
與CTF靶場最為接近的東西可能是 OWASP Juice Shop (開放網頁應用安全計劃果汁商店項目)。OWASP是設計工具和指南以幫助開發者及其他IT人員打造安全應用的安全專家組織。
Juice Shop 是虛構的網店,售賣果汁、T恤等東西,不用在意細節,你只需要知道該網站滿載各種已知漏洞就行了。該網站是可定製的,你可以根據自己的意願更換品牌標誌,或將產品更改為自己希望的樣子。OWASP的 Juice Shop 有多種形式,包括一個Docker鏡像,且運行在單一服務器實例上。
Juice Shop 還含有舉辦比賽所需的記分牌和賬戶管理功能。
CTF框架
有些CTF框架相當流行,有些則略默默無聞。CTFd是被安全供應商、大型和黑客組織廣泛使用的CTF平台,包含比賽所需的記分牌和其他基礎設施,只需添加實際的題目和相應的得分供用戶賺取即可。
其他主流框架還有:
- Facebook CTF 框架
- 加州大學聖巴巴拉分校計算機安全實驗室iCTF
- HackTheArch
- Mellivora
- NightShade
- LibreCTF
- picoCTF
- CTF工具
谷歌舉辦一些重大CTF,雖然沒有釋出其整個框架,但記分牌代碼和大部分競賽題是已經發佈了的。
有用工具的列表很長,此處僅舉幾例拋磚引玉:
1. 安全場景生成器(SecGen):生成半隨機的帶漏洞虛擬機。
2. mkctf:以預定義格式創建可輸入到框架中的挑戰題目。
3. DVWA:用於展示已知及未知漏洞的開源PHP/MySQL網頁應用。用戶可選擇漏洞(如SQL注入),並用UI激活之。DVWA沒有 Juice Shop 那種有意思的前端,但有時候簡單才是最好的。
CTF報告哪裡找?
大部分最佳資源,尤其是解題模式CTF的,都是過往CTF的參與者撰寫的報告,描述具體問題和解題方法。報告讀得夠多,自然也就掌握了一些套路。你可以在 GitHub CTF 頁面上找到大量報告存檔,以及撰寫報告的工具。
這些報告描述足夠詳細,可以據此改變其中一些變量生成你自己的CTF挑戰問題。但主要問題是,很多報道存檔都只是「待解」問題列表,而且很多作者的寫作水平並不高。
在公共雲上舉辦CTF活動
因為CTF的短期特性,我們可以在公共雲上舉辦——分配資源與事後釋放資源都很方便,只需為所用到的東西付費。只要你足夠謹慎並且按規則行事,你就可以這麼做。
AWS有自己的滲透測試規則,因此你得提交一份申請表,而且只能針對一組固定的服務進行測試,不能使用低配實例。因為亞馬遜會查找用戶在CTF中展現的那類行為並封禁之,所以,請遵守規則並耐心等待批准。
微軟對在Azure上的滲透測試有着嚴格的規則,但不要求事前核准授權。
谷歌也不要求預先授權,只要遵從谷歌雲平台可接受使用政策和谷歌雲平台服務條款即可。
CTF或許比傳統培訓更受員工歡迎,效果也更好。安全職位亟待填補的時代,CTF可能會成為很有價值的招聘工具,幫你以客觀的方式找出技術水平最高的未來員工人選。將CTF作為最大化團隊技術力量的工具,其中有趣的那部分享受純屬免費附贈。
Awesome-ctf:
https://github.com/apsdehal/awesome-ctf
AnarchoTechNYC:
https://github.com/AnarchoTechNYC/meta/wiki/InfoSec#hacking-challenges
zardus:
https://github.com/zardus/ctf-tools
Didier Stevens 的工具庫:
https://github.com/DidierStevens/DidierStevensSuite
CTFtime:
DefCon歷屆CTF活動完整存檔:
NorthSec大會:
國家網絡聯盟(NCL):
https://www.nationalcyberleague.org/
OWASP Juice Shop:
https://www.owasp.org/index.php/OWASP_Juice_Shop_Project
CTFd平台:
Facebook CTF框架:
https://github.com/facebook/fbctf
加州大學聖巴巴拉分校計算機安全實驗室iCTF:
https://github.com/ucsb-seclab/ictf-framework
HackTheArch:
Mellivora:
https://github.com/Nakiami/mellivora
NightShade:
https://github.com/UnrealAkama/NightShade
LibreCTF:
https://github.com/easyctf/librectf
picoCTF:
https://github.com/picoCTF/picoCTF-Platform-2
谷歌CTF:
https://github.com/google/google-ctf
谷歌CTF計分板代碼:
https://github.com/google/ctfscoreboard
SecGen:
https://github.com/cliffe/SecGen
mkctf:
https://github.com/koromodako/mkctf
Damn Vulnerable Web Application:
CTF報告及撰寫工具:
AWS滲透測試規則:
https://aws.amazon.com/security/penetration-testing/
Azure滲透測試規則:
https://www.microsoft.com/en-us/msrc/pentest-rules-of-engagement
谷歌雲平台可接受使用政策及服務條款:
https://cloud.google.com/terms/aup