Press "Enter" to skip to content

一次看懂CTF資安攻防賽

CTF搶旗攻防賽在全球發展越來越蓬勃,依照形式不同,主要可以分成解謎式和現場攻防,另外也有少見的King of the Hill形式,不論何種都是真實世界資安攻防縮影。

圖片來源:

iThome

在許多的競賽遊戲中,奪下對手的旗幟是一種勝利的宣告,從古代的軍事活動到現在的電腦競技活動,奪旗(Capture The Flag,CTF)一直是一種勝利的表徵,可以奪下對手越多數量的旗幟,表示我方的贏面越大。

現在有許多資安電腦攻防的比賽,也採用奪旗的概念,每一個參賽者都有一個必須要保護的伺服器,在這個伺服器中執行的各種服務,則充滿了各式各樣的漏洞。參賽者就必須要有能力分析系統漏洞,利用該漏洞撰寫攻擊程式,對其他隊伍的伺服器發動攻擊。在攻擊的過程中,如何確認攻擊成功,可以從被攻擊隊伍中取得一個象徵該隊的旗幟(Flag)或是金鑰,並上傳給主辦單位的伺服器後,就可以確認該次攻擊成功得分。

CTF比賽有3種,初賽以解謎為主而決賽以攻防為主

除了參賽的選手外,多數人對於CTF搶旗攻防賽的規則並不清楚,每每有隊伍發動精采的攻擊時,一旁觀戰的人,經常無法感同身受。為了讓更多人了解CTF的比賽規則,HITCON團隊更首度安排近10場導覽解說活動,不僅介紹比賽規則,也簡介參賽的隊伍背景,讓有機會再現場觀戰的人,更能體會其中的奧妙之處。

李倫銓解釋,目前的CTF比賽有些會分成初賽和決賽,也有些只有初賽定生死。目前來看,大部分CTF的初賽都會採用解謎式(Jeopardy)的模式,在一定數量的題目中,越早回答出正確答案的隊伍,得分越高,就類似電視上的益智問答節目,題目類型較多元,包括逆向工程(Reverse)、弱點或漏洞分析(Pwnable)、加解密(Crypto)、鑑識(Forensics)以及其他難以歸類的綜合題(Misc)等。

至於CTF決賽往往是攻防技巧的肉搏戰,李倫銓說,因此決賽大多採用攻防模式(Attack and Defense)互爭長短,主辦單位都會給每個參賽隊伍一臺需要守護的伺服器,在這伺服器上執行的不同服務類型,都會有不同種類的漏洞,可能是資訊洩漏,也可能可以用來發動DoS(阻斷式服務)攻擊,甚至是一種可以遠端遙控執行的漏洞或是大家都沒發現的零時差漏洞,而每個服務都是獨立計分。他指出,如果有一隊同時間有多個服務被其他隊伍攻陷,失分將非常可觀。

根據比賽規則,每一個回合5分鐘,在這個攻防的過程中,參賽隊伍不僅要守護自己的伺服器不被攻擊,也必須研究伺服器中的漏洞,並將此漏洞寫成一個可以針對其他隊伍發動攻擊的攻擊程式(Exploit),取得其他隊伍伺服器中的金鑰(Token)或旗幟(Flag)後,並將攻擊成功的訊息(Flag)提交給主辦單位計分。

一般5分鐘的攻擊中,順利攻擊對方伺服器可以得10分,被攻打的隊伍則扣10分;如果有一個隊伍發現其他隊伍都還沒有發現的零時差漏洞,並成功寫成攻擊程式對現場其他隊伍發動攻擊時,每成功攻擊一隊,都可以獲得10分,攻擊的隊伍越多,得到的分數越多;而被零時差漏洞攻擊程式攻擊的隊伍,在該回合中,只要還沒有辦法發現這個零時差漏洞並且完成漏洞修補,每被攻打一次,每次就會被扣10分。李倫銓說,這幾次比賽中,韓國隊伍在發掘各種包含零時差漏洞在內的能力和速度,都非常的驚人。

網路正常應該要持續提供服務,李倫銓指出,如果有隊伍在該回合關掉伺服器以避免被攻擊時,關掉伺服器隊伍會被扣分,扣掉分數則會平均分給其他服務還在線上的隊伍;但是,正常運作的伺服器漏洞如果沒有完成漏洞修補,就會被其他隊伍利用來偷取該隊伺服器中的應該被保護的金鑰或旗幟(Flag)而被扣分,被扣掉的分數則由搶到該金鑰或旗幟的隊伍平分。

不過,這樣的攻防比賽是非常有機運作的,李倫銓表示,每一個CTF的主辦單位隨時都可以將原本的漏洞做修補、系統做升級,參賽隊伍就必須重新面對剛剛出爐的漏洞狀況,有時候,就得重新找漏洞、修補漏洞以及重新寫攻擊程式。

除了常見的解謎式和現場攻防的CTF比賽形式,還有另外一種比較少見的King of The Hill的比賽形式,比較類似搶灘遊戲,以占領服務的時間多寡來決定分數高低,可以占領伺服器的服務時間越久,得分也越高。這也和現實世界的資安威脅一樣,如果駭客可以長時間占領企業的伺服器,對企業的威脅也就越高。

 

 解謎式CTF常見5種題型 

 Reverse逆向工程類型 

通常由主辦方給一個或多個Binary, 過關所需要的Key通常加密藏在執行檔裡,要將程式逆向分析出後才能找出。

 Pwnabl弱點或漏洞分析類型  

主辦方會給一個有弱點的程式或 Server 執行檔,主辦方自己會開一台伺服器跑該服務,參賽者要透過靜態分析與動態分析來找出該程式的弱點。例如: Buffer overflow、命令注入等,在遠端伺服器利用漏洞來執行任意指令,進一步取得存在遠端伺服器的金鑰。

 Crypto加解密類型  

主辦方會給加密過的密文、加密程式,參賽者必須分析加解密演算法甚至需要找出演算法的弱點來破解出真正的明文。

 Forensics鑑識類型  

主辦方會要求參賽者從封包、Log、 Memory Dump、Disk Image、VM image等鑑識出隱藏在之中的金鑰。

 Misc綜合類型  

沒有較明確的分類:像是給個遊戲要想辦法作弊破到幾百萬分、給一個壞掉的 QR code 嘗試修復,或是給張圖片要找出相關的人事物等。

資料來源:李倫銓,2016年1月

 

CTF其實是現實資安世界攻防縮影

臺灣雖然有機會在臺北舉辦一場世界級的資安攻防比賽,但是,臺灣HITCON總召蔡松廷認為,這頂多只能代表單一團隊的資安技術能力,並無法代表臺灣的資安實力甚至資安國力;但是,如果臺灣能夠連續5年,都可以打進CTF決賽並獲得好成績,或許可以勉強表示,臺灣資安實力有一定水準了。

雖然,CTF無法代表一個國家的資安實力,但蔡松廷表示,比賽有時間限制加上必須保留比賽樂趣,一些CTF攻防模擬不見得是現實資安威脅的常態,但基本攻防的精神以及面對的問題與解決問題的手法,還是跟現實世界中的資安威脅,具有類似的精神。他笑說:「至少在現實世界中,企業面對的漏洞不會這麼難,攻擊手法也不會這麼刁鑽弔詭,甚至出現漏洞藏在漏洞中的情況。」

李倫銓也認同,CTF比賽中面臨的情況其實和現實資安世界是一致的,第一種情況像是,參賽隊伍需要具備分析漏洞、修補漏洞、撰寫攻擊程式、熟悉各類 IT技術、通訊協定與工具等技能,而比賽所公布的題目,相當於縮小版商用軟體或線上服務。這樣的情況也與現實世界中,IT部門必須了解商用軟體或線上服務、熟悉各種IT技術、通訊協定與工具的情況一致。

其次,他表示,最早挖到時時差漏洞的隊伍,得以橫掃全場搶分,但隨著每回合時間過去,只要有其他隊伍寫出修補程式後,得分率就會下降。這也和現實世界中,零時差漏洞還沒有修補前,帶來的危害最大是一致的。

第三種就是,CTF比賽規定,為了避免有隊伍怕服務遭攻擊而刻意關閉,每回合主辦單位都會檢查服務上線狀況,若服務關閉則會將分數平分給服務存活的隊伍。

他說,這跟現實世界一樣,伺服器的服務必須持續在線上(Online),不能因為有任何攻擊就隨意關閉服務。最後,主辦單位會不定期更新服務的版本,當然也會出現新的漏洞,李倫銓認為,這就和現實世界中,服務軟體經常會更新版本,可能會持續出現新的資安問題是一樣的。

 

 CTF現場攻防流程 

每個CTF參賽團隊,既是攻擊者也是防守者,目的就是要捍衛自己伺服器不被入侵、服務不中斷,但也必須要透過分析服務的漏洞,可以從透過流量分析和封包分析等方式,找到可以利用的一般漏洞或是零時差漏洞,駭入其他隊伍的伺服器得分。

資料來源:臺灣HITCON,2016年1月

 

 CTF現場攻防得分規則 

 規則1  找到一般漏洞,發動一對一攻擊得分

 說明  主辦單位以5分鐘一個回合,參賽隊伍只要在其他隊伍伺服器找到一個一般性的漏洞,就可以發動攻擊得分,對方被攻擊就會扣分。

 

 規則2  找到零時差漏洞,不論何時,都可發動一對多攻擊得分

 說明  參賽隊伍不論何時,只要找到任何一個零時差漏洞,因為其他隊伍都還無法防禦,找到零時差漏洞的隊伍就可以隨時對其他參賽者發動攻擊得分。只要參賽者遲遲沒有修補這個漏洞,找到零時差的隊伍就可以一直得分。

 

 規則3  關閉服務、放棄得分

 說明  主辦單位要求所有服務都必須上線,只要服務上線,就不會扣除主辦單位提供的基本分。但是,關閉服務時,如同被攻擊一樣,每回合都會扣分,但這個扣除的分數,則會平均分給該回合結束後,這項服務還存活的隊伍。

資料來源:臺灣HITCON,2016年1月

Comments