드림핵 워게임 난이도
참고로 드림핵 워게임 문제는 비기너 → 브론즈 → 실버 → 골드 → 플래티넘 → 다이아 → 마스터 순으로 올라가고, 같은 티어 안에서는 숫자가 4에서 1로 갈수록 어려워져요. 자세한 내용은 워게임 가이드를 참고해 주세요. (예, 실버 3 보다 실버 1이 더 어려운 문제)
워게임(Wargame) 문제를 풀다 보면 유난히 오래 기억에 남는 문제들이 있어요. 어렵게 풀었던 문제일 수도 있고, 풀이가 색다른 문제일 수도 있죠. 수천 개가 넘는 문제들 중에서 어떤 문제가 유독 인상 깊게 남을까요?
매일 문제를 만들고, 해결하는 드림핵 팀원들에게 직접 물어봤습니다.
Web, Reversing, Pwn, Crypto 네 카테고리로 나눠서 기억에 남는 문제와 그 이유를 들었는데요. 단순히 어려운 문제가 아니라, 풀고 나면 시야가 넓어지거나 한 가지 발상이 전체 풀이로 이어지는 경험을 주는 문제들이 많았어요.
이번에 소개할 드림핵 문제들은 카테고리와 난이도 순으로 정리했으니 본인 실력에 맞는 것부터 참고해서 풀어보는 것도 좋아요. 만약 워게임이 생소하고 어렵다면 해킹, 보안의 가장 기본 지식을 소개하는 무료 강의를 읽은 다음에 아티클을 읽는 것을 추천합니다.
💡
드림핵 워게임 난이도
참고로 드림핵 워게임 문제는 비기너 → 브론즈 → 실버 → 골드 → 플래티넘 → 다이아 → 마스터 순으로 올라가고, 같은 티어 안에서는 숫자가 4에서 1로 갈수록 어려워져요. 자세한 내용은 워게임 가이드를 참고해 주세요. (예, 실버 3 보다 실버 1이 더 어려운 문제)
웹 해킹은 많은 분들이 처음 워게임을 접하는 분야기도 해요. 웹이라는 환경이 익숙한 만큼 해킹이 익숙하지 않을 때 시도해 보기 좋아요. 드림핵 팀원은 어떤 문제를 추천했을까요?
동일한 문제 파일과 서비스에서 3개의 Flag가 숨어있는 CProxy 시리즈 문제예요. 서로 다른 취약점을 발견해서 각각의 플래그를 얻어야 하기 때문에, 하나씩 해결해 나가는 재미가 있어요. 난이도도 Inject, Forge, Poison 순으로 점점 어려워지기 때문에 쉬운 문제부터 시도해 보는 것이 좋아요.
특히 CProxy:Poison은 웹 캐시 관련 테크닉을 다루는데요. 이 분야를 다루는 워게임 문제 자체가 흔치 않아서 색다른 느낌이었다고 해요. 이 문제를 추천한 팀원은 CProxy:Poison을 계기로 웹 캐시에 대해 더 깊이 공부하게 되어서 유독 기억에 남는다고 했어요. 참고로 Web Hacking Basics Path를 수강한 유저 중 88%는 이 문제를 첫 시도만에 풀었다고 하는데요. 어렵게 느껴질수록 관련 이론을 학습하고 도전해 보는 것도 좋습니다.
리버싱은 단순히 많이 아는 것보다 지금 상황에 어떤게 필요한지 판단하는 것이 중요한 문제가 많아요. 시간을 많이 들여서 반복적으로 코드를 살펴도 해결할 수 있는 문제지만, 더 효율적으로 해결하는 사고력이 필요하기도 해요. 다른 카테고리에 비해 많은 문제가 추천된만큼, 내가 풀어본 문제도 있는지 확인해볼까요?
새싹 문제부터 난이도 순서대로 차근차근 풀었다면 첫 번째로 만날 수 있는 장애물 같은 문제예요. 바이너리 내부에 숨겨진 로직을 디스어셈블(Disassemble, 기계어를 어셈블리어로 바꾸는 작업) 하고 역산하는 방식의 문제들은 많지만, 이 문제는 그 이상을 요구하고 있어요. 단순한 역산이 아니라 컴퓨터 시스템이 실제로 어떻게 동작하는지에 대한 이해를 요구하기 때문인데요. 그만큼 리버싱을 보는 시야를 한 단계 넓혀줄 수 있는 문제이기도 합니다. 매번 풀던 유형이 아닌 조금 색다른 리버싱 문제를 찾고 있는 분, 혹은 리버서로 한 단계 더 성장하고 싶은 분들이 풀어보기 좋은 문제입니다.
동적 라이브러리 로딩에 대한 개념 이해와 이를 자동으로 분석하는 스크립트 작성 능력을 동시에 요구하는 문제예요. 이 문제도 단순 반복 작업으로 풀 수 있지만, 수많은 파일과 코드를 분석하는 것은 효율적이지 않겠죠? 자연스럽게 자동 분석 스크립트를 만들게 되는데요. 직접 스크립트를 만들어 바이너리를 분석해 본 경험이 없다면 입문용으로 도전해 보기 좋아서 추천해요. 공식 풀이가 자세히 작성되어 있기 때문에, 문제를 시도해 보고 자세한 풀이 방법이 궁금하다면 공개된 Writeup을 참고해 보세요!
앞서 언급한 ptrace_block이 컴퓨터에 대한 이해를 요구하는 문제라면 이번 문제는 수학적 지식을 요구하는 문제예요 어떤 연산인지, 그 연산이 어떻게 수행되는지를 하나하나 찾아가는 과정 자체가 재미있어요. 참고로 KAPO CTF 2023에 출제되었던 문제인데요, 실제로 이 문제를 풀었던 팀원은 혼자 분석하다 결국 다른 친구에게 수학적 도움까지 받아서 새벽 2시에야 풀었다는 후일담도 함께 전해줬어요. 난이도가 조금 있지만 그만큼 풀고 나면 확실히 기억에 남는 문제이기도 해요.
카테고리는 리버싱이지만 암호학 지식이 필요하기도 해요. 공개키 암호와 키 교환 알고리즘 Unit을 먼저 학습한다면 도움이 될 수도 있습니다. 비교적 쉬운 multipoint (골드 1) 문제도 있으니, 이번 문제가 너무 어렵다면 쉬운 문제부터 도전해 보는 것을 추천드려요.
C++로 작성된 웹서버 바이너리를 분석하는 문제예요. 리버싱 워게임은 실제 프로그램을 축소해 놓은 것처럼, 프로그램 전체를 분석해 문제를 해결할 수 있도록 설계되어 있어요. 그래서 보통은 사람이 실제로 분석할 수 있는 크기(20~30KB)로 핵심 로직만 남긴 작은 바이너리를 제공하는데요. 이 문제는 그 기준을 훌쩍 뛰어넘어 사람이 전부 분석하기에는 큰, 약 1000KB 바이너리를 제공하고 있어요.
재밌는 점은 압도적인 크기임에도 실제로 플래그를 얻으려면 바이너리 중 일부만 분석하면 된다는 것인데요. 무작정 무겁게 앉아서 오랜 시간 동안 분석에만 파고드는 것이 아니라, 목적 달성에 필요한 부분만 정확히 골라내는 감각을 요구한다는 점에서 인상적인 문제로 뽑았어요. 이 문제를 통해 어느 부분을 분석해야 하는지 판단하는 감각을 익혀보는 것도 좋아요.
시스템 해킹(System Hacking) 문제를 포너블이라고도 해요. 시스템을 완전히 장악한다는 의미로 Pwn을 사용하면서 시스템 해킹 분야를 부르는 이름으로 굳어졌어요. 워게임 문제를 해결할 때는 반드시 하나의 기술만 사용하는 것이 아니에요. 필요에 따라 여러 기술을 함께 사용해야 하고, 그걸 체이닝(Chaining)이라고 합니다.
비교적 쉬운 문제인 validator (브론즈 3)의 리벤지 문제라 문제 파일과 작동 방식이 비슷하게 구성되어 있어요. 하지만 libc 코드를 분석하고 2개의 익스플로잇 테크닉을 매끄럽게 체이닝해야 하는 고난도 문제입니다.
추천한 팀원은 해킹을 제대로 공부한 지 6개월 정도 되었을 때 처음으로 풀었던 고난도 문제라 더 기억에 남는다고 말했어요. 하나의 테크닉만으로는 풀리지 않고 여러 기법을 엮어야 하는 문제기 때문에, 해결했을 때 고난도 문제 특유의 쾌감을 느껴보실 수 있습니다.
암호학 문제는 다른 카테고리와 조금 결이 달라요. 코드를 얼마나 빨리 읽는지 보다 얼마나 알고 있고, 이 구조를 어떻게 바라볼 것인지가 관건인 경우가 많거든요. 논리적으로 파고드는 걸 좋아하거나, 수학을 좋아한다면 암호학과 잘 맞을 가능성이 높아요.
풀이를 보면 쉬운데 막상 풀 때는 풀이 방법을 생각하기 어려운 문제예요. 뉴비들이 도전했다가 고전하기 쉬운 문제라는 평도 있어요. 필요한 핵심 개념 자체는 어렵지 않아서 암호학을 잘 몰라도 기본 개념만 이해하면 충분히 도전할 수 있습니다.
진짜 어려운 건 아이디어를 떠올리는 과정인데요. 복잡한 지식이나 수많은 계산이 필요한 것이 아니라, 문제의 구조를 정확히 관찰하고 핵심 발상을 찾아내는 감각이 중요해요. 그 발상 하나만 찾으면 자연스럽게 플래그를 획득할 수 있게 됩니다. 단순한 개념을 창의적으로 적용해 문제를 해결하는 경험을 준다는 점이 워게임 특유의 재미를 잘 보여주는 문제라고 생각해요. 암호학을 처음 시작한 분들이 도전해 보기 좋습니다.
드림핵 암호학 근본 문제 중 하나라는 짧지만 확실한 평을 받은 문제예요. 이 문제가 특별한 이유는 의도적으로 취약하게 설계된 가상의 난수 생성기가 아니라 실제로 널리 쓰이는 Python의 random 모듈을 다루기 때문이에요. random 모듈의 내부 상태를 복원하고 이후 출력을 예측하는 과정을 다루는 점이 재미있는데요. 이 모듈을 부적절하게 사용할 때 생기는 이 취약점은 CTF·워게임에서 반복적으로 등장해요.
문제를 풀며 익힌 개념과 공격 방법은 한 번 배우고 끝나는 게 아니라, 이후 다른 문제를 풀 때도 활용할 수 있으니 한 번쯤 도전해서 확실하게 익혀보는 것을 추천해요.
이번 게시글에서 열 문제를 소개했지만 드림핵에는 이보다 훨씬 많은 문제가 있어요. 조금 더 도전해 보고 싶은데 어떤 문제부터 시도할지 모르겠다면, 티오리한국 박세준(bpak) 대표가 추천하는 bpak's Pack에도 도전해 보세요!
보안 업계에서 해킹 올림픽이라고 불리는 DEF CON CTF 9회 우승, CODEGATE CTF 5회 우승 경력을 가진 박세준 대표가 직접 골랐고, 단순히 정답을 맞히는 것이 아니라 문제의 맥락과 의도까지 깊이 이해해 볼 수 있습니다. 특히 어떻게 해킹을 처음 시작했는지, 어떤 문제를 왜 골랐는지 더 자세한 이야기도 담고 있으니 문제를 풀기 전에 인터뷰도 읽어 보는 것을 추천해요.
드림핵 팀원이 추천한 문제들은 각각 특정 발상 하나가 전체 풀이에 영향을 주거나, 지금까지 해보지 않았던 방식을 마주한다거나, 여러 테크닉을 체이닝하는 경험을 하는 등 문제를 풀고 난 뒤 배울 점이 남는 문제들이었는데요.
지금 어떤 문제가 유난히 어렵게 느껴진다면 오히려 성장하고 있다는 신호일 수도 있어요. 여러분도 끊임없이 도전해 기억에 남는 문제를 만나보는 건 어떨까요? 오늘 풀어보는 작은 시도가 어느새 여러분의 실력으로 남을지도 몰라요.