본문 바로가기

Forensic/study

[Forensic] Windows Registry

윈도우 아티팩트

: 윈도우즈가 가지고 있는 특유의 기능들과 그 기능을 구현하는데 필요한 요소 / 윈도우 사용자가 수행하는 활동에 대한 정보를 보유하고 있는 개체

 

생성증거: 프로세스, 시스템에서 자동으로 생성한 데이터 - 윈도우 아티팩트가 여기에 해당

보관증거: 사람이 기록하여 작성한 데이터

 

종류

  • 레지스트리
  • $MFT, $Logfile, $UsnJrnl
  • LNK
  • JumpList
  • Recycle Bin
  • Prefetch & Cache(s)
  • Timeline
  • VSS
  • 웹브라우저 아티팩트
  • Eventlogs

 

가장 중요한 점

1. 사용자의 행위에 따라 어디에 어떤 정보가 저장될까?

2. 컴퓨터는 대체 어떻게 동작하는 걸까?

--> 사용자는 컴퓨터로 무슨 일을 했을까?에 답 가능

 


 

레지스트리

: 윈도우 운영체제와 응용 프로그램 운영에 필요한 정보를 담고 있는 계층형 데이터베이스

  • 운영체제 및 응용 프로그램의 설정 정보, 서비스의 중요 데이터 등 기록
  • 부팅 과정부터 로그인, 서비스 실행, 응용 프로그램 실행, 사용자 행위 등 모든 활동에 관여
  • 가장 양이 많고 복잡함.
  • 즉, 윈도우 시스템의 모든 정보가 담겨 있음 --> 윈도우 시스템 분석의 필수 요소

 

레지스트리 데이터

  • 시스템 표준 시간 (TimeZone)
  • 시스템 정보 (Systeminfo) 
  • 사용자 계정 정보
  • 환경 변수 정보
  • 자동 실행 프로그램
  • 응용프로그램 실행 흔적 (UserAssist, OpenSavePidlMRU, LastVisitedPidlMRU)
  • USB 연결 흔적
  • 접근한 폴더 정보 (Shellbag)

 

레지스트리 조회

regedit (레지스트리 편집기) --> 지스트리 조회 및 편집 가능

 

레지스트리 구조

  • RootKey 아래에 Key 아래에 SubKey ~..
  • 각각의 Key는 Value, Type, Data를 가짐.
  • Type은 Data의 타입을 의미

루트 키 약어 설명
HKEY_CLASSES_ROOT HKCR 파일 확장자 연결 정보, COM 객체 등록 정보
HKEY_CURRENT_USER HKCU 현재 시스템에 로그인된 사용자의 프로파일 정보
HKEY_LOCAL_MACHINE HKLM 시스템의 하드웨어, 소프트웨어 설정 및 기타 환경 정보
HKEY_USERS HKU 시스템의 모든 사용자와 그룹에 관한 프로파일 정보
HKEY_CURRENT_CONFIG HKCC 시스템이 시작할 때 사용되는 하드웨어 프로파일 정보

 


 

Registry - Timezone

  • 시스템 표준 시간을 나타냄
  • 경로:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
  • Bias를 통해 현재 컴퓨터의 timezone을 알 수 있음.
  • 현재 컴퓨터의 설정은 UTC +9

(참고)

Bias 값 0xfffffde4 = - 540

- 540분 --> - 9시간 --> - 9시간이 UTC라는 의미

 

Systeminfo

  • 경로: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
  • 현재 윈도우 버전, 설치 시간, ProductId 등 시스템과 관련된 정보

  • 쉘에 systeminfo 명령의 결과와 동일하다.
    • ex) BuildLab --> OS 버전을 의미
    • InstallDate, InstallTime --> 원래 설치 날짜를 의미 (Unix Time)
    • ProductId --> 제품 ID를 의미

 

Autoruns

  • 시작 프로그램(Autoruns) 확인 (자동 실행 프로그램)
  • 경로: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

  • 경로: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

  • 설정 > 앱 > 시작 프로그램의 데이터와 동일함.
  • (참고) RunOnce와 RunOnceEx는 삭제 타이밍에서 다르다

 

User Account

  • 경로: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\{SID}
    • S-1-5-18: systemprofile
    • S-1-5-19: LocalService
    • S-1-5-20: NetworkService
    • S-1-5-21: 사용자가 만든 계정
      • 끝 번호가 1000 이상은 user 권한
      • 끝 번호가 500은 administrator
      • 1000 이상의 계정을 보는 게 중요 --> 악성코드의 경우, 계정을 하나 더 만들어서 관리자 권한으로 접근하는 백도어가 될 수도 ...

 

++ 사용자의 최종 로그인 시간 확인 가능

LocalProfileLoadTimeHigh + LocalProfileLoadTimeLow

--> 0x01d8b074 + 0xb9ba8aa6

---> 0x01d8b074b9ba8aa6

----> Dcode로 사용자의 최종 로그인 시간을 확인할 수 있다.

 

Environment Variables

: 시스템 / 사용자 환경변수 확인 (환경 변수 > 사용자 변수와 시스템 변수와 동일)

  • 사용자 환경변수
    • HKU\{SID}\Environment
  • 시스템 환경변수
    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

 

Executable

: 응용프로그램(exe) 실행에 따른 흔적을 알 수 있음.

 

UserAssist

: 최근에 실행한 프로그램 목록, 마지막 실행 시간, 실행 횟수

  • HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{CLS ID - 예약된 값}
    • {CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\Count: 실행파일 실행 기록
    • {F4E57C4B-2036-45F0-A9AB-443BCFE33D9F}\Count: 바로가기 실행 기록

이상한 문자열로 써져 있는 건 인코딩 되어있기 때문

rot13 변환

 

OpenSavePidIMRU

: 열기 혹은 저장 기능으로 사용된 파일

  • HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSavePidlMRU\확장자
  • 확장자별로 나열됨.

 

LastVisitedPidIMRU

: 열기 혹은 저장 기능을 사용한 응용 프로그램

  • HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedPidlMRU

 

USB Connection

: USB 등 외부 저장매체 연결 흔적을 추적 가능. USB 제품명, 시리얼 번호, 최초 연결 시각, 마지막 연결 시각 등

  • 모든 USB: HKLM\SYSTEM\ControlSet001\Enum\USB
    • 시스템에 연결되었던 모든 USB 장치의 정보가 기록됨
    • VID와 PID를 검색하면, USB 종류를 알 수 있음 (Vendor ID, Product ID)
    • 그 아래는 서브키인데, 접근 불가 --> 툴 사용해야
  • USB 저장장치: HKLM\SYSTEM\ControlSet001\Enum\USBSTOR
    • 시스템에 연결되었던 모든 USB 저장장치의 정보가 기록됨.
    • VID와 PID를 검색하면, USB 종류 알 수 있음.
  • 마운트 디바이스: HKLM\SYSTEM\MountedDevices
    • 시스템에 마운트되었던 장치의 리스트를 나타냄

 

Shellbags

: 사용자가 접근한 폴더 정보를 기록함. 삭제된 폴더의 정보도 확인 가능!

  • BagMRU: 폴더의 구조를 계층적 구조로 나타냄
  • Bag: 윈도우 사이즈, 위치 등 사용자의 환경설정을 저장
  • 경로
    • HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\BagMRU (0이 Desktop..!)
    • HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags
    • HKCU\Software\Microsoft\Windows\Shell\BagMRU
    • HKCU\Software\Microsoft\Windows\Shell\Bags

 


 

레지스트리 실습

바탕화면에 registry 폴더와 내부에 raw, clean, result 폴더 생성해두기

  • raw (dirty ...) 데이터 --> clean --> result

 

 

1. FTK Imager로 레지스트리 파일 추출

Logical Drive 선택

 

C 드라이브 등록

 

 

 

[root]\Windows\Users\{USERNAME\NTUSER.DAT

[root]\Windows\System32\config\DEFAULT, SAM, SECURITY, SOFTWARE, SYSTEM

--> 반드시 LOG1, LOG2 파일을 포함해서 추출!

 

 

 

[root]\Windows\Users\{USERNAME\NTUSER.DAT

위 세 파일을 모두 추출해서 registry\raw에 저장

 

 

 

[root]\Windows\System32\config\~~

마찬가지로 registry\raw에 저장

 

 

추출 완료 (copy0은 지워주자)

 

 

2. 분석 도구 (1) REGA

다운로드

http://forensic.korea.ac.kr/tools.html

 

http://forensic.korea.ac.kr/tools.html

 

forensic.korea.ac.kr

 

 

레지스트리 파일 수집

자동으로 레지스트리 파일 수집이 진행됨.

 

로그 파일들은 수집되지 않았다.

+ 실제 데이터는 LOG1, LOG2에 먼저 쓰고 해당 파일에 쓰이기 때문에 로그 파일이 중요.

 

 

레지스트리 분석

 

분석이 완료되면, 도구 상자에서 여러 정보를 확인 가능하다.

 

분석 도구 2. RLA

raw --> clean 데이터로 만들어주는 도구

 

 

다운로드

https://ericzimmerman.github.io/#!index.md

 

Eric Zimmerman's tools

 

ericzimmerman.github.io

 

 

rla.exe -d "분석 파일 경로" --out 만들 파일 경로

--> 로그들이 병합되어 파일 추출됨.

--> 오류 - 로그파일 이름 .copy 제거

--> NTUSER.DAT 추출에서 오류..

 

clean에 잘 생성되었다.

--> 이후 Regripper로 분석 예정

 

 

분석 도구 2. RLA

다운로드

https://github.com/keydet89/RegRipper3.0

 

GitHub - keydet89/RegRipper3.0: RegRipper3.0

RegRipper3.0. Contribute to keydet89/RegRipper3.0 development by creating an account on GitHub.

github.com

Code - Download ZIP

 

 

rr.exe (GUI 버전) 실행

clean에서 Hive File 선택, result에 Report File 생성

 

각 파일마다 일일히 진행 ...

각 라인은 플러그인을 의미.

 

--> 모두 생성 후, 노트패드에서 txt 파일 확인하기.

 

 

모르는 내용은 플러그인 목록에서 검색 및 참고하면 됨.

http://forensic.korea.ac.kr/DFWIKI/index.php/RegRipper

 

RegRipper - Digital Forensic Wikipedia

Regripper는 Harlan Carvey에서 개발한 레지스트리 분석 도구로 오픈소스로 제공된다. 최신 업데이트는 2013년 4월이며, 최신 버전은 v2.8이다. 본 항에서는 최신버전인 v2.8버전을 사용하였다. Regripper는 C

forensic.korea.ac.kr

 

ex 1) 노트패드에서 파일 모두 열고, usbstor 열린 파일에서 모두 찾기

 

더 자세한 여러 정보들을 확인 가능하다.

 

FriendlyName 검색

 

ex 2) userassist 검색 ... --> NTUSER는 추출되지 않아서 확인 불가능 ..

 

 

참고

인프런 기초부터 따라하는 디지털포렌식 - 손지훈

https://inf.run/6m2V

 

[무료] 기초부터 따라하는 디지털포렌식 - 인프런 | 강의

기초부터 따라하는 디지털포렌식 강의입니다. 강의를 따라하다보면 "물 흐르듯, 자연스럽게" 실력이 늘어가는 강의를 추구합니다., - 강의 소개 | 인프런...

www.inflearn.com

'Forensic > study' 카테고리의 다른 글

[Forensic] 시스템 파일 ($)  (0) 2022.08.20
[GCFA] 3주차  (0) 2022.08.16
[디포 2급 실기] 18회 리뷰  (0) 2022.08.06
[GCFA] 2주차  (0) 2022.07.24
[Volatility] cridex  (0) 2022.07.18