ssoL2 TISTORY

[Whois] 포렌식 교육 3주차 공부 / FTK Imager/NTFS Log Tracker/WinPrefetchView/DBbrowser for SQLite/windows prefetch 본문

sec/forensic

[Whois] 포렌식 교육 3주차 공부 / FTK Imager/NTFS Log Tracker/WinPrefetchView/DBbrowser for SQLite/windows prefetch

ssoL2 2021. 1. 18. 00:37

# 2주차는 1주차 풀이 보충 및 공부 X


공부

1. 윈도우 포렌식 도구들 사용법 익히기

2. windows prefetch 가 무엇인지, 어디에 저장되는지 알아보기

(www.forensic-artifact.com/windows-forensics/prefetch)


1. 윈도우 포렌식 도구

 

1) FTK Imager : 수집된 데이터의 무결성을 보장하기 위해서 정확한 복사본(포렌식 이미지)를 생성하는 도구

                      더불어 데이터 사전 분석과 정보 검색 RAM 같은 휘발성 데이터 수집도 가능

 

- 하드 디스크 뿐만 아니라 아래의 저장 장치에서도 데이터 수집 가능

자기미디어 광학 미디어 대체 미디어
플로피 디스크 CD MP3 플레이어
하드 드라이브 CD-R 또는 CD-RW 태블릿
USB/PC 카드 DVD 스마트폰
ZIP 또는 테이프 드라이브   비디오 게임, TV

      -> 따라서 조사 과정 동안 하드 디스크 이외에도 이러한 기기에서 발견될 수 있음을 유의 !

 

- 중간의 사고를 방지하기 위해 비트 단위로 미디어 이미지를 복사(원본 장치와 일치)

- 파일 슬랙과 비할당된 공간도 가능, 삭제된 파일 복구도 가능

 

- 파일 슬랙(File Slack) : 클러스터라 불리는 고정 길이 데이터 블록이 존재하는데, 이때 남는 공간을 0으로 채워버림                                     이렇게 발생한 공간을 파일 슬랙이라 부름

                               -> 램 슬랙, 드라이브 슬랙, 파일 시스템 슬랙 또한 의미가 같음

 

- FTK Imager 는 거의 모든 이미지 타입을 지원

  주요 타입은 파일 시스템을 지원하며 Imager 생성 포맷, Imager 읽기 포맷을 지원

FTK Imager이 지원하는 파일 시스템

DVD(UDF)
CD(ISO, Joliet, CDSF)
FAT(12, 16, 32)
exFAT
VXFS
EXT(2, 3, 4)
NTFS(압축 NTFS)
HFS, HFS+, HFSX
FTK Imager이 생성하는 증거 파일 포맷

E01, S01, L01
AFF
AD1
RAW/DD
FTK Imager 읽기 포맷

E01 Images (*.e01)
SMART Images (*.s01)
Advanced Forensic Format Images (*.aff)
Virtual Hard Disk (*.vhd)
ICS Images (*.I01)
SafeBack / SnapBack Images (*.001)
Tar Archive (*.tar)
Zip Archive (*.zip)
AccessData Logical Image (*.AD1)
VMDK Virtual Drive (*.vmdk)
Ghost Raw Image (*.gho)
Raw CD/DVD image (*.iso; *.img; *.bin; *tao; *dao)
Alcohol CD image (*.mds)
DiscJuggler image (*.cdi)
CloneCD image (*.ccd)
Gear CD Image (*.p01)
IsoBuster CD image (*.cue)
Nero CD image (*.nrg)
Philips / Optimage CD image (*.cd)
Pinnacle CD image (*.pdi)
Plextools CD image (*.pxi)
Prassi CD Right Image Plus (*.gcd)
Prassi PrimoDVD Image (*.gi)
Roxio CD Creator Image (*.cif)
Virtual CD image (*.vc4)
WinOnCD image (*.c2d)
Apple Disk Images (*.dmg)

 

-FTK Imager 인터페이스

 

Evidencd Tree View : 계층적 트리 구조로 증거 항목을 보여줌

File List :  현재 Evidence Tree 창에 선택된 항목에 있는 파일과 폴더를 보여줌

Viewer : Preview Mode 옵션인 Natural, Text, Hex 선택에 따라 파일의 내용을 보여줌

Properties / Hex Value Interpreter / Custom content Sources : Evidence Tree 창이나 File Lisㅅ 창에서 현재 선택된 객체의 다양한 정보를 보여주고, 뷰어에 선택된 16진수 값을 10진수와 가능한 날짜와 시간 값으로 변환하고, Custom Content 이미지에 포함된 내용을 각각 보여줌

 

- FTK Imager 기능 : 이미지 파일을 생성하기 전에 일부 증거 미리 볼 수 있음 !!

                          Add to Custom Content(AD1) image 를 선택해 전체 증거 객체나 특정 객체 선택 가능

 

- 증거물을 한 개 또는 여러 개를 한 번에 추가 가능

 

- 이미지 추출은 Export Disk Image 하고 선택할 Image Type을 골라 정보를 입력하여 Finish

 

- 포렌식 이미지를 마운트 기능을 통해 읽기 전용 보기 옵션이 있는 드라이브나 물리 장치로 마운트 가능

  -> 드라이브처럼 마운트된 이미지를 오픈하고 윈도우나 다른 애플리케이션의 내용을 검색 가능

- 지원 타입은 RAW/dd 이미지, E01, S01, AFF, AD1, L01

- Full 디스크 이미지는 RAW/dd, E01, S01이며 물리적으로 마운트 됨

 

- 메모리 캡쳐 기능을 통해 휘발성 데이터도 추출할 수 있음

 

- FTK Imager를 실행해 보호된 레지스트리를 얻을 수 있음

 

- EFS 암호화 검출을 통해 물리 드라이브나 이미지의 암호화된 데이터를 점검 가능(검출 가능)

 

- FTK Imager를 사용할 때 쓰기 방지 장치를 사용하여 증거물에 대한 무결성 보장이 가능하도록 하자

- FTK Imager의 중요 기능

1. 증거 추가와 미리보기

2. 포렌식 이미지 생성

3. 마운팅

4. 메모리 캡쳐

5. 보호된 파일 얻기

6. EFS 암호화 검출 

 


 

2) NTFS Log Tracker - blueangel : NTFS의 $LogFile, $UsnJrnl, $MFT 파일을 파싱하여 CSV 파일 포맷으로 결과를 출력                                              하는 기능을 제공함

-> 해당 파티션에 존재하는 파일들의 로그(생성, 수정, 파일명변경, 삭제 등)을 분석 가능

 

- 파일 시스템 : 컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제

- 1. 실제 자료 보관 장치(하드 디스크, CD-ROM)같은 물리적 소재 이외에도

  2. 네트워크 프로토콜(NFS, SMB, 9P 등)을 수행하는 클라이언트를 통해 파일 서버 상의 자료로의 접근과

  3. 가상의 형태로서 접근(procfs 등)도 포함

 

- NTFS(New Technology File System) : 윈도우 NT 계열 운영체제의 파일 시스템으로 FAT의 한계점을 개선한 파일 시스템

 

- NTFS 구조

 

- NTFS는 파일, 디렉터리 및 메타 정보까지 파일 형태로 관리

1. VBR(Volume Boot Record) 영역 : 부트 섹터, 추가적인 부트 코드가 저장되는 부분

2. MTF 영역 : 파일과 디렉토리를 관리하기 위한 MFT Entry의 집합체

                 각 파일은 위치, 시간 정보, 파일 이름 등을 MFT Entry라는 특별한 구조로 저장

                 크기가 가변적이라 해당 MFT 모두 사용 시 동적으로 클러스터를 추가 할당해 파일 시스템 여러 부분에

                 조각나 분포 가능

                 MFT(Master File Table)은 NTFS 상의 모든 MFT Entry들의 배열되며, 0~15는 특별한 용도로 사용

3. Data 영역 : 파일의 실제 내용이 저장되는 공간으로 내용만 저장

 

- VBR(Volume Boot Record) : 부트 섹터와 추가적인 부트 코드 저장

 

- 부트 섹터는 FAT의 부트 섹터와 유사한 구조로 BPB(BIOS Parameter Block)를 포함

- NTFS의 부트 섹터가 FAT 부트 섹터와 크게 다른 점은 BPB 영역임

NTFS와의 다른점은 BPB에서 !

 

- MFT Entry 구조1

 

MFT Entry : 파일의 메타 정보(위치, 시간, 정보, 크기, 파일 이름 등)들을 저장 (NTFS는 모두 파일 형태로 관리)

Attributes : 각 메타 정보 표현(시간, 이름, 내용)

메타 정보의 크기에 따라 각 파일은 하나 이상의 MFT Entry를 가짐

0~15 번은 파일 시스템 생성 시 함께 생성 되어 NTFS의 다양한 특성 지원

사용자에 의해 파일이 생성될 때마다 새로운 MFT Entry가 할당되어 해당 파일의 정보를 유지 및 관리

 

- NTFS - MFT(Master File Table)

MFT는 파일 시스템의 여러 영역에 조각나서 존재 가능하므로, $MFT 파일이 MFT 전체 정보를 유지 관리하는 역할

각 파일들 분석을 위해 전체 MFT 정보를 획득이 선행되어야 함

 

- 예약된 MFT Entry

Entry 번호 Entry 이름 설명

0 $MFT NTFS 상의 모든 파일들의 MFT Entry 정보 가짐
1 $MFTMirr $MFT 파일의 백업본으로 0~3번 Entry를 복사
2 $LogFile 메타데이터의 트렌젝션 저널 정보를 기록함. 
파일 생성, 내용 변경, 파일 이름 변경 등 MFT 엔트리에 영향을 주는 모든 정보를 기록한다. 정상적으로 완료되지 못하면 재부팅시 자동 복구를 수행함
3 $Volume 볼륨의 레이블, 식별자, 버전 등의 정보 저장
4 $AttrDef 속성의 식별자, 이름, 크기 등의 정보저장
5 . 볼륨의 루트 디렉터리로 디렉터리 구조의 파일을 빠르게 접근하기 위해 Index 구조로 저장해놓음
6 $Bitmap 볼륨의 클러스터 할당 정보를 저장하며 클러스터가 파일 시스템에서 사용 중이면 1 아니면 0으로 표현
7 $Boot 볼륨이 부팅 가능할 경우 부트 섹터 정보와 추가적인 부트 코드를 저장
8 $BadClus 배드 섹터가 발생 했을 경우를 대비해 배드 섹터를 가지는 클러스터 관리 위함
9 $Secure 파일의 보안, 접근 제어와 관련된 정보를 저장
10 $UpCase 모든 유니코드 문자의 대문자를 저장

11 $Extend $Objld, $Quota, $Reparse points, $UsnJrnl 등의 추가적인 파일의 정보를 기록하기 위해 사용
12–23 $MFT 확장 엔트리를 위해 예약되어 있다. 확장 엔트리들은 프라이머리 레코드에 맞지 않는 추가 특성을 포함하는 추가적인 MFT 레코드들이다. 파일이 충분히 단편화되어 있고, 스트림이 많으며, 긴 파일 이름, 복잡한 보안 및 기타 드문 환경에 처할 때 발생한다. 12-15는 미래를 위해 예약
16- 포맷 후 생성되는 파일의 정보를 위해 사용
//
$Objld : 파일 고유의 ID 정보
$Quota : 사용자 별 할당량 정보를 담음
$Reparse : ReparsePoint에 대한 정보
$UsnJrml : 파일, 디렉터리의 변경 정보와 같은 USN 저널 정보를 담고 있음
24 $Extend\$Quota  
25 $Extend\$ObjId  
26 $Extend\$Reparse  
27— 정규 파일 엔트리의 시작.  

 

- $MFT 파일 획득 방법

부트 섹터의 BPB 항목을 읽은 후 MFT 시작 위치 파악 가능 !

$MFT 파일을 읽어 전체적인 MFT의 레이아웃을 판단

 

- MFT Entry 구조2

 

MFT Entry 는 1,024 Bytes 고정된 크기를 지님

42 Bytes의 고정된 헤더가 존재하며 Fixup배열, 속성이 뒤를 이음

속성들의 정보가 많아져 하나 이상의 MFT Entry를 사용할 경우 마지막 MFT Entry 끝에 End Marker 표시(0xFFFFFFFF)

Fixup 배열은 저장하고자 하는 데이터가 하나 이상의 섹터를 사용할 경우 각 섹터의 마지막 2바이트를 따로 저장하는 것

 

- Fixup : 3개의 섹터를 사용하는 데이터로 각 섹터의 마지막 2바이트를 별도 저장하고 따로 Fixup배열을 만듦

 

- MFT Attributes : 각 파일의 메타 정보(시간정보, 이름, 내용 등)을 관리하며 각 속성은 속성 헤더속성 내용을 가짐

 

- 기본적인 파일은 아래와 같이 3개의 속성을 가짐

 

1. $STANDARD_INFORMATION : 파일의 생성, 접근, 수정 시간, 소유자 등의 정보

2. $FILE_NAME : 파일 이름(유니코드), 파일의 생성, 접근, 수정 시간

3. $DATA : 파일 내용

참고로 해당 속성이 Resident, Non-resident 이냐에 따라 속성 헤더 항목의 데이터 구조가 다름

 

 

- 파일 시스템 로그는 운영체제가 아닌 파일 시스템에서 직접 기록하는 로그이다.

  NTFS의 경우

  $Logfile : 시스템 비 정상 동작을 대비하기 위한 트랜잭션 로그로, 파일 생성/삭제/수정/파일명 변경 등 기록

  -> /[root]/$LogFile

  $UsnJrnl$J : 파일이나 디렉터리의 속성 변경 내용을 기록, 용량 제한 존재(default : 64 MB)

  -> /[root]/$Extend/$UsnJrnl:$J

  $MFT : NTFS 상의 모든 파일들의 MFT Entry 정보를 유지

  -> /[root]/$MFT

 

- 방법 : 추출하면 안보인다. 이를 한 번 더 추출하면 .copy0이 붙으며 잘 보이므로 이렇게 사용하자

 

- $Logfile은 타임이 생략된 부분이 많지만 $UsnJrnl$J는 모든 타임스탬프가 기록되어 있음

 

 


 

3) WinPrefetchView - NirSoft : 프리패치 파일을 분석하기 위해 사용하는 프로그램

 

- Prefetch 특징

  • 부팅 또는 프로그램 시작 시 속도를 상승시키기 위해 만들어짐
  • Prefetch 파일은 최대 128개의 파일만 생성 -> 만약 꽉차면 가장 오래된 prefecth 삭제 후 새로 생성
  • 확장자는 pf 
  • 모든 Prefetch 파일은 %SystemRoot%\Prefetch 이 경로에 저장 (%Windows%\Prefetch)

이러한 Prefetch 분석을 용이하게 하는 프로그램이 WinPrefetchView 임 !!

>> WinPrefetchView 를 사용하면 아이콘, 경로, 실행 횟수를 알 수 있음.

     또한, Prefetch의 경로 수정도 가능함

 

 

 


 

4) DBbrowser for SQLite : db 파일 읽는 프로그램

> 크롬 방문기록 및 다운로드 기록이 담긴 파일이 SQlite로 작성되어 있다 !

 

> /[root]/Users/username/AppData/Local/Google/Chrome/User Data/Default/History

(참고로 AppData는 숨김 파일 보기 체크 이후에 보인다)

 

이후 DBbrowser for SQLite에 History를 올리면 되는데 !!!!!!!!!!!!!!

> 만약 오류 : database is locked 라고 뜬다면,

stackoverflow.com/questions/151026/how-do-i-unlock-a-sqlite-database

"In windows you can try this program http://www.nirsoft.net/utils/opened_files_view.html to find out the process is handling db file. Try closed that program for unlock database"

위의 답변처럼 해당 링크 들어가서 opened file view를 다운로드 받아 history를 closed 해주면 된다! 빨간 체크 옵션임

 

이후 다시 DBbrowser에 올려보면 잘 올라와있당 ~!

 


 

2. windows prefetch 가 무엇인지, 어디에 저장되는지 알아보기

이전에 prefetch의 특징과 pf 파일을 살펴볼 Winprefetchview 를 살펴본 적이 있음 !

 

- Prefetch 특징

  • 부팅 또는 프로그램 시작 시 속도를 상승시키기 위해 만들어짐
  • Prefetch 파일은 최대 128개의 파일만 생성 -> 만약 꽉차면 가장 오래된 prefecth 삭제 후 새로 생성
  • 확장자는 pf 
  • 모든 Prefetch 파일은 %SystemRoot%\Prefetch 이 경로에 저장 (%Windows%\Prefetch)

기본적으로, prefetch는 실행파일을 메모리 로딩 시 효율을 올리기 위해 개발된 것 

 

포렌식 관점에서 보았을 때 세 가지가 존재함

1. 사용자가 실행한 응용프로그램 이름 확인

2. 응용프로그램 실행 횟수

3. 응용프로그램 마지막 실행 시간

 

레지스트리 주요 경로는 특징에 써있는 것처럼 C:\\Windows\Prefetch 임

 

레지스트리 편집기 (굉장히 안좋은 기억이 있지만) 를 들어가서 아래 주소로 이동하면 EnablePrefetcher가 존재

 

해당 값은 셋 중에 하나 설정 가능

0 : 사용 불가
1 : 응용 프로그램 실행 프리 패치 사용
2 : 부팅 프리 패칭 사용
3 : Applaunch and Boot enabled (최적 및 기본값)

 

아래는 각 설정의 설명이다.

0 : 사용 불가
1 : 응용 프로그램 실행 프리 패치 사용
> 응용 프로그램 사용빈도를 감시하여 사용자가 자주 사용하는 응용프로그램 정보를 Prefetch 하는 것을 말하고 응용프로그램의 실행 속도를 높여준다.
2 : 부팅 프리 패칭 사용
> 부팅시 함께 사용되는 파일이나 프로그램 정보를 Prefetch 하는 것을 말하고 부팅 속도를 줄여주는 역할을 한다.
3 : Applaunch and Boot enabled (최적 및 기본값)
> 이 부분은 Prefetch 역할을 하는 것은 아니지만 Application-Launch Prefetching과 Boot Prefetching 모두 적용 할 수 있다.

 

 

- Prefetch를 이용할 프로그램

1. MAGNET AXIOM

2. AcessData FTK

3. OpenText EnCase

4. X-Ways Forensics

5. 오픈소스인 WinPreFetchView >>>> 내가 사용할 프로그램은 이것이다!

 

 

 

 

 

 

 

 

< 출처 >

k-dfc.tistory.com/34

ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%BC_%EC%8B%9C%EC%8A%A4%ED%85%9C

ko.wikipedia.org/wiki/NTFS

www.parkjonghyuk.net/lecture/2013-2nd-lecture/computersecurity/ch8.pdf

kilkat.tistory.com/2

www.nirsoft.net/utils/win_prefetch_view.html

stackoverflow.com/questions/151026/how-do-i-unlock-a-sqlite-database

www.forensic-artifact.com/windows-forensics/prefetch

Comments