레지스트리는 윈도우의 주요 설정값을 보유하고 있는 데이터베이스 파일이며 시스템에 하이브 파일로 저장되어 있습니다.
-하이브 파일 위치
레지스트리 |
하이브 |
HKLM\BCD00000000 | {Boot Partition}\Boot\BCD |
HKLM\COMPONENTS | %SystemRoot%\System32\Config\COMPONENTS |
HKLM\SYSTEM | %SystemRoot%\System32\Config\SYSTEM |
HKLM\SAM | SystemRoot%\System32\Config\SAM |
HKLM\SECURITY | %SystemRoot%\System32\Config\SECURITY |
HKLM\SOFTWARE | %SystemRoot%\System32\Config\SOFTWARE |
HKU\<SID of local service account> | %SystemRoot%\ServiceProfiles\LocalService\NTUSER.DAT |
HKU\<SID of network service account> | %SystemRoot%\ServiceProfiles\NetworkService\NTUSER.DAT |
HKU\<SID of username> | %UserProfile%\NTUSER.DAT |
HKU\<SID of username>_Classes | %UserProfile%\AppData\Local\Microsoft\Windows\Usrclass.dat |
HKU\.DEFAULT | SystemRoot%\System32\Config\DEFAULT |
HKLM\HARDWARE | 휘발성 |
1. 수집 및 분석 준비
하이브 파일은 대부분 시스템에의해 열려있어 일반적인 방법으로는 복사가 되지 않기때문에 forecopy와 같은 포렌식 복사 도구를 이용하여 수집하여야 합니다.
forecopy_handy -r d:\temp |
수집된 하이브파일들은 regedit에 추가하여 확인도 가능하며 YARU와 같은 분석툴을 이용해서 확인하는 것도 가능합니다.
YARU를 이용하여 하이브 파일을 여는 경우 하이브파일이 저장된 경로상에 한글이 존재하는 경우 정상적으로 불러와지지 않기 때문에 영어 또는 숫자로 이루어진 디렉토리에 저장해두어야 합니다.
YARU는 삭제된 레지스트리의 목록도 보여주기 때문에 어떠한 레지스트리가 제거되었는지 확인할 때도 유용하게 사용 가능합니다.
하이브 파일에는 레지스트리 키마다 최종 수정 시간, 소유자, 사용 권한 등의 데이터가 저장되어 있으며 최종 수정 시간은 64bit의 빅엔디안 값으로 저장되어 있습니다.
※ 윈도우는 64bit를 이용하여 Timestamp를 저장하며 1601년 1월 1일을 기준으로 흐른 시간을 마이크로 초 단위로 표기합니다. (유닉스는 32bit, 1970년 1월 1일 기준, 초 단위로 저장합니다.)
2. 주요 레지스트리
주요 시스템 정보를 저장하고 있는 레지스트리 값은 다음과 같습니다.
-기본 시스템 정보
레지스트리 |
내용 |
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion |
기본 시스템 정보 |
HKLM\SYSTEM\ControlSet\services |
시스템 서비스 정보 |
HKLM\SYSTEM\ControlSet\services\LanmanServer\Shares | 사용자 공유 폴더 정보 |
HKLM\SOFTWARE\Microsoft\Windows Portable Devices\De vices |
USB 장치 연결 정보 |
Windows NT\CurrentVersion의 시스템 정보에는 운영체제 설치 날짜, 운영체제 종류, 서비스 팩 버전 등의 정보가 저장되어있으며 설치 날짜는 InstallDate에 유닉스 빅엔디안 방식으로 저장되어있습니다.
USB 장치 연결 정보 키의 최종 수정 시간이 USB 장치의 설치 날짜이며 장치명이 지정되어있지 않은경우 볼륨명으로 저장되며 볼륨이 변경되는 경우 해당 시간으로 타임스탬프 값이 변하게 됩니다.
-방화벽 정책 정보
레지스트리 |
내용 |
HKLM\SYSTEM\ControlSet\services\SharedAccess\Param eters\FirewallPolicy\FirewallRules |
방화벽 정책 (Windows ver.6) |
HKLM\\SYSTEM\ControlSet\Services\SharedAccess\Para meters\FirewallPolicy\StandardProfile\AuthorizedApplications \List |
허용 어플리케이션 목록 (Windows ver.5) |
HKLM\SYSTEM\ControlSet\Services\SharedAccess\Param eters\FirewallPolicy\StandardProfile\GloballyOpenPorts |
허용 포트 목록 (Windows ver.5) |
윈도우 방화벽의 정책은 레지스트리에 저장되어있으며 Windows 버전 6계열 (Vista/7/2008 등)은 한 곳에 통합되어 저장되어있고 Windows 버전 5계열 (XP/2003 등)은 허용 어플리케이션 목록과 허용 포트 목록이 분할되어 저장되어 있습니다.
-자동 실행 관련 정보
레지스트리 |
내용 |
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ Winlogon (shell) |
로그온 쉘 정보 |
HKU\{USER}\SOFTWARE\Microsoft\Windows NT\CurrentV ersion\Winlogon (shell) |
로그온 쉘 정보 |
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\poli cies\system (shell) |
시스템 쉘 정보 |
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run |
자동 실행 정보 |
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run Once |
자동 실행 정보 |
HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersi on\Run |
자동 실행 정보 |
HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersi on\RunOnce |
자동 실행 정보 |
자동 실행과 관련된 레지스트리는 악성코드에 의해 자주 감염이 되기 때문에 확인해주어야 합니다.
Winlogon 키의 shell 값은 Windows 버전 5계열에서는 기본값으로 Explorer.exe 값을 가지고 Windows 버전 6계열에서는 해당 값이 존재하지 않고 system 키의 shell 값은 모두 기본적으로 값이 존재하지 않습니다.
RunOnce 키는 1회에 한하여 자동 실행되도록 하는 레지스트리이며 값 이름 앞에 *가 있는 경우 안전모드에서도 실행이 되며 !가 있는 경우 명령이 모두 끝나기 전까지 값이 삭제되지 않습니다.
3. 기타 레지스트리
시스템 관련 레지스트리 이외에 침해사고 조사시 유용하게 사용되는 레지스트리는 다음과 같습니다.
-어플리케이션 사용 흔적
레지스트리 |
내용 |
HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersi on\Explorer\UserAssist\{GUID}\Count |
어플리케이션 사용 흔적 |
해당 레지스트리의 값은 모두 ROT13으로 인코딩되어 있으며 각 레지스트리 값에는 세션 번호, 실행 횟수, 마지막 실행 시간(윈도우 리틀 엔디안) 등의 데이터가 저장되어 있습니다.
[Windows Vista 이하] 0~3 : 세션 번호 4~7 : 실행 횟수(기본 값 : 5) 8~15 : 마지막 실행 시간
[Windows 7 이상] 0~3 : 세션 번호 4~7 : 실행 횟수(기본 값 : 가변) 3E~44 : 마지막 실행 시간
-최근 접근 파일 & 폴더 목록
레지스트리 |
내용 |
HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersi on\Explorer\RecentDocs |
최근 열어본 파일 목록 |
HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersi on\Applets\{Program}\Recent File List |
최근 열어본 파일 목록 (프로그램별) |
HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersi on\Explorer\ComDlg32\LastVisitedMRU |
최근 접근 폴더 (Windows ver.5) |
HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersi on\Explorer\ComDlg32\LastVisitedPidlMRU |
최근 접근 폴더 (Windows ver.6) |
HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersi on\Explorer\ComDlg32\OpenSaveMRU\{Extension} |
최근에 접근한 파일 (Windows ver.5) |
HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersi on\Explorer\ComDlg32\OpenSavePidlMRU\{Extension} |
최근에 접근한 파일 (Windows ver.6) |
해당 레지스트리의 값은 최근에 접근한 파일 및 폴더의 목록을 저장하고 있습니다.
각각의 값들의 실행 순서는 MRUList 에 저장되어 있습니다.
-기타 주요 실행 흔적
레지스트리 |
내용 |
HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersi on\Explorer\RunMRU |
최근 실행 명령 목록 (Win + R) |
HKU\{USER}\SOFTWARE\Microsoft\Internet Explorer\Typed URLs |
IE URL 입력 목록 |
HKU\{USER}\SOFTWARE\Microsoft\Search Assistant\ACM ru\{NUMBER} |
윈도우 검색 목록 (Windows ver.5) |
HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersi on\Explorer\WordWheelQuery |
윈도우 검색 목록
(Windows ver.6) |
HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersi on\Applets\Regedit (LastKey) |
레지스트리 편집기 마지막 접근 키 |
'보안 > 포렌식' 카테고리의 다른 글
AIX 메모리 덤프 생성 & 분석 (0) | 2013.01.07 |
---|---|
Volafunx (FreeBSD 메모리 분석툴) 테스트 결과 (0) | 2012.12.28 |
솔라리스 메모리 덤프 생성 & 분석 (0) | 2012.10.08 |
Volatility Linux Profile 생성 (1) | 2012.09.17 |
Windows 메모리 덤프 생성 및 분석 (0) | 2012.08.08 |