
게스트 VM 잠금을 해제하기 위한 DLL 주입 도구
V M I n j e c t o r
(c) 2012, Marco Batista
<marco.batista [at] secforce.com>
GPLv3에 따라 라이선스가 부여됨 (LICENSE 파일 참조)
VMInjector는 직접 메모리 조작을 통해 VMware Workstation/Player에서 실행 중인 주요 운영 체제의 OS 로그인 인증 화면을 우회하도록 설계된 도구입니다.
VMInjector는 운영 체제 인증 화면을 우회하기 위해 VMware 게스트의 메모리를 조작하는 도구입니다. VMware는 RAM 메모리를 포함하여 게스트 운영 체제에 할당된 리소스를 관리합니다. VMInjector는 매핑된 리소스에 접근하기 위해 VMware 프로세스에 DLL 라이브러리를 주입합니다. DLL 라이브러리는 VMware 프로세스가 소유한 메모리 공간을 파싱하고 게스트의 RAM 이미지에 해당하는 메모리 매핑 RAM 파일을 찾는 방식으로 작동합니다. 할당된 RAM 파일을 조작하고 인증을 담당하는 함수를 패치함으로써, 공격자는 기본 가상 호스트에 대한 무단 접근 권한을 얻습니다. VMInjector는 현재 잠긴 Windows, Ubuntu 및 Mac OS X 운영 체제를 우회할 수 있습니다. 메모리 내 패칭은 비영구적이므로, 게스트 가상 머신을 재부팅하면 정상적인 비밀번호 기능이 복원됩니다.
가상 호스트의 비밀번호를 잊어버려 재설정이 필요한 경우 VMInjector를 사용할 수 있습니다. 가장 일반적으로 이 도구는 침투 테스트 활동 중에 사용될 수 있으며, VMWare 호스트에 대한 접근 권한을 획득한 공격자가 해당 호스트에서 실행 중인 게스트에 대한 추가 접근 권한을 얻고자 할 때 사용됩니다.
관리자 접근 권한이 있는 Windows 머신; VMware Workstation 또는 Player 에디션; 잠긴 게스트 VM;
VMInjector는 2개의 부분으로 구성됩니다: DLL 주입 애플리케이션 (Python 스크립트 또는 제공된 변환 실행 파일) DLL 라이브러리 (x86 및 x64)
이 도구는 두 DLL을 모두 제공하여 x86 및 x64 비트 아키텍처를 모두 지원합니다. 사용자는 자신만의 DLL 인젝터를 사용하여 호스트에서 실행 중인 게스트 가상 머신을 선택할 수 있습니다.
도구를 실행하려면 명령줄에서 제공된 VMInjector (32 또는 64) 실행 파일을 실행하십시오. VMWare는 각 게스트를 서로 다른 프로세스에서 실행합니다. VMInjector는 우회가 필요한 게스트를 실행 중인 프로세스를 가리켜야 합니다. 사용자가 프로세스를 선택하면 선택한 대상에 DLL을 주입합니다. DLL이 주입되면 사용자는 OS를 지정해야 메모리 패칭을 수행할 수 있습니다.
이 도구는 법적 목적으로만 사용됩니다. 코드는 GPLv3 라이선스로 배포됩니다.
2006년에 게스트 가상 머신에 셸코드를 주입하는 방법에 대한 귀중한 연구를 수행한 Michael Ligh에게 감사를 표합니다.
또한 IEEE 1394 FireWire 트릭을 사용하여 잠긴 Windows, Ubuntu 및 OS X 머신을 잠금 해제할 수 있는 도구인 Inception에 대한 작업을 수행한 Carsten Maartmann-Moe에게도 감사를 표합니다. 이 기법은 (현재는 사용되지 않는) winlockpwn 도구에 의해 처음 소개되었습니다.