2. 해당 세션은 초급 세션입니다.
Python의 기본적인 문법들에 기반하여 설명될 예정입니다.
조금 더 난이도 있는 내용을 원하시는 분에겐 부적절할 수 있습니다.
본 발표 자료는 개인적인 의견과 경험에 기반하여
관련 분야 전문가들의 견해와는 다를 수 있습니다.
유의 사항
3. 김 동 현
2017 ~ (현재) 아주대학교 2학년 (정보 통신 및 보안 연구실, Digital Forensic Assistant)
2018 ~ (현재) SW 특성화 대학 주관 교육 사업 – Python Mentor
2016 ~ 2017 디지털 포렌식 관련 강의 다수 (국가 기관, 대학교, 컨퍼런스, …)
2015 ~ 2016 National Security Education Institute (Attack & Defense)
• 관심 분야 : Digital Forensic, Incident Response, Malware Analysis
• Email : digitalisx99@ajou.ac.kr
12. 디지털 포렌식 절차
12
준비
( )
수집
( )
조사 분석
( )
보고서
( )
• 관련 교육
• 도구 개발 및 검증
• 인력 양성
• 수집 대상 선정
• 디스크 이미징
• 증거물 포장
• 데이터 추출
• 데이터 분류
• 데이터 분석
• 객관적 내용
• 분석 과정
• 분석 소견
13. 수집 대상 기기
13
• 데이터를 저장하는 기기에 대해서는 대부분 수집 가능
• 다만 사건의 유형에 따라 수집 대상이 달라질 수는 있음 (DDOS 공격 혹은 전산망 테러)
• 기기의 등장으로 관련 연구도 활발하게 진행되는 중 분석해야 하는게 늘었다는 말이다.
14. 이미징 및 분석 과정
14
원본 (Original) 빈 저장매체
사본 (Copy)
Imaging Machine
분석용 PC
분석 보고서
18. 소개
18
• 에서 제공하는 로 혹은 에 대한 정보와 설정이 포함되어 있다.
• 가장 큰 Hive 아래에 여러 개의 Key 그에 대응하는 Value와 Data로 이루어져 있다.
Hive
Key
Value
Data
HKEY_CURRENT_USER
Software/Google/Info
InstalledVersion
1.0.2.4
34. 의 정의 및 종류
34
• 범죄자들도 바보는 아닌지라.. 요즘 디지털 포렌식을 의식해 을 수행한다.
• 물리적으로나 (디가우징, 천공 등), 소프트웨어적 초기화를 시도 (포맷)
• 지만 후에도 복원이 가능한 경우도 존재함
35. 파일 관리
35
• : 파일을 관리하는 체계
• (할당) : 파일 시스템이 파일에게 사용가능한 영역을 부여하는 것
• (비할당 / 할당 해제) : 다른 파일들이 사용할 수 있는 상태이거나 사용중인 영역을 그러한 상태로 만드는 것
File Create File Delete
Allocated Area Unallocated Area
36. 파일 카빙 방법
36
• 이를 방지하기 위해 비할당 영역을 위주로 카빙을 수행합니다.
• 또한 카빙이 완벽한 수단이 될 수는 없습니다. 상황에 따라 천차만별입니다.
이런 식으로 모든 하드 디스크 영역을 탐색하면 오래 걸리지 않을까요?
37. 파일 예제 (일부분)
37
#-*- coding:utf-8 -*-
class Carving():
def __init__(self, path):
self.path = path
self.FIRST_HEADER = b"ffd8ffe0"
self.FIRST_FOOTER = b"ffd900"
self.FIRST_EXTENSION = ".jpg"
self.SECOND_HEADER = b"89504E47"
self.SECOND_FOOTER = b"49454E44AE426082"
self.SECOND_EXTENSION = ".png"
확장자에 대응되는 파일 정보 기입
38. 38
#-*- coding:utf-8 -*-
MainImage.seek(int(offset))
while(1):
data = MainImage.read(BUFF_SIZE)
hex_data = binascii.hexlify(data)
if(hex_data.find(self.FIRST_FOOTER) != -1):
self.COPY_DATA += data
print("[!] Find Footer : " + self.FIRST_EXTENSION)
self.outfile_generator(self.FIRST_EXTENSION, offset, self.COPY_DATA)
break
파일 예제 (일부분)
확장자에 대응되는 파일 정보 기입
Header에서 Footer까지의 Data 저장
41. 디지털 포렌식 분석 보고서 작성
• 사견이 들어가서는 안됨, 객관적인 데이터에 기반
• 검찰 규정이나 조직에 주어진 작성 규정을 준수하는 편
• 도구에 자동으로 분석 보고서를 제공하는 기능도 있지만, 활용성이 떨어지는 편
41
42. 증거 목록 작성
42
• 가끔은 형식으로 자료를 관리하고 을 내야할 때가 있음, 아님 다
른 곳에 연결해서 추가적인 다른 일을 한다든가..
• 에 기록하기에는 여간 귀찮은 것.. 뷰어가 없으면 서로 곤란
• 는 엑셀이나 텍스트 뷰어만 있어도 해결 가능
43. 기록 예제
43
#-*- coding:utf-8 -*-
import csv
import hashlib
import os
dest_folder = "C:UsersDonghyun KimDesktopAF100"
refile = open('report.csv', 'w', encoding='utf-8', newline='')
wr = csv.writer(refile)
for file_name in os.listdir(dest_folder):
real_path = dest_folder + file_name
with open(real_path, "rb") as file:
file_content = file.read()
file_hash = hashlib.sha256(file_content).hexdigest()
wr.writerow([real_path, file_hash])
refile.close()
CSV 파일 생성 및 작성 관련 객체 리턴
파일 경로 및 Hash 함수 값 기록
56. 오픈 소스에 기반한 디지털 포렌식 도구 ( )
56
Link : https://github.com/google/grr
Link : https://github.com/volatilityfoundation/volatility
Link : https://github.com/log2timeline/plaso
Link : https://github.com/JPCERTCC/LogonTracer
• 과 디지털 포렌식과의 만남은 현재 진행형 일거리가 점점 사라지고 있다