학회_공부해요/디지털포렌식

[디지털포렌식_기초]5주차 윈도우 포렌식

yenas0 2023. 5. 8. 23:17
반응형

https://www.inflearn.com/course/%EA%B8%B0%EC%B4%88-%EB%94%94%EC%A7%80%ED%84%B8-%ED%8F%AC%EB%A0%8C%EC%8B%9D

 

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

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

www.inflearn.com

섹션3. Windows 포렌식 개요&Registry 개요 ~ Windows Registry 실습(2)


Windows Artifacts

Windows가 가지고 있는 특유의 기능들과 그 기능을 구현하는데 필요한 요소

Windows의 사용자가 수행하는 활동에 대한 정보를 보유하고 있는 개체

생성증거: 프로세스, 시스템에서 자동으로 생성한 데이터(윈도우 시스템에서 자동으로 생성한 데이터)

보관증거: 사람이 기록하여 작성한 데이터(사용자가 작성한 데이터/ 문서, 텍스트 등등)

Windows Artifacts는 생성증거에 해당한다.

 

레지스트리

$MFT, $Logfile, $UsnJrnl

LNK

JumpList

Recycle Bin(휴지통)

Prefetch & Cache(s)

Timeline

VSS

웹브라우저 아티팩트

EventLogs

위 처럼 수만은 아티팩트들이 있다. 밑의 자료를 참고하면 더 자세히 알 수 있을것이다.

http://www.forensic-artifact.com/windows-forensics/linkfile

 

디지털 포렌식 아티팩트 & 증거 분석 기법 공유 | 인섹시큐리티

 

www.forensic-artifact.com

Windows Artifacts를 공부할 때 생각할 점

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

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

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

 

Registry

(윈도우 아티팩트 중 가장 양이 많고 복잡하다)

 

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

-운영체제 및 응용 프로그램의 설정 정보, 서비스의 중요 데이터 등 기록

-부팅 과정부터 로그인, 서비스 실행, 응용프로그램 실행, 사용자 행위 등 모든 활동에 관여

흔히 폴더구조로 담고 있다고 보면 된다. 부팅과정부터 로그인과정 서비스과정 응용프로그램 실행 사용자 행위 등 거의 모든 윈도우 시스템에 걸쳐 모든 데이터를 담고있는 것

 

윈도우 시스템의 모든 정보가 담겨 있으므로 윈도우 시스템 분석의 필수 요소

 

Registry에 담겨 있는 정보

-시스템 표준 시간(TimeZone)

-시스템 정보(Systeminfo) : 윈도우 버전 몇인지, 최근 설치된 시각이 언제인지, 로그인 몇번 했는지

-사용자 계정 정보 : 지금 로그인 된 사용자의 이름, 몇번 로그인 했는지, 로그인 언제 했는지

환경 변수 정보 

-자동 실행 프로그램 : 윈도우가 켜질 때 자동적으로 실행되는 프로그램에 대한 흔적

-응용프로그램 실행 흔적(UserAssist, OpenSavePidIMRU, LastVisitedPidIMRU) : 

-USB 연결 흔적 : 어떤 Usb연결했는지

-접근한 폴더 정보(Shellbag)

 

위와 같은 방법으로 레지스트리 편집기를 실행시키면 다음과 같이 왼쪽에 5개의 폴더가 나타난다.

이 5개를 Root Key 라고 부른다. 이 폴더를 열어 나오는 것들은 전부 Key라고 하며 위에서 언급한대로 계층형 구조를 가지게 된다.

 

레지스트리 구조

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

위의 약어는 레지스트리 편집기에서도 인식이 되어 외워두면 검색할 때 편리하다.

 

Registry - Timezone

경로 : HKLM\SYSTEM\CurrentControlSet\control\TimeZoneInformation

 

Bias를 통해 현재 컴퓨터의 timezone을 알 수 있다.

0xfffffde4 는 10진수로 나타내었을 때 -540을 의미한다.

540은 분 단위로 나타낸 시간이며 이는 즉 한국시간인 UTC+9를 의미한다.

 

Registry - Systeminfo

경로 : HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion

현재 윈도우 버전, 설치 시간, Productld 등 시스템과 관련된 정보

powershell에서 systeminfo를 입력했을 때 나오는 값과 일치한다.

 

Registry - Autoruns

경로:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx

HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce

HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx

시작 프로그램 (Autoruns)  확인

 

Registry - User Account

경로 : HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\

S-1-5-18 : systemprofile

S-1-5-19 : LocalService

S-1-5-20 : NetworkService

S-1-5-21 : 사용자가 만든 계정 (뒤의 번호가 1000이상이면 user 권한, 500은 administrator)

 

Registry - User Account

사용자의 최종 로그인 시간

LocalProfileLoadTimeHigh 

LocalProfileLoadTimeLow  두개를 합치면 Dcode를 이용하여 사용자의 최종 로그인 시간을 구할 수 있다.

 

Registry - Environment Variables

시스템/사용자 환경변수 확인

 

Registry - Executable

응용프로그램(exe) 실행에 따른 흔적

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

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

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

경로 : HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist

경로를 따라 들어가보면 값의 이름을 알기 어렵다. 드래그 한 부분을   

https://rot13.com/

 

rot13.com

rot13.com Please enable JavaScript to use this page. ↓ ROT1 ROT2 ROT3 ROT4 ROT5 ROT6 ROT7 ROT8 ROT9 ROT10 ROT11 ROT12 ROT13 ROT14 ROT15 ROT16 ROT17 ROT18 ROT19 ROT20 ROT21 ROT22 ROT23 ROT24 ROT25 ↓

rot13.com

여기에 넣어보면 무슨 프로그램을 사용했는지 알 수 있다.

HxD를 사용한 기록인 것을 파악 할 수 있다.

==> 대부분 도구를 사용하면 한번에 쭉 추출하는게 가능하므로 굳이 하나하나 위에처럼 할 필요는 없다.

 

Registry -USB Connection

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

경로 

모든 USB : HKLM\SYSTEM\ControlSet001\Enum\USB  (마우스, 키보드 등 모든 연결장치..)  

USB 저장장치 : HKLM\SYSTEM\ControlSet001\Enum\USB\USBSTOR (시스템에 연결되었던 모든 USB 저장장치 정보)

마운트 디바이스 : HKLM\SYSTEM\MountedDevices  (시스템에 마운트되었던 장치의 리스트)

 

VID와 PID를 검색하면, USB 종류를 알 수 있다.  

 

Registry - Shellbags

사용자가 접근한 폴더 정보를 기록한다

BagMRU : 폴더의 구조를 계층적 구조로 나타냄

Bag : 윈도우 사이즈, 위치 등 사용자의 환경설정을 저장

경로 

HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags

HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\BagMRU 

HKCU\Software\Microsoft\Windows\Shell\Bags 

HKCU\Software\\Microsoft\Windows\Shell\BagMRU

 

 

Registry Practice

FTK Imager를 이용하여 레지스트리 파일 추출

registry 파일을 만들어 위와같이 서브폴더 3개를 만든다. 

파일을 수집을 하여 가져오면 그 자료의 상태를 dirty하다고 표현한다. (수집할 때 log 파일까지 모두 수집하기 때문에) log파일에 쓰여진 내용들을 원래 파일에 합쳐야 clean한 상태가된다.

즉 raw 폴더에들어갈 자료는 dirty파일과 log파일이고 이것을 바꾼 형태를 clean폴더에 저장할 것이다. 그리고 그 자료를 통해 result를 뽑아낸다.

 

언급했던 대로 위의 3가지 파일을 모두 선택해야한다. (raw 폴더로 추출)

 

 

 

다음으로 Windows => system32 => config

위 파일들도 raw에 export한다.

 

분석 도구 다운로드

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

RLA : http://ericzimmerman.github.io/#!index.md 

Regripper : http://github.com/keydet89/RegRipper3.0 

 

위 도구들을 이용하면 raw폴더에 있는 파일을 분석 할 수 있다.

REGA를 이용하여 사용자 계정 정보를 확인한 결과

 

RLA는 dirty한 raw를 clean하게 바꾸어 준다.

Regripper를 통해 result폴더로 파일을 추출한후 notepad++등으로 파일을 열면 다소 알기 어려운 문자들이 많이 나온다.

 

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

위에 있는 플러그인 목록을 참고하여서 검색하면 정보를 알아낼 수 있다.  

 

 


마치며

메모리포렌식도 어려웠는데 윈도우 포렌식이 더 복잡한 것 같다.. 하나 익숙해질때 쯤에 다른걸 시작해서인가 더 어려운느낌이다. 메모리 포렌식 할 때는 문제를 이것저것 풀어서인지 실제로 쓰이는 느낌이 강해서 재미있었는데 윈도우 포렌식은 내 컴퓨터에 있는 여러 정보들을 과거의 기록부터 쭉 볼 수 있어서 재미있었다. 내용이 많아서 아마 오늘 한 내용을 다 외우지는 못하겠지만 두고두고 보면 눈에 익겠지....     

반응형