Step 112. Metasploitable2 설치와 격리 랩 구성 — 안전한 사격장의 완성

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 다운로드

  1. 브라우저에서 SourceForge의 Metasploitable2 프로젝트 페이지를 엽니다 (검색: "metasploitable2 sourceforge")
  2. 압축 파일(약 800MB~1GB, zip)을 다운로드
  3. 압축 해제 → VMware 형식의 파일들(.vmx, .vmdk)이 나옵니다

화면 예시 — 압축 해제 후:

Metasploitable2-Linux/
├── Metasploitable.vmx     ← VM 설정 파일
├── Metasploitable.vmdk    ← 가상 디스크 (본체)
└── ...

읽는 법: MS2는 VMware 형식으로 배포되지만, VirtualBox는 .vmdk 가상 디스크를 그대로 읽을 수 있습니다. 변환 없이 "새 VM을 만들면서 기존 디스크를 연결"하는 방식으로 등록합니다.

3-2. VirtualBox에 MS2 등록

  1. VirtualBox 관리자 → 새로 만들기
  2. 이름: Metasploitable2, 종류: Linux, 버전: Ubuntu (64-bit) — 안 뜨면 Other Linux (64-bit)
  3. 메모리: 1024MB (MS2는 가볍습니다)
  4. 하드 디스크: "기존 가상 하드 디스크 파일 사용" 선택 → 방금 푼 Metasploitable.vmdk 지정
  5. 생성 완료 후, 아직 시작하지 마세요 — 네트워크 설정이 먼저입니다

화면 예시 — 생성 요약:

이름: Metasploitable2
종류: Linux (Ubuntu 64-bit)
메모리: 1024 MB
하드 디스크: Metasploitable.vmdk (기존 파일, 8GB)

3-3. Host-only 네트워크 준비

VirtualBox가 제공하는 가상 랜 카드를 확인합니다.

  1. VirtualBox 관리자 메뉴 → 파일 → 도구 → 네트워크 관리자 (버전에 따라 "호스트 네트워크 관리자")
  2. VirtualBox Host-Only Ethernet Adapter가 있는지 확인 — 없으면 만들기
  3. 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

읽는 법: eth0192.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. 스냅샷 — 랩 완성 상태 보존

  1. MS2와 Kali를 정상 종료
  2. 각 VM에서 스냅샷 촬영:
    • Kali: 랩 연결 완료 (어댑터2 추가 상태)
    • MS2: MS2 클린 상태 (첫 부팅, 격리 검증 완료)

: 이 스냅샷은 앞으로의 모든 공격 실습의 출발선입니다. 실습으로 MS2가 엉망이 되어도(그리고 그것이 이 VM의 존재 이유입니다), 이 스냅샷 하나면 "검증된 격리 랩"으로 몇 초 만에 돌아옵니다.


4. 미션과 연습문제

미션 — 격리 랩 검증서 작성

다음 항목이 담긴 검증서를 작성하세요:

  1. 두 VM의 네트워크 어댑터 구성 표 (Kali: NAT + Host-only / MS2: Host-only만)
  2. MS2의 ip a 출력에서 랩 IP 부분 인용
  3. Kali→MS2 ping 결과 인용 (성공 — 0% loss)
  4. MS2→인터넷 ping 결과 인용 (실패 — 100% loss)
  5. 호스트 PC→MS2 ping 결과 (윈도우에서 ping 192.168.56.101 — Host-only는 호스트와도 통하므로 성공이 정상)
  6. 양쪽 스냅샷 이름과 시각
  7. 한 줄 선언: "나는 격리가 검증되지 않은 취약 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 주소가 없음)

증상 (출력 예시): eth0inet 줄이 없거나 192.168.56.x가 아닌 다른 대역입니다.
원인: 대부분 Host-only 네트워크의 DHCP가 꺼져 있거나, 어댑터가 Host-only로 안 잡혀 있습니다.
해결: ① VirtualBox 네트워크 관리자에서 Host-only 어댑터의 DHCP 서버가 켜져 있는지 확인. ② MS2 설정 → 네트워크에서 연결 대상이 정확히 그 어댑터인지 확인. ③ 그래도 안 되면 MS2에서 sudo /etc/init.d/networking restartip a 재확인.

벽 2. Kali에서 MS2로 ping이 안 가요

증상 (출력 예시): 100% packet loss (Kali→MS2 방향).
원인 후보 셋: ① Kali의 어댑터2(Host-only)가 VM 실행 중에 추가돼 인식이 안 됨. ② 두 VM이 서로 다른 Host-only 어댑터를 봄. ③ MS2가 아직 부팅 중.
해결: Kali를 완전 종료 후 재시작(어댑터는 부팅 시 인식), Kali에서 ip a192.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 완료입니다. 사이드바의 체크박스를 눌러 진도를 저장하세요.