제 10 장 윈도우 시스템 조사
1. 윈도우 레지스트리
- 레지스트리 소개
레지스트리(Registry) : 윈도우 운영체제와 응용프로그램 구동에 필요한 정보를 저장하는 계층형 데이터베이스
부팅 과정에서 로그인, 서비스 실행, 응용프로그램 실행, 사용자 행위 등 윈도우 운영체제의 거의 모든 활동에 관여
- 하이브(Hive) 파일
하이브 : 레지스트리 정보를 저장하고 있는 물리적인 파일
레지스트리는 파일시스템과 유사하게 계층형 구조로 구성되어 있으며, 최상위 폴더에 해당되는 부분을 루트키(Root Key), 그 하위의 폴더에 해당되는 부분을 서브키(SubKey)라 한다. 각 키에는 파일에 해당하는 값(value)이 있다. 이러한 구성을 하이브라 한다.
루트 키 - HKEY_CLASS_ROOT(HKCR), HKEY_CURRENT_USER(HKCU), HKEY_LOCAL_MACHINE(HKLM),
HKEY_USERS(HKU), HKEY_CURRENT_CONFIG(HKCC)
값은 이름이 있으며, 저장 형식이 정해져 있고, 저장 형식에 맞게 데이터가 기록되나 기록되어 있지 않은 경우도 종종 있다.
하이브 키 - SAM, SECURITY, SYSTEM, SOFTWARE, NTUSER.DAT, USERCLASS.DAT, BCD, COMPONENTS
등이 있으며, 이와 같은 하이브 파일이 하나의 세트(Set)를 구성하여 윈도우 레지스트리가 구성된다.
- 레지스트리 포렌식 분석
ⅰ. 시스템 설정 정보
ㄱ. 시스템 기본 정보
레지스트리에 시스템 기본 정보, 컴퓨터 이름, 시스템 마지막 종료 시간 등이 기록되어 있다. 시스템 기본 정보는 "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion"의 경로에 존재한다.
컴퓨터 이름은 시스템 등록 정보에 등록된 컴퓨터 이름을 의미하며, "HKLM\SYSTEM\ControlSet00X\Control\ComputerName\ComputerName" 경로에 존재한다.
마지막으로 시스템을 종료한 시간은 "HKLM\SYSTEM\ControlSet00X\Control\Windows" 경로의 ShutdownTime에 존재한다.
ⅱ. 표준 시간대 설정과 날짜/시간 변경 정보
표준 시간대 설정에 관한 정보는 "HKLM\SYSTEM\ControlSet00X\Control\TimeZoneInformation" 경로에 존재한다.
ⅲ. 자동 실행 목록 및 시작 프로그램
ㄱ. 자동 실행 목록
윈도우 시스템은 사용자의 로그온 시 HKCU 키에 존재하는 실행 항목 등을 차례대로 실행한다. 자동 실행 항목에 등록되면 시스템이 부팅될 때마다 구동되기 때문에 악성코드에서도 사용할 수 있다. 현재 시스템에 설정된 자동 실행 항목은 Microsoft에서 공개한 Autoruns 프로그램을 사용하여 확인할 수 있다.
ㄴ. AppInit_DLLs
AppInit_DLLs는 GUI 응용프로그램이 실행될 때, user32.dll에 의해 자동으로 로드되는 DLL이다.
일반적으로 비어 있으며 값이 존재하는 경우 악성코드일 가능성이 높다.
"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Control\Windows"에 있는 AppInit_DLLs에서 확인할 수 있다.
ㄷ. Command Processor\AutoRun
명령 프롬프트를 실행할 때, 자동으로 시작되는 응용프로그램에 대한 정보는 "HKLM(HKCU)\SOFTWARE\Microsoft\CommandProcessor" 키의 AutoRun에 저장되어 있다. 값 생성 후 특정 응용프로그램을 지정하면 명령 프롬프트가 실행된 후 자동으로 함께 실행된다.
ⅳ. 네트워크 정보
레지스트리에서는 사용자의 네트워크 인터페이스가 접속한 정보가 기록되어 있다. 이를 이용하여 해당 시스템에서 접속한 IP 주소 및 서브넷 마스크, 게이트 에이 등을 알 수 있다. 네트워크 인터페이스 정보는 "HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\NetworkCards" 와 "HKLM\SYSTEM\ControlSet00X\Services\Tcpip\Parameters\Interfaces\{GUID}" 키에 기록된다. 이 정보는 cmd 창에서 "ipconfig/all" 명령어를 사용하여서도 확인이 가능하다.
특정 네트워크 인터페이스의 정보를 확인하려면 NetworkCards의 하위키에 있는 ServiceName에서 GUID를 확인한 후, Interfaces의 하위키 중 동일한 GUID의 값을 확인하면 된다.
ⅴ. Recent Docs - 열람 파일 목록
Windows 2000과 XP에서는 My Recent Documents에, Windows 7/8에서는 Recent Items에 최근에 열었던 문서, 그림, 음악, 동영상 등의 파일이 존재한다. "HKLM\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs"같은 경로에 최근 열어본 파일에 대한 정보가 다음과 같이 존재한다. MRUListEx의 키 값을 통해 열어본 파일의 순서를 확인할 수 있다.
ⅵ. 외부 시스템 연결 정보
로컬 시스템에서 외부 시스템으로 연결할 수 있는 방법은 원격 데스크탑, 네트워크 드라이브, 마운트 포인트를 이용하는 방법이 있다.
원격 데스크탑 연결 정보에는 "원격 데스크탑 연결"을 수행한 이전 컴퓨터의 IP가 존재한다.
내 컴퓨터에서 네트워크 드라이브 연결을 수행했을 경우 연결 정보가 "HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Map Network Drive MRU"경로에 존재한다. MRUList를 통해 네트워크 드라이브 연결 순서를 확인할 수 있다.
마운트 포인트의 내용은 "HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2" 에 있다. 시스템에 연결된 저장장치의 고유 식별 정보가 하위키로 포함되어 있다.
식별정보는 "HKU\{USER}\SYSTEM\MountedDevices"의 하위 값 내용과 연결하여 추가적인 정보를 획득할 수 있는데, 데이터 4바이트가 같은 내용으로 시작한다면 각각의 값들은 동일한 디스크의 연결에 의해서 생성된 것으로 볼 수 있다. 상위에 위치한 값을 통해 식별 값과 연결된 정보를 확인할 수 있으며, 하위에 위치한 값을 통해 연결된 볼륨 명을 확인할 수 있다.
ⅶ. ShellBag
ShellBag은 특정 폴더를 열람했을 때 해당 폴더와 관련된 정보가 기록되는 키를 말하며 경로는 Widow XP의 경우 "HKU\SOFTWARE\Microsoft\Windows\Shell", "HKU\SOFTWARE\Microsoft\Windows\ShellNoRam"이며 Windows 7/8의 경우 "HKU\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\Shell"이다. ShellBag 정보는 'UsrClass' 하이브 파일에 저장된다.
저장되는 정보로는 최초 열람 후 폴더를 닫았을 때의 해당 폴더의 시간 정보(생성, 접근, 수정 시간)이 저장되며 ShellBag 구조를 해석하면 열람한 폴더의 전체 경로를 확인할 수 있다. 시간 정보는 최초 열람 후 폴더를 닫았을 때의 시간 정보에서 폴더에 변경사항이 없는 경우 변경되지 않으며 아이콘을 변경하거나 내부 파일에 변경사항이 있는 경우 작업 완료 후 폴더를 닫았을 때의 시간으로 기록된다. ShellBag을 분석하는 프로그램으로는 sbag이 있다.
- 저장장치 연결 정보
ⅰ. 저장장치 연결 정보
마운트된 저장장치에 대한 정보는 "HKLM\SYSTEM\MountedDevices" 경로에 존재하며, 데이터를 통해 해당 드라이브에 마운트된 장치의 형식을 알 수 있다.
ⅱ. USB 저장장치 연결 정보
ㄱ. USB 저장장치 연결 절차
USB 저장장치가 연결되면 버스 드라이버가 PnP관리자에게 장치의 고유 식별 번호(device descriptor)를 사용하여 연결을 알린다. 연결을 받은 PnP관리자는 받은 정볼르 기반으로 Device Class ID를 설정하고 적절한 드라이버를 검색한다. 드라이버가 없는 경우 사용자 모드의 PnP관리자는 해당 장치의 펌웨어로부터 드라이버를 전달받아 로드하고 레지스트리에 기록하낟. 기록되는 레지스트리의 경로는 "HKLM\SYSTEM\ControlSet00X\Enum\{DID, device class identifier}"와
"HKLM\SYSTEM\ControlSet00X\DeviceClasses\{GUID}"이다. 장치 드라이버의 설치 과정은 후술하는 SetupAPI 로그 파일에 저장된다. 이런 과정을 거치기 때문에 시스템에 연결된 USB 저장장치의 흔적은 SetupAPI 로그 파일과 레지스트리를 통해 알 수 있다.
ㄴ. SetupAPI Log
SetupAPI Log는 Windows XP의 경우 "%SystemRoot%\Setupapi.log"에 기록되고 Windows Vista/7/8의 경우 "%SystemRoot%\inf\Setupapi.log"에 기록된다.
기록되는 정보는 Device Class ID, Unique Instance ID, Section의 시작 시간이 기록된다.
ㄷ. 저장 매체 정보
"HKLM\SYSTEM\ControlSet00X\USBSTOR" 경로에 기록되며 Device Class ID 형식을 통해 제조사, 제품명, 버정 정보를 확인할 수 있다. 시리얼 번호는 Device Class ID의 하위 키의 Unique Instance ID 형식을 통해 확인한다.
USB의 제조사, 제품명, 버전 정보
USB 시리얼 번호 정보
제조사 ID, 제품 ID 정보
제조사 ID, 제품 ID는 "HKLM\SYSTEM\ControlSet00X\Enum\USB" 경로에서 확인할 수 있다. 하위 키는 "VID_####&PID_####"으로 기록되는데 이는 제조사의 ID, 제품의 ID를 가리킨다.
연결된 장치 이름 정보
연결된 USB 장치의 볼륨명을 알기 위해서는 "HKLM\SYSTEM\Microsoft\Windows Portable Devices\Devices"의 하위 키 중 제품명이나 시리얼 번호를 포함하는 키를 검색해야 한다. 검색한 결과에서 "Friendly Name" 항목에 USB 장치의 볼륨며이 기록되는데 장치명이 설정된 경우에는 설정한 장치명으로 기록되고 장치명이 설정되지 않은 경우에는 연결된 볼륨명으로 기록된다.
ㄹ. 연결 시각
외장형 저장장치의 최초 연결 시각은 "HKLM\SOFTWARE\Microsoft\Windows Portable Devices\Devices"의 하위키 중 제품명이나 시리얼번호를 포함하는 키를 확인하여 얻는 방법이 있다. 위 키는 외장형 저장장치가 연결되는 시점에 생성되고 자주 변화되지 않으므로, 키의 마지막 수정시간을 외장형 저장장치의 연결시간이라 판단하는 방법이 있다. 이는 이름을 변경하는 경우 마지막 수정시간이 변경될 가능성이 있어 신뢰할 수 있는 정보로 볼 수 없다.
신뢰할 수 있는 정보는 SetupAPI로 그 파일에서 확인할 수 있다. USB 등의 장치가 연결되면 윈도우 시스템은 Plug-in Play 매커니즘으로 인해 장치를 자동으로 설치하고, 그 기록을 SetupAPI로 그 파일에 기록한다.
외장형 저장장치의 마지막 연결 시각은 "HKU\USER}\Software\Microsoft\Windows\Current Version\Explorer\Mount Point2"의 하위키와 "HKLM\SYSTEM\ControlSetxxx\Enum\USB\VID_####&PID_####"의 마지막 수정 시간을 통해 확인할 수 있다.
위 키들은 외장형 저장장치가 연결/해제되는 시점에 마지막 수정 시간을 갱신한다.
ⅲ. CD/DVD 제작 및 실행 흔적
윈도우에 내장된 CD/DVD 굽기 기능에 대한 사용 흔적은 "HKU\Software\Microsoft\Windows\Current Version\Explorer\CD Burning\StagingInfo"에 임시 굽기 폴더에 대한 정보가 기록된다. CD 굽기 기능을 사용한 시각에 대한 정보는 "%USERPROFILE%\AppData\Local\Microsoft\Windows\Burn\Burn#"의 마지막 수정 시각으로 확인할 수 있다.
2. 윈도우 아티팩트
- 이벤트 로그
윈도우 운영체제는 시스템을 구동하면서 발생한 각종 이벤트를 이벤트 로그에 기록한다. 이벤트 로그는 응용 프로그램 이벤트, 보안 이벤트, 시스템 이벤트 3자리로 구성되어 있다.
응용 프로그램 이벤트는 응용 프로그램이나 기타 프로그램의 동작에 대한 이벤트가 저장된다.
보안 로그는 유효하거나 유효하지 않은 로그온 시도, 파일의 생성·열람·삭제에 관련된 이벤트를 기록한다.
시스템 로그는 시스템 부팅 등 윈도우 시스템의 구성요소와 관련된 오류를 기록한다.
이벤트 로그는 레지스트리에서 최대 파일 크기나 보관 기간을 지정할 수 있고 경로는 "HKEY_LOCAL_MACHINE\SYSTEN\CurrentControlSet\Services\EventLog\<이벤트 로그 종류>"이다.
윈도우 2000부터 XP, 2003가지 이벤트 로그 파일은 evt 확장자를 가지며, 윈도우 Vista부터 evtx 확장자를 가진다.
- Pre/Superfetch
프리패치는 프로그램 실행 속도를 향상시키기 위해 윈도우에서 제공하는 기능이며, 시스템 부팅 과정 및 응용 프로그램 실행 과정이 기록되어 있는 로그로 응용 프로그램의 실행 과정을 확인할 수 있다.
확장자는 'pf'이며, 파일 개수는 128개로 생성을 제한한다. 경로는 "%WINDIR%\PREFETCH\"이다.
부트 프리패치 파일 : "NTOSBOOT-BOODFAAD.pf", 윈도우 부팅 시 일어나는 프리패칭 과정으로 부팅 시 하드 디스크 부담을 줄이기 위해 프리패쳐에서 필요 파일을 모아 파일을 생성한다.
응용프로그램 프리패치 파일 : "<filename>-<filepath hash>.pf", 만일 동일 프로그램이 다른 위치에서 실행되었다면 실행 파일 경로의 해시값이 다르므로 다른 프리패치 파일이 생성된다.
슈퍼 패치는 Windows Vista부터 적용된 기능으로 프리패치 파일이 오랜 시간동안 사용되지 않을 경우, 페이지 아웃되어 페이지 파일로 관리되기 때문에 프리패치의 기능을 제대로 수행하지 못해 이러한 기능을 개선한 것이다.
사용자가 해당 프로그램을 얼마나 자주, 언제, 얼마동안 사용하는지 등의 사용자의 사용 패턴을 기록한다.
- 바로가기 파일
바로가기 파일은 링크, 숏컷 파일이라고도 하며 윈도우즈 시스템 설치, 응용 프로그램 설치, 문서 파일 열람할 때 생성되며 사용자가 직접 생성할 수도 있다. 바로가기 파일에는 바로가기의 대상 객체 파일에 대한 경로, 볼륨 명, 시간 정보 등 다양한 정보가 저장된다.
3. 웹 브라우저
- 개요
ⅰ. 웹 브라우저 소개
웹 브라우저는 여러 종류가 있으며 다량의 사용 내역이 저장되어 있어 별도의 도구 없이 분석이 쉽지 않다. 용의자의 인터넷 사용 내역을 추적하기 위해서는 웹 브라우저 로그 파일을 파악하고 있어야 한다.
포렌식 관점에서 중용한 정보는 Cache History, Cookie, Download, Session 정보이다. 웹 브라우저는 다양하게 많이 있지만 Internet Explorer, Mozilla Firefox, Google Chrome, Apple Safari, Opera 등이 있는데, 99%의 점유률을 가지고 있다.
ⅱ. 웹 브라우저 사용흔적 분석
ㄱ. Cache 정보
Cache 정보란 웹 사이트를 접속할 때, 방문 사이트로부터 자동으로 웹 페이지 데이터를 다운 받는 것이다. 해당 사이트를 재접속할 때, 웹 페이지 데이터를 다시 다운 받지 않고 다운 받은 데이터를 사용하게 함으로써 바른 로딩을 가능하게 한다.
Cache 정보는 크게 Cache 데이터와 Cache 인덱스 정보로 나뉜다. Cache 인덱스 정보에는 다운로드 URL, 다운로드 시간, Cache 데이터 파일명, Cache 데이터 크기, Cache 데이터 위치 등의 정보가 저장된다.
다운로드 시간을 통해 접속 시간, 접속 사이트를 알 수 있으며, URL의 특정 키워드를 통해 사용자 행위를 유추할 수 있다.
ㄴ. History 정보
History 정보는 사용자가 방문한 웹 사이트 접속 내역으로, 방문사이트 URL, 방문시간, 방문횟수, 웹 페이지 제목 등의 정보를 포함한다.
또한 방문사이트의 URL이 GET 방식일 때는 포함된 인자 값을 분석하여 추가적인 정보를 알 수 있다. 추가적인 정보에는 검색어, 아이디, 패스워드 등이 있다.
ㄷ. Cookie 정보
Cookie란 웹 사이트가 사용자 별, 개인화된 서비스를 제공하기 위해 사용자의 컴퓨터에 저장하는 데이터를 말한다. Cookie 정보에는 호스트, 경로, 쿠키, 수정시간, 쿠키 만료시간, 변수 명, 변수 값 등이 있다. 호스트를 통해서는 접속한 사이트를 알 수 있으며, 경로를 통해서 사용한 서비스의 종료를 유추할 수 있다. 추가적으로 변수와 변수 값을 통해 로그인 아이디 등의 중요한 정보를 획득할 수 있다.
ㄹ. Download List 정보
Download 정보는 사용자가 의도적으로 선택해서 자신의 컴퓨터에 내려 받은 파일에 대한 정보이다. Download 정보에는 다운로드 파일의 로컬 저장경로, 다운로드 소스 URL, 다운로드 파일크기, 다운로드 시간, 다운로드 성공 여부 등의 정보가 포함된다. 다운로드 파일의 로컬 저장경로를 통해 해당 경로에 있는 파일 내용을 확인할 수 있다.
ㅁ. Session 정보
Session 정보란 이전 세션을 복구하기 위해 사용자 컴퓨터에 저장되는 정보를 말한다. Session 정보는 비정상적으로 웹 브라우저가 종료되거나 사용자가 원하는 이전 Session을 복구하기 위해 사용된다. Session 정보로는 URL, Session 시작시간, Session 종료시간, 제목 등이 있다.
'Digital Forensics > Pre Digital Forensic' 카테고리의 다른 글
침해 사고 조사 절차 (0) | 2017.01.30 |
---|---|
리눅스 시스템 조사 (0) | 2017.01.26 |
디지털 증거의 무결성 유지 기술 (0) | 2017.01.18 |
파일 시스템과 파일 복구 IV (0) | 2017.01.16 |
파일 시스템과 파일 복구 III - NTFS (0) | 2017.01.09 |