USB 드라이브는 점점 용량이 커지고 소형화되어 많은 사람들이 사용하는 이동형 저장매체가 되었다. 그러한 이유로 USB를 이용한 악성코드 감염, 비밀 데이터의 유출 사고에 USB 매체가 연결되었던 시스템 분석이 필요한 경우가 발생하고 있다. USB 드라이브를 윈도우 시스템에 연결시키면 다양한 아티팩트가 setupapi.dev.log와 레지스트리에 남게 된다.
1. USB 인식 절차
USB 매체가 시스템에 연결되면 버스 드라이버는 PnP(Plug and Play) 관리자에게 장치의 고유 식별 정보(제조사 ID, 제품 ID, 일련번호 등)를 전달한다. 이후 커널 모드 PnP 관리자는 레지스트리를 확인하여 해당 장치의 드라이버가 이미 설치되어 있는지 검사한다. 만약 드라이버가 설치되어 있다면 기존 드라이버를 사용하여 USB 장치를 즉시 인식하고 마운트하지만, 설치되어 있지 않은 경우에는 장치 펌웨어에서 제공하는 기본 정보를 바탕으로 사용자 모드 PnP 관리자에게 드라이버 설치를 요청한다.
사용자 모드 PnP 관리자는 운영체제에 내장된 드라이버를 사용하거나, 인터넷 또는 별도의 저장소에서 적절한 드라이버를 다운로드하여 설치한다. 드라이버가 정상적으로 설치되면 시스템은 USB를 마운트하고, 관련 정보를 레지스트리와 이벤트 로그에 기록한다. 이러한 과정에서 남겨진 기록을 통해 사용자가 연결했던 USB 장치의 이력을 추적할 수 있으며, 포렌식 분석 시 중요한 단서가 될 수 있다.
1) Bus Driver가 PnP Manager에 장치 고유 식별 정보를 보내 장치 연결을 알림
2) Kernel-Mode PnP Manager는 전달받은 정보를 기반으로 Device Class ID를 구성하고 레지스트리에서 ID에 맞는 적절한 드라이버가 시스템에 설치되어있는지 확인
3) 드라이버가 있으면 로드, 없으면 Kernel-Mode PnP Manager는 장치 펌웨어에게 드라이버 요청, 전달받은 드라이버를 User-Mode PnP Manager에 전달
4) User-Mode PnP Manager는 전달받은 드라이버를 설치하고 레지스트리에 기록
- HKLM\SYSTEM\ControlSet00#\Enum\USB\{Vendor ID & Product ID}\{Serial Number}
- 외부장치에 대한 기록
- HKLM\SYSTEM\ControlSet00#\Enum\USBSTOR\{Device Class ID}\{Serial Number}\Properties
- 외부저장장치에 대한 기록
- HKLM\SYSTEM\ControlSet00#\Enum\SWD\WPDBUSENUM (Windows 10)
- HKLM\SYSTEM\ControlSet00\Enum\WpdbusEnumroot\UMB (Windows 7)
- HKLM\SYSTEM\ControlSet00#\Control\DeviceClasses\{10497B1B-BA51-44E5-8318-A65C837B6661} (WpdBusEnumRoot GUIDs)
- WpdBusEnumGUID 기록, 최초 연결 시각, 수정되지 않음
- HKLM\SYSTEM\ControlSet00#\Control\DeviceClasses\{53F56307-B6BF-11D0-94F2-00A0C91EFB8B} (Disk GUIDs)
- Disk GUID 기록, 부팅 후 연결 시각
- HKLM\SYSTEM\ControlSet00#\Control\DeviceClasses\{53F5630D-B6BF-11D0-94F2-00A0C91EFB8B} (Volume GUIDs)
- Volume GUID 기록, 부팅 후 연결 시각
- HKLM\SYSTEM\ControlSet00#\Control\DeviceClasses\{6AC27878-A6FA-4155-BA85-F98F491D4F33} (Portable Device GUIDs)
- Portable Device GUID 기록, 부팅 후 연결 시각
- HKLM\SYSTEM\ControlSet00#\Control\DeviceClasses\{A5DCBF10-6530-11D2-901F-00C04FB951ED} (USB GUIDs)
5) 장치 드라이버 설치 과정은 로그 파일에도 기록됨
- Windows Vista/7/8/10 : %SystemRoot%\inf\Setupapi.dev.log
6) 드라이버 설치가 완료되면 USB 장치를 시스템에 마운트하고 관련 정보를 레지스트리와 이벤트 로그에 기록
- HKLM\SYSTEM\MountedDevices
- HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\EMDMgmt\{Device Entry}
- HKLM\SOFTWARE\Microsoft\Windows Portable Devices\Devices\{Device Entry}
- HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MountPoint2
- %SystemRoot%\System32\winevt\Logs\Microsoft-Windows-DriverFrameworks-UserMode%4Operational.evtx
7) 장치가 연결 해제되면 관련 정보를 이벤트 로그에 기록
- %SystemRoot%\System32\winevt\Logs\Microsoft-Windows-DriverFrameworks-UserMode%4Operational.evtx
2. USB 흔적 추적하기
연결된 USB 드라이브를 분석하는 데 편리한 프리웨어 도구는 USBDeview 이다. 이는 레지스트리 전반에 분산된 정보를 한눈에 볼 수 있게 구성되었다.
Vendor Product Version, VID and PID, SerialNumber, GUID, Drive letter of the USB 등을 확인 가능하다.
여기에서 SerialNumber는 모델이 같은 USB 드라이버에도 Serial 번호가 다르므로 증거 조사에 유용하다. USB Drive 제조 시 Unique한 시리얼 번호를 플래시 내에 저장하여 생산하면 마이크로소프트에서 Window Logo(인증)를 받을 수 있다. 그러나 저가용 중국산 USB Drive 중에는 시리얼 번호가 없는 경우도 있다. 이런 경우 PnP 매니저는 자동으로 Unique한 시리얼 번호를 생성(Instance ID)하여 부여한다. 예를 들어 6&2924f860&0 으로 생성되는데 2번째 위치에 &가 있으면 인스턴스 ID이다.
3. 수동으로 USB 흔적을 확인하는 법
로그 파일과 레지스트리를 확인하면 다음과 같은 흔적을 알 수 있다.
- Device Class Identifier
- Unique Instance Identifier (include Serial Number)
- Vendor Name & Identifier
- Product Name & Identifier
- Volume Label
- Driver Label
- Volume Serial Number
- Username
- Volume GUID
- First Connection Time
- First Connection Time After Booting
- Last Connection
1) 장치 클래스 ID (Device Class Identifier)
- HKLM\SYSTEM\ControlSet00#\Enum\USBSTOR\{Device Class ID}\{Sub Keys}
- Vendor Name: ADATA
- Product Name: USB Flash Drive
USBSTOR 키는 주로 USB 저장 장치(예: USB 플래시 드라이브, 외장 하드 등)가 연결되었을 때 생성된다. 따라서 USB 저장 장치가 연결되지 않았을 경우 USBSTOR가 없을 수 있다.
2) 고유 인스턴스 ID (Unique Instance Identifier)
같은 제조사의 같은 제품일지라도 모두 다른 값을 가짐
- 인스턴스 ID: {Serial Number}&#
- HKLM\SYSTEM\ControlSet00#\Enum\USBSTOR\{Device Class ID}
- 인스턴스 ID: 28A0420040190078&0
- Serial Number: 28A0420040190078
3) 제조사 ID와 제품 ID (Vendor ID & Product ID)
- VID_{Vendor ID}&PID_{Product ID}
- HKLM\SYSTEM\ControlSet00#\Enum\USB
- Vendor ID: 0x0BDA
- Product ID: 0x0129
4) 볼륨 레이블과 드라이브 문자 (Volume Label & Drive Letter)
- HKLM\SOFTWARE\Microsoft\Windows Portable Devices\Devices
- 드라이브 문자: D:\
5) 사용자명과 볼륨 GUID (Username & Volume GUID)
다중 사용자가 사용하는 윈도우 시스템의 경우, 어떤 사용자에 의해 USB가 마운트되었는지 알 필요가 있다.
- HKLM\SYSTEM\MountedDevices
6) 최초 연결시각 (First Connection Date\Time)
USB를 처음 연결한 시점은 드라이버 설치 로그 파일을 확인하면 정확하게 알 수 있다.
- %SystemRoot%\inf\Setupapi.dev.log
레지스트리 확인을 통해서도 알 수 있다.
- HKLM\SYSTEM\ControlSet00#\Control\DeviceClasses\{10497b1b-ba51-44e5-8318-a65c837b6661}\{Sub Keys}
- HKLM\SOFTWARE\Microsoft\Windows Protable Devices\Devices\{Device Entry}
7) 부팅 후 최초 연결 시각 (First Connection Time After Booting)
컴퓨터가 부팅된 후 레지스트리 값을 수정하고 다시 재부팅할 때까지 값을 수정하지 않는 레지스트리가 있다. 이를 이용하여 부팅 후 최초 연결 시각을 알 수 있다.
- HKLM\SYSTEM\ControlSet001\Control\DeviceClasses\{53f56307-b6bf-11d0-94f2-00a0c91efb8b}{Sub Keys}
- HKLM\SYSTEM\ControlSet001\Control\DeviceClasses\{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}\{Sub Keys}
- HKLM\SYSTEM\ControlSet001\Control\DeviceClasses\{6ac27878-a6fa-4155-ba85-f98f491d4f33}\{Sub Keys}
- HKLM\SYSTEM\ControlSet001\Control\DeviceClasses\{a5dcbf10-6530-11d2-901f-00c04fb951ed}{Sub Keys}
8) 마지막 연결 시각 (Last Connection Time)
시스템과 USB가 마지막으로 연결된 시각이다. 부팅 후 '최초' 연결 시각과 '마지막' 연결 시각은 다를 수 있다.
- HKEY_USERS\{USER}\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\{Volume GUID}
'Forensics > Windows Forensics' 카테고리의 다른 글
프리패치(Prefetch) (0) | 2025.02.23 |
---|---|
Volume Shadow Copy (0) | 2025.02.23 |
Printer Spooler 분석 (0) | 2025.02.19 |
쉘백(ShellBag) (0) | 2025.02.19 |
휴지통(Recycle Bin) 분석 (0) | 2025.02.19 |