Win10 PE Forensics: 윈도우 10 PE 포렌식 – CLI 형식으로 설치 및 부팅
# 윈도우 10 PE 포렌식
Windows PE (Preinstallation Environment)는 말 그대로 데스크톱 버전(Home, Pro, Enterprise, Education) 등의 Windows를 설치, 배포 및 복구하는 데 사용되는 경량형 운영체제이다. 보통 PC의 비밀번호를 잊어버린 경우에 해당 OS로 부팅 시켜 비밀번호를 초기화 시킨다든지, OS가 부팅이 되지 않을 때 저장 장치 내에 있는 파일들을 백업시키는 용도로 사용한다.
기존에는 개발자 테스트 용으로 사용되었으나, 현재는 Windows 자동화 설치 키트(WAIK)를 설치함으로써 누구든지 필요한 용도로 구성해 사용할 수 있게 되었다.
그렇다면 Windows PE는 포렌식적으로 어떤 이점이 있을까? Windows PE를 CLI 방식으로 설치해 보고, 부팅 USB를 통해 직접 부팅한 후 분석 시스템 내에 존재하는 아티팩트를 수집하면서 알아보도록 하자.
본 포스팅의 목차 및 준비 사항, 테스팅 환경에 관련된 내용은 아래와 같다.
준비사항
- Windows PE 환경을 구성할 PC
- 분석 대상 PC 정보: 32 bit? 64 bit?
- 부팅 및 수집용 USB: 4 GB 이상, USB 3.0 권장
테스팅 환경
- Windows PE 환경을 구성할 PC : Windows 10 Pro (x64)
- 분석 대상 PC 정보 : Windows 10 Pro (x64)
- 부팅 및 수집용 USB : SanDisk Ultra USB 3.0 64GB
- 부팅 및 수집용 USB 구성
- WINPE : Windows PE OS 설치
- REPOSITORY: 데이터 저장용
1. USB 포맷 및 파티션 분할
Windows PE를 USB를 통해 부팅해 아티팩트를 수집할 경우, 보통 노트북 기준으로 했을 때 기본적으로 2개의 USB 포트가 있는 경우가 많다.
만약, 동글 USB를 필요로 하는 포렌식 소프트웨어(ex. X-Ways Forensics, EnCase)를 통해 수집을 진행한다고 하면 이미 1개의 USB 포트를 사용하고 있기 때문에 각 용도에 맞는 USB를 연결해 부팅과 수집을 동시에 진행할 수 없다. 이에 따라, 1개의 USB에 부팅과 수집을 전부 할 수 있게 구성하기 위해 USB를 포맷한 후 파티션을 분할해 부팅과 수집을 모두 진행할 수 있도록 구성했다.
Step 1. USB 파티션 분할
하나의 USB로 부팅 및 아티팩트 수집을 진행할 것이기 때문에 부팅 파티션과 데이터 저장용 파티션으로 분할해야 한다. 해당 과정은 “디스크 관리”를 통해 쉽게 진행할 수 있다.
디스크 관리 실행 방법은 크게 2가지로 나눌 수 있다.
1) 실행 창 (Windows 키 + r) – “diskmgmt.msc” 입력 ([그림 1] 참고)
2) Windows 10을 사용하는 경우, 작업 표시줄 검색 창에 “diskmgmt.msc” 입력 ([그림 2] 참고)
“디스크 관리”를 실행했으면, 현재 USB가 연결된 디스크를 확인한다. 이때, 볼륨을 삭제해 할당되지 않은 디스크로 만든 후 부팅 파티션과 데이터 저장용 파티션으로 분할한다.
필자는 부팅 파티션에는 10GB의 용량을, 데이터 저장용 파티션에는 나머지 용량을 지정했다. 부팅 파티션과 데이터 저장용 파티션으로 파티션을 분할하는 방법은 [그림 3]부터 [그림 7]과 같다.
2. Windows PE 설치 – CLI 방식
Step 1. Windows ADK 설치
먼저, Windows PE를 설치하기 위해서는 Windows Assessment and Deployment Kit(이하 ADK)를 적절한 버전으로 다운로드해야 한다. Windows ADK를 설치하는 이유는 Windows PE를 미디어에 설치하기 위해서 사전에 설정하기 위해 필요한 도구가 있기 때문이다.
본 포스팅에서는 Windows 10으로 설치하지만, 만약 Windows 10 이하 버전 설치를 희망한다면 다른 OS 버전으로 ADK를 설치하면 된다.
총 2가지의 설치 파일 위 [그림 8]을 참고해 빨간 박스로 되어 있는 링크를 클릭한 후, 설치를 진행한다. 2가지의 설치 파일로 설치하는 방법은 Step 2과 Step 3를 참고하길 바란다.
다른 글들을 참고했을 때 ‘Download the Windows ADK for Windows 10, ~’ 링크만 클릭해 다운로드하면 Windows PE를 설치할 수 있지만, 버전 1809부터는 PE를 설치하기 위해서는 따로 Windows PE에 관련된 ADK를 설치해야 하니 참고 바란다.
Step 2. adksetup.exe 관리자 권한으로 실행
‘adksetup.exe’ 파일은 ‘Download the Windows ADK for Windows 10, version 1903’ 링크를 클릭하면 다운로드할 수 있다.
다운을 완료했다면 ‘adksetup.exe’ 파일을 관리자 권한으로 실행하고, 아래 [그림 9]와 같이 기본 설정으로 두고 설치를 진행한다.
Step 3. adkwinpesetup.exe 관리자 권한으로 실행
‘adkwinpesetup.exe’ 파일은 ‘Download the Windows PE Add-on for the ADK’ 링크를 클릭하면 다운로드할 수 있다.
Step 2에서 ADK를 설치했다면 Windows PE를 위한 ADK를 추가적으로 설치해야 하는데, ‘adkwinpesetup.exe’ 설치 파일을 관리자 권한으로 실행하고 [그림 10]과 같이 체크한 후 설치를 진행하면 된다.
Step 4. 부팅할 PC에 대한 Winows PE 파일 복사
Windows PE를 미디어에 마운트 하기 위해 각 ADK를 설치했으면 이제 미디어가 부팅할 수 있게 설정을 해야 한다.
해당 설정은 ‘배포 및 이미지 도구 환경(Deployment and Imaging Tools Environment)’을 관리자로 실행한 후 할 수 있으며, 모든 단계가 마무리되기 전까지 ‘배포 및 이미지 도구 환경’ 창을 종료하면 안 된다.
먼저, ‘copype’ 도구를 이용해 Windows PE 파일 집합을 포함하는 작업 디렉터리를 만든다. ‘copype’ 명령을 실행하는 것은 부팅 가능한 미디어를 만들기 위함이며, 추후 Makewinpemedia 스크립트를 사용해서 부팅 가능한 미디어를 만들 수 있다.
‘copype’ 도구는 Windows PE 파일의 디렉터리 구조를 만들고 부팅 파일 및 Windows PE 기본 이미지(Winpe.wim)를 지정한 디렉터리 하위 Media 디렉터리에 복사한다. 복사본은 x86, amd64, arm으로 지정할 수 있다.
이때, ‘copype’ 도구는 Windows PE에 관련된 ADK를 설치해야지만 사용할 수 있기 때문에 꼭 설치하길 바란다(step 3 참고).
명령어 설명
> copype amd64 C:\WinPE_amd64
부팅할 PC(64비트 UEFI 및 BIOS PC)에 대한 Windows PE 파일을 C:\WinPE_amd64 디렉터리 내에 복사한다.
Step 5. Windows PE 부팅 이미지 마운트
다음으로 부트로더를 이용해 ‘boot.wim’ 파일을 로드한 후, Windows PE를 실행시키기 위해 아래 [그림 12]와 같이 ‘boot.wim’ 파일을 마운트 한다. ‘boot.wim’ 파일을 마운트 시키면 지정 경로(C:\WinPE_amd64) 하위 mount 디렉터리에 [그림 13]과 같이 추가된 것을 확인할 수 있다.
명령어 설명
> Dism /Mount-Image /ImageFile:”C:\WinPE_amd64\media\sources\boot.wim” /index:1 /MountDir:”C:\WinPE_amd64\mount”
Windows PE 이미지를 마운트 하기 위한 명령이다. DISM(배포 이미지 서비스 및 관리) 도구를 통해 WIM 또는 VHD 이미지를 탑재할 수 있는데, 이미지를 탑재하면 이미지 내용이 디렉터리로 매핑되므로 이미지를 부팅하지 않고 DISM을 사용해 이미지를 서비스할 수 있다.
Step 6. 부팅 드라이브 이외에 다른 드라이브 읽기/쓰기 모드 마운트 여부 결정
Windows 10 PE 환경이 부팅 드라이브 이외에 다른 드라이브를 읽기/쓰기 모드로 마운트 할지에 대한 여부를 결정해야 한다. 이는 SAN(Storage Area Network) 기능을 통해 결정할 수 있다.
따라서, Windows 10 PE 이미지에 SAN 정책을 구성해 디스크가 자동으로 마운트 되는지에 대한 여부와 마운트 할 수 있는 디스크를 제어할 수 있다.
Windows ADK에서 사용 가능한 Windows PE 이미지의 경우에는 기본 SAN 정책은 사용 가능한 디스크를 자동으로 마운 트하는 것이며, 이때 SAN 환경에 사용 가능한 디스크가 많은 경우 자동으로 마운트 하면 Windows PE의 성능이 저하될 수 있다.
Windows PE 환경이 부팅 드라이브 이외에 다른 드라이브를 읽기/쓰기 모드로 마운트 할지에 대한 여부를 정책 번호로 설정할 수 있으며, 정책 번호에 대한 설명은 아래와 같다.
별도로 SAN 정책을 설정하지 않으면 기본 설정값은 1번이며, 사용 가능한 모든 저장장치가 마운트 되므로 분석 대상 시스템에서 사용하고 있는 저장장치와 함께 부팅 및 아티팩트 수집용으로 연결한 USB까지 모두 확인이 가능하다.
분석 대상 시스템에서 사용하고 있는 저장장치가 모두 마운트 되어있다 보니, 분석가가 별도로 Windows PE 부팅 및 아티팩트 수집 용도로 연결한 저장장치 외에 분석 대상 시스템에서 사용하고 있는 저장장치에 접근이 가능하기 때문에 내부 디스크를 오프라인으로 설정하는 것을 권고한다.
내부 디스크를 오프라인으로 설정하게 되는 경우에는 분석 대상 시스템에서 사용하고 있는 저장장치는 X-Ways Forensics 등과 같이 디스크를 마운트 하는 도구를 통해서는 확인이 가능하지만, 별도로 사용자가 해당 저장장치에 접근할 수 없다.
즉, 외부 디스크만 온라인으로 설정되고 내부 디스크를 오프라인으로 설정하는 셈이다. 이러한 경우에는 부팅 및 아티팩트 수집용으로 연결한 저장장치만 확인이 가능하다.
명령어 설명
> setsanpolicy c:\WinPE_amd64\mount 4
Windows PE 이미지의 SAN 정책을 내부 디스크는 오프라인으로, 외부 디스크는 온라인으로 설정하겠다는 명령이다.
Step 7. 디지털 포렌식에 적합한 패키지 추가
이제 디지털 포렌식에 적합한 패키지를 추가할 차례이다. 패키지를 추가하는 이유는 기본 Windows PE 이미지에는 모든 패키지가 포함되어 있지 않기 때문에 적절한 패키지를 설치하기 위해 추가하는 것이며, ‘Dism’ 도구로 간단하게 추가할 수 있다. ‘Dism’ 도구로 추가할 때, 선택적 구성 요소(패키지 또는 .cab 파일)와 관련 언어팩을 모두 추가해야 한다. 예시는 아래와 같다.
예시
만약 HTML 관련 패키지인 WinPE-HTA를 추가한다고 하면 아래와 같이 관련 선택적 구성 요소(패키지 또는 .cab 파일)인 ‘WinPE-HTA.cab’과 관련 언어 팩인 ‘WinPE-HTA_ko-kr.cab’을 모두 추가해줘야 한다.
> Dism /Add-Package /Image:”C:\WinPE_amd64\mount” /PackagePath:”C:\Program Files\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-HTA.cab”
> Dism /Add-Package /Image:”C:\WinPE_amd64\mount” /PackagePath:”C:\Program Files\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\ko-kr\WinPE-HTA_ko-kr.cab”
디지털 포렌식에 적합한 패키지를 추가하는 명령줄을 Robin Brocks가 해당 페이지에 정리해두었다. 이 패키지와 해당되는 언어팩을 추가하는 데는 5-10분이 소요된다.
참고 페이지를 보면 언어 팩이 영어로 되어있기 때문에, 한국어로 추가하고자 한다면 언어 팩을 위의 예시와 같이 한국어로 변경해 줘야 한다.
또한, 추가하는 패키지에 대한 간략한 설명은 아래와 같으며, 자세한 설명은 해당 페이지를 참고하길 바란다.
- WinPE-WMI
스크립팅 관련 패키지로, Windows Management Instrumentation(이하 WMI) 공급자 하위 집합을 포함하고 있다. WMI는 Windows 운영체제에 대한 관리를 위한 인프라이다.
- WinPE-NetFX
Microsoft .NET 관련 패키지로, 클라이언트 응용 프로그램으로 설계된 .NET Framework 4.5의 하위 집합을 포함한다. 종속성으로 인해 해당 패키지를 설치하기 전에 WinPE-WMI 패키지를 설치해야 한다.
- WinPE-Scripting
스크립팅 관련 패키지로, 배치 파일 처리와 같은 시스템 관리 작업을 자동화하는데 적합한 다국어 스크립팅 환경이 포함되어 있다.
- WinPE-PowerShell
Windows PowerShell 관련 패키지로, PowerShell 기반 배포 및 관리 Windows PE 기반 도구를 만들 수 있다. 종속성으로 인해 해당 패키지를 설치하기 이전에 WinPE-WMI > WinPE-NetFX > WinPE-Scripting을 설치해야 한다.
- WinPE-StorageWMI
Windows PowerShell 관련 패키지로, 저장소 관리를 위한 PowerShell cmdlet이 포함되어 있다. 종속성으로 인해 해당 패키지를 설치하기 이전에 WinPE-WMI > WinPE-NetFX > WinPE-Scripting > WinPE-PowerShell을 설치해야 한다.
- WinPE-DismCmdlets
Windows PowerShell 관련 패키지로, DISM Powershell 모듈이 포함되어 있으며, 이 모듈에는 Windows 이미지의 관리 및 서비스에 사용되는 cmdlet이 포함되어 있다. 종속성으로 인해 해당 패키지를 설치하기 이전에 WinPE-WMI > WinPE-NetFX > WinPE-Scripting > WinPE-PowerShell을 설치해야 한다.
- WinPE-HTA
HTML 관련 패키지로, HTA(HTML 응용 프로그램)을 지원해 Windows Internet Explorer 스크립트 엔진 및 HTML 서비스를 통해 GUI 응용 프로그램을 만들 수 있다.
- WinPE-FMAPI
파일 관리 관련 패키지로, Windows PE FMAPI(File Management API)에 액세스해 암호화되지 않은 볼륨에서 삭제된 파일을 복구 및 복원할 수 있다. 또한, FMAPI는 암호 또는 복구 키 파일을 사용해 Windows BitLocker 드라이브 암호화로 암호화된 볼륨에서 삭제된 파일을 검색 및 복구할 수 있도록 해준다. BitLocker의 경우 암호가 있는 경우에만 BitLocker 암호화 드라이브에 접근할 수 있다.
- WinPE-SecureStartup
시작프로그램 관련 패키지로, BitLocker 및 TPM(신뢰할 수 있는 플랫폼 모듈)을 프로비전 및 관리할 수 있다. TPM 드라이버는 사전 부팅 환경에서 BitLocker 및 TPM을 모두 완벽하게 지원한다. 종속성으로 인해 해당 패키지를 설치하기 전에 WinPE-WMI를 설치해야 한다.
Step 8. 언어 설정
키보드 레이아웃 및 UI 언어를 한국어로 설정할 경우, [그림 15]와 같이 ‘Dism’ 도구를 통해 간단하게 설정할 수 있다.
>명령어 설명
> Dism /Image:”C:\WinPE_amd64\mount” /Set-InputLocale:ko-kr
키보드 레이아웃 및 입력 로케일 설정
Step 9. 프로그램 추가
이제 Windows PE를 통해 실행할 프로그램을 추가할 차례이다. 추가하기 이전에 ‘#Tools’라는 폴더를 [그림 16]과 같이 생성해 해당 폴더 안에 분석 시 사용할 도구들을 추가하도록 하겠다.
명령어 설명
> mkdir C:\WinPE_amd64\Mount\#Tools
‘#Tools’ 폴더 생성
Windows PE를 CLI로 형식으로 설치해 부팅하는 경우에는 CMD 창으로 작업을 진행하거나 디렉터리 구조를 뷰잉해줄 수 있는 특정 도구를 실행해야지만 작업을 진행할 수 있다. 따라서, 도구를 추가할 때 파일 관리자의 기능을 수행하는 Explorer++, Q-Dir과 같은 도구를 같이 추가해 줘야 부팅 이후 작업이 훨씬 수월하다.
Step 10. 부팅 가능한 USB 드라이브 생성
이제까지 변경한 내용들을 저장한 후 부팅 가능한 USB 드라이브를 생성할 차례이다.
변경한 내용들은 [그림 18]과 같이 저장할 수 있으며, 부팅 가능한 USB로 제작하기 위해서는 [그림 19]와 같이 명령을 입력해 생성할 수 있다.
명령어 설명
> Dism /Unmount-Image /MountDir:”C:\WinPE_amd64\mount” /commit
변경 내용 저장
부팅 가능한 USB 드라이브를 생성하면 해당 USB로 부팅해 프로그램을 사용할 수 있다.
부팅 가능한 USB 드라이브를 생성하기 위해서는 “MakeWinPEMedia”라는 스크립트를 사용하는데, 이때 해당 명령어는 파티션을 다시 포맷할 수 있으며, 포맷하는 경우 WinPE 드라이브를 FAT32로 포맷한다.
명령어 설명
> MakeWinPEMedia /UFD C:\WinPE_amd64 F:
부팅 가능한 미디어 생성
Step 11. Windows 10 PE 부팅
USB를 통해 Windows 10 PE를 부팅하면 [그림 20]과 같은 화면을 확인할 수 있다. 부팅 후 시스템 드라이브는 X 볼륨(X:\)으로 인식되며, 명령 프롬프트로 파일 매니저 등을 실행시켜 작업을 진행할 수 있다.
3. Windows PE 활용 방법
보통, Windows PE를 활용을 고려하시는 분들은 침해사고 분석 데이터 수집 등을 수행하기 위함이라고 생각한다.
필자는 USB로 Windows PE를 실행시켜 아티팩트를 X-Ways Forensics로 수집해 보았다.
우선, Windows PE 환경을 CLI로 구성하면서 SANS 정책에서 내부 디스크를 오프라인으로 설정해뒀기 때문에, X-Ways Forensics의 ‘Open Disk’ 기능을 통해 디스크 목록을 확인했을 때 [그림 21]과 같이 확인할 수 있었다.
수집해야 하는 시스템, 즉 부팅한 시스템에 마운트 되어 있는 디스크는 HD0과 HD1이다. 따라서, HD0과 HD1을 [그림 22]와 같이 오픈시켜 수집 대상 시스템에서 아티팩트를 수집할 수 있다.
추가적으로, 패키지 설치 시 PowerShell을 설치했었기 때문에 PowerShell도 정상적으로 실행되는지를 확인해 보았다. Windows PE 환경에서 Powershell은 일반적으로 Windows에서 실행시키듯 GUI 환경으로 실행되지 않고, cmd에서 실행되었다.
4. 글을 마치며
이번 포스팅에서는 Windows PE 파일을 CLI 형식으로 제작해 보고 부팅 시켜 아티팩트를 수집해 보았다.
Windows PE는 위에서 언급한 대로 경량형 운영체제이기 때문에 대량의 분석 데이터를 전처리하고 분석하는 등의 행위는 수행하기에는 무리가 있는 환경이다.
따라서, 해당 환경은 무결성을 고려하지 않고 라이브 환경에서 수집 스크립트 등을 활용해 분석 데이터를 빠르게 수집하거나 선별적으로 수집해야 하는 데이터를 확인하는 등의 현장 대응용으로는 적합한 환경이라고 생각한다.
그러나, USB 등의 매체를 통해 부팅 시켜야 하기 때문에 재부팅의 이슈는 있을 것으로 판단된다.
또한, 해당 환경을 제작해 활용하며 확인한 기타 사항은 아래와 같다.
- 동글을 통해 라이선스를 인증하는 X-Ways Forensics는 정상적으로 실행이 가능했으나, 범용적으로 많이 사용되는 EnCase Imager나 FTK Imager와 같은 프로그램은 정상적으로 실행되지 않는 현상이 확인되었다.
- 한글 언어팩을 설치했음에도 한글이 깨지는 현상이 확인되었는데, X-Ways Forensics에서 한글이 포함된 파일 명을 가진 파일을 수집했을 때는 정상적으로 수집되는 것을 확인했다.
- 본 환경이 CLI 환경이기 때문에 따로 탐색기 창이 존재하지 않아 별도의 파일 매니저 포터블 프로그램을 별도로 Mount 시 프로그램을 추가해야 GUI 환경에서 파일 및 폴더 목록 등을 확인할 수 있었다.
*참고 문헌
1. [2017.06][Forensic Focus] – Windows 10 PE for Digital Forensics
2. [2018.12][Kazamiya] – WinFE based on WinPE for Windows 10