CLI VirtualBox
이전글인 Free Threat Intelligence #3 에서 간단하게 설명한 STAXX를 서버에 올려서 구동해 보고자 한다. 실제로 VirtualBox의 이미지 형태로 제공되기 때문에 간단하게 띄울수 있음에도 불구하고 서버에 띄울려고 한다면 리눅스에서 VirtualBox의 사용에 대해서 익숙해야 쉽게 할수 있을 것이다.
이전글
https://brunch.co.kr/@sokoban/12
우선은 STAXX를 실행하기 위해서 아래의 준비물들을 준비한다.
1. STAXX ova 이미지
2. Ubuntu 16.x 서버
현재 Ubuntu에 레포지터리 및 기타 설정이 다 되었다고 가정하고 간단하게 아래의 명령어를 통해서 VirtualBox의 설치가 가능하다.
#sudo apt-get update
#sudo apt-get install virtualbox-5.2
수동 설치
#sudo apt install ./virtualbox-5.2_5.2.0-118431~Ubuntu~xenial_amd64.deb
위의 명령어를 통해서 기본적인 VirtualBox의 설치는 되었지만 확장팩은 별도로 설치되지 않는다. 이럴때에는 아래의 명령어를 통해서 추가적으로 확장팩을 설치한다.
#sudo apt install virtualbox-ext-pack
수동 설치
#sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.2.0-118431.vbox-extpack
물론 Ubuntu의 설정 환경에 따라 틀리겠지만 기본적으로 위의 명령어가 되지 않을 경우에는 아래의 링크를 참조하여 설치를 진행하면 특별한 문제는 없을거라고 생각된다.
https://websiteforstudents.com/install-virtualbox-latest-on-ubuntu-16-04-lts-17-04-17-10/
만약 별도로 최신 배포본을 다운로드 하여 설치하고자 한다면 아래의 VirtualBox 공식 페이지에서 다운로드 하기 바란다.
https://www.virtualbox.org/wiki/Downloads
이제 VirtualBox의 설치가 되었다면 다운로드 받은 ova 파일을 VirtualBox로 적재 하여야 한다. 적재 방법은 아주 간단하게 VBoxManage 명령어를 통해서 수행 할수 있다.
#VBoxManage import AnomaliSTAXX.ova
위의 명령어를 할 경우 현재 명령어를 수행한 계정의 /home/계정 의 하부에 VirtualBox 의 VM 폴더가 생성되면서 적재를 완료 한다. 만약 해당 VM의 세부적인 설정값을 변경하고자 할 경우에는 해당 폴더에 생성된 이미지 이름을 찾아 들어가면 VM의 설정 파일을 찾을수 있다.
만약 기본적으로 생성되는 이미지의 이름으로 VM 이름을 생성하기 보다 본인이 이름을 지정하고자 할 경우에는 아래의 명령어를 사용한다.
#VBoxManage import AnomaliSTAXX.ova --vsys 0 --vmname "VM NAME"
위와 같이 하게 되면 이미지 이름으로 VM 이름이 생성되지 않고 "VM NAME"라는 이름으로 생성된다.
이번글에서는 STAXX의 이미지를 띄우는 만큼 8080 port를 통해서 STAXX에 접속을 하여야 하므로 NAT 모드로 설정되어 접속이 불가능한것을 Port Forwarding을 통해서 접속할수 있도록 설정해 보겠다.
UI에서 간단하듯이 CLI 모드에서도 간단하게 명령어 한줄이면 된다.
#VBoxManage modifyvm "VM NAME" --natpf1 "WEB,tcp,,80,,80"
위의 명령어는 간단하게 VM 이미지의 VM의 nat설정에 WEBUI라는 이름으로 TCP 프로토콜을 사용하는 Port Forwarding 룰을 넣는다는 의미이다. natpf1 이후의 옵션의 의미는 아래와 같다.
"룰 이름, 프로토콜 (tcp|udp), 호스트의 IP주소, 호스트의 Port번호, Guest의 IP주소, Guest의 Port번호"
% IP를 넣어주면 조금더 명시적인 설정값을 볼수 있다.
지금까지 진행하였다면 이제는 제대로 정상적으로 설정되었는지를 알아 보기 위해서 vm설정을 확인해 보자.
#VBoxManage showvminfo "VM NAME"
위와 같이 수행하면 아래와 같은 결과창을 볼수가 있을것이다. 거기에서 NIC1의 Rule 부분을 확인해 보면 된다.
Name: VM NAME
Groups: /
Guest OS: Red Hat (64-bit)
Memory size: 512MB
Page Fusion: off
VRAM size: 8MB
CPU exec cap: 100%
HPET: off
Chipset: piix3
Firmware: BIOS
Number of CPUs: 2
PAE: on
Long Mode: on
Triple Fault Reset: off
APIC: on
.......
NIC 1: MAC: , Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny, Bandwidth group: none
NIC 1 Settings: MTU: 0, Socket (send: 64, receive: 64), TCP Window (send:64, receive: 64)
NIC 1 Rule(0): name = web, protocol = tcp, host ip = , host port = 80, guest ip = , guest port = 80
이제 VM을 실행해 볼 차례이다. 실행은 아래의 명령어를 통해서 수행할수 있다.
#VBoxManage startvm "VM NAME" --type headless
VBoxManage 명령어의 startvm 옵션으로 실행할 수 있다. 여기서 중요한 부분은 뒷부분에 있는 --type 옵션이다. 뒤의 type 옵션에 headless 없이 실행하면 VirtualBox가 에러가 나면서 실행이 되지 않을것다. 그 이유는 VirtualBox의 경우 GUI 인터페이스가 필요로 하기 때문에 DISPLAY의 설정이 되어 있어야 한다. 하지만 일반적으로 IDC의 호스팅을 받는 경우 VNC나 XWindows를 사용하지 못하는 경우도 있기 떄문에 headless를 명시해야만 기동이 가능하다.
위의 과정이 끝나게 되면 https://호스트IP:8080으로 접속하면 STAXX의 웹으로 접근이 되어야 하지만 ubuntu나 CentOS의 기본 설치 상태에서 접속이 되지 않는것을 알수 있다. 포트는 접속이 가능하게 열려 있고 외부에서 포트체크를 해보면 접속이 되지만 접근은 되지 않는 상태이다.
이를때에는 꼭 ubuntu나 CentOS의 방화벽을 꺼주어야한다. 그래야만 접근이 가능하다.
VirtualBox에 CLI 상태에서 외부에서 RDP로 접속할수 있는 VRDE (VRDP)를 제공해 주고 있으며 위의 과정을 통해서 기본적으로 설정하게 되면 5911번 포트를 통해서 접속이 가능하게 한다.
전원 끄기
#VBoxManage controlvm "VM NAME" poweroff
현재 등록된 VM 보기
#VBoxManage list vms
VM의 등록 해제
#VBoxManage unregistervm "VM NAME"
https://www.virtualbox.org/manual/