[MRU(Most Recently Used)]
윈도우는 사용자가 특정 행위를 하였을 때 마지막 행위를 레지스트리에 기록해 두는데 이 목록이 MRU List이다.
이제부터 소개하는 것들이 MRU List에 포함 되는 것들이다.

[검색 목록]
윈도우의 검색 목록은 레지스트리에 XP의 경우 검색 종류에 따라 각각 기록되는 서브키가 다르며, Win 7의 경우 통합적으로 기록이 된다.

키(XP) : HKCU\Software\Microsoft\Search Assistant\ACMru\5603  --> 모든 파일과 폴더 검색 기록
키(XP) : HKCU\Software\Microsoft\Search Assistant\ACMru\5001  --> 로컬 인터넷 검색
키(XP) : HKCU\Software\Microsoft\Search Assistant\ACMru\5647  --> 컴퓨터와 사람들 검색
키(XP) : HKCU\Software\Microsoft\Search Assistant\ACMru\5604  --> 음악, 그림, 동영상 검색


[그림 1 - ACMru 키의 서브키]


키(Win 7) : HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\WordWheelQuery

[그림 2 - Win 7의 WordWheelQuery 키]

위 이미지에 나와 있는 것처럼 검색 순서는 MRUListEx data에서 알 수 있다. 

* 참고 : Vista는 검색 기록을 레지스트리에 남기지 않는다. 

 

[최근 문서]
윈도우 버튼을 누르면 각 윈도우마다 내 최근 문서라고 하여 최근에 열었던 파일들을 나열해주는 기능이 있다.
이 기능또한 레지스트리를 참조하는 기능으로서 레지스트리를 통해 확인이 가능하다.

키 : HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs
 

[그림 3 - RecentDocs 키]

각 Value의 data를 확인 해 보면 파일을 확인 할 수 있으며 순서는 MRUListEx를 참고하면 된다. 


[최근 실행명령어]
윈도우 버튼을 누르면 실행이란 부분을 볼 수 있다. 일반 사용자들은 이 부분을 잘 사용하지 않지만 관리자나 컴퓨터에 대해서 조금만 알고 있는 사람들은 이 실행창을 자주 이용한다. 이 실행창에서의 명령어 리스트를 아래 키에서 볼 수 있다.

키 : HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU

[그림 4 - RunMRU 키]

이 키의 MRUList Value는 위의 MRUListEX Value와 다르게 순서가 알파벳으로 저장된다. 물론 실행된 기록들 또한 알파벳으로 저장된다.


[원격 데스크탑 연결 목록]
이 기능도 의외로 많이 사용하는 기능중 하나이다. 이 기능을 사용하여 원격 PC에 접속하고 나중에 다시 접속하려고 보면 예전에 접속했던 IP가 목록화 되어 남아 있는 것을 볼 수 있는데 이 정보 또한 레지스트리에 기록되는 정보이다.

키 : HKCU\Software\Microsoft\Terminal Server Client\Default

MRUx 형태로 Value가 되어 있는데 x는 0부터 시작한다. 숫자가 작을수록 최근에 접속한 IP이다. 


[대화상자를 통한 접근 기록]
대부분 프로그램에서 사용자에게 파일을 열도록 유도할 때 대화상자를 이용하는데 대부분의 프로그램이 윈도우 기본 대화상자를 사용한다. 이 대화상자를 통해 접근한 최근 폴더나 파일의 기록 또한 레지스트리에 남는다.

키(Vista/7) : HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedPidMRU --> 최근 접근한 폴더
키(Vista/7) : HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSavePidlMRU --> 최근 저장하거나 읽은 파일


이 키의 Value 또한 알파벳으로 표현되며, 두 키의 내용은 거의 비슷하나 OpenSavePidlMRU의 경우 확장자 별로 확인 할 수 있다. 

* 참고 : XP의 경우 키 이름에서 Pid만 제거하면 XP의 키 이름이 된다. 


[네트워크 드라이브 맵핑 정보]
윈도우는 원격에 있는 다른 컴퓨터의 하드디스크나 폴더를 로컬 컴퓨터의 드라이브로 맵핑 하여 사용한 정보를 레지스트레 기록한다. 

키 : HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Map Network Drive MRU

이 키또한 Value가 알파벳으로 표현된다. 



[마지막으로 접근한 레지스트리 키 정보]
아래 키에서 확인 할 수 있다.

키 : HKCU\Software\Microsoft\Windows\CurrentVersion\Applet\Regedit

LastKey Value의 data로 알 수 있다. 


[파일 접근 시간 업데이트 여부]
이 기록은 Win Vista/7에서만 사용하는 것으로 아래 키에서 확인 할 수 있다.

키 : HKLM\System\CurrentControlSet\Control\FileSystem

[그림 5 - FileSystem 키]

NtfsDisableLastAccessUpdate Value의 값에 따라 업데이트 여부가 결정 된다.
 - 0 : 업데이트
 - 1 : 업데이트 하지 않음(Default) 


디렉토리 리스닝의 속도를 빠르게 하기 위해 기본적으로 사용하지 않음. 


[휴지통 우회]
휴지통을 통해 삭제가 되는가, 휴지통을 거치지 않고 삭제가 되는가를 결정해주는 키가 있다.

키(XP) : HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket
키(Vista/7) : HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\Volume\<GUID>


[그림 6 - Volume 키]

 - 0 : 삭제시 휴지통으로 이동(Default)
 - 1 : 삭제시 휴지통을 거치지 않고 바로 삭제 


XP의 경우 레지스트리 한번의 설정으로 모든 사용자가 동일하게 적용 받지만, Vista/7은 Volume과 사용자 별로 설정 할 수 있다.


[삭제된 프로그램 정보]
원래 이 키의 목적은 프로그램의 이름을 다국적 언어로 지원하기 위해 한번 실행된 프로그램의 이름을 이 키에 저장해 두었다가 후에 해당 프로그램이 실행되면 이 키를 읽어 프로그램의 이름을 다국적 언어로 표현하기 위한 것이다.
하지만 이 키에 등록된 Value는 한번만 등록되더라도 지워지지 않는 특성이 있어 포렌식적으로 중요한 의미를 지닌다.

키 : HKCU\Software\Classes\Local Setting\Software\Microsoft\Windows\Shell\MuiCache

[그림 7 - MuiCache 키]

실행 전체경로와 실행 파일명까지 나와 있는 것을 볼 수 있다. 


지금까지 알아 본 레지스트리들만이 포렌식적으로 의미를 갖는 것은 아니다.

여기서 다루지 않은 레지스트리 키들도 다른 정보와 결합하거나 의미를 갖지만 아직 알려지지 않았을 뿐이다. 

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

휴지통 분석  (0) 2012.01.10
윈도우 계정  (0) 2012.01.10
Registry (11)  (0) 2012.01.07
Registry (10)  (0) 2012.01.07
Registry (9)  (0) 2012.01.06
이번에는 하이브 빈 보다 더 작은 논리적 저장단위인 셀에 대해서 알아 볼 것이다.

[셀]
셀이란, 하이브 빈 보다 더 작은 논리적 저장단위이며 실제 레지스트리 데이터를 저장할 때 사용되는 단위는 셀이다.
셀 헤더에는 셀의 전체 길이가 저장되어 있으며, 이 값은 무조건 8바이트의 배수이어야 한다.


셀에는 5가지 종류가 있다.

지금부터 5가지 셀에 대해서 알아볼 것이다.

[Key cell]
레지스트리의 키를 가지고 있는 셀로, '키 노드(Key node)'라고도 불린다. 이 셀에는 가장 최근에 키를 수정한 시간이 기록된다. 시그니처는 키노드의 경우 'nk', 키 링크의 경우 'lk'로 정해져있다.
각 오프셋에 대한 정보는 아래 이미지에 나와 있다.

[그림 1 - key cell offset]

참고로 셀의 크기는 셀의 기본구조라서 모든 셀에 공통적이다.


[Value cell]
해당 셀은 value와 data, data의 타입이 들어 있는 셀이다. 시그니처는 'vk'이며, 해당 셀의 구조는 아래 이미지와 같다.

[그림 2 - value cell offset]


[list cell 들]
Subkey-list cell은 부모 키가 있는 모든 서브키 셀을 가리키는 셀 인덱스 목록으로 이주어져 있으며 두 종류의 엘리먼트 셀의 결합으로 서브키들의 인덱스를 구성한다.
Subkey-list cell의 offset 정보는 다음과 같다.

[그림 3 - subkey-list cell offset]


 FL(lf), HL(lh) 타입의 엘리먼트라면 아래와 같은 오프셋을 가진다.

[그림 4 - FL, HL 타입의 offset]

IR(ri), IL(li) 타입의 엘리먼트라면 아래와 같은 오프셋은 가진다.

 

[그림 5 - IR, IL 타입의 offset]


Value-list cell은 Value cell들의 인덱스 목록을 가지고 있다. 오프셋은 다음과 같다.

[그림 5 - value-list cell offset]


[Security-descriptor cell]
key cell의 Security-descriptor 정보를 가지고 있으며 시그니처는 'sk'이다. 이 셀을 공유하고 있는 모든 키 노드의 개수도 같이 기록 된다. 오프셋은 아래 이미지와 같다.

[그림 6 - Security-descriptor cell offset]



list cell들의 경우 오프셋을 찾지 못하여 조금 더 공부가 필요할 듯하다.

참고로 키 노드의 시그니처 경우 약자를 따서 'nk'인데 순서가 오프셋에서 보면 순서가 뒤집어져 있다.

이 이유는 해당 시그니처가 헥스값으로 저장되어 kn -> nk로 보이는 것이다. 

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

Registry (9)  (0) 2012.01.06
Registry (8)  (2) 2012.01.06
Registry (7)  (0) 2012.01.04
Registry (6)  (0) 2012.01.04
Registry (5)  (0) 2012.01.04
이번에는 루트키중 HKEY_LOCAL_MACHINE 루트키에 대해서 알아보도록 하겠다.

HKLM 루트키는 자체 하이브를 가지고 있으며, 시스템의 하드웨어, 소프트웨어 드라이버의 환경설정 정보를 가지고 있다.

HKLM 하이브 중 일부는 관리자계정으로도 접근하지 못하는 하이브가 있으며, 이는 시스템 계정으로 접근이 가능하다.

HKLM 하위 하이브 목록과 위치는 다음과 같다.

[HKLM 하이브 목록과 위치]
 - HKLM\BCD00000000(Win Vista/7) : <Boot Partition>\Boot\BCD
 - HKLM\COMPONENTS(Win Vista/7) : %windows%\System32\Config\COMPONENTS
 - HKLM\HARDWARE : 메모리
 - HKLM\SAM : %windows%\System32\Config\SAM
 - HKLM\SECURITY : %windows%\System32\Config\SECURTY
 - HKLM\SOFTWARE : %windows%\System32\Config\SOFTWARE
 - HKLM\SYSTEM : %windows%\System32\Config\SYSTEM
 - HKLM\SYSTEM\Clone : 메모리


위에서 알 수 있듯이 하이브는 모두 확장자가 없으며, HARDWARE와 Clone 하이브는 메모리에 존재한다.

그러므로 라이브 리스폰스 과정에 이러한 휘발성 하이브에 대한 덤프 수집 부분도 추가하는 것이 좋다.

이제부터는 각 하이브에 대해 알아볼 것이다.

[HKLM\HARDWARE]
해당 하이브는 휘발성 정보로 메모리에 존자혐, 부팅시 감지되는 모든 하웨어와 그 하드웨어 장치의 드라이버 맵핑 정보들을 보관한다. 


[HKLM\SAM]
해당 하이브는 사용자의 로컬 계정 정보와 그룹 정보를 가지고 있다. 만약 조사하고자 하는 시스템이 도메인 컨트롤러라면 AD(Active Directory)에 도메인 계정과 그룹정보를 가진다. 이 하이브는 일반 관리자계정으로도 접근이 불가능 하며, 시스템 계정으로만 접근이 가능하다.
시스템 계정권한을 얻는 방법에는 여러가지가 있으며 대체로 조사과정에서는 통합 포렌식 도구들을 통해 얻는다.
하지만 아래와 같이 psExec 툴을 이용하여 일시적으로 얻는 방법도 있다.

[그림 1 - 시스템계정 권한]

 
위와 같은 명령어를 입력하면 regedit은 시스템계정 권한으로 실행되어 아래와 같이 SAM 하위 서브키들을 볼 수 있다.

[그림 2 - SAM 하이브 서브키]


[HKLM\SECURITY]
이 하이브는 시스템 범위의 보안 정책과 사용자 권한 할당 정보를 가지고 있다. 이 하이브 또한 시스템계정으로만 접근이 가능하며 위 SAM 접근했던 방식과 동일하게 접근이 가능하다.

[그림 3 - 시스템 계정 권한이 없는 경우]

위와 같이 시스템 계정이 아닌 경우 해당 하이브의 하위에는 아무것도 없는 것 처럼 보이지만, 아래처럼 시스템 계정권한으로 접근하면 많은 서브키들을 볼 수 있다.

 [그림 4 - 시스템계정 권한이 있는 경우]


[HKLM\SYSTEM]
해당 하이브는 시스템이 부팅될 때의 환경 설정 정보를 가지고 있다. 이런 정보들은 시스템이 정상적으로 부팅되었을 때 복사되며, 시스템이 비정상적으로 종료되었을 때 복사해둔 정보를 바타으로 부팅할 수 있는 옵션을 사용자에게 제공하는 역할을 한다. 이런 복사본은 일반적으로 '마지막으로 성공한 구성(last Known good control set)'이라고 부른다.

해당 하이브에서는 한가지 더 살펴볼 부분이 있는데 그 부분은 CurrentControlSet 키다.
이 키는 ControlSet001이나 또는 ControlSet001, ControlSet002 둘 중 어느 하나의 대한 링크이다.
ControlSet은 시스템 환경 설정 정보를 담고 있는 키로 보통 2개 이상의 키가 존재한다.
CurrentControlSet은 부팅에서 사용된 ControlSet 키의 링크이고, 같은 레벨에 있는 Select 키에서 확인이 가능하다.

[그림 5 - Select 키]


Current value의 값을 보면 1이라고 되어 있는데 이것의 의미는 ControlSet001로 부팅되었다는 의미이다.



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

Registry (6)  (0) 2012.01.04
Registry (5)  (0) 2012.01.04
Registry (4)  (0) 2012.01.03
Registry (3)  (0) 2012.01.03
Registry (2)  (0) 2012.01.02
이번에는 HKEY_CURRENT_USER 루트키에 대해서 알아 볼 것이다.

HKCU 루트키는 현재 로그온한 사용자의 정보를 서브키로 가지고 있는데 이 서브키들은 HKU 루트키에서 가져온 것들이다.

[그림 1 - HKCU 서브키의 출처]

 
위 이미지를 보면 HKU의 서브키들 중 S1001 계정의 서브키들이 HKCU의 서브키와 동일 한 것을 볼 수 있다.

즉 현재 S1001 계정이 로컬에 로그온 되어 있다는 뜻이 된다.

각 서브키들이 어떠한 의미를 뜻하는지는 아래를 참조하자.

[HKCU 서브키]
 - AppEvent : 이벤트와 사운드 사이의 연관 정보
 - Console : 명령 프롬포트 설정 정보
 - Control Panel : Sreen Saver, 데스크탑 테마, 키보드/마우스 등의 환경설정 정보
 - Environment : 환경 변수 정의
 - EUDC : 최종 사용자가 정의한 문자 정보
 - Identities : 윈도우 메일 계정 정보
 - Keyboard Layout : 키보드 레이아웃 설정 정보
 - Network : 네트워크 드라이브 맵핑 정보, 환경 설정 값
 - Printers : 프린터 연결 정보
 - Sessions information : 현 세션에서 동작 중인 프로그램들 중에서 작업 표시줄에서 보이는 프로그램의 숫자
 - Software : 현재 로그온한 사용자와 관련이 있는 소프트웨어들의 목록
 - UNICODE Program groups(Win XP) : 현재 로그온한 사용자가 지정한 '시작'메뉴 환경 설정 값
 - system(Win 7) : HKLM/SYSTEM 서브키의 일부
 - Volatile Environments : 휘발성 환경 변수 정의 


이제 HKEY_USER 루트키에 대해 알아보도록 하겠다.

HKU 루트키는 시스템의 모든 계정 정보를 담고 있는 루트키이다.

루트키와 각 서브키의 계정 프로파일이 있다는 것만 제외하면 HKU의 서브키들은 HKCU 서브키와 동일하다.

계정 프로파일은 각 키들의 (기본값)에 링크되어 있다.

아래는 HKU를 구성하는 하이브들의 목록과 하이브들의 저장경로이다.

[HKU 하이브 목록과 저장경로]
1. HKU\<로컬 사용자의 계정 SID> 
    - Win XP : Documents and Settings\LocalService\NTUSER.DAT
    - Win Vista/7 : %Windows%\ServiceProfiles\LocalService\NTUSER.DAT

2. HKU\<네트워크 사용자의 계정 SID>
    - WIn XP : Documents and Settings\NetworkService\NTUSER.DAT
    - Win Vista/7 : %Windows%\ServiceProfiles\NetworkService\NTUSER.DAT 

3. HKU\<사용자 SID>
    - Win XP : Documents and Settings\<user name>\NTUSER.DAT 
    - Win Vista/7 : Users\<user name>\NTUSER.DAT

4. HKU\<사용자의 SID>_Classes
    - Win XP : Documents and Settings\<user name>\Local Settings\ApplicationData\Microsoft\Windows\UsrClass.dat
    - Win Vista/7 : Users\<user name>\AppData\Local\Microsoft\윈도우\UsrClass.dat

5. HKU\.DEFAULT : %Windows%\System32\Config\Default 


이번에는 HKEY_CURRENT_CONFIG 루트키에 대하여 알아보도록 하겠다.

HKCC 루트키는 시스템이 시작할때 사용되는 하드웨어 프로파일을 저장하고 있으며, 별도의 하이브를 가지고 있지 않다.

프로그램이 현재 활성화된 하드웨어를 알아보기 위해 이 루트키를 참조한다. 

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

Registry (5)  (0) 2012.01.04
Registry (4)  (0) 2012.01.03
Registry (3)  (0) 2012.01.03
Registry (2)  (0) 2012.01.02
Registry (1)  (0) 2012.01.02

+ Recent posts