일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- isms-p
- k8s
- 정보보안
- forensic
- 정보보안기사
- AWS Elasticsearch
- TSK
- The Sleuth Kit
- Autopsy
- 해킹
- ISMS
- AWS Opensearch
- 정보보안기사 실기
- AWS EKS
- iam
- 쿠버네티스
- CFReDS
- AWS 쿠버네티스
- ISMS-P 인증심사원
- 포렌식
- 보안기사
- artifacts
- 모의해킹
- AWS
- AWS EKS Udemy
- hacking case
- 보안
- SMS-P 인증 기준 안내서 요약
- kubernetes
- 실습
- Today
- Total
Always-Try(정보보안 및 일상)
포렌식/윈도우 - Carving (PE 파일 추출 실습 포함-with 010 Editor) 본문
본 게시글은 인프런 '맥으로 배우는 윈도우즈 포렌식'를 참고하여 작성했습니다. (www.inflearn.com/course/forensic-2/dashboard)
#1. Carving
1-1. Carving 이란?
덩어리에서 필요없는 부분을 제거한다는 의미이며, 특정 확장자에 대한 파일들만 추출하고 싶을때 카빙한다라고 한다.
근데 탐색기에서도 볼 수 있는데 왜 카빙을 할까? 이는 탐색기는 지워진 파일이나 인식이 되지 않는 내역은 접근하지 못하기 때문이다. 하지만, 카빙은 이러한 것들에 대해서도 추출해서 확인이 가능하다.
1-2. PE란?
카빙을 위해서는 PE를 알아야한다. PE는 PE 헤더(각종 정보가 담겨 있음)와 PE Body(데이터가 담겨 있음)로 나눌 수 있다.
자 그럼, PE를 어떻게 카빙할 수 있을까?
1단계) Dos Header 에서 PE 파일에 대한 매직 넘버(MZ)를 찾고, NT Header(PE로 시작)의 위치를 확인한다.
아래 캡쳐에서보면 NT Header의 위치는 E8 이라고 되어 있다. 기억하고 넘어가자.
2단계) Dos Stub을 지나친다.
MZ에서 1단계에서 확인한 NT Header 사이에는 Dos Stub이 있다. Dos 시절에 사용하던 곳으로 지금은 무시해도 되는 구간이니 그냥 지나가자.
3단계) NT Header 맛보기
1단계에서 NT Header의 위치가 E8이라고 나와있는 것을 보았다. 4D 5A의 위치에서 E8만큼 이동해보면 PE라고 써있다. 그럼 이 파일이 PE라는 것을 어느정도 확신할 수 있다.
4단계) NT Header 뜯어보기
NT Header는 File Header와 Optional Header로 이루어져 있다.
18h의 크기를 가지는 File Header에서는 Section의 개수를 확인할 수 있고, Optional Header에서는 해당 시스템의 bit 수, PE Header의 전체크기를 알 수 있다. (아래 캡쳐에는 PE 전체크기라고 나와있는데, .. 설명을 들어보면 PE Header의 전체크기인 것 같다. 추가로 blog.naver.com/jjscan/220742583133 에서도 자세한 내용을 확인할 수 있다.)
참고로 섹션들은 메모리에서의 크기와 파일시스템에서의 크기가 다르다.
5단계) Section Header에서 각 섹션들의 사이즈를 확인해서 전체 사이즈를 파악하기
NT Header를 지나가면(File Header의 크기와 Optional Header의 크기만큼 지나가면) Section Header를 확인할 수 있고, 각 섹션들의 시그니처들을 확인할 수 있다. 해당 시그니처에서 10h만큼 이동하면 해당 섹션의 크기를 확인할 수 있다. PE Header의 크기와 각 Section들의 크기를 더하면 전체 PE의 크기인 것이고, 이것으로 카빙이 가능하다.
강의에 제공된 샘플데이터를 예로 들면(아래 캡쳐) 'PE Header의 크기(1024) + 각 섹션들의 크기 = 79360'임을 알 수 있다. 이게 전체 PE의 크기인 것이고 이 값을 통해서 카빙이 가능하다.
강의에서 제공된 코드를 보면, carver.py, pe.py, jpg.py, wav.py 등등 여러가지 코드가 있는데, carver.py 에서 각 확장자이름.py 들을 임포트에서 구조 분석 및 추출하는 과정에 담겨 있다. 강의 내용과 코드를 비교해보니, 큰 흐름은 이해가 되지만 코드에 포함된 각 값(ex. hex 값 등등)들에 대한 상세한 내용은 아직 파악이 되지 않는다. 시간나면 하나씩 따라가보는 것도 좋을 것 같다. (사용법은 강의 교안 참고)
실습)
앞서 소개한 Mac 010 editor 프로그램을 이용해서 이번 실습을 해보자.
참고로, 필자는 주로 Desktop을 사용해서 포스팅을 하지만, 실습은 Mac에서 진행한다. 그래서 윈도우 - Mac 간 화면 캡쳐를 위해 VNC Viewer를 이용해서 윈도우에서 Mac을 원격으로 접속하여 실습을 진행한다.
우선 dd 이미지를 010 editor로 열어본 후, 돋보기 모양을 클릭해서 PE의 매직 넘버인 4D 5A를 검색했더니, 약 80개가 검색이 되었다. 대충봐도 이는 80개의 PE 파일이 있다는 뜻이 아니라는 것을 알 수 있었다. 왜냐? 아래 사진에는 강의에서 본 것과 같이 4D 5A 이후의 데이터들이 정형화된(?) PE 파일 포맷처럼 나와 있지만, 다른 곳에서는 우연히 4D 5A가 얻어걸린 것처럼 되어 있었기 때문이다. (ex. AB CD 4D 5A 4D 5A AB CD DE 4D 5A 등등 처럼 우연히 두두둥장)
그리고 NTFS Drive 를 파싱해주는 곳에서도 위 캡쳐에 나온 주소인 7ae000h가 PE의 시작이 맞다는 것을확인 할 수 있었다. (파일명도 확인 가능)
그럼 이제 위에 나온 pe.sample(1).exe를 수동으로 한번 추출해보자.
1) MZ 확인 후 NT Header 위치 확인 및 이동
2)NT Header에서 다양한 중요 정보 확인
- 섹션의 수
- Optional header의 크기 (참고로 File header의 크기는 18h로 고정)
- Optinal Header의 시그니처(blog.naver.com/jjscan/220742583133 의 내용 발췌)
- PE Header의 전체 크기
3) Section Header에서 각 섹션 및 섹션들의 크기 확인
4) PE Header의 크기 + Section의 크기 = 하나의 PE 파일 전체
5) 파일 추출
Goto로 PE Header의 처음으로 돌아간 다음,
Select Range를 통해 계산기에서 계산한 PE 파일의 전체 크기 만큼 Select 후 Copy한다.
그후 새로운 Hex file을 생성해서 그대로 Paste 하고 저장하면 PE 파일이 튀어나오는 것을 볼 수 있다.
필자가 추출한 파일과 강의에서 제공하는 파일의 hash 값을 비교해보면 잘 추출된 것을 확인할 수 있다.
이렇게 PE 파일 추출을 해봤다. 물론 강의에서 제공한 파이썬 코드로 하면 훨씬 쉽겠지만, 정확한 원리를 모르고 코드만 실행하는 것은 의미가 없을 것 같아서 직접 해봤다.
끝나고 나니 한가지 궁금한 점이 생겼다. 아래 게시글(2021/02/27 - [Forensic] - 포렌식 기초 - FAT32 and NTFS - 실습편 (with 010 Editor)에서 클러스터의 크기를 통해 파일을 추출하는 것과 지금의 포스팅에서와 같이 파일 헤더, 섹션 데이터를 가지고 추출하는 것과 무슨 차이점이 있을까? 같은 것인가.. 아니면 확장자에 따라 방법이 다른 것인가.. 궁금하다.
끝.
'Forensic' 카테고리의 다른 글
포렌식/윈도우 - Plaso (log2timeline) Parser 리스트 (0) | 2021.03.01 |
---|---|
포렌식/윈도우 - E01에서 아티팩트 추출 (E01에서 추출한 아티팩트를 타임라인 순으로 csv 저장 실습) (0) | 2021.03.01 |
포렌식/윈도우 - Windows 10 Artifacts - Web History (0) | 2021.02.27 |
포렌식/윈도우 - Windows 10 Artifacts - Prefetch (0) | 2021.02.27 |
포렌식/윈도우 - Windows 10 Artifacts 개요 (추출 실습 포함) (0) | 2021.02.27 |