1. 들어가며
버퍼 오버플로우를 직접 실습해보고 싶었는데, 내 PC에 바로 설치하기엔 부담스러워서 Docker 컨테이너를 활용했다. 실습 환경 특성상 보호 기법을 비활성화해야 하는데, 컨테이너 안에서 하면 내 PC에 영향이 없어서 마음 편하게 진행할 수 있었다. Docker 설치부터 컨테이너 생성까지 막히는 부분이 꽤 있었는데 그 과정을 그대로 정리해봤다.
2. Docker가 뭔지
Docker = 컨테이너 기반 가상화 도구
컨테이너 = 내 PC 안에 독립된 가상 환경
→ 내 PC에 영향 없이 실습 가능
→ 망가지면 그냥 삭제하고 새로 만들면 됨
3. 사전 확인 - 가상화 활성화 여부
Docker 설치 전에 가상화가 활성화되어 있는지 확인해야 한다.
확인 방법:
작업관리자 열기 (Ctrl+Shift+Esc)
→ 성능 탭
→ CPU 선택
→ 우측 하단 "가상화: 사용" 확인

가상화가 비활성화되어 있으면 BIOS에서 Intel VT-x 또는 AMD-V를 활성화해야 한다.
4. WSL2 설치
Docker Desktop은 내부적으로 WSL2(Windows Subsystem for Linux)가 필요하다.
WSL2란?
윈도우 안에서 리눅스를 실행할 수 있게 해주는 기능. Docker가 내부적으로 리눅스 기반이라 WSL2가 필요하다.
PowerShell을 관리자 권한으로 실행 후 입력:
wsl --install
완료 후 재부팅 필수.
5. Docker Desktop 설치
공식 사이트에서 다운로드:
https://www.docker.com/products/docker-desktop/
CPU 종류별 다운로드 버전:
| CPU | 버전 |
| Intel Core, AMD Ryzen | AMD64 |
| 퀄컴 스냅드래곤 (2024년 이후 일부 노트북) | ARM64 |
AMD64는 CPU 제조사 이름이 아니라 64비트 명령어 아키텍처 이름이다. Intel CPU도 같은 방식을 채택해서 Intel이든 AMD든 둘 다 AMD64를 사용한다.
설치 시 체크박스:
✅ Use WSL 2 instead of Hyper-V (반드시 체크)
Docker Subscription Service Agreement

Docker Desktop을 처음 실행하면 아래와 같은 구독 동의 화면이 뜬다.
개인 실습 목적이라면 Accept 를 누르면 무료로 사용 가능하다.
6. Docker 설치 확인
CMD를 새로 열고:
docker --version
docker run hello-world
정상 출력:
Hello from Docker!
This message shows that your installation appears to be working correctly.

7. 실습용 컨테이너 생성
버퍼 오버플로우 실습에는 ASLR을 비활성화할 수 있는 특권 모드 컨테이너가 필요하다.
docker run -it --privileged --name bof_practice ubuntu:20.04 /bin/bash
명령어 설명:
docker run : 컨테이너 생성 및 실행
-it : 터미널 입출력 활성화
--privileged : 특권 모드 (ASLR 비활성화 가능)
--name bof_practice : 컨테이너 이름 지정
ubuntu:20.04 : Ubuntu 20.04 이미지 사용
/bin/bash : bash 쉘 실행
실행 후 프롬프트가 아래처럼 바뀌면 컨테이너 안으로 들어온 것이다:

8. 필요한 도구 설치
apt-get update
apt-get install -y gcc gdb python3 python3-pip vim gcc-multilib
pip3 install pwntools ROPgadget
설치 항목 설명:
gcc : C언어 컴파일러
gdb : 메모리 디버거
python3 : 익스플로잇 페이로드 생성
gcc-multilib: 32비트 컴파일 지원
pwntools : 익스플로잇 전용 파이썬 라이브러리
ROPgadget : ROP 가젯 검색 도구 (64비트 익스플로잇에 필요)

9. ASLR 비활성화
echo 0 > /proc/sys/kernel/randomize_va_space
cat /proc/sys/kernel/randomize_va_space
0 이 출력되면 ASLR 비활성화 성공이다.
ASLR이란?
실행할 때마다 메모리 주소를 랜덤으로 바꾸는 보안 기법. 실습에서는 주소를 고정시켜야 익스플로잇이 가능하므로 비활성화한다.

10. 컨테이너 재접속 방법
Docker Desktop을 껐다가 다시 실행할 때:
docker start bof_practice
docker exec -it bof_practice /bin/bash
⚠️ 컨테이너를 재시작하면 ASLR이 다시 활성화될 수 있으니 재접속 후 반드시 확인할 것.
11. 마무리
이제 버퍼 오버플로우 실습 환경이 준비됐다. 다음 글에서는 실제로 취약한 C 코드를 작성하고 32비트, 64비트 익스플로잇을 진행한다.
참고 자료:
'정보 보안 > 모의해킹' 카테고리의 다른 글
| SQL 인젝션 실습 2편 - DVWA Low 레벨 공격 (0) | 2026.07.15 |
|---|---|
| SQL 인젝션 실습 1편 - DVWA 환경 구성 (Docker) (0) | 2026.07.14 |
| 버퍼 오버플로우 실습 2편 - 32비트/64비트 익스플로잇 과정 (0) | 2026.07.08 |
| Burp suite(버프스위트) 설치 및 기본 설정 (0) | 2025.04.02 |