一個真實CTFer的自我修養|避坑指南

《親愛的,熱愛的》開播後,網安圈誕生了一個新梗:你打籃球像 CXK,你打 CTF 像 HYT。

XSWL。

上述飯圈用語,請讀者自行搜尋其中內涵。

本來,大家以為網路安全的春天到了,竟然都有偶像劇以網路安全領域大的“CTF”為背景偷偷摸摸談戀愛了啊。

這個行業要火!

沒料到,電視劇其實是高階黑。

一個真實CTFer的自我修養|避坑指南

國內頂尖 CTF 戰隊、騰訊某戰隊一位不願透露姓名的 CTFer 小 A 對雷鋒網吐槽:“怎麼辦,我已經入行遠遠超過六年,我是不是要幹不下去了?”

不靠譜的電視劇,你知道你傷害了多少 CTFers 的心嗎?

太多梗了,我們不一一吐槽,本文的目的是好好科普一下,什麼是真正的 CTF 和真正的 CTF 選手。白帽駭客教主 TK 曾來雷鋒網直播講課,好好地科普了一下 CTF,我們先重溫一下:

CTF 是什麼?

這個概念是從歐美傳過來的,字面上是“奪取旗幟”,原本是西方的一種傳統戶外遊戲,相當於我們的丟沙包或者跳大繩。原始的 CTF 每個隊伍真的有一面旗幟。比賽目標就是奪取位於對方“基地”的旗幟,並帶著旗子安全返回自己的基地,當然,實際規則還要更復雜一些,比如還有“監獄”的概念。

後來,“奪旗”的概念也被引入資訊保安攻防比賽。因為在比賽中,選手需要透過解開題目,或攻破目標奪得“Flag”。

現在,我們用 CTF 來代指資訊保安領域的奪旗比賽。

CTF 的比賽形式有以下幾種:

1.真的是“題目”的解題模式,包含逆向、漏洞利用、密碼學、web、雜項,難度不一,分值不一,越難的題目分值越多。

逆向題一般是一個二進位制程式,Flag 就藏在這個檔案裡,需要選手有高超的逆向技巧,找出 Flag。

漏洞題一般也是給二進位制程式,選手需要從程式中找出漏洞,並寫出漏洞利用的攻擊程式碼。雖然做漏洞題一般也需要逆向技巧,但對漏洞技術要求更高,用寫出的漏洞利用程式碼實際攻擊成功,才能取得 Flag。

演算法題是指演算法分析題,給你一段某種演算法處理過的資料,選手需要對付一個或多個演算法。

審計題給出的檔案就多種多樣了。可能是一張隱藏了資訊的圖片,看起來像風景照或者人像,但其中有線索指向某個 Flag 。也有可能給你一個網路資料包,包含大量網路通訊資料,需要你分析。

還有一些難以歸類的題目,或者由幾類題型組合的題,稱為綜合題。

解題模式是比較常見的模式,不少 CTF 都選擇這種模式,特別是在預賽階段。

2.攻防模式。

這個模式更加熱鬧和刀光劍影。因為,它真的是隊伍之間進行攻防。攻防模式一般可以分為三種:

第一種,每一支隊伍一同攻擊同一個目標,考驗攻擊能力;

第二種,所有參賽隊伍進行防守,遭受攻擊,考驗防守能力;

第三種,結合前兩種,綜合考驗攻防能力。這種模式對技術、戰術、策略要求更高。一般是回合制,一個回合五分鐘。可以按照自己的策略選擇優先攻擊或防守,打誰不打誰,隊伍自己決定,一個回合暫停一次。

還有一種模式,這種模式在國內不常見,稱為“King of The Hill”,我把它叫做“山大王”——大家同時攻擊一個伺服器,比誰佔領伺服器的時間長,保持自己的控制權,不被別人幹掉。這其實和傳統奪旗更像,守好自己搶奪的東西,也被人稱作“懶人的 CTF”,因為佔領方有很大優勢,有時候可以打得比較悠閒。

CTF 現狀

近幾年,國際、國內的CTF種類越來越多。舉辦CTF的組織方各有目的,有些有政府背景,比如,韓國的 Codegate CTF;有些是戰隊辦的,比如,PPP 的 PlaidCTF,這種比較常見;有些是企業辦的,比如騰訊的 TCTF ;有些是安全會議牽頭辦的,比如著名的 DEF CON CTF,實際具體操辦的也是戰隊。DEFCON CTF是目前還在辦的歷史最悠久的CTF。最早一屆DEFCON CTF 是 1996年辦的。

剛才提到的這些都是公開的 CTF。還有一類是不公開的 CTF,不會公開徵集報名,開展預賽之類。比如,有些國內、國外企業會舉辦面向內部員工的 CTF。

另外,從公開資訊可以瞭解到,美國國防部從 2014 年開始舉辦名為“CyberStakes”的 CTF 。美國國防部有一個網路安全人才的培養計劃,目標是花3年時間在美國軍隊裡培養 4000 名安全專家。而且標準很具體,要求會挖漏洞,會寫Exploit。訓練的一個環節就是CyberStakes”。而且他們邀請了 David Brumley 教授來授課。這位教授是 2016 年 CGC 最後 7 支入圍隊伍之一 ForAllSecure 的創始人。CGC 是 CTF 歷史上的轉折點,不再只是人和人打,而是和機器打。他們招募了一些隊伍設計了一套系統,和人類戰隊打 CTF。就像阿法狗與人類下圍棋一樣。不過,CGC 最後的戰勝隊還是人類隊伍。雖然機器隊伍沒有橫掃千軍,但也不是最後一名,還是有兩支人類隊伍輸給了機器。

在安全攻防領域,至少在 CTF 領域,目前人類雖然依然保持優勢,但畢竟也有兩支失敗的隊伍,所以,大家要努力。

學習 CTF 的好處

研究安全技術過程中訓練出來的思維能力是很有用處的,即使以後不去做網路安全。我經常跟大家講的一個案例是,1996 年成立的駭客技術團體“w00w00”的成員中至少包括:

WhatsApp 的聯合創始人

Jan KoumNapster(世界最早的音樂共享平臺) 的聯合創始人

Shawn FanningArbor Networks 的聯合創始人

Dug SongNmap 的開發者

Gordon Fyodor LyonCounterTack 的 CTO Michael A。 DavisGoogle 元老

David McKayYammer 安全主管

Josha BronsonAccuvant Labs 的 Joshua J。 Drake

Veracode 的 Andrew Reiter

這個團體不是特別大,卻出了這麼多人才。有些人後來雖然沒有從事網路安全的工作,但在自己的工作崗位上做得非常出色。

如果,你不但對安全感興趣,而且想未來從事安全工作,那麼就要明白,CTF中的技術對安全工作來說一部分,不是全部。工作中遇到的有些問題可以用 CTF中涉及的知識解決。還有很多問題則需要用到 CTF 之外的技能。

打 CTF 是非常好的安全技術能力訓練方式,優秀 CTF 選手在從事安全技術工作時也會有很大優勢。不過大多數現實中的安全技術工作其實沒有 CTF 中的問題那麼困難,但會複雜得多。另外,打 CTF 的目標是得分,處理現實安全問題的時候要考慮更多因素,比如,解決問題的同時還要保持業務執行。

除了和 CTF 相關的技術能力,從職業的角度看,通用能力也很重要。比如,很基本的三點:能想清楚、能寫清楚、能講清楚,這體現了你邏輯是否嚴密、語句是否通順、表達是否清晰。有些通用能力對專業能力提升也有幫助,比如分析能力、判斷能力、規劃能力、蒐集能力、學習能力、提煉能力。無論以後你想從事什麼工作,在學生時代加強這些能力的培養,對你整個人生都會有很大的幫助。

CTF 常用術語和行規

CTF上的“一血”是什麼?

“一血”指在 CTF 及相關衍生比賽最先解出一道新賽題的“動作”。在一些比賽中,拿下一道賽題的“一血”,可能有加分,但更多地是,證明了此題有解,且第一個解題者思維敏捷,是榮譽的象徵。在2017年6月此次的 TCTF 中,先拿下“一血”的選手會奪得一枚紅色的“旗幟”,隨後成功解答者會奪得綠色的旗幟。

“一血”出來後,其他尚未解出題目的隊伍也會盯上這道題。“彩旗飄飄,紅旗不倒”在這裡,絕對是句好話。

解出一道題後,為什麼選手得到的分數越來越少……

是的,讓人大跌眼鏡的是,一道題被你解出後,如果其他高手也解出了這道題,那麼你獲得的分數會按相應比例減少……你要問了,相應比例是多少?看主辦方心情和偏好。

“賽棍”和“攪屎棍”

業內人士把經常參加 CTF 大賽的選手稱為“賽棍”,此稱呼無褒貶,純屬調侃。

一般 CTF 有常見的兩種比賽模式,一是攻防對戰模式,就是高手PK,看誰先攻下對方的“老巢”,還有一種解題模式,雖然也是高手對決,看誰分數最多。

還有一種就是“攪屎棍”,指在參賽過程中對平臺發起攻擊的的選手,這種攻擊通常屬於搞破壞。為此,在 CTF 等賽事的比賽過程中,要有維護人員“震場子”,及時發現“攪屎棍”的蛛絲馬跡,維護平臺穩定和賽事的正常進行。

“潛規則”

納尼?駭客高手對決也有“潛規則”?是的!

正經的規則是,在 CTF 中,駭客賽隊對決之前不會像武林高手那樣“互報名號”,甚至不會交流。直接在賽題中“廝殺”。

“潛規則”之一是,雖然在 CTF 比賽中,DEFCON CTF 比賽不限制戰隊選手數量,其他一些比賽會限制賽隊選手人數,比如,4名。

但是,一般 CTF 比賽時常從 24 小時—36 小時不等,幾個“老司機”在短時間內也無法解出一些很難的賽題,因此,在線上比賽時,請外援也無法知道。線下比賽時,有時選手會傳送題目請外援。

這種被有些主辦方默許,還有一些主辦方當然是拒絕的。比如,曾經有個戰隊在某次比賽中因為請了“外援”,本來取得了第一名的成績,被發現後取消了部分成績,艱難地成為了……第二名。

“端茶倒水”是幹嗎?

如果對手實在很強,解出了自己所不能解答的題,你不需要像武林高手那樣低頭認輸,只要說為對方“端茶倒水”“搖扇子”即可,“端茶倒水”即表示膜拜。

無論攻防還是解題:一定有一個不眠夜

無論是 24 小時、48 小時,甚至挑戰選手體力極限的 72 小時,在比賽中間的夜晚,一定是一個“繼續參賽”的不眠夜。

真實 CTFer 快問快答

雷鋒網:你們有隊服嗎?有專車嗎?真的都戴著耳機、耳麥坐在舒服的電競椅上嗎?

小 A:肯定不是的啊,我們一般最多派出4名隊員坐鎮現場打比賽,其他人都在酒店房間窩著,穿著拖鞋打比賽,隊服,呵呵。。。我們不化妝、也不做頭髮的。耳機嘛,可能會戴的,但是是大家嫌棄現場環境太吵,戴上耳機聽歌來著,戴耳麥就有點誇張了,我們一般都現場交流,要麼線上溝通戰況,我們也不坐電競椅,不過主辦方要是熱情,可以最佳化一下配置。

哦,隊服是有的,只在合影時穿一下。

雷鋒網:真的可以三行阻擋對伺服器的攻擊嗎?

小 A:記住電視劇裡的那三行命令,可以掃描自己的埠(圍笑臉),其實如果真的要防的話用一行

iptables -I INPUT -p tcp -s 192。168。233。0/24 ——dport 10000 -j DROP。

雷鋒網:片尾顯示的三個 CTF 顧問的名字,我從來沒聽說過,你呢?

小 A:我也沒有(圍笑臉)。

雷鋒網:真實的 CTFer 真的要早上起來集訓跑步嗎?

小 A:我只能說,那是一類比較健康的 CTFer,我都通宵打比賽了,頭髮也沒梳,臉也沒洗,我們都是輪流睡覺,你說呢?

小 A 的若干群友:

“加班才是福報”

“bug 都修不完還鍛鍊”

“以後寫個wp,下面沒準有人評論,這是我家愛豆寫的exp,請單推哦”

參考文章:駭客高手對決常用術語及行規,一般人我不告訴他

白帽駭客教主 TK 告訴你,駭客的遊戲 CTF 究竟是什麼 | 硬創公開課總結文+影片