DEFCON CTF 的辛酸血淚 / Turkey, lyc, david === 大 Alan 開場:這個議程將帶來這六年來我們去打 DEFCON 的心路歷程。 其實我們在 2014 年打 DEFCON 的時候我們從來也沒有想過我們要打第二名。但我們看到各國都在專心致力培養資安人才,所以回來就把這個資訊帶給國內。這個比賽強度很高,我們(老人)也無法一直打下去,我們也一直在講傳承的事情,今年有一群很棒的年輕人加入我們。我們的目標是奪冠,雖然今年沒有成功,但我們會挑戰下去。 希望分享我們這幾年在 CTF 的旅程、內容還有趣事。 Turkey: 心路歷程 lyc, david 會介紹賽制 DEFCON CTF: class first competition 如何進入 CTF 決賽: 去年冠軍+初賽(10)+種子賽(5)=決賽隊伍 2011年後他們花了三年的時間在 2014 年 CTF 初賽在最後一個小時解出四分題贏得了決賽門票。 這一打,就連續打了六年。 一個戰隊的背後 後勤團隊是最不可或缺的: 廚師、醫師、司機(power Alan & Power Turkey 包辦) 我們對拉斯維加斯的熟悉度非常高,照顧選手的所有事物。 餐飲:Pizza & Burger Loop 在美食沙漠中找到八寶粥跟牛奶花生XD 今年帶了加長版大同電鍋XDDDD -> 吃包子、水煮蛋、人蔘雞(!?) 早上有各種包子的全席套餐 DEFCON 在售票上不一樣的地方是人工排隊,不使用線上報名,凌晨四點起床排隊,會有人在會場踢球XD 7點開始售票,一手交錢一手交票 英文版的數數很多音節 早起鳥兒有badge -> 買badge(一箱) Alan & Turkey角色:讓選手可以舒舒服服的比賽 六年名次:244232,希望可以拿到1(The One!) 號召有人的年輕人加入比賽 加入戰隊有興趣的歡迎待到最後 競賽內容分享 lyc:賽制 Attack & Defence 題目(服務)由主辦方設計、各隊維護自己的服務 我們要保護自己的服務,然後打其他隊 capture the flag 攻擊:拿shell&任意讀檔 防禦:patch binary -> 改程式make -> libXXXXX.so上去 exploit(?) -> 攻擊腳本 限制: byte limit, 主辦方 check 主要類型:binary, web ,大部分是 binary 另一種賽制king of the hill 主辦方設計,以每隊答案的品質排名 比賽流程:長達三天 前兩天打service時間 8~10 小時(1000-1800) 晚上可以繼續做題,隔天一開始就繼續打 第三天4hr(有閉幕&頒獎典禮) 一場比賽從第一天到結束約莫 50 小時 計分方式(since2018) 一回合 5 分鐘,每回合計分一次 分為攻擊、防禦、KoH 攻擊:每把flag加一分 防禦:沒有被攻擊,一回合加一分 KoH:每回合照名次分別拿 10 6 3 2 1 賽前準備: [Attack Manager] 自動化把 exploit 跑起來撈 flag 自動上傳 [Binary Patcher] 自動Patch工具 -> 方便Patch [Pcap Analysis/Replay tool] 找出其中是其他對打我們的payload,一樣拿這些打其他人 [BackDoor] 在裡面上patch Backdoor,如果可以,就能一直拿分。 題目: A&D:aoool X86-64/ELF 根本跑不起來 /aoool/etc/default ?? bison/flex 語法分析器,很複雜的自動機 上後門->撈遠端config知道怎樣是合法的檔案內容 自己實作的 Web Server 動態分析程式 UF: Update File 上傳檔案 UC: Update Config 上傳設定檔 GET: 下載上傳內容 OSL: OOO Scripting Language 是主辦方自己實做的腳本語言 只要get的檔案符合就會當成 OSL 跑起來 Bug: type confusion 一個晚上寫了五種不同的攻擊手法 首殺+唯一打全場 跟勁敵PPP有拉開了一點分數 去年DEFCON題目 KoH: doublethink Polyglot shellcode 跑在13種不同的archietectrue amd64, arm64... 還有一些古老架構,需要去讀幾百頁的SPEC找出所有架構相容的 instruction PPP 寫出了八種 題目本身有 race condition Hijack Unintended:主辦方無意識的洞 KoH: dooom 主辦方發一台XBOX,古老遊戲毀滅戰士 站在 OOO tiles 上就可以得分,站越久就得越多分 需要正確的角色名稱才能得分 MITM竄改封包 角色無法開槍: reversing firmware 逆向給我們的frameware -> 在封包做patch 無敵外掛開不了 CTF->FPS電競 還好我們有被資安耽誤的電競選手達達 最強的槍:polaric energy cannon 其他人找洞的時候,他花了一個小時逛地圖 充分展現隊伍的電競實力(打了一年漆彈有差XD) david:辛酸血淚 2017 主辦方花了兩年設計一套全新的 archietecture(clemency) spec 有 82 頁:有 register & 自定義instruction set 最特別的地方在於重新 定義byte byte = 9 bits(靠!) int = 3 bytes Middle Endian 先記中間再記前面再寄後面 (在記憶體:abc -> 人腦:bca) move 17bits 以上這些在賽前24小時才公布 平常所熟悉的工具那瞬間化為烏有 真。 駭客松:把熟悉的工具能 apply 在全新的架構上面 IO converter在 9bits >8bits中間做轉換 Dissembler/assembler binary automated replayer 那年把做的工具opensource DEFCON CTF 2017 Stuff of Shit by HITCON (open sourced) 2017最大功臣:開發功能完整的工具 https://github.com/david942j/defcon-2017-tools 2018這年換了主辦單位 LegitBS->OOO 5年換一次主辦單位 OOO大部分打過CTF第一次主辦 第一次辦現場賽 打不出攻擊、做不了防禦 網路環境、機器消耗問題,第一天開賽網路不通延宕2小時開賽,第二天也是依樣delay2小時 每次 git push 都 connection refuse 一碗準備3個腳本,準備隔天暴打一波 結果才打一秒,因為機器不夠力 連線即DoS 真。pointless 2019 OOO主辦again 今年抱著不期不待不受傷害的心情 Xbox, iOS, LISP machine (第一個在攻防戰出了 iOS 的主辦單位) 超過一半題目由我們首殺 50小時 比賽結束前4小時還是冠軍 第三天關閉 scoreboard 最後的畫面 許多隊伍猜測我們冠軍 but... 我們在第二天還遙遙領先 在第二天即第三天的交界,就發生一個 event 導致 PPP 大幅領先我們 只看維持冠軍的總時間我們還是第一 (笑) 直到「那個題目」出現 LISP machine 題(古老的1958年發明的語言,環境非常特別與其他題目不同) PPP有一名成員恰巧研究過 Lisp Machine 從頭打到尾…… 將近12個小時,放出2小時後就找到攻擊手法,其他隊伍沒有找到攻擊手法 導致HITCON得第二名,因一題之差200分 +200 -> -200 (如果比賽早點結束我們就贏了 (笑)) 希望 2020 年只要沒有 LISP 我們應該會是第一名 HITCON CTF 人才招募計畫 Contact: ? HITCON CTF Quals 12th-14th Oct. ###### tags: `HITCONCMT2019`,`HITCONCMT`,`HITCON`