-
Windows 포렌식 개요 & Registry 개요Digital Forensics/inflearn 2023. 10. 11. 11:59
개념 정리
Windows Artifacts
아티팩트 : 컴퓨터가 자동으로 생성해주는 개체들 중에서 특정한 format을 가진 것들
- windows가 가지고 있는 특유의 기능들과 그 기능을 구현하는데 필요한 요소
- windows의 사용자가 수행하는 활동에 대한 정보를 보유하고 있는 개체
- 생성증거 : 프로세스, 시스템에서 자동으로 생성한 데이터(windows artifacts는 여기에 해당)
- 보관증거 : 사람이 기록하여 작성한 데이터
Windows의 수많은 Artifacts 중 일부
- 레지스트리
- $MFT, $Logfile, $UsnJrnl
- LNK
- JumpList
- Recycle Bin(휴지통)
- Prefetch & Cache(s)
- Timeline
- VSS
- 웹브라우저 아티팩트
- EventLogs
Windows Artifacts를 공부할 때 가장 중요한 점
- 사용자의 행위에 따라 어디에 어떤 정보가 저장될까?
- 컴퓨터는 대체 어떻게 동작하는 걸까?
→ 사용자는 컴퓨터로 무슨 일을 했을까?(포렌식으로 해결 가능)
Registry
윈도우 운영체제와 응용 프로그램 운영에 필요한 정보를 담고 있는 계층형 데이터베이스
- 운영체제 및 응용 프로그램의 설정 정보, 서비스의 중요 데이터 등 기록
- 부팅 과정부터 로그인, 서비스 실행, 응용프로그램 실행, 사용자 행위 등 모든 활동에 관여
윈도우 시스템의 모든 정보가 담겨 있음
- 윈도우 시스템 분석의 필수 요소
포렌식적으로 의미가 있는 Registry 몇가지
- 시스템 표준 시간(TimeZone)
- 시스템 정보(Systeminfo)
- 사용자 계정 정보
- 환경 변수 정보
- 자동 실행 프로그램
- 응용프로그램 실행 흔적
- USB 연결 흔적
- 접근한 폴더 정보
Registry 조회
regedit(레지스트리 편집기(윈도우 기본 프로그램)) 이용
- 윈도우+R 누르고 regedit 치고 열기 또는 윈도우+S 누르고 레지스트리 편집기 관리자 권한 실행
레지스트리 조회 및 편집 가능
- regedit 열면 5개의 키가 나옴
Registry 구조
* key는 계층형 구조
* 가장 많이 사용되는 것들 : HKCU, HKLM
루트키 약어 설명 HKEY_CLASSES_ROOT HKCR 파일 확장자 연결 정보, COM 객체 등록 정보 HKEY_CURRENT_USER HKCU 현재 시스템에 로그인된 사용자의 프로파일 정보 HKEY_LOCAL_MACHINE HKLM 시스템의 하드웨어, 소프트웨어 설정 및 기타 환경 정보 HKEY_USERS HKU 시스템의 모든 사용자와 그룹에 관한 프로파일 정보 HKEY_CURRENT_CONFIG HKCC 시스템이 시작할 때 사용되는 하드웨어 프로파일 정보 실습 과정
Windows Registry 동작 원리
Registry - Timezone
경로 : HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
- Bias를 통해 현재 컴퓨터의 timezone을 알 수 있다
- 현재 컴퓨터의 설정은 UTC+9
Registry - Systeminfo
경로 : HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion
- 현재 윈도우 버전, 설치 시간, ProductId 등 시스템과 관련된 정보들
구글에 dcode download 5.5 미리 다운로드하기
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
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 : 사용자가 만든 계정(사용자의 SID라고도 부름, 맨 끝이 1000이상은 일반적인 user 권한, 500은 administrator)
사용자의 최종 로그인 시간 예시(S-1-15-21 클릭)
- LocalProfileLoadTimeHigh = 0x01d84236
- LocalProfileLoadTimeLow = 0x5f0dff92
→ high값이랑 low값 합치면 0x01d842365f0dff92, 이 값을 dcode 도구에 복붙해서 시간 정보 확인 가능(format부분은 Hexadecimal(Big-Endian)으로 되어있는지 확인)
Registry - Environment Variables
시스템/사용자 환경변수 확인
경로
- 사용자 환경변수
- HKU\{SID}\Environment
경로
- 시스템 환경변수
- HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Envirionment
Registry - Executable
응용프로그램(exe) 실행에 따른 흔적
- UserAssist : 최근에 실행한 프로그램 목록, 마지막 실행시간, 실행횟수
- OpenSavePidIMRU : 열기 혹은 저장 기능으로 사용된 파일
- LastVisitedPidIMRU : 열기 혹은 저장 기능을 사용한 응용 프로그램
UserAssist : 최근에 실행한 프로그램 목록, 마지막 실행 시간, 실행 횟수
경로 : HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist
- {CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\count : 실행파일 실행 기록
- {F4E57C4B-2036-45F0-A9AB-443BCFE33D9F}\count : 바로가기 실행 기록
OpenSavePidIMRU : 열기 혹은 저장 기능으로 사용된 파일
경로 : HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSavePidIMRU
LastVisitedPidIMRU : 열기 혹은 저장 기능을 사용한 응용 프로그램
경로 : HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedPidIMRU
Registry - USB Connection
USB 등 외부 저장매체 연결 흔적을 추적 가능
- USB 제품명, 시리얼 번호, 최초 연결 시각, 마지막 연결 시각
경로
- 모든 USB : HKLM\SYSTEM\ControlSet001\Enum\USB
- USB 저장장치 : HKLM\SYSTEM\ControlSet001\Enum\USB\USBSTOR
- 마운트 디바이스 : HKLM\SYSTEM\MountedDevices
시스템에 연결되었던 모든 USB 장치의 정보가 기록됨
경로 : HKLM\SYSTEM\ControlSet001\Enum\USB
VID와 PID 검색하면 USB 종류 알 수 있음
시스템에 연결되었던 모든 USB 저장장치의 정보가 기록됨
경로 : HKLM\SYSTEM\ControlSet001\Enum\USBSTOR
시스템에 마운트되었던 장치의 리스트를 나타냄
경로 : HKLM\SYSTEM\MountedDevices
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
Windows Registry 실습
Registry Practice
레지스트리 파일 추출
FTK Imager 이용- [root]\Windows\Users\{USERNAME}\NTUSER.DAT
- [root]\Windows\System32\config\DEFAULT
- [root]\Windows\System32\config\SAM
- [root]\Windows\System32\config\SECURITY
- [root]\Windows\System32\config\SOFTWARE
- [root]\Windows\System32\config\SYSTEM
→ 반드시 LOG1, LOG2 파일을 포함해서 추출
바탕화면에 registry 폴더 생성 → 그 안에 폴더 raw랑 clean이랑 result 만들기 → FTK Imager 관리자 권한 실행 → File → Add Evidence Item → Logical Drive → 기본 경로 C 선택하고 finish → 위에 있는 경로들 탐색
1번째 경로 : (LOG1, LOG2도 함께 수집) 파일들 선택해놓고 우클릭 export files → 바탕화면 아래 registry 아래 raw로 확인 → 추출 완료
2번째~6번째 경로 : 각 이름의 파일들과 각각의 모든 LOG1, LOG2 같이 선택하고 우클릭 export files → 바탕화면 아래 registry 아래 raw로 가져오기
분석 도구 다운로드
REGA : http://forensic.korea.ac.kr/tools.html
RLA : https://ericzimmerman.github.io/#!index.md
Regripper : https://github.com/keydet89/RegRipper3.0REGA 실습
고려대에서 만든 도구, 정보가 정확하지 않을 수 있고 많이 볼 수는 없지만, 쉽게 볼 수 있다는 장점, 심층분석하기 전에 이걸로 먼저 돌려봄
REGA 다운로드 → 바탕화면 registry 폴더에 압축 풀기 → 폴더 열어서 rega.exe 실행(관리자 권한으로 실행됨) → 파일 → 레지스트리 파일 수집 → 현재 시스템 레지스트리 수집 → rega 폴더 아래에 raw 새 폴더 만들기 확인 → 자동 수집됨 → 나가서 확인하면 다 수집되어있지만, 로그파일 1,2가 안 남아서 정확하지 않을 수 있음, 확보 불가 → 다시 실행 → 파일 → 레지스트리 분석 → 표준시간대 설정 서울 → 레지스트리 분석 창에 사전 정보는 11, 22, 33 등으로 대충 입력 → 레지스트리 파일 입력의 폴더 선택해서 REGA 밑에 raw → 자동으로 다 들어가는거 확인하고 비할당 영역 분석에 체크 → 분석 시작 → 분석 완료 → 우측에 도구 상자 뜬거에서 윈도우 설치 정보, 사용자 계정 정보, 실행 명령(윈도우+R 기록), 검색 키워드 등등 쉽게 볼 수 있음
→ REGA가 raw를 완벽하게 처리하지 못하는거랑 더 깊게 들어갔을 때 지원하지 않는 것들은 아래 RLA와 Regripper로 둘러보기
RLA 실습
dirty한 raw를 clean으로 바꿔주는 도구
링크접속 Ctrl+F로 RLA 검색해서 앞에꺼 클릭 다운로드 → 바탕화면 registry 폴더 안에 압축 풀기 → 윈도우 터미널에서 registry 로 cd → ls → .\rla.exe → help나오는거 다 읽어보면 좋은데 그중 example 꼭 읽기 → 파일 탐색기 열어서 registry 안에 raw 들어가서 위에 절대경로 복붙 예시 → .\rla.exe -d "C:\Users\hunjison\Desktop\registry\raw" --out (clean경로 복붙 예시 C:\Users\hunjison\Desktop\registry\clean") → clean 아래에 로그가 다 병합되어져서 생김
Regripper 실습
좋은데 사용이 어려움
git hub 링크에서 code의 download zip → 바탕화면 registry 폴더 아래에 압축 풀기 → regripper 생김 → CLI 버전도 있는데 GUI 버전이 해당 파일 내의 rr.exe 클릭 → hive file의 browse → clean안에 있는 파일들 하나씩 다 하기, 이름 기억 → 각각 report file의 browse → registry 아래 result에 기억한 이름 알아볼 수 있게 넣기(예시 NTUSER, SAM, SECURITY, COFTWARE, SYSTEM) → 완료 후 ...Done 뜬거 하나하나가 각각의 플러그인이라고 불리는 기능들, '~와 관련된 걸 긁어서 넣었다'라는 뜻 → 다 돌아가면 notepad++ 열어서 result를 다 드래그해서 열기(데이터가 너무 많아서 구글에 regripper plugin 검색하면 고려대 위키피디아에서 설명해놓은 플러그인 목록 보고 원하는거 검색해서 사용하기) → 찾기 기능으로 usbstor 넣고 열린 파일에서 모두 찾기 → usb 스토리지라는 모듈, 즉, 플러그인이 돌아간 정보 볼 수 있음, FriendlyName은 usb의 이름, 설치시각, 마지막 꽃힌 시각, 제거 시각 등을 알 수 있음 → 찾기 기능으로 userassist 검색 열린 파일에서 모두 찾기 → 확장자 밑 바로가기 확장자, 앞선 실습에서 rot13 디코딩 했던거를 다 풀어서 보여주고 해석하지 못했던 접근시간 정보 등도 다 보여줌
새로 알게 된 것
저번주 메모리 포렌식에 이어 이번에는 윈도우 포렌식의 기초를 다질 수 있어서 유익했다. 이번에 배운 것이 윈도우 포렌식의 극히 일부분이라서 앞으로도 강의를 수강하며 최대한 많은 것을 얻어갈 수 있도록 해야겠다. 이론적인 것들을 포함해서 저번 실습 때 사용했던 FTK Imager뿐만 아니라, 새로운 분석 도구인 REGA, RLA, Regripper로 레지스트리 실습을 진행하는 방법을 알게 되었다. 윈도우 포렌식의 첫 강의라 이론 비중이 높았고 크게 어려운 부분없이 재밌게 듣고 실습했다.
본 글은 위의 인프런 강의를 듣고 작성하였습니다.
'Digital Forensics > inflearn' 카테고리의 다른 글
MUICache, AmCache & ShimCache, 브라우저 아티팩트 개념 및 실습 (1) 2023.11.21 Jumplist, Prefetch 개념 및 실습 (1) 2023.11.15 $MFT, $LogFile, $UsnJrnl, 바로가기(.LNK) 개념 및 실습 (1) 2023.11.07 침해사고 대응기법 - Volatility Cridex & CTF-d, GrrCon 2015(+도구 설치, 환경 설정, 문제 다운로드) (1) 2023.10.04 디지털 포렌식 소개와 기초 (0) 2023.09.27