성적보다 남는 것: 팀으로 CTF를 한다는 것
CTF를 왜 하냐는 질문에 대한 답 중에, 올해 DEF CON CTF를 운영한 BBB의 Vie가 회고 글에 남긴 한 문장이 오래 기억에 남았습니다. 자기가 왜 아직 이 판에 남아 있는지 스스로에게 묻다가, 그는 이렇게 적습니다.
“It always goes back to the people.“
결국 사람으로 돌아온다는 말입니다. 문제를 풀고 점수를 올리는 게 CTF의 전부처럼 보이지만, 정작 오래 남는 건 그 옆에 누가 있었느냐라는 거죠. 그래서 이번 글은 순위 이야기가 아니라, 우리가 왜 굳이 혼자가 아니라 팀으로 CTF를 하는지에 대한 이야기를 해보려고 합니다.
혼자서는 막히는 지점이 있습니다
CTF는 겉보기엔 개인 기량의 싸움처럼 보입니다. 실제로 문제 하나를 붙잡고 있는 순간에는 키보드 앞에 혼자 앉아 있으니까요. 그런데 몇 번 대회를 치러보면 혼자 하는 것과 팀으로 하는 것의 차이가 실력보다는 다른 곳에서 난다는 걸 알게 됩니다.
sillysec의 cqql은 1년 동안 CTF를 하며 배운 걸 정리한 글(링크)에서 이렇게 말합니다.
"A team is as important as your own skills. Sometimes you really do need to brainstorm ideas."
막힌 문제 앞에서 세 시간째 같은 가설만 붙들고 있을 때, 옆에서 "그거 혹시 인코딩 두 번 된 거 아니야?" 한마디를 던져주는 사람의 가치는 스코어보드에 찍히지 않습니다. 정답을 낸 사람 이름만 남지, 그 한마디는 어디에도 기록되지 않습니다.
실제로 우리 팀 디스코드를 열어보면 그 흔적이 그대로 남아 있습니다. 아래는 명령어 필터를 우회해야 하는 어떤 문제를 붙잡고 있던 날의 대화입니다. 한 사람이 처음부터 끝까지 푼 게 아니라, 각자가 막힌 지점과 알아낸 조각을 채팅창에 하나씩 던져둔 게 쌓여서 조금씩 앞으로 나아갔습니다.
요즘은 문제를 아예 AI에게 맡겨 푸는 경우도 많습니다. 그런데 팀으로 대회를 한다는 건 그것과는 조금 다른 문제입니다. 한번은 단계마다 정답을 입력해 마지막에 플래그를 얻는 문제를 풀면서 각자 찾은 답을 채팅에 공유하고 있었는데, 한 팀원이 스크립트가 있는지 묻자 다른 팀원이 그 스크립트를 만들어 공유해줬습니다.
각자 문제를 풀며 쓴 기법이나 직접 만든 도구를 팀원끼리 공유하고, 막히는 지점이 나오면 알아낸 것들을 그때그때 채팅에 풀어놓는 것. 팀으로 대회를 한다는 건 이런 데서 드러난다고 생각합니다.
잘하는 팀은 서로에게 솔직합니다
DEF CON CTF에서 아홉 번 우승한 카네기멜런의 PPP는 흔히 '천재 집단'으로 불리지만, 정작 팀원인 Erye Hernandez가 작년 아홉 번째 우승 직후 한 말(링크)은 기술 이야기가 아니었습니다.
"DEF CON CTF involves a lot of teamwork and communication. Many of our veteran players have known each other for a long time, and it's great having that camaraderie, trust and ability to depend on each other when it comes to this type of competition."
이 말에서 눈에 띄는 건 실력이 아니라 소통과 유대감입니다. 오래 함께해 온 팀원들 사이의 신뢰, 서로 기댈 수 있다는 감각을 우승 비결로 꼽은 거죠. 그리고 그 소통이 실제로 굴러가려면 솔직함이 먼저라고 생각합니다. 모르는 건 모른다고 말하고, 나만 알고 있는 것도 감추지 않고 바로 공개하고, 필요한 게 있으면 눈치 보지 않고 그 자리에서 물어보는 것. 이렇게 말이 편하게 오가는 팀이라야 각자가 가진 걸 제때 꺼내 쓸 수 있습니다.
그런 점에서 우리 팀은 서로 참 편합니다. 모른다고 말하는 게 부끄럽지 않고, 알아낸 건 아낌없이 나누고, 물어보는 데 서슴지 않습니다. 이런 소통이 쌓이면서 팀원들 사이에 유대감도 자연스럽게 생겼습니다. 대단한 실력으로 이겼던 기억보다, 그렇게 눈치 없이 같이 즐길 수 있었던 덕분에 매 대회가 즐거웠다는 기억이 더 오래 남습니다.
거창한 소통 규칙 같은 건 없습니다. 문제를 잡으면 디스코드 채널에 "이건 이렇게 막혀 있다", "여긴 아직 안 막혔다" 하고 알게 된 걸 그때그때 던져둡니다. 누가 시켜서가 아니라, 내가 막힌 지점이 다른 사람에겐 힌트가 된다는 걸 몇 번 겪고 나서 자연스럽게 생긴 습관입니다. 그렇게 주고받다 보면 문제 하나를 풀어도 딱 한 사람의 성과라고 하기는 어려워집니다. 팀으로 푼다는 건 원래 이런 것이라 생각합니다.
대회가 끝나고 남는 것
성적은 대회가 끝나는 순간 확정됩니다. 그런데 몇 주 지나서 기억에 남는 건 대체로 등수가 아닙니다.
자신의 CTF 여정을 정리한 Orange Tsai는 온갖 대회를 다 겪고 나서 자기가 가장 좋아하는 순간을 이렇게 표현했습니다.(링크)
"I really love this vibe — a group of people, without worrying about anything, just hacking for fun."
그리고 Vie는 4년간의 DEF CON CTF 운영이 끝나는 날을 상상하며 이렇게 씁니다.(링크)
"I'm probably going to forget about all the struggle and hardship but remember all the friends that I made."
우승자와 운영자가 같은 말을 하고 있습니다. 힘들었던 건 잊히고, 사람은 남는다고요.
우리 팀도 다르지 않습니다. 대회가 끝나고 시간이 지나면 몇 등을 했는지는 흐릿해지는데, 새벽에 같이 삽질하다 튀어나온 헛소리나 서로 어이없어하며 웃던 순간은 이상하게 오래 남습니다.
그래서 C4C는
어떤 대회에서는 제일 쉬워야 할 '웰컴' 플래그가 MISC에 숨겨져 있는 바람에, 솔버 수가 본 문제보다도 적은 걸 보고 "상식적으로 웰컴을 왜 숨기냐", "아 아직 우리 못 풀었다", "웰컴 숨겨놓는 건 진짜 킹받네" 하며 다 같이 어이없어하기도 했습니다. 웰컴 하나에 이렇게 매달리는 팀입니다.
대단한 문제도 아니고, 그냥 웰컴 하나 숨겨놨다고 다 같이 어이없어하며 웃은 게 전부입니다. 그런데 이런 사소한 순간을 같이 웃어넘길 수 있다는 게 매 대회를 즐겁게 만드는 이유라고 생각합니다.
AI가 문제를 얼마나 잘 풀게 되든, 새벽에 같이 삽질하고, 막힌 걸 서로 풀어주고, 끝나고 나서 "그거 진짜 어이없었다"며 웃는 건 여전히 사람이 하는 일입니다. C4C가 되고 싶은 팀은 순위표 위쪽에 있는 팀이기 전에, 그 시간을 같이 겪고 싶은 사람들이 모인 팀입니다.
"성적은 결과고, 팀은 과정입니다. 우리는 과정 쪽에 조금 더 오래 머물러 보려고 합니다."
참고