Windows 8 Forensics - 4. Registry
Forensics 2012. 5. 14. 22:26 |Windows 8 Forensics - 4. Registry
Registry를 Mining하는 작업은 포렌식적으로 굉장히 유용하다. 해당 섹션에서 포렌식적으로 유용한 경로를 알아본다. 이전 Windows버전과 비슷하다. ^^
- NTUSER.DAT
NTUSER.DAT는 특정한 사용자에 대한 정보를 기록한다. 만약 여러 사용자가 컴퓨터에 존재할 경우, NTUSER.DAT 역시 여러개 존재하게 된다. 이 파일에는 사용자가 열었던 파일이나 사용한 어플리케이션, 방문했던 웹사이트 등을 남긴다. 경로는 아래와 같다.
기본 경로 : %SystemRoot%\Users\%User%\NTUSER.DAT\
Typed URL Time
%SystemRoot%\Users\%User%\NTUSER.DAT\Software\Microsoft\Internet Explorer\TypedURLsTime\
%SystemRoot%\Users\%User%\NTUSER.DAT\Software\Microsoft\Internet Explorer\TypedURLs\
Typed URL Time은 바이너리로 저장되며 1601년 1월 1일 GMT 00:00:00 이후의 100나노세컨드로 표현된다. FILETIME 구조는 두개의 32비트 값으로 구성되어 있으며, 이 값은 64비트 값을 표현하기 위해 결합되었다. URL들은 TypedURLs에서 확인할 수 있으며, 각각의 값은 TypedURLsTime과 연관지을 수 있다.
- SAM
사용자 계정에 대한 정보를 담고 있다. 어느 도메인에 존재하는지 어떤 경로에 있는지 등을 알 수 있다. SAM key는 사용자 이름들을 저장한다, 이 저장된 이름은 로그인을 위해 사용되거나 사용자 계정의 RID(Relative Identifier)로 사용된다. SAM 안에 저장된 데이터는 아래 경로에서 찾을 수 있다.
기본 경로 : %SystemRoot%\Windows\System32\Config\SAM
Username 확인
%SystemRoot%\Windows\System32\config\SAM\Domains\Account\Users\%UserNumber%\GivenName
%SystemRoot%\Windows\System32\config\SAM\Domains\Account\Users\%UserNumber%\Sername
Last Logon
0x8-15의 8byte값
%SystemRoot%\Windows\System32\config\SAM\Domains\Account\Users\%UserNumber%\F
Last Password Change
0x24-31의 8byte값
%SystemRoot%\Windows\System32\config\SAM\Domains\Account\Users\%UserNumber%\F
Account Expiration
0x32-39의 8byte값 / 설정이 되어있지 않으면, 시간정보가 확인이 안되며, FF FF FF FF 로 표현된다.
%SystemRoot%\Windows\System32\config\SAM\Domains\Account\Users\%UserNumber%\F
Last Failed Logon
0x40-47의 8byte값
%SystemRoot%\Windows\System32\config\SAM\Domains\Account\Users\%UserNumber%\F
User's RID
0x48-49의 2byte값 / RID(Relative Identifier)
%SystemRoot%\Windows\System32\config\SAM\Domains\Account\Users\%UserNumber%\F
User's Tile
%SystemRoot%\Windows\System32\config\SAM\Domains\Account\Users\%UserNumber%\UserTile
- SYSTEM
SYSTEM은 OS에 대한 정보를 담고 있다. Device에 할당된 Drive letter, 컴퓨터 이름, 타임존, 시스템에서 사용한 USB 등이 있다. 또한 control sets에는 시스템 부팅에 관련된 설정이 담겨져 있다.
기본 경로 : %SystemRoot%\Windows\System32\config\System
Current Control Set : Current
%SystemRoot%\Windows\System32\config\SYSTEM\Select\Current
01은 현재 ControlSet001이라는 것을 알려준다.
Current Control Set : LastKnownGood
%SystemRoot%\Windows\System32\config\SYSTEM\Select\LastKnownGood
마지막에 성공적으로 부팅한 Control Set 번호를 의미한다.
Mounted Devices
%SystemRoot\Windows\System32\config\SYSTEM\MountedDevices\
Device Letter를 저장하고 있다. Device Letter는 USB를 연결하고 제거해도 마지막에 저장된 USB의 정보를 기록하고 있다.
Last Graceful Shutdown Time
마지막 정상 종료 시간
%SystemRoot%\Windows\System32\config\SYSTEM\ControlSet001\Control\Windows\ShutdownTime
시간 정보는 Windows FILETIME 로 기록되어 있다.
Sensor and Location Devices
%SystemRoot%\Windows\System32\config\SYSTEM\ControlSet001\Enum\SWD\SensorsAndLocationEnum\LPSensorSWDevice\HardwareID
Sensor and Location Devices는 Windows 7에서 부터 사용된 새로운 기능이다. 해당 기능이 활성화되면, 사용자는 Internet을 통하도록 설계된 활동에 대해서 OS와 함께 동작하도록 되어 있다. 예를 들어 GPS정보를 들 수 있다. Windows 8에서는 해당 기능이 활성화 되어 있다.
USB STORAGE DEVICES
%SystemRoot%\Windows\System32\config\SYSTEM\ControlSet001\Enum\USBSTOR
시스템에 연결된 USB 저장 장치는 SYSTEM 안에 생성되는 Key로 확인이 가능하다. Key에는 USB 저장장치가 연결된 PORT와 HUB, Time Stamp, Drive letter가 기록되어 있다. USB 저장장치가 시스템에 연결되지 않으면 당연히 USBSTOR Key가 생성되지 않는다. 하지만 분석가는 Link File, Restore Points, Shadow Copy, Setupapi.dev.log를 점검해야한다.
USBSTOR는 USB의 이름을 저장하고 있으며, Vendor ID, Product ID, Revision Number, Serial Number를 기록하고 있다. 만약 Device가 Serial Number를 가지고 있지 않다면, Windows는 Unique Instance ID를 부여한다. Serial Number의 두번째 Character가 "&"이면, Serial Number가 없는 거다. Serial Number가 없는 거는 "o&26D88A54&o"와 같은 Unique Instance ID를 부여 받는다.
FriendlyName에 USB의 이름이 저장되어 있다.
%SystemRoot%\Windows\System32\config\SYSTEM\ControlSet001\Enum\USBSTOR\%USB NAME%\%Unique Intance ID%\FriendlyName
Mounted Devices에서 보면 하나의 USB Device에 대한 하나의 Drive letter를 부여한다. 그러나 USBSTOR에서는 두개의 USB 저장장치가 저장된다.
이러한 정보를 가지고 Tracking이 가능한가? 물론 가능하다. Tracking하는 법을 시작한다.
Prod_Flash_Disk에 대한 Unique Instance ID로 이동한다. 나중에 Unique Instance ID를 사용하므로 기록한다. 그리고 Unique Instance ID 아래에서 Container ID를 찾아서 기록한다. Windows 7부터 시스템에 설치된 각각의 Instance는 Container ID를 부여받는다. PNP(Plug-n-Play) Manager는 Container ID를 사용하여 하나나 그 이상의 Device node를 그룹한다. 그룹들은 해당 Device가 어디에서 존재했는지, 어떤 Instance에 속해 있는지 알려준다. Instance는 Device Container라고 볼 수 있다.
Container ID에서 {07a38620-8a9c-5995-9d21-f13dbf1e51ea}를 발견하였다. 해당 값은 Device Containers에서 Key 값으로 발견이 된다. 해당 Key를 확인하면 GUID를 찾을 수 있다. GUID는 {53f56307-b6bf-11d0-94f2-00a0c91efb8b}이다. 해당 값을 기록해 둔다.
%SystemRoot%\Windows\System32\config\SYSTEM\CurrentControlSet\Control\DeviceContainers\%ContainerID%\BaseContainers
%SystemRoot%\Windows\System32\config\SYSTEM\CurrentControlSet\Control\DeviceContainers\%ContainerID%\Properties
USB Date & Time을 확인하기 위해 아래의 위치로 이동한다.
%SystemRoot%\Windows\System32\config\SYSTEM\ControlSet001\Enum\USB\%VID&PID%\%Unique Instance ID%\Properties\{83da6326-97a6-4088-9453-a1923f573b29}\0064\0000
3번째 Entry에서 Prod_Flash_Disk가 plugin 된 시간 정보를 확인하기 위해서는 USB의 VID와 PID를 알아야 한다. 해당 USB의 VID와 PID는 VID_090C&PID_1000 이다. 시간 정보는 Windows FILETIME으로 확인할 수 있다.
그 다음 아래 위치를 이동하여 어떤 Port를 사용했는지 확인한다. Unique Instance ID에서 확인한 값을 가지고 확인해보면, LocationInformation을 확인할 수 있다. Hub2에 있는 Port1을 사용한 것을 알 수 있다.
%SystemRoot%\Windows\System32\config\SYSTEM\ControlSet001\Enum\USB\%VID&PID%\%Unique Instance ID%\LocationInformation
Mounted Device로 가서 GUID인 {87697c82-6708-11e1-8e1c-74f06da8e34b}를 확인하여 Prod_Flash_Disk가 사용된 흔적을 발견할 수 있을 것으로 생각되었는데, 같은 GUID값은 존재하지 않는다.
%SystemRoot%\Windows\System32\config\SYSTEM\MountedDevices\
이런 경우는 새로운 Device가 다시 할당 되었다는 의미이다. 그러므로 Link Files과 Restore Points, Shadow Copies, Setupapi.dev.log를 확인하여 사용자가 무슨 행위를 했는지 분석해야 한다.
Mounted Devices는 하나밖에 값을 보여주지 않는다.
- SOFTWARE
SOFTWARE는 OS에 대한 정보를 담고 있다. Version, Installed Time, Registerd Owner, Last User to Logon, Members of a Group
기본 경로 : %SystemRoot%\Windows\System32\config\SOFTWARE
'Forensics' 카테고리의 다른 글
Time Encoder 공유 (1) | 2012.08.22 |
---|---|
Windows Files / 시간 정보 (0) | 2012.05.14 |
Windows 8 Forensics - 3. Artifacts (2) (0) | 2012.05.14 |
Windows 8 Forensics - 2. Artifacts (1) (0) | 2012.05.14 |
Windows 8 Forensics - 1. Interface (0) | 2012.05.14 |