병사지만 CTF는 뛰고 싶어
서론
저는 25년부터 현재까지 병역의 의무를 다하고 있습니다. 복무 중 군 내부에서 진행되는 CTF에 참가하게 되었는데, 이번 글에서는 대회를 준비하며 공부했던 과정과 느낀 점을 작성해보려고 합니다.
예선 전 공부
작년 참가자로부터 대회에 대한 정보를 들을 수 있었습니다.
작년에는 군 내부에서 사용 가능한 AI를 통한 검색은 가능하지만 인터넷 사용은 불가능한 환경에서 대회가 진행되었고, 문제 난도 또한 그리 높지 않았다고 합니다.
이러한 정보를 토대로 쿼리나 풀이법을 전부 외우기보다는 문제의 취약점을 빠르게 파악하는 능력을 기르면 충분할 것이라고 생각했고, 이에 맞춰 연습했습니다.
여러 공격 기법을 공부하고, 문제를 보며 취약점을 직접 파악한 뒤 AI를 통해 제가 찾은 부분이 실제 취약점이 맞는지 확인하는 방식으로 공부했습니다.
이 정도면 어떤 문제든 풀 수 있을 것만 같았습니다.
대회 관련 공지가 올라오기 전까지는 말이죠.
대회 예선
이럴 수가.
대회 3일 전, AI조차 사용할 수 없다는 공지가 올라옵니다.
저는 지금까지 풀었던 문제들의 풀이 코드를 급하게 다시 확인했습니다. 하지만 시간이 부족했던 탓일까요? 열심히 준비했던 웹과 포너블에서는 단 한 문제도 풀지 못하는 대참사가 발생합니다.
어떤 부분이 취약한지는 알겠는데, 왜 풀이로 이어지지 않는 건지….
정말 좌절스러웠습니다.
그러던 대회 종료 1시간 전, 저의 간절함이 대회 서버에 닿았던 걸까요?
시나리오 1-2-3 문제의 난도가 생각보다 많이 낮다는 사실을 눈치챘습니다. 이후 시나리오 문제를 빠르게 풀어나갔고, 대회 종료 30초 전 마지막 문제까지 극적으로 제출하면서 간신히 본선 진출에 성공하게 됩니다.
본선 전 공부
예선을 치르면서 그동안의 공부 방향이 완전히 잘못되었다는 사실을 깨달았고, 의욕도 많이 떨어졌습니다. 지금부터 부가적인 공부를 더 하는 것이 과연 본선에서 큰 도움이 될지 의문이 들었습니다.
본선까지 남은 기간은 한 달.
검색이 완전히 불가능한 환경에서 더 많은 문제를 풀기 위해서는 무엇을 해야 할지 고민했습니다.
돌이켜보니 가장 큰 문제는 취약점이 무엇인지는 알지만, 실제 풀이로 이어가지 못한다는 것이었습니다. 그래서 새로운 내용을 공부하기보다는 복습에 전념하기로 마음먹었습니다.
지금까지 해결했던 문제들의 풀이를 다시 한번 복기하고, 사용했던 도구들의 세부적인 기능을 하나하나 살펴보며 본선을 준비했습니다.
대회 본선
대회 본선에서는 병사 부문 3등으로 마무리할 수 있었습니다.
결과 자체는 만족스러웠지만, 이번 대회를 위해 집중적으로 공부했던 웹과 포너블 문제는 결국 제대로 풀지 못해 아쉬움이 크게 남았습니다.
그래도 점수에 큰 영향을 준 시나리오 문제가 웹 취약점을 중점적으로 다루고 있었기에, 3개월간의 공부가 헛되었다고 느껴지지는 않았습니다.
제가 이러한 등수를 받을 수 있었던 이유 중 하나는 본선의 웹 문제가 예선에 비해 게싱을 요구하는 부분이 많았기 때문이라고 생각합니다. 이로 인해 전체적인 풀이 수가 줄었고, 상대적으로 제가 수혜를 받을 수 있었던 것 같습니다.
다시 대회 준비를 하게 된다면?
처음부터 AI 사용이 불가능하다는 사실을 알았더라면, 조금 더 높은 난도의 문제를 인터넷의 도움 없이 직접 풀이하는 연습을 했을 것 같습니다.
단순히 취약점을 파악하는 것에서 그치지 않고, 자주 사용하는 도구와 기법, 상세한 풀이 과정까지 확실하게 익혀두었다면 예선뿐만 아니라 본선에서도 더 좋은 성적을 낼 수 있었을 것 같습니다.
대회 소감
최근에는 AI의 등장으로 CTF에서도 일종의 Pay to Win 성향이 강해졌다고 느꼈고, 그 때문에 CTF에 대한 의욕도 다소 줄어든 상태였습니다.
하지만 이 대회는 달랐습니다.
오로지 휴먼 파워로만 진행되는 대회. 심지어 필요한 것 대부분을 자신의 기억에 의존해야 하는 극단적인 환경에 저를 던져놓았습니다.
이런 환경에서 좋은 성적을 내기 위해 전략을 고민하고 취약점을 공부하는 과정에서, 가슴속에 숨어 있던 열정을 다시 찾을 수 있었습니다.
덕분에 보안 공부, 특히 CTF에 대해 느끼고 있던 권태기를 끝내는 데 큰 도움을 받은 것 같습니다.
하고 싶은 이야기
저는 짧다면 짧고, 길다면 긴 복무 기간을 헛되이 보내지 말라는 이야기에 동의합니다.
그런 관점에서 봤을 때 군대 안에서 진행되는 대회는 가능하다면 꼭 한번 참가해볼 만한 이벤트라고 생각합니다. 대회는 부대 안에서 세우기 좋은 목표가 되기도 하며, 상황에 따라 휴가나 조기 진급과 같은 성과를 기대해볼 수도 있습니다.
꼭 제가 이번에 참가한 대회가 아니더라도 좋습니다.
복무 중 도전할 수 있는 다양한 대회를 찾아 준비해보면서, 군 생활 중인 독자분들께서 각자의 목표를 만들고 건강하고 알찬 시간을 보내실 수 있었으면 좋겠습니다.