본문 바로가기

[+] Forensic

Registry (8)

지금까지 레지스트리의 구조와 레지스트리를 이루고 있는 하이브의 구조를 알아보았다.

하지만 레지스트리의 구조는 복잡하고 양은 너무 많아 포렌식적으로 접근하기에는 너무 무모한 감이 없지 않다.

또 어떠한 것을 의미하는지 아직 알려지지 않은 부분도 있어 정확하게 분석하기가 아직까지는 힘들다.

그렇기에 지금부터 알아보는 포렌식적 의미의 레지스트리를 잘 알아두어야 할 것이다.

* 참고 :  레지스트리는 윈도우 버전마다 조금씩 다른 부분이 있음. 

[시스템 정보]
시스템 정보는 컴퓨터 포렌식 조사에서 수집되어야 할 정보들 중 기본에 속하는 정보이다. 이 정보는 라이브 리스폰스 단계에서도 획득 할 수 있지만, 라이브 리스폰스를 수행할 시간이 없다거나 시스템이 해킹으로 인해 전원 차단 상황등에 놓이게 되면 정보를 획득하지 못한다. 이러한 경우에는 포렌식 이미징 레지스트리의 시스템 정보를 수집하면 된다. 라이브 리스폰스로 얻어지는 결과물도 결국 레지스트리를 통한 수집이기에 정보는 동일성을 갖는다.

키 : HKLM\Software\Microsoft\WindowsNT\CurrentVersion

[그림 1 - 레지스트리에서의 시스템 정보 수집]

위 레지스트리 키에서는 컴퓨터 이름이 제외되어 있는데 컴퓨터의 이름은 아래 키에 존재한다.

키 : HKLM\System\CurrentControlSet\ComputerName\ActiveComputerName
Value : ComputerName


 [그림 2 - 레지스트리에서의 컴퓨터 이름 수집]

컴퓨터의 이름은 단일 컴퓨터를 대상으로 하는 포렌식 조사에서는 의미가 없어보이지만, 네트워크를 대상으로 하는 포렌식 조사에서는 컴퓨터와 컴퓨터간의 연결에서 컴퓨터 이름으로 로그가 남기 때문에 컴퓨터 간의 관계를 밝히기 위해 필요하다. 


[시간 정보 수집]
시간정보도 시스템 정보와 마찬가지로 기본적으로 수집해야 할 정보이다. 하지만 수집한 시간의 무결성 여부는 확정짓지 못한다. 악성코드나 해커가 시스템의 시간을 수정하지 않았다고 확정지을 수 없기 때문이다.
시간 정보 수집은 두가지로 나뉘는데 시스템이 사용하는 표준 시간대 정보 수집과 시스템의 현재 시간 정보 수집으로 나뉜다. 표준 시간대의 경우 레지스트리로 수집이 가능하지만 현재 시간 정보는 메모리에서만 수집이 가능하다.
현재 시간을 변경하였다는 정확한 증거는 아직까지 수집할 수 없지만, 언제 시스템 현재 시간을 담당하는 애플릿에 접근하였는지는 레지스트리를 통해 알 수 있다.
애플릿에 접근하는 방법은 두가지이며, 제어판을 통해서 접근하는 것과 시작표시줄에서 접근하는 방법이 있다.
하지만 레지스트리에는 작업표시줄로 접근하는 횟수만 기록이 된다.
일단 표준 시간대가 기록된 레지스트리는 아래와 같다.

키 : HKLM\System\CurrentControlSet\control\TimeZoneInformation
Value : StandardName 


[그림 3 - 레지스트리에서의 표준시간대 정보]


그리고 다음은 현재 시간을 수정하기 위해 언제 접근하였는지 보여주는 레지스트리이다.

키 : HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{75048700-EF1F-11D0-9888-006097DEACF9}\count
Value : HRZR_EHAPCY:gvzrqngr.pcy Value 


[그림 4 - 레지스트리에서의 시간정보 수정 횟수 정보]

위 value를 더블클릭하면 아래 이미지와 같이 나오는데 각 오프셋이 뜻하는 의미를 함께 표시 해 두었다.

[그림 5 - HRZR_EHAPCY:gvzrqngr.pcy Value]

위 이미지를 보면 수정 횟수가 "0x00000008" 로 되어 있는데 이 부분의 기본값은 "0x00000005" 이기 때문에 이 값을 현재 값에서 빼주어야 실제 접근 횟수가 나온다. 그러므로 위에서의 접근 횟수는 3이다.

 
Win7의 경우 이 Value가 존재하지 않는데, 정확한 이유는 모르지만 개인적으로는 작업표시줄로 시간정보를 수정 할 수 없어 해당 Value가 생성되지 않는 것 같다.

* 참고 : HRZR_EHAPCY:gvzrqngr.pcy(ROT-13) --> UEMERUNCPL:timedate.cpl


[마지막으로 로그온한 사용자]
하나의 시스템을 여러사람이 공동으로 사용한다면 마지막으로 로그온한 사람의 정보는 매우 중요한 정보가 될 수 있다.

키 : HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon
Value : DefaultUserName


[그림 6 - 레지스트리에서의 마지막 로그온 사용자 정보]


[시스템 마지막 종료 시간]
시스템 마지막 종료시간은 ControlSetXXX 마다 다를 수 있고 같을 수도 있다.

키 : HKLM\System\ControlSetXXX\control\windows
Value : ShutdownTime


[그림 7 - 레지스트리에서의 마지막 종료 시간 정보]


[공유 목록]
윈도우는 기본적으로 공유목록이 있으며, 예전 윈도우들은 이 공유목록을 통해 해킹을 당하기도 했었다(XP SP2 이전)
하지만 지금은 패치가 되어 그러한 일은 거의 없다. 공유 목록은 라이브 리스폰스 단계에서도 얻을 수 있는 정보이며, 레지스트리로 이와 같은 정보를 얻기 위해서는 아래와 같은 키로 가면 된다. 하지만, 이 키는 사용자가 직접 추가한 공유목록만 보여주고 윈도우가 기본적으로 지원하는 공유 목록은 보여주지 않는다.
하지만 윈도우에서 기본적으로 지원하는 공유 목록은 정해져 있기 때문에 아래 레지스트리 키를 참고하므로써 사용자가 직접 추가한 목록과 기본 목록을 구별 할 수 있게 된다.

키 : HKLM\System\CurrentControlSet\Service\lanmanserver\Shares
Value : <공유 폴더의 이름>


[그림 8 - 레지스트리에서의 공유 폴더 목록 정보(사용자가 추가한)]

만약 명령 프롬포트로 공유 목록을 확인하지 못하는 상황이라면 위 키의 value만으로 윈도우에서 기본적으로 지원하는 공유 목록을 알 수 없다. 이러한 경우 아래 키의 Value 중 AutoShareServer가 있는지 확인하고, 있다면 1로 설정되어 있는지 0으로 설정되어 있는지 확인하면 된다.

키 : HKLM\System\CurrentControlSet\Service\lanmanserver\parameters
Value : AutoShareServer


만약 value가 있는데 0으로 설정되어 있다면 기본적인 공유목록은 비활성화 상태인 것이고, 1이거나 이 Value가 없다면 활성화 상태인 것이다. 


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

Registry (10)  (0) 2012.01.07
Registry (9)  (0) 2012.01.06
Registry (7)  (0) 2012.01.04
Registry (6)  (0) 2012.01.04