Step 112. Metasploitable2 설치와 격리 랩 구성 — 안전한 사격장의 완성
Level 2 — 보안 입문과 공격 스킬 기초 | 난이도 ★★★☆☆ | 예상 소요 시간 2~3시간 (다운로드 시간 제외)
전제: Step 111을 마치고 Kali VM이 부팅된다. VirtualBox의 네트워크 모드(NAT, Host-only) 개념을 안다. 인터넷 연결 필요(MS2 다운로드).
- 준비물: VirtualBox, Kali VM(Step 111), 디스크 여유 10GB 이상, 인터넷 연결.
- 주의: ⚠️ 이 챕터의 실습은 내 랩·합법 플랫폼 전용입니다. 허가 없는 시스템에 적용하면 범죄입니다. 오늘 들이는 Metasploitable2는 일부러 취약하게 만든 서버입니다 — 격리 설정이 오늘의 본체이며, 설치보다 중요합니다. 집필 환경에는 VirtualBox와 MS2가 없어 설치·구동 화면은 전부 "화면 예시/출력 예시"입니다.
공격 연습에는 표적이 필요합니다. 그런데 표적을 아무 데서나 구할 수는 없습니다 — 남의 서버는 범죄이고, 내 실제 서버는 위험합니다. 답은 일부러 취약하게 만들어진 연습용 가상머신, Metasploitable2(이하 MS2)입니다. 오늘은 이 표적을 들이되, 절대 바깥 세계와 닿지 않는 격리된 사격장 안에 들입니다. 설치 절차 자체는 간단하고, 진짜 배울 것은 네트워크 격리의 설계와 검증입니다.
1. 학습 목표
이 챕터를 끝내면 다음을 할 수 있습니다:
- 의도적 취약 VM이 무엇이며 왜 존재하는지 설명한다
- VirtualBox의 네트워크 모드(NAT / Host-only / NAT Network)를 구분해 고른다
- Kali와 MS2를 Host-only 네트워크로 묶어 격리 랩을 만든다
- MS2가 인터넷에 나가지 못하는지 실험으로 검증한다
- "격리 확인 없이 공격 실습 없음" 원칙을 내 랩의 규칙으로 세운다
2. 배경 지식 — 오늘의 도구와 개념
오늘의 도구 한눈에 보기
| 구분 | 내용 |
|---|---|
| 언어·환경 | VirtualBox + Kali VM + Metasploitable2 VM |
| 오늘의 명령 | MS2 안에서 ip a(IP 확인), ping(통신·격리 검증), Kali에서 ping, ip a |
| 필요한 개념 | 의도적 취약 VM, Host-only 네트워크, NAT Network, 격리 검증, 랩 윤리 |
| 오늘의 산출물 | Kali ↔ MS2만 통신되는 격리 랩 + 양쪽 VM의 스냅샷 |
2-1. Metasploitable2 — 일부러 약하게 만든 서버
Metasploitable2는 보안 교육을 위해 제작된 우분투 기반 가상머신으로, 수십 개의 알려진 취약점이 의도적으로 심어져 있습니다. 오래된 FTP 서버, 기본 비밀번호, 패치되지 않은 웹 서비스 — 실전에서 익혀야 할 공격 기법의 연습 문제집이 OS 통째로 된 것입니다.
이런 VM이 존재하는 이유는 단순합니다. 합법적으로 공격당할 수 있는 시스템은 "공격하라고 만든 시스템"뿐이기 때문입니다. 이 책의 Level 2 후반 실습은 전부 이 MS2를 상대로 진행됩니다.
2-2. 왜 격리가 생명줄인가
MS2의 취약점은 "연습용"이라는 꼬리표가 붙어도 기술적으로는 진짜 취약점입니다. 만약 이 VM이 인터넷이나 집 네트워크에 노출되면 어떻게 될까요?
- 인터넷의 자동 스캔 봇은 몇 분 안에 이 VM을 발견하고 침투합니다
- 침투한 공격자가 이 VM을 거점으로 삼아 다른 곳을 공격하면, 그 공격의 출발지는 여러분의 집 IP가 됩니다
- 집 네트워크에 노출되면 같은 네트워크의 다른 기기(가족의 PC, NAS)까지 위험해집니다
즉 취약 VM을 노출하는 것은 "내가 당하는" 문제를 넘어 내가 공격의 발판을 제공하는 사고입니다. 그래서 오늘의 완료 기준에는 "설치됐다"가 아니라 "바깥과 차단됐음을 검증했다"가 들어갑니다.
2-3. VirtualBox 네트워크 모드 지도
| 모드 | VM→인터넷 | VM↔호스트 | VM↔다른 VM | 용도 |
|---|---|---|---|---|
| NAT | 가능 | 제한적 | 불가 (VM마다 별도 망) | 업데이트, 다운로드 |
| Host-only | 불가 | 가능 | 가능 | 격리 랩 — 오늘의 선택 |
| NAT Network | 가능 | 제한적 | 가능 | 인터넷이 필요한 다중 VM 랩 |
| Bridged | 가능 | 가능 | 가능(집 네트워크에 직접 노출) | ⚠️ 취약 VM에 사용 금지 |
Host-only는 VirtualBox가 내 PC 안에 만드는 가상 스위치입니다. 이 스위치에 연결된 VM끼리와, VM과 호스트 사이만 통신되고 인터넷으로는 나가지 못합니다. 취약 VM을 위한 완벽한 사격장입니다.
한 가지 불편이 있습니다 — Host-only에만 연결된 Kali는 인터넷이 안 됩니다. 해결책은 Kali에 어댑터를 두 개 다는 것입니다: 어댑터1은 NAT(인터넷용), 어댑터2는 Host-only(랩 통신용). MS2는 어댑터 하나, Host-only만입니다. 이 비대칭이 설계의 핵심입니다 — 공격자 측은 세상을 보지만, 표적은 갇혀 있습니다.
2-4. 랩 도면
오늘 완성할 구조를 먼저 그립니다:
인터넷
▲
(NAT 어댑터)
│
┌─────────────┐ │ ┌──────────────────┐
│ Kali VM │───┘ │ MS2 VM │
│ 어댑터1: NAT │ 어댑터1: Host-only│
│ 어댑터2: Host-only │ (인터넷 없음) │
└──────┬──────┘ └────────┬─────────┘
└──── Host-only 가상 랜 ─┘
(192.168.56.x 대역)
호스트 PC 안에서만 통신
3. 따라 하기
3-1. Metasploitable2 다운로드
- 브라우저에서 SourceForge의 Metasploitable2 프로젝트 페이지를 엽니다 (검색: "metasploitable2 sourceforge")
- 압축 파일(약 800MB~1GB, zip)을 다운로드
- 압축 해제 → VMware 형식의 파일들(
.vmx,.vmdk)이 나옵니다
화면 예시 — 압축 해제 후:
Metasploitable2-Linux/
├── Metasploitable.vmx ← VM 설정 파일
├── Metasploitable.vmdk ← 가상 디스크 (본체)
└── ...
읽는 법: MS2는 VMware 형식으로 배포되지만, VirtualBox는 .vmdk 가상 디스크를 그대로 읽을 수 있습니다. 변환 없이 "새 VM을 만들면서 기존 디스크를 연결"하는 방식으로 등록합니다.
3-2. VirtualBox에 MS2 등록
- VirtualBox 관리자 → 새로 만들기
- 이름:
Metasploitable2, 종류:Linux, 버전:Ubuntu (64-bit)— 안 뜨면Other Linux (64-bit) - 메모리: 1024MB (MS2는 가볍습니다)
- 하드 디스크: "기존 가상 하드 디스크 파일 사용" 선택 → 방금 푼
Metasploitable.vmdk지정 - 생성 완료 후, 아직 시작하지 마세요 — 네트워크 설정이 먼저입니다
화면 예시 — 생성 요약:
이름: Metasploitable2
종류: Linux (Ubuntu 64-bit)
메모리: 1024 MB
하드 디스크: Metasploitable.vmdk (기존 파일, 8GB)
3-3. Host-only 네트워크 준비
VirtualBox가 제공하는 가상 랜 카드를 확인합니다.
- VirtualBox 관리자 메뉴 → 파일 → 도구 → 네트워크 관리자 (버전에 따라 "호스트 네트워크 관리자")
- VirtualBox Host-Only Ethernet Adapter가 있는지 확인 — 없으면 만들기
- DHCP 서버가 켜져 있는지 확인 (보통 기본 켜짐, 대역 예:
192.168.56.x)
화면 예시:
어댑터: VirtualBox Host-Only Ethernet Adapter
IPv4 주소: 192.168.56.1 (이것은 호스트 PC의 주소)
DHCP 서버: 사용 — 192.168.56.101부터 할당
읽는 법: 192.168.56.1은 여러분의 호스트 PC가 이 가상 랜 안에서 갖는 주소이고, VM들은 DHCP로 101번부터 받습니다. 이 대역은 VirtualBox의 기본값이며, 여러분 환경에서는 다를 수 있습니다 — 중요한 것은 "사설 대역 + 인터넷 미연결" 구조입니다.
3-4. 두 VM의 네트워크 설정
Kali (설정 → 네트워크):
- 어댑터1:
NAT(기존 그대로 — 인터넷용) - 어댑터2:
어댑터 사용체크 →호스트 전용 어댑터(Host-only Adapter)선택
Metasploitable2 (설정 → 네트워크):
- 어댑터1:
호스트 전용 어댑터(Host-only Adapter) - NAT는 달지 않습니다 — 이것이 격리의 본체입니다
주의: 어댑터 목록에 Bridged(브리지)는 절대 고르지 마세요. 브리지는 VM을 집 네트워크에 직접 노출시킵니다 — 취약 VM에게는 사고의 시작입니다.
3-5. MS2 부팅과 로그인
MS2를 시작합니다. 화려한 그래픽 화면이 아니라 검은 텍스트 콘솔이 뜹니다 — MS2는 서버이므로 GUI가 없습니다.
화면 예시 — 부팅 완료 후:
Metasploitable2 login: msfadmin
Password: msfadmin
기본 계정 msfadmin/msfadmin으로 로그인합니다 (비밀번호는 입력해도 화면에 표시되지 않습니다). 이 기본 계정은 격리된 랩 안에서만 쓰이는 연습용이므로 바꾸지 않고 둡니다 — 단, 이것이 허용되는 이유가 "격리 때문"임을 이해하고 넘어가세요.
3-6. IP 확인과 통신 테스트
입력 (MS2 콘솔)
ip a
출력 예시 (집필 환경 미실행 — 여러분 화면의 주소로 읽으세요):
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> ...
inet 192.168.56.101/24 brd 192.168.56.255 scope global eth0
읽는 법: eth0에 192.168.56.101이 배정됐습니다. 이것이 MS2의 랩 주소 — 앞으로의 모든 실습에서 "MS2_IP"라 부를 대상입니다. 여러분의 주소는 다를 수 있으니 여기에 적힌 것이 아니라 여러분 화면의 것을 메모하세요.
이제 Kali에서 통신을 확인합니다.
입력 (Kali 터미널)
ping -c 4 192.168.56.101
출력 예시:
PING 192.168.56.101 (192.168.56.101) 56(84) bytes of data.
64 bytes from 192.168.56.101: icmp_seq=1 ttl=64 time=0.543 ms
...
4 packets transmitted, 4 received, 0% packet loss
읽는 법: 0% packet loss — Kali에서 MS2가 보입니다. 사격장의 표적이 사정거리 안에 들어왔습니다.
3-7. 격리 검증 — 오늘의 가장 중요한 명령
표적이 보이는 것만으로는 부족합니다. 표적이 바깥을 못 보는지를 확인해야 오늘이 끝납니다.
입력 (MS2 콘솔)
ping -c 3 8.8.8.8
ping -c 3 google.com
출력 예시 (격리가 제대로 된 정상 화면):
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss
ping: google.com: Temporary failure in name resolution
읽는 법: 역설적이지만, 100% packet loss가 오늘의 성공 메시지입니다. MS2는 구글의 DNS 서버(8.8.8.8)에도, 도메인 이름 해석에도 닿지 못합니다 — 완전히 갇혀 있습니다. 만약 여기서 응답이 온다면 네트워크 설정이 잘못된 것이니(브리지나 NAT가 달린 것), 지금 당장 VM을 끄고 3-4로 돌아가세요.
3-8. 스냅샷 — 랩 완성 상태 보존
- MS2와 Kali를 정상 종료
- 각 VM에서 스냅샷 촬영:
- Kali:
랩 연결 완료(어댑터2 추가 상태) - MS2:
MS2 클린 상태(첫 부팅, 격리 검증 완료)
- Kali:
왜: 이 스냅샷은 앞으로의 모든 공격 실습의 출발선입니다. 실습으로 MS2가 엉망이 되어도(그리고 그것이 이 VM의 존재 이유입니다), 이 스냅샷 하나면 "검증된 격리 랩"으로 몇 초 만에 돌아옵니다.
4. 미션과 연습문제
미션 — 격리 랩 검증서 작성
다음 항목이 담긴 검증서를 작성하세요:
- 두 VM의 네트워크 어댑터 구성 표 (Kali: NAT + Host-only / MS2: Host-only만)
- MS2의
ip a출력에서 랩 IP 부분 인용 - Kali→MS2
ping결과 인용 (성공 — 0% loss) - MS2→인터넷
ping결과 인용 (실패 — 100% loss) - 호스트 PC→MS2
ping결과 (윈도우에서ping 192.168.56.101— Host-only는 호스트와도 통하므로 성공이 정상) - 양쪽 스냅샷 이름과 시각
- 한 줄 선언: "나는 격리가 검증되지 않은 취약 VM에 어떤 공격도 하지 않는다."
스스로 검증하는 법: 3번은 성공, 4번은 실패 — 이 대비가 인용으로 남아 있으면 완성입니다. 이 검증서는 랩의 "안전 인증서"입니다.
연습문제
문제 1. MS2 같은 의도적 취약 VM을 인터넷에 노출했을 때 일어날 수 있는 피해를 두 가지 이상 말해 보세요 — "내 VM이 털린다"를 넘어서는 관점으로.
문제 2. Kali에는 NAT + Host-only 두 개를 달고 MS2에는 Host-only 하나만 다는 이유를, 이 비대칭이 만드는 안전 구조의 관점에서 설명해 보세요.
문제 3. ping 8.8.8.8은 실패하는데 ping 192.168.56.1(호스트)은 성공하는 MS2가 있습니다. 이 VM의 네트워크 모드는 무엇이며, 왜 그렇게 판단하나요?
문제 4. VirtualBox의 Bridged 모드를 취약 VM에 쓰면 안 되는 이유를, 그 모드의 동작 방식과 연결해 설명해 보세요.
5. 모범 답안과 완료 기준
미션 모범 답안
검증서 예시 (형식 참고용 — IP와 시각은 여러분 환경의 것으로):
[격리 랩 검증서]
1. 네트워크 구성
- Kali: 어댑터1 NAT / 어댑터2 Host-only
- MS2: 어댑터1 Host-only (NAT 없음)
2. MS2 랩 IP: inet 192.168.56.101/24 (eth0)
3. Kali→MS2: 4 packets transmitted, 4 received, 0% packet loss
4. MS2→8.8.8.8: 3 packets transmitted, 0 received, 100% packet loss
MS2→google.com: Temporary failure in name resolution
5. 호스트→MS2: 응답 있음 (Host-only 정상 동작)
6. 스냅샷: Kali "랩 연결 완료", MS2 "MS2 클린 상태" (2026-09-XX)
7. 선언: 격리 미검증 취약 VM에는 어떤 공격도 하지 않는다.
검증하는 법: ① Kali→MS2 성공과 MS2→인터넷 실패가 나란히 인용됐는가. ② MS2에 NAT 어댑터가 없음이 표에서 확인되는가. ③ 선언문이 있는가.
연습문제 해답
문제 1 해답. 첫째, 침투한 외부 공격자가 이 VM을 거점(점프 서버)으로 삼아 제3자를 공격하면 공격의 출발 IP가 여러분의 집이 되어 법적 책임 문제로 이어질 수 있습니다. 둘째, 같은 네트워크에 노출되면 취약 VM이 가족의 다른 기기를 공격하는 발판이 됩니다. 셋째, VM 안에 연습하며 저장해 둔 기록·키·스크립트가 유출됩니다. "연습용" 꼬리표는 공격자에게 아무 의미가 없습니다.
문제 2 해답. 랩 운영에는 인터넷이 필요합니다(도구 업데이트, 자료 조회) — 그 필요는 공격자 측(Kali)에만 있습니다. 표적(MS2)이 인터넷에 닿을 이유는 없습니다. 그래서 Kali는 NAT(바깥) + Host-only(랩)의 이중 구성을 갖고, MS2는 Host-only 단일 구성으로 바깥 길 자체를 물리적으로 부재하게 만듭니다. "표적의 격리를 설정이 아니라 연결의 부재로 보장하는 것"이 이 설계의 요점입니다.
문제 3 해답. Host-only 모드입니다. Host-only는 호스트 PC와 같은 가상 랜 안의 VM들까지만 통신하고 인터넷 라우팅이 없기 때문에, 8.8.8.8(인터넷)은 실패하고 192.168.56.1(호스트의 가상 랜 주소)은 성공하는 것이 이 모드의 정상 동작입니다.
문제 4 해답. Bridged 모드는 VM이 호스트의 물리 네트워크 카드를 통해 집 네트워크에 직접 연결된 독립 기기처럼 행동하게 합니다 — 공유기에서 IP를 직접 받고, 같은 네트워크의 모든 기기와 대등하게 통신합니다. 취약 VM이 이 상태가 되면 "랩 안의 표적"이 아니라 "우리 집 네트워크에 접속된 구멍 난 서버"가 되며, 공유기 설정에 따라서는 외부 노출로까지 이어질 수 있습니다.
완료 기준 체크리스트
- [ ] MS2를 다운로드해 VirtualBox에 등록했다
- [ ] Host-only 네트워크 어댑터의 존재와 대역을 확인했다
- [ ] Kali는 NAT + Host-only, MS2는 Host-only만으로 구성했다
- [ ] MS2에
msfadmin/msfadmin으로 로그인하고ip a로 랩 IP를 확인했다 - [ ] Kali→MS2
ping성공을 확인했다 - [ ] MS2→인터넷
ping실패(100% loss)를 확인했다 - [ ] 양쪽 VM의 스냅샷을 찍었다
- [ ] 미션: 격리 랩 검증서를 작성했다
6. 흔한 실수와 해결
벽 1. MS2가 IP를 못 받아요 (ip a에 eth0 주소가 없음)
증상 (출력 예시): eth0에 inet 줄이 없거나 192.168.56.x가 아닌 다른 대역입니다.
원인: 대부분 Host-only 네트워크의 DHCP가 꺼져 있거나, 어댑터가 Host-only로 안 잡혀 있습니다.
해결: ① VirtualBox 네트워크 관리자에서 Host-only 어댑터의 DHCP 서버가 켜져 있는지 확인. ② MS2 설정 → 네트워크에서 연결 대상이 정확히 그 어댑터인지 확인. ③ 그래도 안 되면 MS2에서 sudo /etc/init.d/networking restart 후 ip a 재확인.
벽 2. Kali에서 MS2로 ping이 안 가요
증상 (출력 예시): 100% packet loss (Kali→MS2 방향).
원인 후보 셋: ① Kali의 어댑터2(Host-only)가 VM 실행 중에 추가돼 인식이 안 됨. ② 두 VM이 서로 다른 Host-only 어댑터를 봄. ③ MS2가 아직 부팅 중.
해결: Kali를 완전 종료 후 재시작(어댑터는 부팅 시 인식), Kali에서 ip a로 192.168.56.x 주소가 잡혔는지 먼저 확인하고, 두 VM의 Host-only 어댑터 이름이 같은지 대조하세요.
벽 3. Host-only를 쓰니 Kali에서 인터넷이 안 돼요
증상: Kali에서 ping 8.8.8.8이 실패합니다.
원인: Kali의 어댑터1(NAT)이 꺼져 있거나 빠져 있습니다. Host-only만으로는 인터넷이 안 되는 것이 정상입니다 — 그것이 이 모드의 존재 이유입니다.
해결: Kali 설정 → 네트워크 → 어댑터1이 NAT, 어댑터2가 Host-only인 이중 구성을 확인하세요. 어댑터2를 Host-only로 바꾸면서 어댑터1을 덮어쓴 경우가 흔합니다.
벽 4. MS2 로그인이 안 돼요
증상: msfadmin을 쳐도 Login incorrect가 반복됩니다.
원인: 대부분 입력 실수 — 리눅스 콘솔은 비밀번호를 화면에 아무것도 표시하지 않습니다. 입력이 안 된 것처럼 보여 다시 치다가 틀리는 경우입니다.
해결: 비밀번호 msfadmin을 조용히 치고 Enter. 그래도 실패하면 키보드 레이아웃(한/영 상태)을 확인하세요. MS2 콘솔은 영문 자판 기준입니다.
벽 5. "잠깐 인터넷 연결해서 MS2를 업데이트하면 안 돼요?"
증상: MS2가 오래된 우분투라 업데이트 욕심이 납니다.
원인: 좋은 습관이 잘못 적용된 경우입니다.
해결: 안 됩니다 — 두 가지 이유로. ① MS2의 취약점은 연습 자산이므로 패치하면 표적이 사라집니다. ② 업데이트하려면 NAT를 달아야 하고, 그 순간 취약 VM이 인터넷에 노출됩니다. MS2는 "낡은 채로, 갇힌 채로"가 설계 의도입니다. 업데이트는 Kali 쪽에서만 하세요.
7. 정리
오늘의 개념
| 개념 | 한 줄 설명 |
|---|---|
| Metasploitable2 | 연습용으로 일부러 취약하게 만든 우분투 기반 VM |
| 의도적 취약 VM | 합법적으로 공격할 수 있는 유일한 종류의 표적 |
| Host-only 네트워크 | 호스트 PC 안에서만 통하는 가상 랜 — 인터넷 차단 |
| 격리 검증 | 취약 VM이 바깥과 차단됐음을 실험(100% loss)으로 증명하는 절차 |
| 이중 어댑터 | Kali: NAT(바깥)+Host-only(랩) / MS2: Host-only만 — 비대칭 설계 |
| 랩 윤리 | 격리가 검증되기 전에는 어떤 공격도 시작하지 않는다 |
오늘의 명령어
| 명령 | 하는 일 |
|---|---|
ip a |
VM의 IP 주소 확인 (랩 IP 메모) |
ping -c 4 대상IP |
랩 안 통신 확인 (성공해야 함) |
ping -c 3 8.8.8.8 |
인터넷 차단 확인 (실패해야 정상) |
ping 도메인 |
이름 해석 차단 확인 (실패해야 정상) |
명령어보다 중요한 감각
오늘 랩의 완성을 알린 메시지는 역설적이게도 실패의 메시지였습니다 — 100% packet loss. 보안에서 "되지 않음의 증명"은 "됨의 증명"만큼 중요하고, 그것은 추정이 아니라 실험으로만 얻을 수 있습니다.
이제 사격장이 완성됐습니다. 한쪽에는 도구 가득한 Kali, 다른 한쪽에는 취약점 가득한 MS2, 그 사이에는 내 PC 안에서만 통하는 가상 랜. 그리고 둘을 감싸는 마지막 벽은 설정이 아니라 여러분의 규칙입니다 — 격리 미검증, 공격 불개시.
전부 체크되면 Step 112 완료입니다. 사이드바의 체크박스를 눌러 진도를 저장하세요.