CTF, 어디서부터 시작할지 막막하다면? (필수 10문 10답)
"해킹 공부, 어떻게 시작하죠?"
"CTF 잘하면 진짜 해커가 될 수 있나요?"
처음 사이버 보안에 관심을 가진 사람이라면, 누구나 한 번쯤 CTF에 대해 궁금해합니다. 하지만 생소한 용어와 복잡해 보이는 문제들에 겁부터 나는 것도 사실이죠.
이 글에서는 CTF 입문자들이 가장 많이 묻는 질문 10가지에 대한 답변을 준비했습니다. CTF가 처음이라면 이번 글을 읽고 완전 정복해 보세요!
Q1. CTF가 정확히 무엇인가요?
CTF는 'Capture the Flag'의 약자로, 사이버 보안 경진대회를 의미합니다. 참가자는 문제(챌린지)를 해결하고, 그 안에 숨겨진 특정 형식의 문자열인 '플래그(Flag)'를 찾아 제출합니다. 플래그는 보통 FLAG{this_is_sample_flag}
와 같은 형태로 되어 있으며, 이를 찾아 제출하면 점수를 얻는 방식입니다. 해킹 기술을 합법적이고 통제된 환경에서 마음껏 겨룰 수 있는 '해킹 대회'라고 생각하시면 됩니다.
Q2. CTF에는 어떤 종류가 있나요?
CTF는 크게 두 가지 종류가 있습니다.
제퍼디(Jeopardy): 가장 일반적인 방식으로, 여러 분야(웹, 리버싱, 포너블 등)의 문제들이 주어지고, 문제를 해결하여 플래그를 찾으면 해당 문제의 점수를 획득합니다. TV 퀴즈쇼 'Jeopardy!'처럼 원하는 문제를 선택해서 푸는 방식입니다.
어택-디펜스(Attack-Defense): 모든 팀에 동일하게 취약한 시스템(서버)이 주어집니다. 참가팀은 제한된 시간 동안 자신의 서버를 방어(패치) 하는 동시에, 다른 팀의 서버를 공격하여 플래그를 탈취해야 합니다. 실제 사이버전과 가장 유사한 형태로, 공수 양면의 실력이 모두 요구됩니다.
Q3. CTF에는 어떤 문제 분야들이 있나요?
CTF의 주요 문제 분야는 다음과 같습니다.
웹 해킹(Web Hacking): 웹사이트의 취약점(SQL Injection, XSS, SSRF 등)을 이용하여 플래그를 획득합니다.
리버싱(Reversing): 컴파일된 실행 파일(exe, elf 등)을 역공학(분석) 하여 프로그램의 로직을 파악하고 플래그를 찾아냅니다.
포너블(Pwnable): 시스템 및 메모리 관련 취약점(Buffer Overflow, Use-After-Free 등)을 이용하여 서버의 제어 권한을 획득하는 것을 목표로 합니다.
암호학(Cryptography): 암호화된 메시지나 암호 프로토콜의 약점을 분석하여 원문(플래그)을 복원합니다.
포렌식(Forensics): 주어진 파일(디스크 이미지, 메모리 덤프, 네트워크 패킷 등)을 분석하여 숨겨진 정보나 해커의 흔적(플래그)을 찾아냅니다.
기타(Misc): 위 분류에 속하지 않는 모든 창의적인 문제들(프로그래밍, 논리 퍼즐, 특정 애플리케이션 등)이 포함됩니다.
Q4. CTF, 어떻게 시작해야 할지 막막해요.
CTF를 시작하는 방법으로 다음 3단계를 추천합니다.
워게임(Wargame) 사이트에서 시작하세요: 실제 CTF는 시간제한이 있어 초보자에게는 부담스러울 수 있습니다. 상시 문제를 풀어볼 수 있는 워게임 사이트에서 기초를 다지는 것이 좋습니다. 워게임 사이트로는 드림핵(Dreamhack), TryHackMe 등이 있습니다.
기본 도구를 익히세요: 리눅스 환경에 익숙해지고, 간단한 자동화 스크립트를 작성할 수 있는 파이썬(Python)은 필수입니다. 웹 해킹을 시작한다면 Burp Suite 사용법을 반드시 익혀야 합니다.
한 분야를 정해서 파고드세요: 처음부터 모든 것을 잘할 수는 없습니다. 가장 흥미가 가는 분야 하나(보통 웹 해킹이나 리버싱으로 많이 시작합니다)를 정해 깊이 있게 학습하는 것이 효율적입니다.
Q5. CTF 참가를 위해 꼭 필요한 스킬이나 지식이 있나요?
특정 기술 외에, 근본적으로 컴퓨터 과학(Computer Science)에 대한 깊은 이해가 중요합니다. 운영체제, 네트워크, 자료구조에 대한 지식은 복잡한 문제를 해결하는 튼튼한 기반이 됩니다. 하지만 그보다 더 중요한 것은 '해커의 마인드셋'입니다. 끊임없는 호기심, 포기하지 않는 끈기, 그리고 문제를 다른 관점에서 바라보는 창의적 사고방식이 최고의 무기입니다.
Q6. 참여할 만한 CTF는 어디서 찾을 수 있나요?
CTFtime은 전 세계 거의 모든 CTF 일정이 정리되어 있는 필수 사이트입니다. 이곳에서 다가오는 대회 정보를 확인하고 팀을 구하거나 팀원을 모집할 수도 있습니다. 국내외 유명 CTF(DEF CON CTF, 코드게이트 등) 일정도 이곳에서 확인할 수 있습니다.
만약 CTFtime에 너무 많은 대회가 등록되어 있어 어떤 CTF에 참가해야 할지 막막하다면, TheoriTV의 추천 해킹 대회 일정 소개 영상을 참고해 보세요.
Q7. 문제를 풀다 막혔을 땐 어떻게 하나요? (aka '삽질'의 기술)
모든 해커가 겪는 과정이며, 이 '삽질' 자체가 실력 향상의 핵심입니다.
잠시 쉬세요: 모니터만 보고 있으면 시야가 좁아집니다. 잠시 산책을 하거나 다른 생각을 하며 뇌를 환기시키세요.
기본으로 돌아가세요: 문제 설명, 주어진 파일을 다시 한번 꼼꼼히 살펴보세요. 놓친 힌트가 있을 수 있습니다.
접근법을 바꾸세요: 사용하던 도구나 공격 벡터가 아니라 완전히 다른 관점에서 접근해 보세요. "만약 내가 출제자라면 어떤 의도로 이 문제를 냈을까?"라고 생각해 보는 것도 좋습니다.
(대회 종료 후) Writeup을 찾아보세요: 대회가 끝나면 다른 참가자들이 공개하는 풀이 보고서(Writeup)를 반드시 읽어보세요. 내가 왜 막혔는지, 고수들은 어떤 방식으로 접근했는지 배우는 것이 가장 빠른 성장 비법입니다. 그리고 궁금한 점이 있다면 풀이 작성자나 관련 커뮤니티에 적극적으로 질문하여 배움의 기회로 삼는 것이 중요합니다.
Q8. Writeup(문제 풀이 보고서)이 무엇이며, 왜 중요한가요?
Writeup은 문제에 대한 상세한 풀이 과정과 원리를 설명하는 문서입니다. 이는 단순히 정답을 알려주는 것을 넘어, 출제자의 의도, 사용된 기술의 원리, 문제를 해결한 사람의 사고 과정을 엿볼 수 있는 최고의 교과서입니다. 다른 사람의 풀이를 보는 것뿐만 아니라, 자신이 푼 문제를 직접 Writeup으로 정리하는 습관을 들이면 학습한 내용을 완벽히 자신의 것으로 만들 수 있습니다.
Q9. 팀으로 참가하는 게 좋은가요, 아니면 혼자 하는 게 좋은가요?
입문이라면 혼자 시작해도 괜찮지만, 가능한 기회가 있다면 팀으로 참가하는 것을 추천합니다. 혼자서는 모든 분야를 깊이 있게 파기 어렵습니다. 팀원들과 각자 전문 분야를 맡아 문제를 해결하면 더 높은 성적을 낼 수 있을 뿐만 아니라, 서로의 풀이 방식을 공유하며 혼자서는 얻기 힘든 폭넓은 시야와 지식을 얻을 수 있습니다. 또한, 협업 능력은 실제 현업에서 매우 중요한 역량입니다.
Q10. CTF 입상 경력이 취업에 정말 유리한가요?
네, 매우 유리합니다. 수십 줄의 이력서보다 CTF 수상 경력 하나가 당신의 실질적인 기술 역량을 더 확실하게 증명합니다. CTF는 ▲문제 해결 능력 ▲기술에 대한 깊은 이해 ▲끊임없는 학습에 대한 열정을 보여주는 강력한 증거입니다. 실제로 구글, Theori를 비롯한 많은 IT/보안 기업들이 채용 과정에서 자체 CTF를 진행하거나, CTF 입상자를 우대하고 있습니다.
지금까지 CTF 입문자들이 가장 궁금해하는 10가지 질문에 대한 답변을 살펴봤는데요, CTF의 세계는 넓고 여전히 궁금한 점들이 많으실 거예요. 많은 분들이 CTF를 참여하며 추가적으롱 궁금해하는 질문을 더 알아보겠습니다.
추가 질문 1. 고난도 워게임 문제를 풀면 시니어급 실력이라고 할 수 있나요?
반은 맞고 반은 틀립니다. 드림핵의 문제 중 난이도 8, 9를 해결하는 능력은 특정 분야에 대한 시니어급 기술 깊이(Technical-Depth)를 가졌다는 신호가 될 수 있습니다. 복잡한 취약점을 분석하고 익스플로잇을 작성하는 능력은 의심할 여지 없는 고급 스킬입니다. 하지만 실제 현업의 '시니어' 역할은 기술 깊이 외에도, 시스템 전체를 보는 아키텍처 설계 능력, 비즈니스 영향도 분석, 동료와의 협업, 효과적인 커뮤니케이션 능력 등 더 폭넓은 역량을 요구합니다. 따라서 CTF 고득점은 시니어로 성장할 핵심 기술 역량을 증명하는 것이지, 시니어의 모든 역량을 갖췄다는 의미는 아닙니다.
추가 질문 2. CTF와 버그 바운티(Bug Bounty)는 어떻게 다른가요?
목적과 환경에서 큰 차이가 있습니다.
CTF: 정해진 시간과 규칙 안에서 '만들어진' 취약점을 찾는 게임. 경쟁과 학습에 중점을 둡니다.
버그 바운티: 실제 운영 중인 라이브 서비스에서 '알려지지 않은' 취약점을 찾는 활동. 실제 환경에서의 영향력과 금전적 보상에 중점을 둡니다.
CTF가 실력을 단련하는 '훈련소'라면, 버그 바운티는 실력을 증명하고 보상받는 '실전'에 가깝습니다. 두 활동은 상호 보완적으로, 많은 실력자들이 CTF로 기술을 연마하고 버그 바운티에 도전합니다.
CTF는 단순한 게임이 아니라, 당신을 더 나은 해커로 만들어 줄 즐거운 성장 여정입니다. 이제 망설이지 말고, 첫 번째 플래그를 향해 도전하세요!
Happy Hacking 👨💻
📍 지금 CTF를 시작하고 싶다면?
무료로 시작할 수 있는 한국어 기반 플랫폼 Dreamhack에서 CTF 문제를 직접 풀어보세요. 기초부터 실전까지, 해커의 여정을 함께할 수 있습니다.
최신 보안 인사이트를 바로 받아보세요.