디지털 포렌식 정리 #4 (레지스트리)

0

디지털포렌식

목록 보기
74/115

Q. 레지스트리란 ?

A. Windows의 구성요소,서비스,각종 프로그램과 같은 Windows의 전반에 걸쳐 사용되는 설정 그리고 구성을 포함하는 "Database"이다. 그냥 단순히 말해 설정 값들을 기억하고 있는 데이터베이스 라고 생각하면 될 것 같다.

레지스트리는 크게 5가지 종류로 구분할 수 있는데, 다음과 같다

HKEY_CLASSES_ROOT / HKEY_CURRENT_USER / HKEY_LOCAL_MACHINE / HKEY_USERS / HKEY_CURRENT_CONFIG

HKCR : 파일 확장자명과 응용프로그램의 연결정보를 저장 (.txt, .jpg, .py같은 확장자 파일들을 실행할 때, 어떤 프로그램으로 실행되는지 처음에만 물어보고, 그 다음부터는 안 물어보는 것을 기억할 수 있을텐데, 그러한 정보들을 기억하고 있는 것)
HKCU : 현재 로그온 되어 있는 사용자에 따라 달리 적용되는 제어판 설정, 네트워크 연결, 응용프로그램, 배경화면, 디스플레이의 설정등을 저장 / 제어판 네트워크 응용프로그램 배경화면 디스플레이 (사용자 별 키보드 세팅, 화면 설정 정보, 네트워크 설정 정보 등등)
HKLM : 개별 사용자 단위가 아닌 시스템 전체에 적용되는 하드웨어와 소프트웨어의 설정 데이터를 저장 HW, SW 설정 데이터 저장
HKU : 사용자 프로필을 만들 때 적용한 기본 설정과 사용자 별로 정의한 그룹 정책들을 저장
HKEY_CURRENT_CONFIG : 부팅한 윈도우가 사용하고 있는 하드웨어 프로필, 시스템 실행 시에 사용되는 하드웨어 정보. 이 키에 저장된 정보는 디스크에 영구적으로 저장되지 않고 부팅 시 생성된다.

가장 최근에 실행한 명령

MRULIST의 값을 보면, cba로 되어 있는 것을 알 수 있는데 역순으로 보면 된다. C가 가장 최근, B는 그 이전, A는 가장 오래전 실행된 명령어 인 것.

https://chiqueen.dev/42
이분이 정리해둔 걸 보면, volatility로 "NTUSER.dat" 파일을 분석하고 결과를 알 수도 있는 걸 알았다.

가장 최근에 열어본 문서

사진에는 잘려 없지만, Recentdocs처럼 MRULISTEx, 즉 모든 실행된 문서들의 순서를 기록하고 있는 레지스트리 키 값이 있다. RunMRU와 마찬가지로, cba, c가 가장 최근 a가 가장 마지막인 순서로 이해하면 될 것이다.

[ OS 관련 기록 ]

운영체제 설치 시간
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate
(Unix값으로 되어 있어서, 시간을 변환시켜야 볼 수 있다)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallTime
(이건 Windows Big endian으로 기록, 마찬가지로 Dcode를 활용하면 시간 볼 수 있음)
지금 확인한 값으로는 같게 나오는데, 서로 차이가 생기는 경우가 존재하는지는 더 찾아봐야할 것 같다.


PC 종료 시간
HKLM\SYSTEM\ControlSet00X\Control\Windows
ShutdownTime

[ usb 사용 흔적]
USB의 연결에 있어서도 꽤 많은 정보들이 레지스트리에 기록된다.

Setupapi.dev.log가 위치하는 경로

USB 최초 연결시간
System/windows/inf/setupapi.dev.log
이렇게 각 USB별 시리얼 넘버 or 이름을 검색하면, Section start된 시간을 확임함으로써 시간을 알 수 있다.

USB 마지막 연결 시간
HKU{USER}\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2{Volume GUID}
장치 클래스 ID : HKLM\SYSTEM\ControlSet00#\Enum\USBSTOR{Sub Keys}

  • 왜인지는 모르겠는데, USBSTOR 레지스트리가 다 날라가버려서 없다. 뭐지


고유 인스턴스 ID(Serial Number) : HKLM\SYSTEM\ControlSet00#\Enum\USB{Vendor ID & Product ID}{Sub Keys}
Serial Number : 6&366bcfea&1&0001

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
제품별로 각각 전부 다른 값을 가지는 장치 시리얼 번호가 포함된 고유의 값이다. 하지만, 모든 USB 장치가 시리얼번호를 포함하고 있는 것은 아니다. 따라서, 시리얼 번호가 있는지 여부에 따라 인스턴스 ID의 형태는 다음과 같이 달라진다.
Serial Number (O) – {Serial Number}&#
Serial Number (X) – #&{Random Number by PnP Manager}&#
다음은 시리얼번호가 존재할 때, 인스턴스 ID의 예이다.
643B324Q&0
Serial Number : 643B324Q
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

즉 내가 확인한 USB의 경우, 시리얼넘버가 없는 것이다.

제조사 ID와 제품 ID : VID_04E8&PID_6860 // HKLM\SYSTEM\ControlSet00#\Enum\USB{Sub Keys}

볼륨 시리얼 번호 : HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\EMDMgmt{Sub Keys}
이건 좀 특이한데, SSD에서는 기록이 안되는 레지스트리다. HDD에서만 기록이 된다. 그래서 난 SSD를 쓰기 때문에, USB를 연결하더라도 기록이 안된다. 이 값이 뭐냐면, 링크파일을 생성할 때 Tool을 통해 확인 가능한 볼륨 시리얼 넘버를 의미한다.



사용자명(Username) :
HKLM\SYSTEM\MountedDevices{Sub Values}
이처럼 이름이 기록된 것을 확인할 수 있다.


볼륨 GUID(Volume GUID) :
HKU{USER}\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2{Volume GUID}

출처 :
http://forensic-proof.com/archives/3632
http://www.forensic-artifacts.com/windows-forensics/recentfiles

Q. 레지스트리가 저장된 "파일" 경로와 이름은?

A.
SAM / SECURITY / SOFTWARE / SYSTEM 의 경우 다음 경로에서 확인할 수 있다.

경로 : %SystemRoot%\system32\config

NTUSER.DAT의 경우는 다음과 같다.

이처럼 각각의 사용자 프로파일 폴더에 NTUSER.DAT 파일이 있음을 확인할 수 있다. 실제로 내가 주로 사용하는 samsung의 경우 용량이 default 프로파일의 NTUSER보다 큰 것을 확인할 수 있다.

Q. Sam, Software, System, Security 각각의 레지스트리가 하는 역할은? + NTUSER.DAT?

A.
SAM – 로컬 계정과 그룹 정보 (계정 정보)
SECURITY – 시스템의 보안과 권한 관련 정보
SOFTWARE – 시스템 부팅과 관련 없는 전역 설정 정보
SYSTEM – 시스템 부팅에 필요한 전역 설정 정보

NTUSER.DAT의 경우, 사용자 별로 다른 설정 값을 저장하고 있는 파일이다. 그래서 사용자 프로파일 폴더에 저장되어 있다.

이 파일을 통해 분석할 수 있는 것 중 하나인, UserAssist에 대해서 분석해보자.

경로는 다음과 같다.

컴퓨터\HKEY_USERS\S-1-5-21-3978832096-2027006095-899728832-1001\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\UserAssist
UserAssist 하위 폴더들은 GUID 값이고, 그 하위에는 또 각 사용자가 실행한 파일 목록들을 기록하고 있다.
txt로 내보내서 열어본다면, 다음과 같은 문구들을 확인할 수 있다.

이름 / 형식 / 데이터로 구분되어 있고, 이름은 ROT13 방식으로 인코딩 되어 있다. (카이사르 암호의 일종이라고 한다.) 또한 시간 정보도 확인할 수 있는데,


이렇게 끝에서 12번째바이트에서, 8바이트의 길이로 마지막 실행 시간 정보를 저장하고 있다.

4~7바이트는 시행 횟수를 의미한다.

+@

이렇게 내보내기 (.txt 포맷)를 통해 열어본다면, Regedit에서 보이지 않던 추가적인 정보들을 가독성 있게 볼 수 있다. 이 경우 USB의 마지막 접속 시간이 11-27 12:23, 내가 디지털포렌식 실기 시험 보기 직전 USB 점검을 한 시간이다.

0개의 댓글