본문으로 바로가기

아무래도 보안관련, 특히 악성코드와 접점이 많은 일을 하다보면 Host OS를 자주 밀게 됩니다. 저 같은 경우도 악성코드 유포지에 대한 연구를 하다 보니 자연스레 컴퓨터도 느려지고, 다양한 모듈들을 테스트를 하다 보니 컴퓨터가 자주 느려집니다. 그래서 이번에 포맷하는 겸 "PC방 처럼 원 클릭으로 복구 할 수 있는 방법이 없을까?"라고 생각했는데, 좋은 사이트에서 따라만 하다 보니 설정이 잘 되서 설정하는 부분만 정리해봅니다. 자세한 내용은 이 포스트의 맨 아래 reference를 참조하시길 바랍니다.


Windows 7과 Windows XP와 설정방법은 조금 다릅니다. 이 자료는 Windows 7에만 초점을 맞춰 정리하였습니다.


파티션분할

실행 > diskmgmt.msc (디스크 관리)



System 디스크 파티션 분할이 필요 (Host OS가 설치할 파티션과 백업을 저장해둘 파티션)




가독성을 위해 다음과 같이 드라이브 이름을 변경


필요한 파일 다운로드

imagex.exe - 470KB (481,680 바이트) : Download

winpe.wim  - 123MB (129,261,986 바이트) : Download



백업파일을 보관할 파티션의 루트에 다음과 같이 구성



cmd 창에서 winpe.wim의 내용을 pe 폴더에 Mount 하기

imagex /mountrw winpe.win 1 해당 파티션 드라이브:\pe



해당 파티션 드라이브:\pe\windows\system32\startnet.cmd 파일 수정

안의 모든 내용 지우고 다음 내용으로 저장

@echo off


for %%a in (C: D: E: F: G: H: I: J: K: L: M: N: O: P: Q: R: S: T: U: V: W: X: Y: Z:) do (
if exist %%a\GBackup (
set bdrv=%%a\GBackup
)
)

set path=%path%;%bdrv%
call "%bdrv%\Config.cmd"

if /i "%auto%" == "Y" (
ghost32.exe -clone,mode=prestore,src=%bdrv%\Backup.gho:1,dst=%sdrv% -sure -fnf -fx
exit
)

cls



Unmount 하기

mount한 관련 폴더를 모두 닫고 다음 명령어 실행, unmount가 끝나면 pe폴더 삭제해도 무방

imagex /unmount 해당 파티션 드라이브:\pe /commit



백업파일을 보관할 파티션에 GBackup 폴더 생성하고 수정한 winpe.wim, boot.sdi, ghost32.exe, omnifs32.exe를 구성

수정한 winpe.wim

boot.sdi - 3.02MB (3,170,304 바이트) : Download

Ghost 11.5.1.2266.zip - 16.9MB (17,729,102 바이트) : Download

>> 압출풀고 ghost32.exe, omnifs32.exe만 사용



cmd 실행해서 다음 명령들을 사용

두번째 줄의 파티션에 백업파일을 보관할 파티션을 입력

bcdedit /create {ramdiskoptions} /d "ram"

bcdedit /set {ramdiskoptions} ramdisksdidevice partition=해당 파티션 드라이브:

bcdedit /set {ramdiskoptions} ramdisksdipath \GBackup\boot.sdi

bcdedit /deletevalue {ramdiskoptions} description


부팅할때 뜨는 이름 입력

bcdedit /create /d "고스트 자동 복원" /application osloader



GUID가 출력됩니다. GUID는 {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} 형태의 16진수입니다.

다음 명령에서 {GUID}부분을 위 숫자로 바꿔 주시고

1번줄과 3번줄에 백업을 저장할 파티션을 입력하시면 됩니다.

마지막 타임아웃은 "윈도우로 부팅"과 "백업" 선택 대기시간입니다. 움직이면 시간은 사라집니다.

bcdedit /set {GUID} device ramdisk=[해당 파티션 드라이브:]\GBackup\winpe.wim,{ramdiskoptions}

bcdedit /set {GUID} path \windows\system32\winload.exe

bcdedit /set {GUID} osdevice ramdisk=[해당 파티션 드라이브:]\GBackup\winpe.wim,{ramdiskoptions}

bcdedit /set {GUID} systemroot \windows

bcdedit /set {GUID} locale ko-KR

bcdedit /set {GUID} inherit {bootloadersettings}

bcdedit /set {GUID} detecthal yes

bcdedit /set {GUID} winpe yes

bcdedit /displayorder {GUID} /addlast

bcdedit /timeout 10



그리고 재부팅하면 "고스트 자동 복원"으로 부팅 할 수 있습니다. 이 부팅은 winpe.wim으로 부팅한 것이기 때문에 부팅 로컬은 기존의 Host OS와 다른 백업 파티션이 되겠습니다.



재부팅하면 관리자 모드가 실행되는데 여기서 omnifs32를 사용합니다. 커맨드에서 omnifs32 info를 입력합니다.



숫자의 의미는 [디스크.파티션]입니다.

그림에 따라 Windows7 파티션은 1.2입니다. (디스크 명을 바꾼 이유는 위와 같이 정확하게 판단하기 위함이었습니다.)

이 번호를 잘 기억하시고 다음과 같이 명령을 입력합니다. 

1번 디스크의 2번 파티션을 Backup.gho로 백업합니다라는 의미입니다.

ghost32 -clone,mode=pcreate,src=1:2,dst=%bdrv%\Backup.gho -sure -z2 -rb



백업이 끝나면 재부팅하여 다시 Windows7으로 돌아옵니다. 처음 4개의 파일이 있는 폴더(GBackup)에 들어가시면 Backup.gho라는 이름으로 백업되어 있습니다. 이렇게 해서 총 5개의 파일이 존재하고 Config.cmd 라는 이름으로 파일을 하나 더 만들고 다음 내용을 입력합니다. 여기서 1:2은 방금전 백업할 때 사용하였던 숫자입니다.

set sdrv=1:2

set auto=Y



끝.


TIP.

모의해킹 전용 OS, 악성코드 분석 테스트 베드 등 스냅샷을 사용하든 다양한 gho파일을 만들어 Backup.gho를 대처하고 복구하여 사용 할 수 있습니다. 아무래도 로컬에서 실행하다 보니 안티 가상머신을 자연스럽게 우회할 수 있겠죠. 하지만 단점으로는 큰 용량의 하드디스크가 필요로하며, 저장하고 복구하는데 걸리는 시간이 길어집니다.


Reference

[1] : http://cappleblog.co.kr/3


댓글을 달아 주세요

티스토리 툴바