Step 16. 가상화 이해 — 컴퓨터 안에 컴퓨터를 짓는다

Step 16. 가상화 이해 — 컴퓨터 안에 컴퓨터를 짓는다

Level 0 — 컴퓨터 조작과 구조의 이해 | 난이도 ★★★☆☆ | 예상 소요 시간 2~3시간

전제: Step 15 완료. 오늘은 인터넷 연결이 필요합니다(VirtualBox 다운로드). 다음 Step에서 바로 이어서 사용하니, 오늘 설치까지 완료해 두세요.

  • 준비물: 윈도우 PC, 파워쉘, 인터넷 연결. 메모리(RAM) 8GB 이상이면 충분합니다 — Step 5에서 배운 Get-ComputerInfo로 미리 확인해 보세요.
  • 주의: 오늘 실습은 100% 안전합니다. 설치하는 프로그램은 유명한 무료 소프트웨어이고, 아직 가상머신을 만들지도 않으니 여러분의 파일에는 손끝 하나 닿지 않습니다.

폭죽 실험을 거실에서 하면 안 되는 이유는 명확합니다. 집이 타니까요. 해킹 연습도 같습니다. 취약한 시스템을 일부러 만들고, 공격하고, 망가뜨리는 일을 여러분의 실제 컴퓨터에서 할 수는 없습니다. 필요한 것은 안에서 무슨 짓을 해도 바깥이 무사한 연습장, 가상머신입니다. 오늘 그 첫 삽을 뜹니다.


1. 학습 목표

이 챕터를 끝내면 다음을 할 수 있습니다:

  • 가상머신(VM)과 하이퍼바이저가 무엇인지 설명한다
  • 호스트와 게스트의 관계를 도면으로 그릴 수 있다
  • 격리가 무엇이며 왜 해킹 연습의 필수 조건인지 설명한다
  • 내 컴퓨터의 메모리와 디스크 여유를 확인하고 VM 배정 기준을 적용한다
  • VirtualBox를 공식 사이트에서 다운로드해 설치한다

2. 배경 지식 — 오늘의 도구와 개념

오늘의 도구 한눈에 보기

구분 내용
언어·환경 파워쉘 5.1(자원 확인용) + VirtualBox 설치 프로그램
오늘의 명령어 Get-CimInstance Win32_ComputerSystem(메모리 확인), Get-CimInstance Win32_LogicalDisk(디스크 여유 확인)
필요한 개념 가상머신(VM), 하이퍼바이저(Type 1/Type 2), 호스트와 게스트, 격리(isolation), NAT

2-1. 가상머신 — 컴퓨터 안의 컴퓨터

가상머신(Virtual Machine, VM)은 소프트웨어로 만들어 낸 "가짜 컴퓨터"입니다. CPU, 메모리, 디스크를 전부 갖추고 있지만, 그 부품들이 전부 프로그램으로 흉내 낸 것입니다. 그 안에는 별도의 운영체제(리눅스든 윈도우든)를 설치할 수 있고, 겉에서 보기엔 완전한 독립 컴퓨터처럼 동작합니다.

비유를 쓰자면 아파트 한 층을 통째로 세트장처럼 꾸민 연습용 방입니다. 방 안에서 페인트를 칠하고 벽을 허물어도, 문을 닫으면 아파트(진짜 컴퓨터)는 멀쩡합니다.

2-2. 하이퍼바이저 — 자원을 쪼개는 관리인

가짜 컴퓨터의 부품은 어디서 오는 걸까요? 진짜 컴퓨터의 자원을 쪼개서 빌려옵니다. 이 배분을 관리하는 소프트웨어가 하이퍼바이저(hypervisor)입니다. 아파트 관리사무소처럼 전기·수도·공간을 나눠 주는 역할이죠.

하이퍼바이저에는 두 종류가 있습니다:

종류 동작 방식 예시
Type 1 (네이티브) 하드웨어 바로 위에서 동작 (OS 없이) 기업 서버용 (VMware ESXi 등)
Type 2 (호스트형) 기존 OS 위에서 프로그램으로 동작 VirtualBox ← 우리가 쓸 것

우리가 쓰는 VirtualBox는 Type 2입니다 — 여러분의 윈도우 위에 프로그램으로 깔리고, 그 안에서 가상 컴퓨터를 돌립니다. 설치가 쉽고 무료라서 입문자의 표준입니다.

2-3. 호스트와 게스트 — 주인과 손님

용어 두 개를 확실히 잡으세요:

  • 호스트(host) — 진짜 컴퓨터 (여러분의 윈도우 PC). 주인
  • 게스트(guest) — 가상머신 안의 컴퓨터 (곧 설치할 리눅스). 손님

"게스트 안에서 파일을 지웠는데 호스트는 멀쩡하다" — 이 문장이 자연스럽게 이해되면 오늘 개념의 절반을 끝낸 겁니다.

2-4. 왜 굳이 가상인가 — 실물 컴퓨터 두 대면 안 되나

"컴퓨터를 두 대 사면 되지 않나?"라는 질문이 자연스럽습니다. 답을 나열해 볼게요.

  • : 실험용 컴퓨터를 매번 사면 파산합니다. VM은 무료입니다
  • : 공격하는 쪽과 당하는 쪽, 때로는 세 대 이상이 필요합니다. VM이면 클릭으로 추가됩니다
  • 되돌리기: 실물 컴퓨터는 망가지면 재설치에 몇 시간. VM은 스냅샷으로 몇 초입니다(Step 17의 주제)
  • 폐기: 실험이 끝난 VM은 파일 지우듯 삭제하면 그만입니다. 흔적도 비용도 없습니다

이 장점들 때문에 보안 업계의 연습 환경은 사실상 전부 가상화 위에 있습니다. 개인의 연습 랩도, 기업의 침해 훈련장(사이버 레인지라 부릅니다)도, CTF 대회 서버도 마찬가지입니다.

2-5. 격리 — 해킹 연습의 안전벨

오늘의 핵심 개념입니다. 게스트와 호스트는 격리(isolation)되어 있습니다. 게스트 안에서 시스템 파일을 지우든 설정을 엉망으로 만들든 — 그 피해는 가상머신 안에서 끝납니다.

이 격리 덕분에 가능한 것들:

  • 일부러 취약한 시스템 만들기 — 공격받을 연습용 표적을 안전하게 운영
  • 망가뜨리기 — 설정을 바꾸고, 지우고, 실험하기
  • 되돌리기 — Step 17의 스냅샷으로 몇 초 만에 원상복구

그리고 이것은 윤리적 안전장치이기도 합니다. 이 책의 모든 공격 실습은 이 격리된 랩 안에서만 이루어집니다. 랩 밖의 실제 서비스를 무단으로 공격하는 것은 범죄입니다 — 이 원칙은 책 전체에서 변하지 않습니다.


3. 따라 하기

3-1. 내 컴퓨터 자원 확인

VM에 나눠 줄 자원이 있는지 먼저 봅시다. 파워쉘에서:

Get-CimInstance Win32_ComputerSystem | Select-Object TotalPhysicalMemory
Get-CimInstance Win32_LogicalDisk -Filter "DeviceID='C:'" | Select-Object FreeSpace
TotalPhysicalMemory
-------------------
        17051418624

(출력 예시 — 여러분 컴퓨터의 숫자는 다릅니다.)

출력 읽는 법: 숫자가 커서 읽기 어렵죠. 뒤에서 9자리를 떼면 대략 GB입니다 — 17,051,418,624바이트 ≈ 16GB. 메모리가 8GB 이상이면 충분하고, 16GB면 쾌적합니다. 디스크 여유는 최소 30GB 정도를 권합니다(VM 하나가 25GB 안팎을 차지합니다).

왜 하는가: VM은 진짜 자원을 나눠 쓰기 때문에, 잔고 확인 없이 배정하면 호스트가 느려집니다. "배정 전에 잔고 확인"은 앞으로 VM을 만들 때마다의 첫 동작입니다.

3-2. VirtualBox 다운로드

  1. 브라우저에서 virtualbox.org 접속
  2. 큰 "Download VirtualBox" 버튼 클릭
  3. 플랫폼 목록에서 Windows hosts 선택 (우리의 호스트가 윈도우니까요)

중요 — 왜 공식 사이트인가: 프로그램은 반드시 공식 사이트에서 받는 습관을 들이세요. 인기 있는 무료 도구일수록 "재포장" 가짜 사이트가 광고로 검색 상단에 뜨는 경우가 있고, 그런 설치 파일에는 추가물(애드웨어, 최악의 경우 악성코드)이 끼어 있습니다. 주소창의 주소를 한 번 더 확인하는 것 — 이 1초의 습관이 보안입니다.

3-3. 설치

다운로드한 설치 파일을 실행하고:

  1. 다음 → 다음 → (설정은 전부 기본값 그대로)
  2. 중간에 "네트워크 인터페이스를 설치합니다, 일시적으로 연결이 끊길 수 있습니다" 경고 → (VM용 가상 네트워크 카드를 까는 과정입니다)
  3. 장치 소프트웨어 설치 확인이 나오면 설치
  4. 완료 후 VirtualBox 실행

성공 확인: VirtualBox 관리자 창이 열리면 설치 성공입니다. 아직은 텅 빈 목록 — 이제 여기에 컴퓨터를 한 대씩 지을 겁니다.

3-4. 가상화 기능(VT-x/AMD-V) 미리 알아두기

VM을 나중에 시작할 때 이런 오류가 날 수 있습니다: "VT-x is not available" 류. 이것은 CPU의 가상화 지원 기능이 꺼져 있다는 뜻입니다.

CPU는 하이퍼바이저가 효율적으로 일할 수 있도록 돕는 전용 기능을 갖고 있는데(인텔은 VT-x, AMD는 AMD-V), 일부 컴퓨터에서는 기본으로 꺼져 있습니다. 켜는 법:

  1. 컴퓨터 재부팅 → 제조사 로고가 뜰 때 Del 또는 F2(제조사마다 다름) 연타 → BIOS/UEFI 설정 진입
  2. Advanced 또는 CPU Configuration 메뉴에서 Intel VT-x / AMD-V / Virtualization 항목 찾기
  3. Enabled로 변경 → 저장하고 종료 (보통 F10)

하드웨어 가상화는 소비자 PC에서 평소 쓸 일이 없어서 일부 제조사가 꺼 둡니다. 오류 메시지가 친절히 이걸 알려 주니, 겁먹지 말고 안내를 따라가면 됩니다.

3-5. 네트워크는 어떻게 되는가 — 미리 보는 NAT

나중에 VM에서 인터넷이 되는 걸 보고 신기해할 수 있습니다. 원리를 간단히 짚으면, VirtualBox는 기본적으로 NAT(Network Address Translation)라는 방식을 씁니다. VM은 가상의 사설망에 있고, 바깥과의 통신은 호스트가 중계합니다. Step 6에서 배운 공유기의 역할을 VirtualBox가 소프트웨어로 하는 셈입니다.

보안 관점에서 이 기본값이 중요한 이유: 바깥(집 네트워크의 다른 기기들)에서 VM으로 직접 들어오는 길은 막혀 있습니다. 나가는 것만 되고 들어오는 것은 안 되는 구조입니다. 지금은 기본값 그대로가 안전하다는 것만 기억하세요.

3-6. 개념 도면 그리기

설치가 끝났으니, 오늘 배운 구조를 손으로 그려 봅시다 (종이든 메모장이든):

┌─────────────────────────────────────┐
│  게스트 VM (리눅스) ← Step 17에서      │
│  가상 CPU 2개 / 가상 RAM 2GB /         │
│  가상 디스크 25GB                      │
├─────────────────────────────────────┤
│  하이퍼바이저 (VirtualBox)             │
├─────────────────────────────────────┤
│  호스트 OS (여러분의 윈도우)            │
├─────────────────────────────────────┤
│  진짜 하드웨어 (CPU, RAM 16GB, SSD)    │
└─────────────────────────────────────┘

확인 질문: ① 게스트가 쓰는 "가상 RAM 2GB"는 어디서 오는가? (호스트의 진짜 RAM을 쪼갠 것) ② 게스트가 고장 나면 어느 층까지 피해가 가는가? (게스트 층까지만 — 격리)

예측해 보기: 호스트의 메모리가 8GB인데 VM에 6GB를 배정하면 어떤 일이 벌어질까요? (정답: 호스트에 남은 2GB로 윈도우가 버티느라 전체가 느려집니다. VM 배정의 상식선은 "호스트의 절반 이하". Step 17에서 실제로 배정할 때 이 기준을 씁니다.)


4. 미션과 연습문제

미션 — 랩 설계서 작성

앞으로 본격적으로 지을 랩의 설계서를 메모장으로 작성해 보세요:

  1. 내 컴퓨터의 총 메모리와 C: 드라이브 여유 공간 기록 (3-1절 명령 사용)
  2. 첫 VM(리눅스)에 줄 자원 계획: 메모리 몇 MB, 디스크 몇 GB (호스트 절반 이하 규칙 적용)
  3. 이 VM을 무엇에 쓸 것인가 한 줄 (예: "리눅스 연습 및 향후 공격 실습용 표적")
  4. "이 랩에서 해도 되는 것 / 하면 안 되는 것"을 스스로 정해 두 줄로 적기 (힌트: 랩 안 자유 / 랩 밖 실서비스 공격 금지)

스스로 검증하는 법: 4번이 쓰여 있으면 됩니다. 이 설계서는 Level 2 랩 구축 때도 계속 쓰이는 문서가 될 겁니다.

연습문제

문제 1. 하이퍼바이저 Type 1과 Type 2의 차이를 "운영체제와의 위치 관계"로 설명하고, VirtualBox가 어느 쪽인지 말해 보세요.

문제 2. 호스트 메모리가 16GB일 때 VM에 배정할 수 있는 상식적인 최대치는 얼마이며, 그 기준의 이유는 무엇일까요?

문제 3. "VM 안에서는 뭐든 해도 되니까, VM 안에서 남의 웹사이트를 공격해도 괜찮다" — 이 문장의 어느 부분이 틀렸을까요?

문제 4. 클라우드 서비스(AWS, Azure 등)에서 "인스턴스를 하나 띄웠다"는 말을 오늘 배운 개념으로 번역해 보세요.


5. 모범 답안과 완료 기준

미션 모범 답안

Get-CimInstance Win32_ComputerSystem | Select-Object TotalPhysicalMemory
Get-CimInstance Win32_LogicalDisk -Filter "DeviceID='C:'" | Select-Object FreeSpace

설계서 예시:

[랩 설계서]
- 호스트: RAM 16GB / C: 여유 120GB
- VM 1(Ubuntu-Lab): RAM 4096MB / 디스크 25GB (호스트 절반 이하 규칙 충족)
- 용도: 리눅스 연습 및 향후 공격 실습용 표적
- 규칙: 랩 안에서는 설치·삭제·공격 실험 전부 자유.
        랩 밖의 실제 서비스·타인 시스템 공격은 절대 금지.

검증하는 법: ① 배정 메모리가 호스트의 절반 이하인가. ② 디스크 여유가 VM 크기보다 충분히 큰가. ③ "하면 안 되는 것"에 랩 밖 공격 금지가 명시됐는가. 세 가지가 맞으면 완성입니다.

연습문제 해답

문제 1 해답. Type 1은 하드웨어 바로 위에서 운영체제 없이 동작하고(기업 서버용), Type 2는 기존 운영체제 위에 일반 프로그램으로 설치되어 동작합니다. VirtualBox는 윈도우 위에 깔리는 Type 2입니다.

문제 2 해답. 절반인 8GB가 상한선입니다(쾌적함을 위해 보통 4GB부터 시작). VM이 먹는 메모리는 진짜 RAM에서 빠지므로, 호스트에 너무 적게 남기면 윈도우 자체가 느려져 둘 다 못 씁니다.

문제 3 해답. 격리는 "피해가 호스트로 번지지 않는다"는 기술적 보장일 뿐, 법적·윤리적 면허가 아닙니다. VM 안에서 시작한 공격도 목표가 랩 밖의 실제 서비스라면 그 피해는 격리 밖에서 일어나고, 그것은 범죄입니다. 격리가 지키는 것은 "내 컴퓨터"이지 "내 행동의 책임"이 아닙니다.

문제 4 해답. "남의 거대한 물리 서버 위에서 하이퍼바이저가 돌고 있고, 그 안의 게스트(가상머신) 하나를 빌려 받았다"로 번역하면 됩니다. 오늘 VirtualBox로 한 일을 클라우드 회사가 수만 대 규모로 자동화해 제공하는 것이 클라우드의 본질입니다.

완료 기준 체크리스트

  • [ ] 가상머신이 무엇인지 "컴퓨터 안의 컴퓨터"로 설명할 수 있다
  • [ ] 하이퍼바이저, 호스트, 게스트의 관계를 그릴 수 있다
  • [ ] 격리가 무엇이고 왜 해킹 연습에 필수인지 설명할 수 있다
  • [ ] 내 컴퓨터의 메모리/디스크 여유를 확인했다
  • [ ] VirtualBox를 공식 사이트에서 다운로드해 설치했다
  • [ ] VM 자원 배정의 "호스트 절반 이하" 기준을 안다
  • [ ] 미션: 랩 설계서를 작성했다

6. 흔한 실수와 해결

벽 1. 다운로드 사이트가 진짜인지 불안하다

증상: 검색했더니 비슷한 사이트가 여럿 나옵니다.
원인: 인기 무료 소프트웨어 주변에는 항상 가짜·재포장 사이트가 있습니다.
해결: 주소창이 정확히 virtualbox.org인지 확인하세요. 광고(Ad 표시)로 뜨는 최상단 결과는 건너뛰고, 공식 도메인을 직접 치는 습관이 가장 안전합니다.

벽 2. 설치 중 네트워크 경고가 떠서 겁난다

증상: "네트워크 연결이 일시적으로 끊길 수 있습니다"라는 경고.
원인: VM용 가상 네트워크 카드를 설치하는 과정에서 실제 네트워크 장치를 재설정하기 때문입니다.
해결: 정상 절차입니다. "예"를 누르세요. 순간 인터넷이 끊겼다가 몇 초 뒤 돌아옵니다.

벽 3. 설치는 됐는데 VM 시작 시 가상화 오류가 난다

증상: "VT-x is not available", "AMD-V is disabled" 류의 오류.
원인: CPU 가상화 기능이 BIOS/UEFI에서 꺼져 있습니다(3-4절).
해결: 3-4절대로 BIOS에서 켜세요. 진입 키는 제조사마다 다르니 "내 노트북 제조사 + BIOS 진입"으로 검색하면 바로 나옵니다.

벽 4. 컴퓨터가 느려질까 봐 걱정된다

증상: VM을 띄우면 팬이 돌고 버벅입니다.
원인: VM은 진짜 자원을 먹는 무거운 손님입니다. 특히 메모리 배정이 크면 호스트가 힘들어합니다.
해결: VM을 쓰지 않을 때는 꺼 두는 게 답입니다. 배정은 절반 이하 규칙을 지키고, 그래도 버거우면 메모리 2048MB 최소 사양으로 시작하세요.

벽 5. "가상머신 안이면 진짜 100% 안전한가?"라는 의문

증상: 격리를 믿어도 되는지 불안합니다.
원인: 좋은 의심입니다.
해결: 정직한 답 — 격리는 매우 강력하지만 이론상 100%는 아닙니다(가상화 탈출 취약점이라는 고급 공격이 존재합니다). 하지만 우리 과정의 실습 수준에서는 충분한 안전장치이고, 실무의 맬웨어 분석가들도 VM을 표준 연습장으로 씁니다. "완벽한 안전이 아니라 관리된 위험" — 이 관점 자체가 보안의 기본 사고입니다.


7. 정리

오늘의 개념

개념 한 줄 설명
가상머신(VM) 소프트웨어로 만든 컴퓨터 안의 컴퓨터
하이퍼바이저 진짜 자원을 쪼개 게스트에 배정하는 관리자
Type 1 / Type 2 하드웨어 위에서 직접 / 기존 OS 위에 프로그램으로
호스트 / 게스트 진짜 컴퓨터 / 가상머신
격리 게스트 안의 피해가 호스트에 닿지 않는 성질
NAT VM의 바깥 통신을 호스트가 중계하는 기본 네트워크 방식

오늘의 명령어

명령 하는 일
Get-CimInstance Win32_ComputerSystem 총 메모리 확인 (배정 전 잔고 확인)
Get-CimInstance Win32_LogicalDisk 드라이브 여유 공간 확인

명령어보다 중요한 감각

해킹 연습에 VM을 쓰는 이유는 하나입니다 — 안에서 아무리 망가져도 바깥이 무사하기 때문. 격리는 기술적 안전장치이자, 합법적 연습을 가능하게 하는 윤리적 울타리입니다.

두 가지를 덧붙여 기억해 두세요. 첫째, 회사에서 쓰는 AWS·Azure 같은 클라우드의 본질은 오늘 배운 것의 거대 버전입니다 — "인스턴스를 띄웠다"는 "남의 하이퍼바이저 위에 게스트 하나 받았다"로 번역하시면 됩니다. 둘째, VM이 "컴퓨터를 통째로 흉내 내는" 방식이라면, 컨테이너(container)(Docker 등)는 운영체제의 방 하나만 격리하는 더 가벼운 사촌입니다. 목적은 같습니다 — 격리. 후반부 실습 환경 일부가 컨테이너로 제공되니 지금은 이름만 기억해 두세요.

오늘부터 여러분의 컴퓨터에는 연습장이 생겼습니다. 무언가를 설치하거나 실험하기 전에 "이건 랩에서 할 일인가, 바깥에서 할 일인가"를 묻는 습관 — 그것이 이 챕터의 진짜 산출물입니다.


전부 체크되면 Step 16 완료입니다. 사이드바의 체크박스를 눌러 진도를 저장하세요.