8月5日
感謝贊助商安全寶給我們的支持,不然我們即使有決賽入場券也難以成行。去年參加DEFCON 21 CTF時,由於航班延誤到第二天,比賽前一天才到達Las Vegas,把大家都弄得疲憊不堪。吸取去年的教訓,今年我們決定提前兩天到。我和zTrix、cbmixx、DeadCat等同行,從北京出發,其他夥伴則從上海出發。巧的是和TombKeeper一個航班……
369天後,Las Vegas,我又回來了!
到達後與從上海出發的夥伴們匯合,在比較便宜的The Quad Resort and
Hotel入住。條件比較艱苦,洗澡用水的溫度似乎不能調節。無線網的access
code要單獨購買,一個code只供一個設備一天。單設備的限制似乎是通過硬件地址實現的,因此可以用手機連接WiFi,通過Android的“USB網路共用”功能讓電腦把它識別爲一張USB無線網卡,再用hostapd開設熱點,啓動DHCP和DNS服務器比如dnsmasq,再設置iptables規則:
1
2sysctl net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING ! -o lo -j MASQUERADE
晚上步行到去年曾去過的一家中餐館吃飯。
8月6日
早飯在Quad大樓裏的Hash House a go go吃,吃得很飽,這個西餐味道還可以接受。飯菜的量很足,我們便沒吃午飯。下午大家還在忙碌地準備比賽。Kelwin電腦的硬盤壞了,去買電腦了,也有幾位去購物了。
我和fqj1994在研究通用防禦方案:seccomp、LD_PRELOAD等,我還在弄一些要部署到gamebox上的服務。
留在賓館的人磨到了傍晚,大家開始商量怎麼解決晚飯問題。我們最後去了The LINQ裏的一家匹薩店,旁邊有世界最高的摩天輪。大家看着各自點的主食都沒什麼食慾,我和cbmixx交換得到了匹薩,但還是感覺不好吃,最後只吃了四分之一。大家好像都沒怎麼吃的樣子,但也覺得都剩下不太好意思,因此打包帶走了一些,“禍害”購物回來還沒吃完飯的夥伴們。
8月7日
從The Quad離開入住Rio All-Suite Hotel and Casino,這也是DEFCON會場所在地。我們8個人住兩間雙人房,一間4人,加了一張牀。
道具珍藏版房卡和進入會場的憑證badge入手:

中午和騰訊來參會的人一起吃飯。
大概下午大家才發現DEFCON
CTF規則中說比賽時,外網和gamebox環境使用同一根網線,使用了VLAN,其中外網的VLAN
ID爲999。研究了一下發現我需要這麼做: 1
ip l a l enp14s0 name eth0 type vlan id 999
ip r配置路由。
黑客雲集的地方果然好可怕,晚上出去覓食時看到一臺壞(pwn)掉的機器:

Kelwin等去超市採購物品,買了一個200多美元的Linksys路由器。回來後大家折騰了一下,發現沒法配置我們需要的透明VLAN環境:爲連入的設備提供兩個地址,一個用於gamebox網絡環境,一個用於外網。
8月8日 CTF Day 1
Capture the Flag是DEFCON的一個分會場,CTF分三天進行。今天是比賽第一天,10:00開始,到20:00結束。
一部分同學先去會場了。爲了節省時間,大家選擇泡麪作爲早飯。其實另外一層原因是來這裏幾天發現找到可以吃得食物還是很不容易的。泡麪感覺比這裏的多數食物都美味得多。
去年配置網絡網絡花了很長時間。沒想到今年也出岔子了,一臺原本打算用於作爲路由器的電腦掛掉了,不得不花了好一會兒配置了另一臺電腦頂替。
今年主辦方沒有提供描述規則的紙,但感覺一切和去年大同小異,應該還是零和形式的遊戲。Gamebox系統仍舊是ARMv7的Ubuntu,這次版本更新到了14.04 LTS。每5分鐘爲一輪,主辦方會更新各個服務的flag,通過奪取其他隊伍的flag得分。當有隊伍服務被主辦方檢測爲down後,服務正常的隊伍可以平分其失去的flag。但具體的分數計算方式主辦方沒有說明。首先放出的兩道題是wdub和eliza,wdub是一個web服務,eliza則是一個星際貿易的遊戲,可執行文件是i386的,要用qemu模擬執行。
主辦方提供了積分榜,客戶端需要用證書向服務端認證。今年的頁面計時部分的腳本似乎寫得比較低效,Chrome裏頁面的CPU佔用率居高不下。
很多隊伍一開始就在扣分,可能原因是用上了通用防禦,但沒主意到主辦方在各個服務裏都讀取了/dev/tcp以提供機器指紋信息,SLA也會用到。
來參加DEFCON的一些國內公司的人給我們帶了外賣,感謝他們!
下午有隊伍進行全場DoS,我們沒法用ssh連接gamebox。過了近一小時才恢復,主辦方重啓了gamebox。後來又開啓了新服務imap,之後又開放了服務badge。badge是一個硬件服務,算是本次比賽比較新穎的地方。
HITCON修補服務的方式很新穎,把棧遷到環境變量區,使得利用變得非常困難。
晚上大家熬夜分析、修補服務。
8月9日 CTF Day 2
仍舊是10:00開始,20:00結束。
來到比賽現場,趕緊開始運行各種監控服務,今天發現積分榜只顯示名次了。名次和昨天結束時還不一樣,原來是昨天主辦方算錯分數了。上午HITCON寫了eliza賺取幾十萬錢然後利用物品種類數的漏洞的exploit,一次exploit可能需要兩分鐘,因爲服務是用qemu-i386-aslr執行的,資源消耗很大,爲此服務down了好多次。主辦方似乎更新的checker的行爲,我們的eliza服務down了很久。
Rio的人要求所有隊伍不準帶外賣進來,只能買他們指定的漢堡,據說是10美元一個,太坑了!之後閉幕式時主辦方宣佈明年就不在Rio了,要換到Bally。
這一天發生了好多事,不僅有新的服務放出,昨天的三個服務還都升級了,還發生了兩次大規模的DoS攻擊。 12:10放出了新服務justify。 14:50主辦方把wdub換成了wdub-v2-lbs。 可能是出於qemu-i386模擬執行太消耗資源的考慮,17:40主辦方把eliza換成了eliza-arm,可以直接執行了。 18:40主辦方把imap換成了imap-v2-lbs。
PPP的Brian Pak帶給我們四件T恤!
結束時我們排在第四,知道分數對我們的決策會有很大幫助。主辦方說大家一定都很期待知道分數,但不肯公佈,說明天會公佈的。
8月10日 CTF Day 3
今天積分榜直接就不提供了,也看不到名次。10:00開始14:00結束,但最後一天比賽並不是特別激烈。我們的桌子位置又換了,到了中間,另外三邊是PPP、HITCON和Dragon Sector,據說是根據前一天結束時的名次排的。
研究了兩個晚上的cbmixx發現並修補了badge的拒絕服務漏洞,一開始就patch了服務。也有隊伍用了拒絕服務的漏洞,可惜主辦方很快就說不允許拒絕服務,我們沒有取得什麼優勢。
有些隊伍採用關鍵字過濾的通用防禦方法,把常見的比如cat flag命令給屏蔽了,但是用一些變形方法讀取flag依然有效,這個以後要注意。
之後主辦方還提到了因爲PPP的隊伍號問題,他們雖然把badge做出來了但無法得分。主辦方太不敬業了,這次比賽出了這麼多岔子!
17:00多在DEFCON的閉幕式上宣佈前三名,和昨天結束時一樣,PPP衛冕,HITCON亞軍,Dragon Sector季軍。
DeadCat社工能力非凡,去和George Hotz、Ricky Zhou合影了!
比赛合影,从zTrix博客发现的,抄过来吧,郑立鹏提供的: 
晚上騰訊的人請客,去Caesars Palace Hotel附近的北京九號吃飯。距離有1 mile,在DeadCat的指引下,我們驚奇地發現走了1 mile後距離終點還有1 mile……
反思
還記得去年初次參加決賽時我們幾乎是零準備,比起去年,這次已經有了比較大的進步。
依稀記得去年,大家碰到ARM都有點茫然不知所措,人肉assembler修改指令,發現gdb不能使用就花了很大工夫配置環境,第一天快結束時才配置好。今年大家都準備了ARM環境,除了一上來的網絡問題外,沒有碰到太多困難,總體上比較順利。

感到慚愧的是自己這一年沒有太大的進步。兩位以可執行文件爲食物,輸出源代碼的逆向機小朋友真得好厲害!今年我們在防護方面做得還不錯,各個服務都修補得比較即時,但攻擊方面比起前幾名有很大的差距。攻擊框架有bug,第三天才弄好,攻防的操練也不夠。
我們在比賽的策略上也犯了一些錯誤,對局勢的把握不夠準確。我們在badget一題上投入了很大的人力,但產出不夠,大家都沒想到這道題會這麼難。主辦方三人力一星期精心準備的題果然可怕。在imap上的投入也沒有帶給我們預期的回報。我們也應該在第一天熬夜去寫eliza的exploit,大家沒想到第二天HITCON憑藉這個可以拿這麼多分。沒有進一步研究wdub-v2-lbs也導致了第三天頻繁失分。
我們寫exploit的速度和漏洞利用方面和PPP、HITCON等還有差距,尤其是HITCON,他們在漏洞利用和二進制加固方面有好多值得我們學習的地方。據說第二天PPP也中了HITCON的後門,過了好長時間才發現。可能是比賽前一天在Rio酒店的電梯裏遇到了HITCON的隊伍,看到三件年份各不相同的codejam衣服,應該是時丕勳、陳庭緯等。看官若是在TopCoder、CodeForces徵戰過的,應該對他們的ID不會太陌生。這類二進制分析的競賽,感覺像諸多的competitive programming競賽一樣,我看到了一種職業化的趨勢。不知道什麼時候這個領域的Online Judge能成熟起來,和算法競賽只需要提供題目下載和代碼提交不同,web、pwn這類題目需要和平臺交互,對系統資源有較大的要求。
通用防禦技術一年比一年強了,攻防類比賽以後的開展形式不知道會發生什麼樣的變化。