본문 바로가기

[+] Forensic

Registry (10)

[이동형 저장장치 정보]
이동형 저장장치는 USB 썸 드라이브(Thumb Drive)나 외장 하드 드라이브처럼 한곳에 고정되어 있지 않고 편하게 휴대하여 다닐 수 있는 저장장치들을 말한다. 요즘은 이러한 저장장치들의 크기가 커지면서 활용도가 엄청 높아져서 이로인한 보안사고도 빈번하게 일어난다. 회사들의 경우 이동형 저장장치의 반입을 물리적으로 차단하기도 하고 컴퓨터의 USB 포트를 봉인해두기도 한다. 이동형 저장장치가 컴퓨터에 연결되면 Plug & Plug Play Manager가 이벤트 알림신호를 받고 연결된 이동형 저장장치에 장치 정보들을 요청한다. 이 정보를 바탕으로 PnP Manager는 Device Class ID를 부여하고 적절한 드라이버를 찾은 후 해당 드라이버가 현재 로드되어 있지 않으면 해당 드라이버를 로드하여 준다. 이러한 과정이 끝나면 PnP Manager는 아래 키에 Device Class Identifier 키와 서브키들을 생성한다.

키 : HKLM\System\CurrentControlSet\Enum\USBSTOR\<Device Class Identifier>\<Unique Instance ID>

[그림 1 - USBSTOR 키]

위 이미지에서 Disk로 시작하는 서브키가 Device Class Identifier이며, 위 이미지에는 없지만 Device Class Identifier 하위키로 Unique Instance ID가 존재한다.

Device Class Identifier 서브키의 이름에는 규칙이 있는데 그 규칙은 아래 이미지와 같다.

[그림 2 - Device Class Identifier 이름 생성 규칙]

 

 이번에는 Unique Instance ID를 알아볼 차례이다. 이 서브키의 이름도 규칙이 있는데 그 규칙은 아래와 같다.
1. 저장장치의 Device ID나 Serial Number로 Unique Instance ID를 부여하는데 만약에 없다면 PnP Manager가 임의로 부여한다.
 - Device ID나 Serial Number가 있을 경우 형식 : XXXXXXXXXX&X
 - PnP Manager가 임의로 생성할 경우 형식 : X&XXXXXXXXXX&X


레지스트리에는 위와 같은 이름들을 한번에 볼 수 있는 키도 존재한다.

키 : HKLM\System\CurrentControlSet\Control\DeviceClasses\{53f56307~, 53f5630d~}

[그림 3 - DID와 UID를 한번에 볼 수 있는 키]

53f56307-b6bf-11d0-94f2-00a0c91efb86 키의 서브키들의 이름은 디스크의 GUID를 의미하며 53f5630d-b6bf-11d0-94f2-00a0c91efb86는 볼륨 디바이스 인터페이스의 GUID를 의미한다.
이 두 키의 하위키의 data에서 시스템에 연결된 장치들의 DID와 UID를 확인 할 수 있다.

 

[그림 4 - 확인 할 수 있는 data에서의 DID와 UID]

만약 이러한 정보들만으로 증거로 수집된 수많은 이동형 저장장치 어느것이 쓰였는지 판단하려면 정보가 부족한 감이 없지 않다. 이럴때 제조사의 ID와 제품의 ID 정보를 수집하여 조회 한다면 찾고자 하는 이동형 저장장치의 범위가 좁혀질 것이다.

키 : HKLM\System\CurrentControlSet\Enum\USB

위 키의 서브키 이름은 아래와 같은 규칙을 갖는다.

[그림 5 - USB 키의 하위키들 이름 생성 규칙]

USBSTOR에서의 정보와 위 생성 규칙으로 생성되는 서브키들의 연관성은 UID로 이루어 진다.

[그림 6 - USB키의 하위키들과 USBSOTR키의 하위키들의 연관성]


이동형 저장장치의 특정 사용시간을 알아내려면 최초 연결 시간과 마지막 연결 시간을 알아보면 된다.
최초 연결 시간은 아래 키 서브키의 마지막 수정 시간(Last Writteen Time) 을 보면 된다.
 

키 : HKLM\Software\Microsoft\Windows Potable Devices\Devices

마지막 연결 시간은 아래 키 서브키의 마지막 수정 시간을 보면 된다.

키 : HKU\<user>\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoint2
      HKLM\System\ControlSetXXX\Enum\USB\VID_XXXX&PID_#### 


위 키의 하위키들 중 Volume GUID나 Serial Number를 찾아 마지막 수정 시간을 보면 된다.
하지만 정확한 사용시간은 알아내지 못하며, 시간 범위를 유추하기 위하여 정보를 수집하는 것이다.

[연결된 저장장치 정보]
연결된 모든 저장장치(로컬, 이동형)의 연결 정보는 아래 키에서 확인 할 수 있다. 

키 : HKLM\System\MountedDevices
 

[그림 7 - MountedDevices 키]

이 키의 Value와 data를 보면 어떠한 이동형 저장장치나 로컬 저장장치가 어떠한 드라이브 문자와 맵핑되었는지 알 수 있다.
 

 

[그림 8 - 연결된 저장장치와 드라이브 문자와의 맵핑 정보]

유니코드로 기록된 문자열을 읽어보면 USBSTOR#Disk&Ven_SAMSUNG&Prod_YP_PB2&Rev_1.00~ 이란 문자열이 나온다. 


[계정 정보]
계정 정보의 경우 SAM 키의 하위키에 존재하는데 SAM 키의 접근 권한은 시스템 계정뿐이 없다. 하지만 활성시스템에서 권한 상승을 하기란 여러모로 문제가 있어 대부분의 계정 정보는 포렌식 이미징에서 획득하는 것이 좋다.
포렌식 이미지에서 SAM 파일의 복사본을 파싱 할 수 있는 레지스트리 파싱 도구들이 몇가지 있다.
따로 툴들에 대해서는 다루지 않겠다. 또 구조에 대해서도 따로 다루지는 않겠다. 


[실행정보]
윈도우 키를 누르면 아래와 같이 자주 실행되는 프로그램이 나타나는데 이 기준은 실행 횟수이다.

[그림 9 - 자주 실행되는 애플리케이션]

이렇듯 윈도우는 자주 실행된 애플리케이션들을 기억하며 애플리케이션들의 정보도 레지스트리에 기록해 둔다.
아래는 이 정보들을 저장하는 키의 위치이다.

키 : HKCU\Software\Microsoft\Windows\CurrentVersion\Explorers\UserAssist\<GUID>\Count

위 키의 Value를 보면 XP의 경우 아래와 같은 Value를 볼 수 있으며 각 오프셋이 뜻하는 의미는 이미지에 설명 해 두었다.

[그림 10 - XP offset]

Vista/7의 경우는 조금 다르다.

[그림 11 - Vista/7 offset]

 
Vista/7의 경우 실행 횟수의 초기값이 어플리케이션마다 다르기 때문에 정확하게 파악하기는 힘들다. 





'[+] Forensic' 카테고리의 다른 글

윈도우 계정  (0) 2012.01.10
Registry (11)  (0) 2012.01.07
Registry (9)  (0) 2012.01.06
Registry (8)  (2) 2012.01.06