가상 머신

From Hidden Wiki
(Redirected from 가상머신)
Jump to navigation Jump to search
필독 사항 유닠스 계열 저작물, 성인물, 도박 웹 써버 보안 프로그래밍 그래핔 파싱
필독 사항 고스트BSD 표면 웹 싸이트 제작 리눅스 마스터 파이썬 트킨터 뷰티펄 숲
수학 아이투피 마약, 아청물, 해킹 웹 싸이트 보안 웹 프로그래밍 데이터 분석 게임 제작
통계학 뮤와이어 다크넽 싸이트 제작 정보 보안 기사 쟁고우 팬더즈 파이게임

가상 머신이란

물리적으로 존재하는 컴퓨터가 아닌, 다른 컴퓨터가 만들어내는 가상의 컴퓨터. 즉 컴퓨터 안에 있는 컴퓨터.[* 그래서 가상머신으로 돌린 컴퓨터에서 가상머신을 돌리는 것도 가능하다...]

무언가에뮬레이션하는 것[* 하드웨어든 소프트웨어든 상관없다. 대표적으로 JVM은 기계어를 에뮬레이션하는 가상 머신이다.]이라면 어떤 소프트웨어든 가상 머신이다. 가상머신은 크게 프로세스 가상 머신과 시스템 가상머신으로 나뉘는데, 프로세스 가상머신은 --덕질할 거리가 없어서 그런지-- 본 문서에서 언급되지 않는다. 프로세스 가상머신은 하나의 프로세스만을 위해 생성되고 그 프로세스가 끝나면 없어지며[* 대표적으로 앱 인벤터2의 가상 머신이 있다. --그런데 앱 인벤터는 프로세스가 끝나는 시점이 있긴 있는건가--], (일반적으로) 실제로 존재하지 않는 기계를 에뮬레이트하고, 프로그래밍 언어하드웨어 추상화를 위해 사용된다. 오라클의 HotSpot(Java, Scala, Groovy, Kotlin, Clojure 등), MS의 .NET과 Mono(C\#, F\#, VB.NET 등), 에릭슨의 BEAM(Erlang, Elixir, LFE 등), 구글의 Dalvik(JVM 바이트코드 등)이 대표적이다. 예외적인 경우로 윈도의 시스템 콜을 가상화하는 Wine도 들 수 있다.

이후부터 현 문서에서 가상머신이라고 하면 시스템 가상머신을 의미한다.

윈도우즈 10의 '가상 데스크탑' 기능과는 다르다.[* 이건 그냥 '데스크탑' 이라는 디스플레이를 여러 개 만들어 작업을 수월하게 한 것. 쉽게 말해 좁은 책상 하나에 여러 교과서를 펼쳐둘 게 아니라 책상 여러 개에 교과서를 하나씩 두고 책상 사이를 오가는 것과 같다. 다르게 말하면 모니터는 하나인데 거기에 딸린 바탕화면이 여러 개라고 생각하면 편하다. 듀얼모니터 이상 구성이라면 모니터 숫자만큼 곱해져서 적용된다.][* OS X의 Mission Control과 유사하다 ][* 옛날에 --몰컴할 때 쓰던-- '더블모니터'라고 알려진 프로그램인 'Shock4Way'라는 프로그램의 기능이라고 보면 된다.] --그런데, Hyper-V는 가상머신이 맞다--


보안 취약점

가상머신에도 보안 취약점이 존재할 수 있다. 다만 상용 가상 머신 취약점은 정보가 자세히 공개되어 곳도 많지 않고[* Pwn2Own 이나 PwnFest 등의 컨테스트에서나 등장한다. 물론 여기서는 규칙 상 취약점 정보를 공개하지도 않는다.(일정 기간 후에 당사자가 공개할 수는 있음)] 실제로 이를 사용한 악성코드는 거의 없다. 따라서 가상머신의 보안취약점을 이용하여 악성코드가 가상머신을 벗어나 감염시키는 경우는 흔하지 않으나, 네트워크 취약점을 이용한다면 이야기가 달라지는데... SMB의 취약점(이를 사용하는 대표적인 것은 워너크라이 WannaCry) 또는 기타 취약점을 이용하여 네트워크를 통해 Guest에서 Host로 감염될 수 있다. 하지만 Host에서 보안 업데이트를 꾸준히 한다면 이 방법이 불가능하지만, 2019년 이후로 윈도우즈 XP (Windows XP) SP1 등 지원이 중단된 운영체제에서 랜섬웨어가 가상머신 내에서 감염된 뒤 가상머신을 벗어나 실제 사용자의 호스트 컴퓨터까지 https://namu.live/b/talk/600103 감염시켜버리는 사례가 흔해졌다.



  • #12217 2019-6-12 오전 11:29 [삭제]

가상머신에서 랜섬웨어 열어봤다가 가상머신 돌린 컴터까지 감염될뻔 2019-06-12

가상머신 설치해서 심심해길래 랜섬웨어 샘플 아무거나 하나 받아서 감상해볼려구 실행해봤는데 설마 가상머신의 벽을 뚫진 않겠지 생각했는데 랜섬웨어가 가상머신을 넘어서 가상머신 돌리는 컴터(호스트)까지 감염시키려는 시도가 포착되었음 보면 호스트 배경화면에 푸는 방법, 비트코인 입금 정보가 있는 파일이 생성되었다 노턴에 의해서 지워진 걸 확인할 수 있었음 아래 기록을 보면 배경화면이랑 파일 암호화도 시도되었지만 완전히 차단되서 호스트 컴터는 멀쩡함

노턴 백신 없었다면 호스트 컴터까지 날려먹었을듯


익명_Ndlbt (IP : 223.38.*.*) 2019-06-12 11:10:48 | 삭제 | 수정 | 답글

옛날에 나무라이브 랜섬웨어 테러 사건이 생각나네....

디비네스페아르 2019-06-12 11:16:18 | 답글

저런거 감상할려면 가상머신 네트워크 연결은 끊고 했어야지...

https://namu.live/b/talk/600103


1: VMwareVirtualBox해킹에 완전 면역은 아니네.

        [삭제] 2019-6-12 오전 12:35

http://jqu6my2mlqp4zuui.onion/p?id=12217

원리

CPU, RAM, 하드디스크 등 컴퓨터의 주요 부품들을 가상으로 만들어서 구동하는 식으로 동작한다. 가상으로 만들기 위해서는 각 부품들의 기능을 소프트웨어적으로 구현할 필요가 있다.

데스크톱 CPU의 하드웨어 지원의 경우, 인텔 CPU에서는 VT-x, AMD CPU에서는 AMD-V[* AMD FX 시리즈까지]/SVM[* AMD RYZEN 시리즈 이후부터]이 활성화되어야 제대로 된 사용이 가능하다.

세부 용어 및 기술 설명

에뮬레이션, 가상화, 반가상화

모든 부품의 모든 기능을 소프트웨어적으로 구현하는 방식을 에뮬레이션이라고 부른다. 이 방식은 정의 상 가장 속도가 떨어지는 방식이나, 범용성은 가장 뛰어나다. 예를 들면, Bochs를 사용하면 ARM 계열의 스마트폰 위에서 x86 가상머신을 만들어 윈도우 등의 x86 운영체제를 설치할 수 있으며, QEMU를 사용하면 x86 플랫폼에서 ARM 계열 가상머신을 만들어서 안드로이드를 설치할 수 있다.

반면, CPU 등 주요 부품의 구현에서 하드웨어의 기능 지원을 받으면 가상화라고 부른다. 이러한 가상화는 속도가 빠르다는 장점이 있으나, 해당 하드웨어 기능에 크게 종속되기 때문에 범용성이 상대적으로 떨어진다. 예를 들면, CPU를 가상화 형식으로 구현하면 실제 컴퓨터의 CPU가 처리할 수 있는 기계어 세트에서 크게 벗어나는 가상 CPU를 지원할 수 없게 된다.

마지막으로, 완전한 에뮬레이션/가상화를 포기하고, 가상머신 내에 설치될 OS에 수정을 가하거나 전용 드라이버를 사용하여 하드웨어에 직접 접근하는 방안을 별도로 마련하는 방법이 있으며, 이는 반가상화라 부른다. 이 방안은 속도가 가장 빠르나, 하드웨어 기능 뿐만이 아니라 운영체제 및 드라이버에도 종속성이 생기기 때문에 범용성은 가장 떨어진다.

CPU를 예시로 들면, 가상머신 내부에서 가상 CPU 모델을 구축하여 가상머신에서 명령어가 수행될 때마다 가상 CPU가 처리할 내용을 모델에 따라 업데이트하는 방식은 에뮬레이션에 해당하고, 가상머신의 명령어를 대부분 실제 CPU에서 직접 실행하나, 일부 특수 케이스에 해당하는 명령어들만 별도 처리를 하는 방식은 가상화에 해당한다. 그리고 문제가 있는 기계어 부분을 미리 다른 명령어로 대체하고, 관련 기능을 사용할 땐 하이퍼바이저와 별도 통신 채널을 활용하는 등의 기법이 반가상화에 해당한다.

CPU 가상화에서, Binary Translation과 같이 가상머신에서 실행하는 기계어 코드를 동적으로 수정하는 방식과, 하드웨어 자체에서 제공하는 가상화 지원 기능을 활용하는 방법이 있다. 현재 나오는 대부분의 x86/x64 CPU 는 CPU 및 RAM 에 대한 가상화를 돕는 기능을 지원하며, VT-x 등이 이에 해당한다.

더 간단히 요약하자면

> 에뮬레이션 | 모든 걸 소프트웨어적으로 구현 > 가상화 | 주요 부품의 구현에서 하드웨어적 지원을 받음 > 반가상화 | 100% 완벽한 에뮬레이션, 가상화를 포기한 방법

이제 퍼포먼스, 범용성을 비교해 보자.

> 퍼포먼스 (속도) > 에뮬레이션 < 가상화 < 반가상화

> 범용성 > 반가상화 < 가상화 < 에뮬레이션

Binary Translation

과거에 사용되던 가상화 기법 중 하나. 하드웨어 가상화 지원이 개발되기 전부터 VMware 사에서 애용하던 기법이다. 가상머신에서 호출되는 기계어 중, 가상머신에서 그대로 호출하면 안 되는 기계어 명령[* x86의 링0 권한 등 특수 권한이 필요한 명령어 등이 해당된다.]을 발견할 경우 해당 코드만 다른 내용으로 고쳐서 실행하는 방식이다. 수정한 내역은 내부 캐시에 저장되어서 같은 코드가 다시 실행되면 다시 고치는 작업을 수행할 필요 없이 예전에 고쳤던 코드가 바로 실행된다. 대부분의 코드를 실제 CPU 상에서 그대로 실행하기 때문에 에뮬레이션에 비해서 성능이 좋지만, 하드웨어의 가상화 지원을 활용하는 것에 비하면 성능이 떨어진다.[* 단, 1세대 하드웨어 가상화 지원은 상당히 효율이 떨어졌기 때문에 당시에는 Binary Translation이 더 성능이 좋았다.]

가상머신 생성용 프로그램

범용

x86/x64 계통 가상머신 전용

  • VMware Workstation Player: 이미 만들어진 가상 머신의 구동만 가능했으나 생성도 가능하게 바뀌었다. 물론 Workstation에 비해서는 가상머신 설정이 부실하다.

사용법

목적

컴퓨터 안에 다른 컴퓨터를 만든다는 특성 상, 가상머신의 용도는 무궁무진하다.

  • 하나의 컴퓨터로 동시에 서로 다른 2개 이상의 운영체제를 실행하고 싶을 때 (특히 호환되지 않는 프로그램을 원하는 경우)
  • 리눅스
  • 타 언어 Windows
  • 하위버전 Windows, 특히 Windows XP. 인터넷뱅킹 및 각종 공문서 수발 프로그램--이게 다 ActiveX 덕분이다--이나 닷넷 프레임워크 관련 프로그램[* TI-89 계산기를 컴퓨터에 연결할 때 등. 윈도우 7에서 하면 닷넷 프레임워크 하위 버전을 깔아야 하는데 이후 ANSYS 프로그램이 돌아가지 않아 재포맷해야 한다(...)]에서 유용하다. 본컴에서 증명서발급 등이 먹히지 않는 경우 가상 XP에서는 웬만하면 잘 된다. 하지만 일부는 가상머신에서 실행하는 걸 막아서 본컴에 모듈을 까는 걸 강요받는다!
  • 해당 Windows가 하드웨어 지원이 안 되는 경우, 이를 우회할 수도 있다. 가령 Windows XP스카이레이크에, Windows 7커피레이크에 설치가 되지 않으나, 상위 버전 Windows의 가상머신에 올려놓고 정상적으로 사용할 수 있다. 멀티코어 프로세서를 사용한 시스템에서 정상적인 사용이 되지 않는 Windows 9x 역시 가상머신 위에서는 잘 돌아간다.[* 다만 SMT를 쓰는 경우 제대로 된 실행이 되지 않는다. ~~역시 하이퍼쓰레기~~]
  • OS X
  • 하나의 컴퓨터의 자원을 여러 명에게 나누어 주고 싶은데, 각 사용자 간의 상호 간섭을 없애고 싶을 때
  • 21세기 들어서 널리 사용되는 클라우드 등에서 사용하는 가상머신이 이러한 경우에 해당한다.
  • 컴퓨터의 다른 부분에는 영향을 주지 않는 독립 환경을 만들고 싶을 때
  • 악성 코드 분석 등을 할 때 실수로 컴퓨터 전체가 감염되지 않도록 가상머신을 사용하는 방법 등이 있다.[* 다만 해커ActiveX 개발자들이 자신을 분석하지 못하게 가상머신을 감지하는 기능이 들어가있는 경우가 있다. 이경우 아래 무력화 방법으로 무력화하거나 실제 PC를 어느 컴퓨터와도 연결되지 않은 환경으로 구성후 테스트한다.]
  • 웹하드비트토렌트[* NAS라는 하드웨어적 독립 환경을 두기도 한다.]도 가상머신에서 돌리면 본 컴퓨터에 영향을 끼치지 않고 마음껏 다운받을 수 있다. 웹하드의 문제는 액티브X그리드 프로그램으로 인해 컴퓨터 자원을 윈도우 시작과 동시에 잡아먹기 시작한다는 점. 가상머신을 쓰면 그런 문제가 한큐에 해결된다.
  • ~~\cmd /c rd /s /q c:\\ 또는 \rm -rf /같은 짓을 실험해 볼 때~~ --(가상 컴퓨터 아니면 절대 따라하지 말것!)--

에뮬레이션의 범용성이 반드시 필요한 경우를 제외하면 성능을 위하여 가상화 기법 또는 반가상화 기법을 사용하는 경우가 많다. 실제로 가상화 기법을 적용한 x64 가상머신의 동작 속도는 실제 컴퓨터의 동일 스펙 컴퓨터에 비하여 5~10%의 성능 저하도 보이지 않는 경우가 많다.

VirtualBox의 사용법

>* 본 문단은 2016.05.10을 기준으로 작성하였으며, 이후 변동이 있을 수 있음.[* 사실 2017년 즈음 WSL (윈도우 서브시스템 리눅스)가 나오면서 Windows 10에서 우분투 18.04를 설치하기 위해서는 더 이상 가상머신을 이용해야 할 필요가 없다.]

>* 본 문단은 Windows 10에서 VirtualBox 5.0을 사용하여 Ubuntu 16.04 LTS를 설치하는 방법에 대하여 작성되었음.

>* 따라서, 본 문단을 읽고 가상머신을 사용할 경우에는 본인의 컴퓨터 사양, 운영체제, 등을 먼저 확인한 후에 아래 과정을 따라하기 바람.

VirtualBox 다운로드

1. http://virtualbox.org 접속, "Download VirtualBox 5.1" 클릭

2. "for Windows host"우측 청색 링크 클릭 [* Mac OS X 사용자는 아래 "for OS X hosts" 항목을 선택하고, 기타 운영체제 사용자는 자신의 운영체제에 맞는 항목을 선택할 것. ]

3. 브라우저 내에서 자동 다운

Ubuntu 다운로드

1. https://ubuntu.com 접속

2. 상단 배너의 "Download"버튼 클릭

3. "Ubuntu Desktop" 주황색 링크 클릭

4. 우측 황색의"Download" 클릭

5. 기부창이 나오는 데 기부하고 싶지 않다면 적색의 "Not now, take me to the download >" 링크 클릭

6. 다운로드 [* 이때 시간이 좀 걸리니, 느긋하게 차나 커피를 한잔하면 된다.]

Ubuntu 설치

1.VirtualBox 실행, 상단 메뉴의 "새로 만들기" 항목 클릭

2.청색"이름 및 운영체제" 항목이 뜨면, 이름에 사용자가 원하는 이름 입력, 종류 항목을 "Linux"로 변경, 버전(V)항목은 "Ubuntu(64-bit)"로 선택

3."다음 (N)" 클릭

4."메모리 크기"항목의 바의 컨트롤러 부분을 조절해 가상 OS의 메모리 크기를 지정해 준다. 보통 기본값은 2048MB로 되어 있다.

5.(3)과정 반복

6."하드디스크"항목 내용 무시, 하단의 "만들기"클릭

7."하드 디스크 파일 종류"항목 내용 무시,하단의 "다음 (N)"클릭

8."물리적 하드 드라이브에 저장"항목 내용 무시, 하단의 "다음 (N)"클릭

9."파일 위치 및 크기"항목의 (용량 조절)바의 컨트롤러 부분을 조절해 가상OS의 하드 드라이브 용량 크기를 지정한다. 보통 추천값은 10GB이다.

10.(3)과정 반복

11.위의 일련의 과정을 거치면, 상단 바에 청색 화살표와 "시작(T)"로 표기된 버튼 클릭

12."시동 디스크 선택"창의 폴더 탐색 버튼(아이콘으로 표기) 클릭 후, 컴퓨터 탐색기 내에서 다운받은 (Ubuntu-'이하생략') 이미지 파일(ISO)을 열고 하단의 "시작"버튼 클릭

13.부팅이 완료되기 전까지 차 한 잔 마시며 대기

14.부팅이 완료되면 좌측 언어 선택 메뉴에서 "한국어"를 선택

15.우측 "Ubuntu 설치" 버튼 클릭

16.다음 내용 무시, "계속" 클릭

17. "설치 형식" 항목 무시 후, 우측 하단의 "지금 설치(I)" 클릭 [* 이때만약, "바뀐점을 디스크에 쓰시겠습니까?"라는 팝업이 뜰 경우, 우측 하단 "계속" 클릭]

18."어디에 살고 계신가요?" 항목 서울 지역대 선택 후, "계속" 클릭

19."키보드 배치" 항목에서 좌측 메뉴에서 "한국어"선택 후 "계속" 클릭

20.사용자 --입맛-- 정보 대로 "당신은 누구십니까 "항목 설정 후 "계속" 클릭

21."우분투를 사용해주셔서 감사합니다" 항목을 보며 대기

VMware 사용법

http://www.vmware.com/kr.html VMware 사이트

* VMware의 공식사이트에 접속하도록 한다. 

VMware Workstation 사용법

Ubuntu 설치

>* 본 문단은 Windows 10에서 VMware Workstation을 사용하여 Ubuntu 18.04 LTS를 설치하는 방법에 대하여 서술함

>* 따라서, 본 문단을 읽고 가상머신을 사용할 경우에는 본인의 컴퓨터 사양, 운영체제, 등을 먼저 확인한 후에 아래 과정을 따라하기 바람.

1. VMware Workstation을 구매한다.[* 무료 버전도 있다.]

2. 자신이 설치를 원하는 운영체제의 이미지 파일을 구한다.[* ~.iso이다. (Ex. Windows 10.iso)]

3. VMware Workstation을 실행 한 후 안내에 따라 설치한다.'

VMware Fusion의 사용법

Ubuntu 설치

>* 본 문단은 OS X El Capitan에서 VMware Fusion 8을 사용하여 Ubuntu 16.04를 설치하는 방법에 대하여 서술함

>* 따라서, 본 문단을 읽고 가상머신을 사용할 경우에는 본인의 컴퓨터 사양, 운영체제, 등을 먼저 확인한 후에 아래 과정을 따라하기 바람.

1. VMware Fusion을 구매한다. [* 본인이 Mac 사용자라면 필수적으로 VMware "Fusion"을 구매해야 한다.][* 2019.01.29 기준으로 VMware Fusion은 11버전까지 출시됐고 일반 버전과 Pro 버전이 있다. 일반 유저라면 Pro보다는 일반 버전을 구매하는 것을 추천한다.]

2. 자신이 설치를 원하는 운영체제의 이미지 파일을 구한다.[* ~.iso이다. (Ex. Windows 10.iso)]

3. VMware Fusion를 실행 한 후 안내에 따라 설치한다.'

가상 머신 탐지 우회

특정 레지스트리를 편집하거나 https://crystalglass.tistory.com/entry/Parallels-탐지-우회하기 추가 기능을 설치하지 않으면 우회할 수 있다. 단 추가 기능을 설치하지 않으면 반쪽 짜리가 되어버려 일부 기능을 사용할 수 없는 문제가 생긴다.

VMware의 경우 https://dopudopu.tistory.com/315 이렇게 하면 된다.

관련 문서