원래 대회 하나 끝낼 때마다 후기를 쓰려고 했는데 딱히 쓸만한 성과가 나오지 않았기도 했고, 한동안 바빴다보니 이번에 몰아서 쓰게 됐다. 모든 대회를 다 쓸까 하다가 그나마 성격 비슷한 것들끼리 모아서 2편으로 나눴다. 학부 때는 주로 알고리즘 대회 위주로 나갔다보니 CTF를 제대로 나가본 적은 올해가 처음이지만 그걸 감안해도 아쉬움이 많이 남는 경험이었다.

공군 사이버전사 경연대회

  • 일시 : 8.3.(예선), 8.9.(본선)
  • 주관 : 공군본부
  • 결과 : 1위 해킹알못인 내가 이세계에선 사이버전사?

지난번에 별도로 후기글을 작성했던 공군 CTF 대회이다. 대회 자체가 아래 설명할 국방 사이버보안 경진대회에 출전할 공군 대표를 선발하기 위한 절차이기도 한 만큼, 입상자로서 대표 선발 & 교육파견을 나갈 수 있었다. 팀으로 나가는 CTF에서는 주로 크립토만 건드리다가 개인 대회는 처음 나가봤는데, 생각보다 좋은 결과를 얻어 만족스러웠다.

국방 사이버보안 경진대회

  • 일시 : 10.14. 취소됨
  • 주관 : 군사안보지원사령부
  • 결과 : COVID-19로 인한 대회 취소…ㅠㅠ

군사안보지원사령부에서 주관하는 전군(육+해+공+국직) 대상 경진대회이다. 단순히 Jeopardy(문제풀이) 방식 CTF가 아니라 필기+실기가 합쳐진 방식이라고 하며, 자세한 내용은 겪어보지 않아 잘 모르겠다. 공군 대표로 선발되고 약 1개월동안 교육파견까지 나갔는데 막상 대회 1주일 전에 코로나로 취소됐다는 공지가 내려왔다(…)

화이트햇 콘테스트

  • 일시 : 9.11.(예선), 10.9.(본선)
  • 주최/주관 : 대한민국 국방부 / 사이버작전사령부
  • 결과 : 국방트랙 5위1

사이버작전사령부에서 주관하는 CTF로, 일반 / 청소년 / 국방트랙이 별도로 분리되어 진행된다. 일반/청소년부는 다른 CTF와 유사하게 pwn, web, reversing, forensic 등 분야별 문제가 출제되었고, 국방트랙은 침해사고를 당한 VM 이미지가 제공되어 이를 분석해 공격자를 추적하고 관련 문제를 해결하는 방식으로 진행되었다.

본선 중반까지 순위권을 유지하고 있어 “이 페이스만 유지하면 2등상(합참의장상)은 받을 수 있겠다”라는 생각을 했는데, 이런 생각을 하면 항상 그렇듯이 후반부에 다른 팀들이 많이 해결한 문제를 풀지 못해 등수가 떨어져 최종 5위라는 아쉬운 성적으로 대회를 끝마쳤다. Python으로 만들어진 exe를 분석하는 문제였는데, 우리 팀은 대회 내내 pyinstaller decompiler가 잘 동작하지 않아 결국 IDA를 통해 일일히 분석해보려다 실패했다. 대회가 끝나고 다른 팀들에게 물어보니 pyinstaller decompiler를 사용할 때 python 버전, pyinstaller 버전에 따라 동작이 다를 수 있어 환경을 정확히 맞춰줘야 한다는 말을 듣고 아쉬움이 남았다.

CCE 사이버공격 방어대회

  • 일시 : 9.25.(예선), 10.26.(본선)
  • 주최/주관 : 국가정보원 / 국가보안기술연구소
  • 결과 : 전체 16위, 공공기관 5위 2

국가정보원에서 주관하는 CTF로 일반인들을 위한 일반분야와 공공기관 종사자들을 위한 공공분야로 나눠 진행된다. 화이트햇과는 달리 일반분야, 공공분야가 모두 동일한 문제를 사용해 진행된다. 예선은 일반적인 Jeopardy(문제풀이) 방식, 본선은 공격받는 Live 서버를 실시간으로 방어하는 방식으로 진행되었다.

실시간 방어 방식은 처음인 만큼 헤멘 부분이 많다. 방어대상 서버 5개 중 2개가 죽어버려 계속 SLA Fail 패널티를 받으면서 진행하기도 하고, 서버가 중간중간 뻗을 때마다 “서버 램 8GB에서 조금만 더 올려주지…“라는 생각과 함께 docker를 여러 번 재시작하기도 했다. 마지막까지 잡은 문제는 gitlab 서버를 공격하는 문제였는데, 주어진 gitlab 서버 버전에 해당하는 CVE를 찾고 공격 코드를 작성했지만 반응이 없어 마지막까지 원인을 파악하면서 시간을 보냈다. 대회 종료까지 “이것만 풀리면 공공기관 3등인데…” 라는 생각으로 문제를 붙잡았지만 결국 풀리지 않았고, 공공기관 5위라는 성적으로 대회를 끝마쳤다.

다음날 수상팀의 발표를 들어보니 우리팀이 찾았던 것과 동일한 CVE에 거의 동일한 공격 코드를 사용했다는 것이 밝혀서 더 큰 아쉬움이 남았다. 대회가 끝나 확인이 어렵지만 우리팀의 경우 공격을 위한 중계서버로 대회에서 주어진 내부망 원격PC(IP 192.168.x.x)를 사용했는데, 수상팀은 본인들의 별도 서버(공인 IP)를 사용했다는 차이점이 있어 이게 원인이 아닐까 추정된다. 서버가 없던 것도 아니고, 다른 문제(Scenario 2) 해결을 위해 팀원의 PC를 이용해 중계서버를 구축해놓은 게 있어서 아쉬움이 배로 남았다(…)

화이트햇, CCE 모두 나쁜 성적은 아니지만 명시적인 상을 받지는 못했고, 둘 모두 한 문제만 더 풀었어도 수상권이었기에 지금까지도 미련이 남아있다. 내년에도 참가할지는 모르겠지만 좀더 좋은 성과를 낼 수 있었으면 좋겠다.


  1. 3위까지 상이 수여된다(…) 

  2. 이것도 3위까지 상이 수여된다(…)