CTF設計的七個經驗教訓
CTF(奪旗賽)起源于1996年DEFCON全球黑客大會,是全球范圍網絡安全圈流行的競賽形式,DEFCON作為CTF賽制的發源地,是全球最高技術水平和影響力的CTF競賽,類似于CTF賽場中的“世界杯”。
CTF之所以在全球網絡安全界流行,是因為該比賽形式兼具趣味性、實用性和教育意義,為網絡安全專業人員提供了一種展示黑客技能的方法,同時又能在建設性、安全的環境中學習新概念。成功的CTF賽事對于設計者和參賽者來說都是巨大的挑戰,可激發出新穎的攻擊路徑和創造性場景,并被企業攻防安全專業人員應用到日常工作中。
設計高質量CTF賽事除了技術挑戰之外,還需要考慮環境設置、實際競賽操作、設置引人入勝的游戲所需的創意規劃,以及游戲化相關的細節因素,例如評分結構和權重的設置等。
Netskope威脅研究實驗室團隊首席研究員Jenko Hwong是2023年DEF CON Cloud Village CTF的團隊負責人,他表示:“作為一名設計師,我希望CTF具有挑戰性和樂趣,同時又具備相關性和實用性。”
Hwong指出,雖然CTF賽事非常流行,但是比賽設計和最佳實踐方面的信息卻非常匱乏,這導致很多CTF賽事設計者反復“踩坑”。以下,Hwong分享了他設計DEF CON CTF賽事的七點經驗教訓:
一、講好故事是關鍵
Hwong表示,為了增加CTF賽事的趣味性和吸引力,DEF CON Cloud Village團隊花大力氣編寫引人入勝且有趣的故事情節。這里的“故事”可以看作是一個內置了現實的網絡安全場景的電影劇本。這次DEF CON CTF活動他們選擇了“矮人”主題,趣味性十足。但重要的不僅是編寫故事情節,故事中融入的技術挑戰也很重要。
“在妖精和矮人的故事場景中,作為設計者,你需要提出安全專業人員可能遇到的合理場景,包括潛在的攻擊路徑和合理的防御,”Hwong指出:“作為CTF設計師,編故事的能力越強,CTF賽事就越有趣,對參賽者的吸引力就越大。”
二、采用軟件開發方法設計賽題技術元素
Hwong建議,CTF設計者應該采用軟件開發方法來設計賽題的技術元素。
“你必須考慮設計、實施和測試,”Hwong解釋說,他和他的團隊經歷了慘痛的教訓才領悟,在一個復雜的,由眾多參與者用各種方法操縱的CTF環境中進行測試是一個巨大的挑戰。
“(比賽前)我們沒能完成陰性測試和可行性檢查工作,作為主要設計者,我沒有指導測試,負有主要責任,”Hwong說:“部分原因是我們沒有足夠的時間進行測試,所以我在比賽正在進行時鎖定了一些環境,避免比賽過于容易(找到漏洞)。
Hwong學到的重要教訓之一是,CTF設計人員需要將軟件開發的嚴謹性帶到CTF環境測試和可行性工作的整個流程中。
三、操作嚴謹性也很重要
嚴謹的軟件開發并不是唯一重要的技術能力,運行CTF賽事的工作人員也需要嚴格遵守操作要求。
“我們有一些出色的人員來運行服務器、AWS帳戶以及Google和Azure帳戶,并確保一切保持運行,并且我們能監控一切,”Hwong說:“所有這些問題都必須得到處理。如果你忽視它,就可能意味著失敗、破壞,或性能問題。”
Hwong遇到的運營問題之一是參賽者和賽事平臺間的一些沖突,因為比賽環境受到限制,無法為AWS、Google和Azure上的每個參與者創建獨立的環境。隨著CTF比賽的推進,Hwong和他的團隊重新調整了政策,為參與者提供真正隔離的環境,避免互相干擾。
Hwong指出,在運營方面,CTF設計者還必須積極促進組織者和參賽者之間的持續溝通。
四、難度分級和評分系統
Hwong警告說,CTF組織者往往會低估賽題難度級別設定及開發公平評分系統的困難程度。在實際比賽中,Hwong的團隊設計的一些看似簡單的關卡實際上難度很大,而一些看上去很難的賽題的成功完成者數量卻比預期得多。
CTF的另一個挑戰是找出一個有意義的評分系統。基于DEF CON的實操經驗,Hwong推薦使用鐘形曲線評分系統。還有一個問題是如何規范和平衡大型CTF團隊在獲得挑戰點方面的優勢。
“如果一個戰隊人數較多,挑戰任務可以拆分由多個隊員并行完成。如果你的團隊有10個人,速度就會提高10倍。所以人數絕對是一個優勢,”Whong指出:“我們需要某種動態評分來稍微平衡一下。”
一種選擇是讓挑戰連續進行,但其缺點是可能會使CTF過于僵化和線性,并且可能會產生瓶頸或依賴關系,從而破壞一個或多個賽事。Hwong表示,他還希望看到更多的CTF對參與者的技術進行獎勵,例如在環境中的秘密行動能力(是否留下太多腳印和指紋)。
五、藍隊更看中CTF的實用性
Hwong認為普通的CTF已經不足以吸引藍隊參與挑戰。
“藍隊演習往往是這樣的:‘我們的環境有配置錯誤,存在很多漏洞。你能修復它們嗎?’”Hwong說:“藍隊所做的只是測試這些配置是否被更改,或者紅隊是否可以訪問某個公共存儲桶。一旦將其離線,就意味著藍隊修復了漏洞并獲得積分。
對藍隊來說,實用性更強,更貼近實戰的挑戰是這樣的:紅隊已經成功進入環境,藍隊必須找到他們并將他們踢出環境。或者,檢測到正在發生事件,紅隊已經獲得賬號憑據。此場景中,藍隊只有注銷攻擊者的訪問權限才有機會獲得最高分。”
Hwong指出,這些CTF場景更難實現,但對于防御者來說更真實,也更有價值。
六、CTF需要更多新鮮組件
Hwong呼吁CTF設計者在CTF賽題中引入更多新漏洞利用和漏洞信息。這是Hwong在第一次參加DEF CON Cloud Village時強調的問題,他決心在明年的CTF大賽中改進這一點。
“這是把CTF變成實用的學習和培訓工具的一個關鍵舉措,”Hwong解釋道:“我們很樂意使用研究人員的最新成果、甚至包括在當界DEF CON上提出的相關漏洞利用方法和成果。”
七、通過模塊化開發提高可復用性
最后,Hwong透露他汲取的最大教訓之一是,業界需要找到更多方法來為CTF開發可重用組件,就像軟件開發人員為應用程序所做的那樣。Hwong夢想建設一個開放的GitHub存儲庫,其中包含CTF代碼,作為開發CTF的基礎模塊。
“CTF開發模塊支持定制,能夠省去60%的重復工作,這樣CTF組織者和設計者就可以專注于真正的創新工作,例如添加新技術、場景和故事情節。”