본문 바로가기

Reversing/IT & Security

악성코드 분석 환경 구성하기

목차

1. 개요
   1.1) 랩 구축을 위한 요구 사항
   1.2) 랩 아키텍처 개요

2. 랩 환경 구성
   2.1) 리눅스 VM 설치 및 환경 구성
   2.2) 윈도우 VM 환경 구성
   2.3) INetSim 동작

3. 결론

 

 

1. 개요

 

악성코드를 분석하기 앞 서, 분석하는 대상 PC가 감염되지 않도록 안전한 lab 환경 구성이 필요하다. 격리 환경 없이 악성코드를 실행하면, 분석 과정에서 오히려 본인이 사용하는 시스템이 감염되어 예기치 않은 피해가 발생할 수 있기 때문이다. 해당 글에서는 개인 PC 환경에서 구축할 수 있는 악성코드 분석 랩(Lab) 환경의 구성 방법과 절차에 대해 다룰 예정이다.

 

1.1) 랩 구축을 위한 요구 사항

Linux, Windows, macOS 중 하나가 설치된 물리 시스템, VMware Workstation, VirtualBox 등 가상화 소프트웨어가 필요하다. 악성코드 분석 시 Windows 기반의 가상 머신에서 수행하고 분석 중 악성코드가 시스템을 변경하거나 감염시키더라도, 스냅샷 기능을 활용해 언제든지 감염 전 상태로 되돌릴 수 있어야 한다.

 

악성코드가 가상환경을 탈출하여 호스트 시스템을 감염시키지 못하도록 하기 위해 다음과 같은 사항들을 확인한다.

 

1. 가상화 소프트웨어는 최신 버전을 유지한다.

악성코드가 가상화 소프트웨어의 취약점을 악용하여 가상 머신을 탈출하고 호스트 시스템을 감염시키는 VM-escape 공격을 방지하기 위해, VMware나 VirtualBox와 같은 가상화 소프트웨어는 항상 최신 버전으로 유지한다.

 

2. 가상머신 내에 민감한 정보를 저장하지 않는다.

악성코드를 실행하는 분석용 가상환경에는 개인 정보, 로그인 정보, 회사 자료 등 민감한 데이터를 저장하거나 옮겨 두어서는 안 된다. 악성코드는 이러한 정보를 수집해 외부로 유출할 수 있기 때문이다.

 

3. 네트워크 환경을 제한한다.

분석 중 악성코드가 외부 인터넷이나 실제 공격자 C2 서버와 통신하는 것을 차단하기 위해, 가상 머신의 네트워크는 Host-only 모드로 구성하는 것이 안전하다. 또는 INetSim과 같은 DNS/네트워크 시뮬레이션 도구를 활용해 악성 트래픽을 랩 환경 내부에서만 처리하도록 구성해야 한다.

 

4. 물리 머신에 재사용할 USB 드라이브 등 이동식 미디어를 연결하지 않는다.

실제로 USB 장치 같은 이동식 미디어로 악성코드가 확산된 사례가 존재한다.(Stuxnet 사례) 분석 환경에서 실수로 USB에 악성 파일이 복사되거나 자동 실행되면 물리 시스템이 감염될 수 있으므로, 분석 중에는 이동식 미디어 사용을 자제하는 것이 좋다.

 

5. 분석용 VM, 트래픽 시뮬레이션용 VM, 호스트 시스템은 서로 다른 운영체제로 구성하는 게 안전하다. 

예를 들어 Windows 악성코드를 분석할 경우, 호스트 OS를 Linux나 macOS로 구성하면 가상 머신 탈출이 발생하더라도 운영체제가 달라 악성코드가 호스트 환경에서 정상적으로 동작하지 못할 가능성이 커진다. 다만 이 역시 무조건적으로 안전하다고 볼 순 없다. 실제 악성코드는 초기화 단계에서 시스템 정보를 수집한 뒤, 환경에 맞는 추가 페이로드를 내려받아 실행하는 동작을 수행할 수도 있기 때문이다.

 

 

 

 

 

1.2) 랩 아키텍처 개요

해당 내용에서 사용할 분석 랩 환경은 Windows 물리 머신 위에 두 개의 가상 머신(우분투 Linux VM, Windows VM) 으로 구성된다. 두 가상 머신은 동일한 가상 네트워크에 연결되며, Host-only 모드를 사용하여 외부 인터넷으로의 직접적인 연결을 차단한다. 이를 통해 악성코드가 실제 C2 서버로 접속하는 것을 방지하고, 모든 네트워크 트래픽이 물리 머신과 완전히 분리된 상태에서 안전하게 분석될 수 있도록 한다.

 

Windows VM은 악성코드를 직접 실행하여 행위를 관찰하는 역할을 수행하며, Linux VM은 악성코드가 발생시키는 네트워크 요청(DNS, HTTP 등)에 대해 시뮬레이션된 응답을 제공하도록 구성한다. 이를 통해 분석 대상 악성코드가 정상적으로 실행되도록 유도하고, 네트워크 기반 행위를 효과적으로 관찰할 수 있다.

 

 

아래는 본 분석 환경에서 구성할 랩 아키텍처의 예시이다.

 

그림1) 랩 아키텍처 구성 예시

 

리눅스 VM은 IP 주소 192.168.1.100으로 설정하고 윈도우 VM의 IP 주소는 192.168.1.x 대역에서 임의의 IP 192.168.1.50 를 부여한다. 또한 Windows VM의 기본 게이트웨이와 DNS 서버를 192.168.1.100 으로 설정해 Windows VM에서 발생하는 모든 네트워크 트래픽이 리눅스 VM을 통해 라우팅 되도록 한다.

 

Linux VM 192.168.1.100
Windows VM 192.168.1.50

 

이렇게 설정함으로써 악성코드가 시도하는 네트워크 통신 전체를 Linux VM에서 제어·모니터링할 수 있게 된다.

 

 

2. 랩 환경 구성

2.1) 리눅스 VM 설치 및 환경 구성

리눅스 VM 설치를 위해 우분투 22.04.5 LTS 버전을 설치해 주었다.

 

설치 미디어는 https://releases.ubuntu.com/jammy/ 해당 링크에서 다운로드할 수 있다.

그림2) 우분투 설치 미디어 다운로드

 

그림3) 우분투 설치 완료

 

sudo apt-get update
sudo apt install python3-pip
pip install --upgrade pip
sudo apt install python3-magic
sudo apt-get install upx
sudo pip install pefile
sudo apt-get install yara
sudo pip install yara-python
sudo apt-get install ssdeep
sudo apt-get install build-essential libffi-dev python3 python3-dev libfuzzy-dev
sudo apt-get install python-is-python3
sudo pip install ssdeep
sudo apt-get install wireshark
sudo apt-get install tshark

 

랩 구성에 필요한 Python 패키지와 필수 도구들을 설치한다.

 

sudo su
echo "deb http://www.inetsim.org/debian/ binary/" > \
/etc/apt/sources.list.d/inetsim.list

wget -O - http://www.inetsim.org/inetsim-archive-signing-key.asc | \
apt-key add -

apt update
apt-get install inetsim

 

인터넷 서비스를 시뮬레이션하기 위한 INetSim을 설치한다. INetSim은 악성코드가 발생시키는 DNS, HTTP, HTTPS 등의 요청에 대해 가짜 서비스를 제공하여, 외부 네트워크와 완전히 격리된 환경에서 악성 행위를 관찰할 수 있게 해준다.

 

그림4) 우분투 VM 어댑터 설정 변경

 

Linux VM 네트워크 어댑터 설정을 호스트 전용 어댑터 (Host-only)로 변경한다. 이후 IP 주소를 고정하기 위해 Netplan 설정 파일을 수정한다. 

sudo gedit /etc/netplan/1-network-manager-all.yaml

 

정확한 경로는 환경과 버전에 따라 다를수 있다.

network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      dhcp4: no
      addresses: [192.168.1.100/24]
      optional: true
sudo netplan apply

 

netplan apply 명령으로 변경한 설정을 적용한다.

그림5) Netplan 설정 후 ifconfig 확인

 

다음과 같이 Netplan 설정 시, 리눅스 VM은 192.168.1.100 고정 IP를 가지게 된다.

 

sudo gedit /etc/inetsim/inetsim.conf

그림6) inetsim.conf 설정 변경

 

InetSim 설정 파일인 inetsim.conf에서 service_bind_addressdns_default_ip 항목을 찾아, Linux VM의 고정 IP 주소인 192.168.1.100을 추가하여 지정된 주소의 모든 서비스를 리스닝하고 시뮬레이션할 수 있도록 한다.

 

 

 

2.2) 윈도우 VM 환경 구성

그림7) 윈도우 VM 네트워크 설정

 

그림8) 윈도우,우분투 환경 네트워크 구성 완료

 

윈도우 VM도 동일하게 Host‑only 네트워크로 설정한 뒤, VM의 IP 주소를 192.168.1.x 대역으로 구성한다. 필자는 윈도우 VM을 192.168.1.50 으로 설정하였고 기본 게이트웨이와 DNS 서버를 리눅스 VM의 IP주소인 192.168.1.100 로 설정하여 윈도우 VM에서 악성코드가 실행될 때 모든 네트워크 트래픽이 리눅스 VM을 통해 라우팅 되도록 구성 하였다.

 

그림9) 윈도우,우분투 환경 서로 간 통신 확인

 

리눅스 VM과 윈도우 VM의 전원이 모두 켜진 상태에서, 서로 간의 네트워크 연결이 정상적으로 동작하는지 확인한다.

윈도우 VM(IP: 192.168.1.50) 에서 리눅스 VM(IP: 192.168.1.100) 과 통신이 가능한지 확인한다.

 

그림10) 로컬 그룹 정책 편집기 실행

 

윈도우 VM에서 악성코드 분석을 수행할 때, 분석을 방해할 수 있는 Windows Defender 서비스를 비활성화한다.  

 

  • 윈도우 키 + R을 눌러 실행 창을 연다.
  • gpedit.msc를 입력하여 로컬 그룹 정책 편집기를 실행한다.

 

그림11) Windows Defender 비활성화

 

왼쪽 패널에서 컴퓨터 구성 -> 관리 템플릿 -> Windows 구성 요소 -> Microsoft Defender 바이러스 백신에 들어가

Microsoft Defender 바이러스 백신 끄기 정책에 들어가 활성화를 선택한 후 변경 사항을 적용한다.

 

 

2.3) INetSim 동작

그림12) InetSim 실행 시 화면

 

두 VM 간의 통신이 정상적으로 확인되었다면, INetSim을 실행하여 네트워크 트래픽 시뮬레이션을 시작한다.

 

그림13) InetSim 실행 에러 시 화면

 

만약 다음과 같은 메시지가 나타나며 INetSim 실행이 되지 않는 경우가 있는데, 이는 INetSim이 이미 실행 중이거나 이전 실행 종료 시 PID 파일이 남아 있는 경우 발생한다.

그림14) 실행 중인 InetSim 프로세스 확인

 

이럴 때는 먼저 실행 중인 INetSim 프로세스를 확인 후

그림15) 기존 InetSim 종료 후 재시작

 

기존 INetSim을 종료 후 재시작하면 해결된다.

 

그림16) INetSim service.log
그림17) google.com 접속 시 InetSim sample.html 반환

 

이제 윈도우 VM에서 발생하는 모든 네트워크 트래픽은 리눅스 VM에 설치된 INetSim을 통해 처리되며, 그 활동이 로그로 기록된다. 로그 파일은 /var/log/inetsim/service.log에 저장된다. 예를 들어, 윈도우 VM에서 웹 브라우저로 인터넷에 접근하면, INetSim 서버가 기본적으로 제공하는 sample.html 파일로 요청에 응답한다.

 

 

 

 

 

 

3. 결론

악성코드를 실행하며 그 행위를 관찰하는 과정에서, 격리되지 않은 환경에서는 악성코드가 의도치 않게 메인 PC의 시스템이나 네트워크로 확산될 위험이 있다. 격리된 랩 환경을 사용하면 이러한 위험을 효과적으로 예방하고 안전하게 분석할 수 있다.

 

개인 랩 환경이 아닌 클라우드를 활용한 악성코드 분석 환경 구성 방법도 존재한다. 클라우드 방식은 물리적인 장비 없이 가상화된 서버를 통한 환경을 제공하며, 필요할 때마다 VM을 생성·삭제할 수 있어 유연성이 높다. 또한, 클라우드 환경에서는 자동 스냅샷, 네트워크 격리, 접근 제어 등 보안 기능을 사용자가 손쉽게 설정할 수 있어, 개인 랩 환경 대비 확장성·안전성·편의성에서 장점이 있다.

 

 

※ Learning Malware Analysis 서적을 참고하여 작성된 게시글입니다.

'Reversing > IT & Security' 카테고리의 다른 글

[메모] 악성코드 분석 도구 및 사이트  (0) 2025.09.07
악성코드 분석  (0) 2024.02.23