해킹에 관심이 있고 열심히 공부하고 있는 사람들이라면 누구나 알만한 사이버 공격 방어대회는 올해 2023년 6월 10일에 많은 관심과 기사가 나가면서 예선전을 개최하였다. 나는 주니어부에서 T4B라는 팀 소속으로 참가하여 예선전 9등으로 아슬아슬하게 본선에 진출하였다.
사실 대회 참가 당시에 본선 진출의 꿈이 가장 컸기에 나에게 본선 진출은 너무나도 꿈과 같은 일이었고 정말 기뻤다.
문제 난이도는 작년 문제들의 wirte up을 비교해봤을 때 다들 엄청 어려웠다라고 한다. 작년에는 기본적인 ROP 문제라든가 SQL injection 문제들도 있었던 반면 올해에는 가장 쉬웠던 문제가 힙 영역을 통한 주소 릭과 ROP 를 하기 위해 BOF가 터지는 포인트를 하나 하나 찾아야 했고 이들을 체이닝하는 문제였기 때문에 정말 악랄 그 자체였다;;
D-Final
그렇게 설레는 마음으로 대망의 7월 12일이 되었다. 서울롯데호텔에 가자마자 CCE 안내가 우릴 반겨주었다. 5성급 호텔을 처음 가보는건데 굉장히 웅장했고 분위기에 압도당했다.
안내하는 방향으로 쭉 가보니 CCE 컨퍼런스 준비가 한창이었다. 본선장을 가보면서 느낀건데 내가 지금 라스베가스에 있는 느낌을 받았고 해외 CTF 본선에 진출한 것만 같은 기분이 들 정도로 분위기는 정말 좋았다.
크으 ~ 본선장 입구이다. CCE 포스터로 도배를 해놓았고 정말 대회장이 쾌적하고 멋있었다. 사실 지금까지 CTF를 많이 안 뛰어봐서 대회 본선장을 이번 CCE를 통해 처음 와가지고 그런지 더 멋있어 보이고 시작부터 벅찼다.
우리가 대회장에 조금 일찍 도착해서 준비가 끝날 때까지 기다리고 있었다.
시간이 다 돼서 신분증 체크를 하고 본선장에 들어왔다. 그냥 미쳤다라고 밖에 표현이 안 될 정도로 본선장의 분위기는 웅장했다. 각 팀들은 테이블을 배정 받아서 우리는 T4B라 적힌 테이블로 갔다.
테이블에는 이번 CCE 티셔츠와 명찰, 그리고 웰컴푸트(아침 도시락), 음료수, 간식 등이 놓여있었다.
옷을 환복하고 컴퓨터와 기타 장비들을 체크하고 자리에 착석하였다.
이번 CCE 본선 진출자 분들은 다들 공감 하실텐데 이번 CCE 본선을 밥이 정말 기가 막히게 나왔다(아직 시작도 안함 ㅎㅎ). 아침 도시락으로는 샌드위치, 유부초밥, 과일, 주스 등으로 가볍게 먹을 수 있도록 나왔다.
밥을 먹고 9시가 되자 바로 본선을 진행하였다.
본선을 하면서 사진을 따로 찍을 시간이 없어 말로 본선 상황을 설명해보겠다.
본선 문제에는 크게 두가지의 유형으로 문제가 있었다. 첫번째는 누구나 아는 CTF 방식이었고 두번째는 실시간 공방전이었다.
사실 본선 준비 전에 실시간 공방전이 가장 두려웠는데, 그 이유가 지금까지 한번도 해보지 못한 방식이었다. 그렇기 때문에 문제를 어떻게 해결해야 하는지 도대체 어떤걸 패치해야 하는지 서버는 어떤 방식으로 받아야 하는지 그냥 모든게 미스터리였다.
대회 시작 전에 팀원들이랑 각자 역할을 분담했는데 나는 시작하면 바로 패치를 해보기로 하였다. 그래서 패치를 어떻게 해야 하나 문제를 열어보니 이런 방식이었다.
- CCE에서 15분마다 각 팀에 공격을 수행하여 취약점 하나당 10점을 차감 시켰다.
- 서버와 포트를 타고 들어가면 웹 서비스가 동작을 하였고 서버파일(바이너리)을 제공해주어 IDA로 열어보아서 그 바이너리를 패치하고 웹에 업로드 하는 곳이 있어 업로드 하는 방식으로 패치를 수행하면 되었다.
- 취약점은 메모리 손상이랑 로직 취약점이 존재한다고 문제 설명에 나와 있었다.
정말 열심히 분석하고 풀려 했지만 결국 하나도 패치를 못하였다. 이유는 우리는 문제를 분석하면서 바이너리를 패치하고 업로드 하려는데 업로드하는 엔드포인트에 어떤 OTP값을 입력하라는 것이다. 그래서 OTP 값을 찾아야 하는건가 싶어서 바이너리에서 로직들을 가져오고 OTP 값을 찾으려 하는데 너무 시간 낭비라는 생각이 들었다. 결국에는 OTP도 못 찾아서 패치조차 시도할 수 없었는데 본선 끝나고 들어보니까 OTP 값은 단순히 브루트 포싱 막는 용도라고;; 그래서 그냥 웹에서 쿠키 열면 바로 OTP 나왔다고 한다...
아직도 이건 진짜 한숨밖에 안 나온다.. ㅎㅎㅎㅎ
그다음 CTF 얘기를 해보겠다. CTF도 좀 충격이었다. 아무래도 청소년 문제만 따로 출제 된게 아니라 일반 부문이랑 공공 부문이랑 같은 문제를 푸는 것이기 때문에 문제 난이도야 당연히 높았지만 그것보다 충격적이었던 것은 문제 설명이었다.
아니 무슨 문제를 포너블, 웹 해킹, 리버싱, 크립토 이런 형식으로 분류를 안 하고 원자력 발전소, 공항, 방송국 이렇게 분류를 한 것부터가 좀 충격이었다.
그리고 나는 보통 문제 설명을 읽고 거기서 문제 풀이 감을 잡으려 하는 편인데.. 그렇다. 위가 문제 설명이다. 무엇보다 가장 아쉬웠던건 포너블 문제가 1~2개 였고 웹 문제가 정말 많았다는 것이다. 원래 주분야가 포너블인 사람으로써 강제 웹 해킹을 했어야 했던게 가장 슬펐다.
그리고 본선 중간에 점심 도시락이 나온다면서 점심 도시락을 세팅해주셨는데 정말 놀랐다.
크으 도시락 퀄리티가 진짜 미쳤다. 역시 국정원이 돈이 많나보다 ㅎㅎㅎ. 전복과 랍스터, 새우, 스테이크 그리고 생선 요리가 있었고 디저트로는 과일과 떡이 있었다.
점심을 맛있게 먹었다.
그렇게 마지막에는 7등을 달리고 있었고 문제 1개만 풀어도 3등까지 올라 갈 수 있는 상황에서 2문제의 LFI 취약점을 찾았지만 끝까지 익스를 못하고 문제를 못 풀어서 최종 청소년 부문 7등, 종합 30등으로 본선을 마무리 하였다.
그렇게 본선이 끝나고 미친 저녁식사가 우릴 기다렸다.
서울롯데호텔 1인당 약 17만원 짜리의 뷔페를 먹었다.
양고기와 랍스터가 유명하다고 해서 처음에 많이 먹긴 했지만 개인적으로는 양고기과 랍스터보다 참치가 맛있었다. 참치를 혼자 2접시를 먹고 바베큐, 초밥, 연어 등등 정말 많은 음식을 먹고 디저트까지 깔끔하게 먹었다. 저녁식사 시간이 1시간 20분이긴 했지만 나는 여전히 부족했다 ㅠㅠㅠㅠㅠㅠ
그렇게 저녁식사를 마치고 시상식이 진행되었다.
원래는 대통령님까지 오신다 했지만 안 오셔서 너무 아쉬웠다 ㅠㅠㅠ 내년에는 꼭 와주시길
기념품으로는 CCE 수건과 보조배터리를 주셨다.
그렇게 2023 CCE Final을 마무리 하였다.
나에게는 첫 CTF 본선 진출이었다. 본선 진출을 처음으로 CCE로 하게 되어서 정말 감격스러웠다. 굉장히 메이저한 대회였던 만큼 연예인 같던 모든 사람들이 이 날 한자리에 있었고, 내가 그런 사람들이랑 함께 어울려 경쟁할 수 있었단 사실에 너무나 감사하였다. 여전히 잘하는 사람들은 많고 그런 사람들을 이기기에는 갈 길이 멀지만 언젠가는 꼭 정상에 서있고 싶다라는 생각이 이번 CCE 를 통해서 느끼게 된거 같다. 앞으로는 더욱 열심히 해서 대회 수상으로 블로그에 글을 한번 써보도록 하겠다.
그럼 오늘은 여기까지.