상세 컨텐츠

본문 제목

드림핵 시스템 해킹 입문 — 무료 자료만으로 시작하는 루트

보안

by 코드스키 2026. 7. 24. 07:43

본문

 드림핵 시스템 해킹 입문 학습 루트 대표 이미지
드림핵 시스템 해킹 입문 학습 루트 대표 이미지

해킹 동아리에 들어가고 나서 드림핵으로 시스템 해킹 공부를 시작했다. 강의를 들어가려고 로그인했더니 950코인을 내라는 문구가 떠서 잠깐 당황했는데, 알고 보니 드림핵이 2025년 5월부터 유료 구독제로 바뀐 뒤였다. 다행히 Tier 0 Path는 여전히 무료고, 무료로 풀 수 있는 워게임도 수백 개나 남아 있었다.

해킹 공부를 처음 시작하는 사람한테 어디서부터 하냐고 물으면 열에 아홉은 드림핵을 추천한다. 이유는 단순하다. 한국어 콘텐츠가 있어서 처음 한두 달은 모국어로 개념을 잡는 게 압도적으로 빠르고, 강의 → 실습 → CTF로 이어지는 구조가 짜여 있어서 다른 워게임 사이트처럼 문제만 덜렁 던져주지 않는다. 티어 시스템도 도움이 되는데, 처음 시작할 때 가장 어려운 게 사실 "내 실력에 맞는 문제가 뭔지 모르는 것"인데 이걸 플랫폼이 대신 정해준다.

유료화 이후에도 무료로 쓰는 법

2025년 5월 2일부로 드림핵이 유료 구독제(Starter / Pro / Expert)로 바뀌면서, 코인 모아서 강의 사는 방식은 사라졌다. 근데 무료 회원도 Tier 0 Path와 무료로 분류된 워게임은 그대로 풀 수 있고, 입문자가 봐야 할 "Dream Beginners" 같은 기초 콘텐츠도 무료 영역에 포함돼 있다.

처음 가입하면 코인 950개 어쩌고 하는 문구를 보고 결제해야 하나 싶어지는데, 무시해도 된다. 로그인해서 강의 메뉴의 "Dream Beginners" Path부터 듣고, 그다음 System Hacking이나 Web Hacking 입문 강의로 넘어가고, 워게임 메뉴에서 필터로 "무료"를 체크하면 문제 수백 개가 뜬다. 1~2 레벨부터 차근차근 풀면 되고, 막히면 그 문제의 다른 사람 풀이를 보면 된다. 다만 너무 일찍 보면 실력이 안 느니까 30분에서 1시간은 혼자 붙잡고 있다가 보는 게 낫다.

코인 결제가 필요한 강의가 분명 있긴 한데, 입문 단계에서는 굳이 손댈 필요가 없다. 한 학기쯤 무료 자료로 진도를 빼면서 자기가 어느 분야로 갈지 정한 다음에 결제를 고려하는 게 효율적이다.

시스템, 웹, 리버싱 중에 뭘 고를까

드림핵에는 큰 트랙이 세 개 있다. System Hacking(Pwnable)은 메모리 취약점, 버퍼오버플로우, ROP, 힙 익스플로잇을 다루고 C와 어셈블리 지식이 필요한데, CTF의 꽃이라 불리는 영역이다. Web Hacking은 SQL Injection, XSS, CSRF, SSRF, 인증 우회 위주고 HTML/JS/HTTP 기초만 있으면 진입할 수 있어서 입문자한테 가장 친절한 편이다. Reverse Engineering은 바이너리 분석과 디버거(gdb, IDA, Ghidra) 활용이 핵심이라 어셈블리 읽는 게 관건이다.

시스템 해킹부터 시작한 건 학교에서 시스템 프로그래밍 수업을 들으면서 C 기본기가 있었고 어셈블리도 배우는 중이라 자연스럽게 이어졌기 때문이다. 웹은 다른 곳에도 자료가 많아서 굳이 드림핵이 아니어도 됐고, 리버싱은 도구 세팅에 시간이 걸릴 것 같아서 일단 미뤄뒀다.

처음 한 달에 반복해서 나오는 개념들

시스템 해킹 입문 단계에서 이게 안 잡혀 있으면 워게임 풀 때마다 멈추게 되는 개념들이 있다.

메모리 레이아웃부터. 스택은 위에서 아래로(높은 주소에서 낮은 주소로) 자라고, 힙은 반대로 자란다. 지역 변수는 스택에 잡히는데, 이걸 넘치게 쓰면 위쪽에 있는 저장된 RBP나 리턴 주소를 덮어쓸 수 있다는 게 버퍼오버플로우의 핵심 직관이다.

높은 주소 ┌─────────────┐
         │   Stack     │  ← 함수 호출, 지역 변수
         │     ↓       │
         │             │
         │     ↑       │
         │   Heap      │  ← malloc, 동적 할당
         ├─────────────┤
         │ BSS / Data  │  ← 전역 변수
         ├─────────────┤
         │   Text      │  ← 코드(명령어)
낮은 주소 └─────────────┘

그리고 현대 바이너리는 그냥 BOF가 되지 않는다. 기본적으로 몇 가지 보호 기법이 켜져 있어서다. NX(No-eXecute)는 스택을 실행 불가능하게 만들어서 셸코드를 스택에 올려도 실행이 안 되고(그래서 ROP로 우회한다), ASLR은 라이브러리·스택·힙 주소를 매번 랜덤 배치해서 정보 유출(leak)로 우회해야 하고, Stack Canary는 함수 진입 시 스택에 랜덤 값을 박아두고 리턴 직전에 검증해서 덮어쓰면 그냥 abort시켜버린다. PIE는 코드 자체를 랜덤 주소에 두는 거고 역시 leak이 필요하다. 이 네 개가 끝없이 나온다. 처음에는 일부러 보호 기법을 전부 끈(gcc -fno-stack-protector -no-pie -z execstack ...) 바이너리로 BOF의 원리부터 익히고, 그다음에 보호 기법을 하나씩 켜가면서 우회법을 배우는 순서가 맞는 것 같다.

도구는 gdb에 pwndbg 확장을 얹은 걸 기본으로 쓰고 있다. pwndbg가 스택·레지스터·디스어셈블을 한 화면에 정리해서 보여줘서 처음 배울 때 거의 필수다. 익스플로잇 짤 때는 pwntools(from pwn import *)가 표준이고, 바이너리에 어떤 보호 기법이 켜져 있는지는 checksec 한 줄로 확인한다. 디스어셈블러는 처음엔 무료인 Ghidra로 충분하다.

처음 시작하는 사람한테

드림핵 켜고 950코인 보고 좌절했던 얘기를 친구한테 했더니 "그냥 무료 필터 켜고 풀면 되는데 ㅋㅋ"라는 답이 돌아왔고, 그 말이 맞았다. 입문자한테 진짜 필요한 건 결제가 아니라 그냥 꾸준히 앉아 있는 시간이다. 책 사서 처음부터 끝까지 읽고 시작하려고 하면 시작 자체를 못 하게 되는 것 같다. 가입하고 Tier 0 Path 클릭해서 강의 하나 들으면서 모르는 단어를 검색하는 것만 반복해도 한 달 뒤엔 뭔가 풀리는 게 보인다.

이번 학기 목표는 Pwnable 1~3 레벨 워게임을 다 풀고 시스템 해킹 강의 한 코스를 완주하는 거다. 화이트햇 스쿨 모집까지 남은 기간 동안 어디까지 갈 수 있는지가 지금 관심사다.

참고

  • Dreamhack 공식 — Dream Beginners Path
  • 드림핵 유료 구독 서비스 관련 공지 (2025년 5월)

무료 자료로 시작할 때도 순서가 필요했다

문제를 많이 푸는 것보다 C 실행 구조, 어셈블리, 디버거, 메모리 보호기법을 한 줄로 연결하는 게 먼저였다. 드림핵 Path의 전체 구성을 지도처럼 보고, 무료로 열린 단원과 워게임을 골라 작은 실습을 반복했다. 막힌 명령어는 pwntools 문서와 Linux man page에서 원래 의미를 확인했다.

Dreamhack System Hacking Basics 학습 Path
Dreamhack System Hacking Basics 학습 Path
Dreamhack 워게임 목록
Dreamhack 워게임 목록
pwntools 공식 문서
pwntools 공식 문서
Linux man-pages 프로젝트 문서 색인
Linux man-pages 프로젝트 문서 색인

내가 잡은 학습 루프

  1. 짧은 C 프로그램을 직접 컴파일하고 보호기법을 확인한다.
  2. gdb에서 입력 전후 레지스터와 스택을 본다.
  3. 익스플로잇 스크립트는 pwntools로 자동화하되 각 I/O를 설명할 수 있게 한다.
  4. 풀이를 본 뒤에는 새 바이너리에서 같은 원리를 다시 적용한다.

무료·유료 여부는 자주 바뀌므로 특정 강의가 계속 무료라고 단정하지 않았다. Path 전체를 한 번에 결제하기보다 공개 자료로 기초를 확인한 다음, 설명이 필요한 구간에 맞춰 강의나 Unit을 고르는 편이 효율적이었다.

공식 자료

관련글 더보기