Windows Registry "MountedDevices" 디스크 파티션 정보
MountedDevices 레지스트리 키 (HKLM\SYSTEM\MountedDevices)
MountedDevices Key는 해당 시스템에 마운트 되었거나 마운트 중인 파티션 정보가 기록되어 있는 레지스트리 키로 드라이브 문자가 할당된 파티션 정보를 확인할 수 있다.
이를 통해 마운트 되었던 USB 저장매체 나 HDD나 SDD의 경우 고유 DISK Signature 또는 Partition GUID를 통해 파티션이 저장되어 있는 저장매체를 특정할 수 있으며 남아있는 MountedDevices 레지스트리 정보로 부터 삭제된 파티션 복구 또한 수행할 수 있다.
MBR 파티션 테이블의 MountedDevices
[그림] MBR 구조를 사용하는 파티션의 MountedDvevices Key 값
MBR을 사용하는 디스크의 MountedDevices Key값에는 해당 디스크의 Disk Signature 값과 파티션 시작 섹터 Offset 값이 기록되어 있다.
[그림] MountedDevices Key의 "\DosDevcies\C:" 값
| Offset |
내용 |
| 0x00 ~ 0x03 |
MBR Disk Signature (4 bytes) |
| 0x04 ~ 0x0B |
MBR 위치 기준 파티션 시작 섹터의 Bytes Offset (8 bytes, Little Endian) |
[표] MBR 구조를 사용하는 MountedDevices Key 값의 구조
MountedDevices key값에는 고유한 MBR Disk Signature 값이 기록되어 있어 이 값을 통해 해당 파티션이 어떤 디스크 저장매체로부터연결되어 마운트 되었는지 확인할 수 있어 연결된 저장매체를 특정할 수 있는 정보이다.
그리고 또한 MBR 구조를 사용하는 디스크의 MountedDevices Key 값에는 파티션의 시작 섹터 Offset 이 기록되어 있어 이를 통해 파티션 테이블에서 삭제되어 있는 파티션을 찾아 복구할 수 있다.
[그림] MBR에서 확인한 Disk Signature 값
[그림] \DosDevices\C: 파티션의 시작 섹터 (2,048 Sector)
MountedDevices 의 "\DosDevices\C:" key 값을 보면 MBR Disk Signature 값이 7A 1B 06 00 임을 알 수 있으며 해당 파티션의 시작 섹터는 2,048(0x100000/ 0x200) Sector 임을 확인할 수 있다.
\DosDevices\C: 의 시작 섹터 : 0x100000 / 0x200(Sector 크기) = 0x800(2,048) Sector
파티션 시작 섹터 Bytes Offset 값은 물리적 디스크의 0번째 섹터(MBR) 기준으로 byte 단위 Offset 이다. 그렇기 때문에 섹터 값으로 변환하기 위해서는 MountedDevices Key의 파티션 시작 섹터 Offset / Secotr 크기 로 계산해야 한다.
MBR MountedDevices 키값을 통한 삭제된 파티션 복구
본문에서의 파티션 복구를 시도한 대상은 "제9회 디지털 범인을 찾아라 경진대회" 문제 이미지에 대하여 삭제된 파티션 테이블을 복구한 내용이다.
해당 이미지에서는 Windows OS가 설치되어 있던 C드라이브는 삭제되어있지 않아 C드라이브로 부터 SYSTEM 하이브("C:\Windows\System32\config\SYSTEM") 파일을 추출하고 MoutedDevices Key 값을 확인하여 나머지 삭제된 파티션을 복구할 수 있었다.
[그림] 문제 이미지 파일에서 확인된 0번째 섹터의 MBR 파티션 테이블에 남이 있었던 2개의 파티션 정보
[그림] FTK Imager 도구를 통해 정상적으로 인식되는 MBR 파티션 테이블에 존재하였던 2개의 파티션
MBR Partition Table 을 보면 2개의 파티션 정보만 기록되어 있으며 FTK Imager로 열람한 결과 정상적으로 인식되는 파티션은 2개로 확인되었다.
[그림] MoutedDevices Key
MountedDevices Key 값을 확인하여 C 드라이브와 동일한 디스크로 부터 드라이브 문자를 할당받은 파티션 정보가 C드라이브 이외 총 3개의 파티션이 확인되었다. 이를 통해 해당 시스템에는 Disk Signatrue 7A 1B 06 00 의 디스크로부터 총 4개의 파티션이 연결되어 있었던 것을 알 수 있다.
| 드라이브 문자 |
시작 섹터 Offset |
| C: |
2,048 Sector |
| D: |
120,162,256 Sector |
| E: |
116,068,352 Sector |
| F: |
114,018,304 Sector |
[표] MonutedDevices Key 값에서 확인된 동일 Disk Signature 파티션 정보
C:와 F:는 시작 섹터 확인 결과 MBR 파티션 테이블에 기록되어 있는 파티션으로 FTK Imager를 통해 확인 가능한 파티션이며 이외 D:와 E:는 MBR 파티션 테이블에 기록되어 있지 않아 정상적으로 확인이 불가능한 삭제된 파티션이다.
[그림] MountedDevices Key에서 확인된 D: 파티션의 시작 섹터
[그림] MountedDevices Key에서 확인된 E: 파티션의 시작 섹터
MountedDevices Key 값을 통해 확인한 D:와 E:의 파티션 시작 섹터 위치로 이동하여 VBR에 기록되어 있는 파티션 총 섹터 수를 확인한 후 파티션 시작 섹터로부터 총 파티션 섹터 수만큼 추출하여 삭제된 것으로 확인되는 D:와 E: 파티션 테이블을 복구하여 정상적으로 두 파티션 내부 구조를 확인할 수 있도록 하였다.
위 문제에서 확인된 경우는 동일한 Disk Signature 값을 가진 MountedDevices 엔트리 경우로 동일한 MBR 디스크의 파티션임을 유추할 수 있었다. 만약 다른 Disk Signature 값의 Mounted Devices 엔트리가 존재한다면 해당 파티션은 외장 하드 드라이브 또는 별도 내장 디스크로 추정할 수 있다.
GPT MountedDevices
MBR 과 달리 GPT 파티션에는 파티션별로 고유한 GUID값이 존재하기 때문에 GPT 파티션을 사용하는 디스크의 MountedDevices Key 값에는 고유 Partition GUID 값이 기록되어 있다.
[그림] GPT 파티션 구조를 사용하는 파티션의 MountedDevices key 값
[그림] GUID 파티션 테이블에 기록되어 있는 MountedDevices Key에서 확인된 동일 C: 파티션 GUID
| Offset |
내용 |
|
| 0x00 ~ 0x07 |
문자열 "DMIO:ID:" (8 Bytes) |
|
| 0x08 ~ 0x17 |
파티션 고유 GUID (16 Bytes) |
|
[표] GPT 파티션 구조를 사용하는 MountedDevices Key 값의 구조
MBR 구조와 달리 파티션의 시작 섹터 offset과 같은 시작 섹터 위치 정보는 존재하지 않고 Partition GUID 만 존재하기 때문에 파티션 시작 섹터 위치를 알기 위해서는 GPT 파티션 테이블 정보를 추가로 확인이 필요하다.