DEFCON 34 CTF 후기
베가스에 간 가장 큰 이유는 DEFCON 34 대회에 참여하기 위함이었다. 우리 팀은 우리 회사 내에서 주력으로 사람들을 모은 해킹팀이었고 회사사람 80%, 외부인원 20% 정도로 구성되었다. 보통 해킹팀이 연합하다보면 외국인분들과도 함께 하는데 이번에는 한국인 100% 팀이었고 팀 이름도 D0kdo로 정하게 되었다. 그저 독도를 사랑한 청년들.. 여담이지만 본선 진출 당시에 팀명을 바꾸는게 가능한지 운영진들의 질문도 있었다 ㅋㅋ.. 어림도 없지.
나는 포너블, 리버싱을 거의 못하기에 작년처럼 LiveCTF(라이브로 1 vs 1로 문제 누가 먼저 푸는지 겨루는 대결)가 나오면 Crypto 담당을 하기로 했고, A&D보단 KoTH(King of the Hill) 문제에 집중하기로 했었다. 근데 대회를 마치고 돌이켜보면, 어줍잖게 KoTH 맡을바에 A&D 할걸 싶었다. 내가 직접 취약점을 찾아내진 못하지만 AI가 할 수 있는 영역이고, 그 과정에서 반복적으로 이뤄져야 하는 작업들을 시스템화하고 툴링화하고 대회에서 모니터링하는 역할을 잘 했을거라고 생각이 들었다.
3일 동안 우린 정말 열심히 달렸지만 성적은 아쉽게도 예선과 마찬가지로 12등을 하게 되었다. 이 글은 그 3일 간의 회고와 다음번의 대회를 위해 어떤 준비를 해야할지 끄적여보는 글이다.
첫 날
역시나 대회 시작이 1시간은 미뤄졌고 대회 시작이 되었는데 우리 팀은 인프라 문제로 아지트(본선장 밖)에 있는 사람들이 쉽게 인프라에 접근하기 어려웠다. 본선장에서도 공유기를 가져갔는데 잘 동작하지 않아 뒤늦게라도 유선랜으로 모든 노트북이 붙었다. KoTH 첫 문제가 열렸고 우리는 초반 라운드에서 점수를 못 먹었고 그 차이는 계속 따라잡히지 못했던 것 같다. 나도 내 최선을 다해 Claude를 켜고 ‘제발 더 좋은 점수를 내줘.’ 라고 부탁했지만 팀 내 Claude를 쓰는 사람들보다 Codex 쓰는 사람들이 일관되게 결과가 잘 나오는 걸 보고 그제야 Codex를 결제하고 갈아탔지만 Trust Cyber Access? 때문에 Codex가 계속 내 request를 막아버렸다. 그래서 울며 겨자먹기로 계속 Claude를 썼지만 대회 내내 큰 성과를 이뤄내진 못했다.
그렇게 대회가 끝났고 우린 9등인가, 10등 정도로 마무리했다. bbbq 리더보드가 거의 업데이트가 되지 않았었는데 업데이트 되었을 땐 우린 점수가 한참 모잘랐고 그래서 bbbq에서 KoTH 점수를 거의 먹지 못해 KoTH 기준으로는 꼴찌였다. 혹시나 binary 파일이 나오면 더 도움이 되려고 ubuntu 환경도 준비해갔는데 정작 도움이 1도 안되었고, 단순히 mac에서 docker로 실행하는게 claude code 반응속도가 빨랐다.
그날 밤 KoTH 사람들은 모여서 같이 더 좋은 프롬프트를 깎고, 어떻게든 제출물을 만들어서 초반 틱을 먹는 전략을 세웠다.
둘째 날
대회가 시작되고 우린 전략대로 초반 틱을 꽤나 먹었다. KoTH에 많은 인원들이 붙었고 결론적으로 KoTH 기준 9-10위까지 올라왔다. 하지만 공격 점수를 꼴찌하면서 최종적으로 꼴찌가 되었다.
이 과정에서 팀원들간의 의견 차이가 발생했다. 대회 도중에 공격하는 사람이 부족하다 말했는데 계속 KoTH에 열몇명이 지속적으로 붙어있었고 나 또한 그랬다. 나는 내가 공격으로 넘어가도 어떻게 하는지를 모르니까 도움이 안될거라 생각했고 다른 사람들도 그런 생각이 대다수였을 것 같다. 마지막날에 KoTH를 아예 드롭하고 A&D에 올인하냐 마냐 등 우린 치열하게 논의했고 KoTH를 6명까지 줄이는데에 합의를 봤다. 그 과정에서 나도 A&D에 붙기로 했고 왜냐하면 둘째날까지 KoTH에서 뭐 이렇다한 성과를 내지 못했다. 그래서 그냥 지금이라도 붙어서 배우면 뭐라도 도움을 줄 수 있겠지 싶었고 binary patch 영역을 맡게 되었다.
그날 밤 defense에 대한 전략을 정말 많이 세웠는데 나는 계속 우린 공격에 집중하고 패치는 상위권 사람들꺼 좋은거 가져다 쓰자고 말했고, 다른 분은 크게 점수를 가져오려면 우리가 좋은 패치를 만들어서 우리 패치를 다른 사람들이 가져다쓰게 해야한다고 말했다. 그날 밤은 이 전략을 위해서 최대한 많은 취약점을 찾고 그걸 순차적으로 패치하는 이미지를 준비했다. 그러다보니 해가 뜨고 이날은 1시간 밖에 못잤던 것 같다. 이걸 준비하면서 진작에 A&D에 붙을걸. 여기에 더 도움을 많이 줄걸하고 후회가 들기도 했다.
셋째 날
왜 하필 이 날은 대회가 정시에 시작했을까. 당연히 30분은 밀릴거라고 생각하고 우리 팀 전체가 좀 안일하게 준비하고 있었는데 대회는 정시에 시작을 했다. 바로 패치를 요청했고 (아지트에서 접근이 잘 되지 않아서 본선장에 계신 분께 부탁드리는 수밖에 없었다.) Swoop 문제를 중점으로 우리 공격은 잘 플래그를 따고 있는지 rebate는 되고 있는지 모니터링 했다. 근데 간혹가다 플래그가 제출이 안될 때가 많았고 로컬에서 수동으로 익스를 돌려서 플래그를 수동으로 제출을 해줘야 했다. 그리고 rebate를 하려면 패킷 분석을 해야하는데 패킷을 다운로드하는데 너무 오래걸렸다. 패킷 분석은 본선장에서 유선랜으로 붙어서 했었어야 했는데.. 우린 대회 끝나기 전까지 정말 패킷 하나 다운 받기 어려운 채로 대회가 종료되었다. rebate 점수를 많이 못먹은게 너무 아쉽다.
Swoop 문제는 우리가 준비해간 패치가 크게 도움이 되지 않았다. 그 과정에서 상위권 팀이 공격들을 많이 막아내는 것을 보고 패치를 제안했고 그걸로 공격을 많이 막았다. 하지만 그렇게 상위권 팀 패치를 따라가는 방식으로는 디펜스 점수를 얻을 수가 없었다.
그렇게 아등바등하다가 셋째 날 대회가 끝났다. 마지막 날은 오후 12시까지만 대회가 진행된다.
후기
여러모로 아쉽고 대회 도중이 아니라 진작에 알았더라면 좋았을 것들이 너무 많았다. 대다수가 데프콘 대회가 처음이었기에 어쩔수 없었다. 우린 이번 대회를 통해서 되게 많은걸 배운 것 같다. 아무리 툴을 잘 준비해가도 본선장 인프라 때문에 제대로 못 쓸때가 많았다. 그리고 공방전, 인력분배 등 전략도 좀 부재했던 것 같다.
대회가 모두 끝나고 다른 팀 사람들에게 물어보니 KoTH 모두 LLM 100%로 돌렸다고 했다. 우리도 LLM 100%로 돌렸는데 그 차이는 돌리는 사람에 있었구나 싶었다. 진짜 아무리 LLM에 딸깍할 수 있는 시대이지만 누가 딸깍을 하냐에 따라 성능에 차이가 있다는 걸 너무 깊게 체감했다. 그래서 나도 계속 해킹 공부를 LLM과 함께 해보려고 한다. 우선 Cryptohack도 졸업하고 그리곤 HTB를 좀 오랜만에 풀어볼까 한다. 계속해서 감을 잃고 싶지 않고 단순히 개발자할거 아니고 해킹할거니까 이쪽 공부도 많이 해야겠다.
무엇보다 이 대회를 미국에서 참가할 수 있게 지원해준 우리 회사 최고다. 좋은 대한항공에 좋은 숙소에 좋은 음식에 좋은 장소까지 100%로 지원해주셨기에 부담없이 대회에 참여할 수 있었던 것 같다. 지원받은만큼 열심히 했고 앞으로도 더 열심히 해야겠다.