Always-Try(정보보안 및 일상)

포렌식/윈도우 - Windows 10 Artifacts 개요 (추출 실습 포함) 본문

Forensic

포렌식/윈도우 - Windows 10 Artifacts 개요 (추출 실습 포함)

Always-Try 2021. 2. 27. 17:20
본 게시글은 인프런 '맥으로 배우는 윈도우즈 포렌식'를 참고하여 작성했습니다. (www.inflearn.com/course/forensic-2/dashboard)

 

 

맥으로 배우는 윈도우즈 포렌식 - 인프런

유료 도구가 아닌 무료 포렌식 도구를 통해 더욱 깊이 있는 포렌식 분석 방법을 배웁니다. 초급 보안 Forensic Microsoft Windows 정보보안 온라인 강의 forensic

www.inflearn.com

#1. Windows 10 Artifacts 수집 (수동)

1-1. Artifacts 란?

인공물, 유물이라는 의미를 가지며 디지털 포렌식에는 증거물 정도로 생각하면 될 것 같다.

 

1-2. Artifacts List

  • Prefectch:
    - 시스템이 프로그램을 동작시킬 때 필요한 정보를 빨리 찾을 수 있는 위치
    - 경로 :: /Windows/Prefetch/
  • Eventlog
    - 시스템이 동작하는 행위들을 기록
    - 경로 :: /Windows/system32/Winevt/Logs/
  • Webhistory(EDGE/IE)
    - 웹을 사용했을 때 발생하는 정보
    - 경로 :: /Users/user_name/AppData/Local/Microsoft/Windows/WebCache/ WebCacheV01.dat
  • Amcache.hve
    - 최근 실행한 파일들의 정보
    - 경로 :: /Windows/appcompat/Programs/Amcache.hve
  • Link File
    - 바로가기 파일
    - 경로 :: All Link File(LNK) in Volume
  • Recycle.bin
    - 휴지통
    경로 :: /$Recycle.Bin
  • Downloads
    - 다운로드 폴더 
    - 경로 :: /Users/user_name/Downloads/
  • NTFS meta files
    - 경로 :: $MFT, $Logfile, $UsnJrnl
  • Hibernation file
    - 잠자기 모드의 기록을 저장하는 곳
    - 경로 :: Hiberfil.sys
  • Registry
    - 윈도우 레지스트리. 시스템의 설정을 기록
    - 경로 :: /Windows/System32/config/DEFAULT
      경로 :: /Windows/System32/config/SAM
      경로 :: /Windows/System32/config/SECURITY
      경로 :: /Windows/System32/config/SOFTWARE
      경로 :: /Windows/System32/config/SYSTEM

1-3. The Sleuth Kit(TSK)을 통한 Artifacts 추출

The Sleuth Kit의 fls 명령어는 디스크를 대상으로 파일의 메타데이터를 확인해서 디렉토리 및 파일들에 대한 정보를 추출하는 명령어이다. 이를 통해 Artifacts들을 추출해보자. 
(참고로 FTK Imager로 디스크를 e01 형태로 추출하고 mac에서 read-only로 마운트 방법은 아래 게시글 참고

2021/01/18 - [Forensic] - 포렌식 기초 - Disk Image, Imaging and mounting, hash)

fls -h -p -r -m '' -z Asia/Seoul /dev/disk2s1 > disk2s1.fls

➡ -h :: Include MD5 checksum hash
➡ -p :: Display full path for each file
➡ -r :: Recurse on directory entries
➡ -m ‘’ :: the actual mount point of the image (여기서 ''는 쌍따옴표 아니고 싱글쿼터 2번)
➡ -z Asia/Seoul :: Time zone of original machine
➡ > disk2s1.fls :: 출력 값을 diusk2s1.fls 로 저장 (system output)

※ mac에서 fls 진행 시, 아래와 같은 에러가 발생하면서 실패.

왜? 구글에 그 답이 있다. (apple.stackexchange.com/questions/104315/error-opening-image-file-in-terminal)

TSK로 raw data에 접근하기 위해서는 해당 data가 마운트 되어 있으면 안된다고 하여, umount 후 진행 성공!

 

1-4. awk를 이용한 변수 필터링

Artifacts들을 추출했다면, awk를 통해 가공하여 원하는 정보만 추출하자. awk는 탐색과 처리를 위한 명령어로 간단하게 파일에서 원하는 항목에 대해서 추려내고 가공하여 결과물을 만들어내는 유틸리티이다.

awk -F '|' '{print $2","$3}' disk2s1.fls > disk2s2.awk

• -F '|' :: 구분자를 지정한다. 현재는 | 를 구분자로 한다.
• '{print $2","$3}' | 구분자로 나누어진 2번째, 3번째 column 을 출력한다.

 

1-5. egrep을 이용한 매칭 필터링

여기서 다시 egrep을 이용하여 원하는 경로가 포함되어 있는 행만 필터링 한다. egrep은 문자열을 지정한 패턴으로 추출하는 리눅스 명령어이다.

egrep -i '/Windows/system32/Winevt/Logs/' disk2s1.awk

• -i :: Case Insensitive Matching => 대소문자를 가리지 않는다.
• 경로 부분에 Artifacts 들의 경로를 하나씩  넣어주면 된다.

 

1-6. icat과 file을 이용한 파일 추출 및 확인

그리고 The Sleuth Kit의 icat 명령어를 통해 파일을 추출한다. icat은 Inode 값을 전달해주면 해당 Inode에 해당하는 파일을 추출할 수 있게 도와주는 명령어이다.

icat /dev/disk2s1 64101-128-4 > Application.evtx

• inode에 해당하는 파일 추출

file Application.evtx 

• file 명령어를 통해 추출된 파일 확인 가능

 

 

 

위와 같이 수동으로 진행한 결과를 가지고 있으면 분석에 큰 도움이 된다. 하지만 매번 수동으로 진행하기에는 너무 많은 리소스가 소요되기 때문에 파이썬 코드로 짜서 가지고 있는 것이 좋다. 강의에서는 The Sleuth Kit의 fls 명령어 이후의 작업들을 자동화 한 artifactsExtracter.py를 확인할 수 있다. 그리고 정규 표현식이 많이 쓰이니, 이참에 알아두면 좋다.

(매번 공부해도 안쓰니까 계속 까먹는다. ㅠㅠ)

 

 

#2. Windows 10 Artifacts 수집 (파이썬)

2-1. artifactsExtracter.py

이것은 #1의 '1-3. The Sleuth Kit(TSK)을 통한 Artifacts 추출'에서 추출한 fls 파일을 대상으로 그 이후의 작업들을 수동으로 진행하는 코드이다. 코드에 대한 자세한 설명은 생략하고 실행 결과에 대해서만 정리한다.

 

코드를 실행하면 아래와 같이 result라는 폴더에 결과가 남는다. 필터링 조건 변경은 코드 내에서 얼마든지 가능하다.

 

 

 

 

참고로 위 코드를 실행하기 위해서는 2개의 인자 값이 필요하다. 첫번째는 E01에서 추출한 fls 파일, 두번째는 E01으로 생성한 디스크 이미지의 경로이다. fls 파일 생성은 본 게시글의 상단을 참고하고, 디스크 이미지 경로 생성은 아래 그림의 1~4번을 모두 진행하면 된다. (주의! 마운트는 안해도 되므로 4번 과정의 명령어가 nomout로 되어 있다.) 사실 위에 다 있는 내용이긴하다.

 

 

 

 

 

 

끝.

Comments