모두의 dream

윈도우 드라이브 문자 파악하기 본문

분야/Digital Forensics

윈도우 드라이브 문자 파악하기

오리꽥이로 2026. 8. 18. 09:49

윈도우 포렌식을 하다보면 드라이브 문자를 매칭해야될 때가 있다. 

1. 아티팩트

1.1. 핵심

1.1.1. MountedDevice

경로: SYSTEM\MountedDevices

1.2. 교차 검증

1.2.1. Windows Portable Devices

경로: %SystemRoot%\Windows\System32\Config

경로: SOWFTWARE\Microsoft\Windows Portable Devices\Device

1.2.2. WPDBUSENUM

경로: %SystemRoot%\Windows\System32\Config

경로: SYSTEM\CurrentControlSet\Enum\SWD\WPDBUSENUM

1.2.3. VolumeInfoCache

경로: %SystemRoot%\Windows\System32\Config

경로: SOWFTWARE\Microsoft\Windows Search\VolumeInfoCache

1.2.4. USBSTOR

경로: %SystemRoot%\Windows\System32\Config

경로: SYSTEM\ControlSet001\Enum\USBSTOR

 

동일 경로 USB, SCSI도 참고

1.2.5. Microsoft-Windows-Partition/Diagnostic

경로: C:\Windows\System32\winevt\Logs

Event ID 1006

1.2.6. setupapi.dev.log

경로: C:\Windows\inf\

1.2.7. 기타

이벤트 로그의 장치 삽입/제거 기록, LNK/Prefetch 등 파일 접근 흔적

2. 분석

기본적으로 "\DosDevices\문자:" 이런 형태를 가진 값을 통해 드라이브 문자와 특정 디스크/파티션을 파악할 수 있다. 해당 형태에는 가장 최근에 연결한 장치의 GUID 혹은 장치명 등이 작성되어 있다. 다른 형태로는 " \??\Volume{GUID}"이 있고, 과거에 특정 드라이브 문자에 할당되었던 이력이 있는 경우 해당 형태로 데이터가 남아있다.

 

"\DosDevices\문자:" 값의 자세한 분류는 아래와 같다.

2.1. MountedDevices 값의 표준 분류

현재 실습에서 확인 가능한 형태는 12 bytes 값, "DMIO:ID:" 문자열이 포함된 24 bytes 값과, 긴 UTF-16LE 형태이다. 

2.1.1. 12 bytes 형태

디스크 시그니처 (4 bytes, 리틀엔디안) +  파티션 시작 오프셋 (8 bytes, 리틀엔디안)

 

디스크 시그니처는 MBR의 Boot Code 마지막 6bytes 에서 첫 4bytes로 확인됐다. GPT 파티션이 아니고, GUID가 파악되지 않을 때 12 bytes 형태로 저장되는 것으로 추정된다.

2.1.2. DMIO:ID:가 포함된 24 bytes 형태

디스크의 파티션 구조가 GPT라면 해당 형태를 가지고 있다. (장착된 고정 디스크, USB 등의 이동식 디스크 모두 포함)

DMIO:ID: 문자열 뒤에 있는 hex 값은 해당 파티션의 GUID 값으로, 이 GUID 값을 통해 어떤 파티션의 드라이브 문자인지 파악할 수 있다. GPT 파티션 엔트리의 partition GUID와 비교해야 된다. 그리고 SYSTEM MountedDevice의 Volume GUID path 값과도 다르므로 헷갈려서는 안된다.


Volume GUID path: \??\Volume{GUID}

 

파티션 엔트리의 partition GUID와 비교할 때 hex 값을 그대로 가져가서 비교하면 되지만, 우리가 보는 {~} 형태의 GUID로 바꾸려면 아래 과정을 거치면 된다.

 

DMIO:ID: (8 bytes) +  GPT Partition GUID (16 bytes)

 

GPT Partition GUID = 4bytes (리틀엔디안) + 2bytes (리틀엔디안) + 2bytes (리틀 엔디안) + 8bytes (빅엔디안)

 

예시: C3 C5 96 B4 0C 22 ED B9 FF 3A 4D 34 B3 3C DF 42 -> {b496c5c3-220c-b9ed-ff3a4d34b33cdf42}

2.1.3. 긴 UTF-16LE 형태

아래 사진처럼 매우 긴 UTF-16LE 형태로 남아있는 경우가 있다. GPT 파티션이 아니고, GUID가 파악되지 않을 때 긴 UTF-16LE 형태로 저장되는 것으로 추정된다.

 

해당 내용을 통해 제조사, 제품명, 시리얼 번호 등을 확보할 수 있고 직관적이므로 바로 파악할 수 있다. 

3. 한계

가장 최근에 드라이브 문자에 할당된 디스크의 GUID값이나 장치명, 디스크 시그니처 값은 "\DosDevices\문자:" 값의 데이터를 확인해서 확실하게 확보할 수 있다. (GUID, 디스크 시그니처 값은 대상 디스크의 구조를 확인할 수 있다는 조건 필요)

 

즉 고정 디스크는 비교적 쉽게 확인 가능하지만, USB 등과 같이 이동식 저장장치일 경우 할당된 드라이브 문자를 추적하는데 어려움이 존재한다. 파티션 엔트리가 존재하지 않는 경우, 현재 파티션 엔트리 GUID를 확인할 수 없는 경우, 포맷되어 GUID 값이 변경된 USB나 볼륨인 경우, 같은 드라이브 문자에 여러 USB가 연결된 경우 등의 상황에는 윈도우 드라이브 문자 특정이 어려울 수 있다. 

 

결국 원하는 특정 저장 장치가 할당된 드라이브 문자를 파악하기 위해서는 교차검증 아티팩트 포함 여러 아티팩트들을 종합해서 결론을 내려야 될 것 같다. 

'분야 > Digital Forensics' 카테고리의 다른 글

BitLocker  (1) 2026.07.28
소프트웨어를 이용한 쓰기방지  (0) 2025.10.13
플래시 메모리와 TRIM (with 디지털 포렌식)  (2) 2025.07.16
Ext4 삭제된 파일 복구  (6) 2024.09.30
VeraCrypt 사용과 분석  (2) 2024.09.23