정보 보안/모의해킹

버퍼 오버플로우 실습 환경 구성 - Docker 설치부터 컨테이너 생성까지

y0.0ns 2026. 7. 8. 03:36

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비트 익스플로잇을 진행한다.

 


참고 자료: