SlideShare una empresa de Scribd logo
1 de 65
Descargar para leer sin conexión
진실은 언제나 하나! :
Python으로 만나보는 Digital Forensic
해당 세션은 초급 세션입니다.
Python의 기본적인 문법들에 기반하여 설명될 예정입니다.
조금 더 난이도 있는 내용을 원하시는 분에겐 부적절할 수 있습니다.
본 발표 자료는 개인적인 의견과 경험에 기반하여
관련 분야 전문가들의 견해와는 다를 수 있습니다.
유의 사항
김 동 현
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
디지털 포렌식이 무엇이고, 또 어떻게 이뤄지는지
디지털 포렌식이란?
+
6
디지털 방식이 사용되는 매체로부터 정보를 수집하고 분석하여
유의미한 결과를 도출하는 행위 및 기술
디지털 포렌식이 사용되는 경우
• 개인의 디지털 기기의 사용률이 높은 만큼, 범죄도 디지털 기기를 경유하는 경우가 매우 많음
• 범죄 사건 외에 내부 감사 및 침해사고 대응에서도 디지털 포렌식 기술이 사용됨
7
근데 프로그래밍이나 파이썬을 쓰는 이유라도 있나요?
디지털 포렌식에서 프로그래밍의 필요성
9
인간이 실현 하기에
많은 시간이 소요 되는 일 및 반복적인 일을
대신하기 위해
디지털 포렌식에서 의 필요성
Life is short,
You need Python
10
좋아요, 이젠 정확히 뭘 할 수 있는지 알아 봅시다.
디지털 포렌식 절차
12
준비
( )
수집
( )
조사 분석
( )
보고서
( )
• 관련 교육
• 도구 개발 및 검증
• 인력 양성
• 수집 대상 선정
• 디스크 이미징
• 증거물 포장
• 데이터 추출
• 데이터 분류
• 데이터 분석
• 객관적 내용
• 분석 과정
• 분석 소견
수집 대상 기기
13
• 데이터를 저장하는 기기에 대해서는 대부분 수집 가능
• 다만 사건의 유형에 따라 수집 대상이 달라질 수는 있음 (DDOS 공격 혹은 전산망 테러)
• 기기의 등장으로 관련 연구도 활발하게 진행되는 중 분석해야 하는게 늘었다는 말이다.
이미징 및 분석 과정
14
원본 (Original) 빈 저장매체
사본 (Copy)
Imaging Machine
분석용 PC
분석 보고서
주요 분석 정보
15
보관
증거
생성
증거
SNS, 작성 문서
시간 정보, 기타 정보
Artifact
의 다양성과 한계
• 운영체제마다 의 종류와 성격이 다름
• 해당 세션에서는 으로 쉽게 접근할 수 있는 만을 다룰 예정
16
포렌식의 기본, 를 알아본다.
소개
18
• 에서 제공하는 로 혹은 에 대한 정보와 설정이 포함되어 있다.
• 가장 큰 Hive 아래에 여러 개의 Key 그에 대응하는 Value와 Data로 이루어져 있다.
Hive
Key
Value
Data
HKEY_CURRENT_USER
Software/Google/Info
InstalledVersion
1.0.2.4
아래아 한글 관련
19
• 가장 최근에 열람한 문서들을 저장함
•
아래아 한글 추출 예제
20
#-*- coding:utf-8 -*-
import winreg
reg_path = r"SoftwareHncCommon9.6CommonFrameRecentFile"
reg_key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, reg_path)
print("[+] HWP RecentFile Viewer")
try:
count = 0
while 1:
value, data, type = winreg.EnumValue(reg_key, count)
if isinstance(data, int):
pass
else :
print("[!] " + value + " - " + data.decode('UTF-16'))
count = count + 1
except WindowsError:
exit()
Key 접근 함수
접근 한 키에 대한
데이터 조회 함수
데이터 디코딩
예제 실행 결과 및 실제 사례
21
예제 ( ) 실행 결과
관련 Artifact 실제 수집 & 조사 사례 Similar Case
(XLS, PPTX, DOCX)
오늘 어떤 곳을 방문했나?
소개
23
• 사용자가 방문한 사이트 / 검색 기록 등을 통해 경위 파악 가능
• 사용량이 많은 과 국내 개발 웹 브라우저 구조가 거의 동일 ( )
파일 분석
• 사용자 계정 명
• Chrome Browser와 관련된 Artifact는 대부분 SQLite DB 형식을 지님
24
탐색 예제
25
#-*- coding:utf-8 -*-
file_signature = b'SQLite format'
file_name = input("[+] Input File Name : ")
with open(file_name, "rb") as file:
file_header = file.read(16)
search_result = file_header.find(file_signature)
if(search_result != -1):
print("[!] Found File Signature")
print("[!] File Signature : %s" % file_signature)
else:
print("[!] Not Found File Signature")
Read Binary (이진 모드)
1 Byte 단위로 읽음
헤더에 찾고자 하는
시그니처가 존재하는지 탐색
파일 내부 분석
• 등 다양한 존재
• 내부에 정보를 담고 있는 들 존재
26
에서 기록 추출 예제
27
#-*- coding:utf-8 -*-
import os
import sqlite3
history_path = 'C:UsersDonghyun KimDesktopHistory'
if os.path.isfile(history_path):
sql_con = sqlite3.connect(history_path)
sql_cur = sql_con.cursor()
sql_cur.execute("SELECT * FROM downloads ORDER BY id DESC")
count = 0
print("[+] Recent Download File")
while(count < 15):
count += 1
search_data = sql_cur.fetchone()
download_path = search_data[2]
if(download_path == ""):
download_path = "Download Cancel"
print("[!] Download Path : %s" % download_path)
SQLite DB 연결 및
Query 실행
다음 데이터로 이동
예제 실행 결과 및 실제 사례
28
실행 결과
실행 결과
이거 믿어도 되나요? 조작은 아니죠?
Hash 함수?
30
• 정보보안 측면에서는 비밀번호, 전자 서명에 사용
• 디지털 포렌식 분야에서는 증거의 무결성을 증명
F82744475AB73B6581BAF18EC0FAC8F5
7FE708ECC2F925BC9A81F5BB1AEF7FCF
31
#-*- coding:utf-8 -*-
import hashlib
file_name = input("[!] Input File Name : ")
with open(file_name, "rb") as file:
file_content = file.read()
print("MD5 : %s" % hashlib.md5(file_content).hexdigest())
print("SHA1 : %s" % hashlib.sha1(file_content).hexdigest())
print("SHA256 : %s" % hashlib.sha256(file_content).hexdigest())
읽어 들인 File Content를 Argument로
Hash 함수 계산
16진수 형태로 표현
대상 함수 계산 예제
예제 ( ) 실행 결과
32
관련 Artifact 실제 수집 & 조사 사례
예제 실행 결과 및 실제 사례
날고 기어 봐야 결국 손바닥 안 인 것을..
의 정의 및 종류
34
• 범죄자들도 바보는 아닌지라.. 요즘 디지털 포렌식을 의식해 을 수행한다.
• 물리적으로나 (디가우징, 천공 등), 소프트웨어적 초기화를 시도 (포맷)
• 지만 후에도 복원이 가능한 경우도 존재함
파일 관리
35
• : 파일을 관리하는 체계
• (할당) : 파일 시스템이 파일에게 사용가능한 영역을 부여하는 것
• (비할당 / 할당 해제) : 다른 파일들이 사용할 수 있는 상태이거나 사용중인 영역을 그러한 상태로 만드는 것
File Create File Delete
Allocated Area Unallocated Area
파일 카빙 방법
36
• 이를 방지하기 위해 비할당 영역을 위주로 카빙을 수행합니다.
• 또한 카빙이 완벽한 수단이 될 수는 없습니다. 상황에 따라 천차만별입니다.
이런 식으로 모든 하드 디스크 영역을 탐색하면 오래 걸리지 않을까요?
파일 예제 (일부분)
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
#-*- 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 저장
39
디스크 Carving 결과
디지털 포렌식 도구를 사용한 경우
삽질의 결과를 담아 보낼 차례
디지털 포렌식 분석 보고서 작성
• 사견이 들어가서는 안됨, 객관적인 데이터에 기반
• 검찰 규정이나 조직에 주어진 작성 규정을 준수하는 편
• 도구에 자동으로 분석 보고서를 제공하는 기능도 있지만, 활용성이 떨어지는 편
41
증거 목록 작성
42
• 가끔은 형식으로 자료를 관리하고 을 내야할 때가 있음, 아님 다
른 곳에 연결해서 추가적인 다른 일을 한다든가..
• 에 기록하기에는 여간 귀찮은 것.. 뷰어가 없으면 서로 곤란
• 는 엑셀이나 텍스트 뷰어만 있어도 해결 가능
기록 예제
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 함수 값 기록
실행 결과
44
발표 예제 실행 결과
관련 Artifact 실제 수집 & 조사 사례
보기 좋은 데이터가 분석하기도 좋은 법
시각화의 필요성
• 시간 정보, 파일 정보, 작성자 등.. 텍스트의 난립, 봐야하는 양이 한 두개가 아니라는 것
• 수사관 및 분석가의 수고와 안구를 보호하기 위해 각종 시각화 기술들이 필요로 하기 시작함
46
대중적인 라이브러리 사용 시도
• 요즘 에서 잘 알려진 시각화 라이브러리,
• 그러나 과 연관된 데이터를 시각화 하기에는 무엇인가 부족함
• 100개의 PDF 파일보다 증거가 포함된 1개의 TXT 파일을 찾는 것이 더 중요
47
에 기반한 웹 시각화 구성
48
• 웹 기반의 시각화에 관심을 두기 시작함 (간결함, 확장성, 예쁨)
• 과 사이에 Data를 원활하게 주고 받고 연산할 수 있는 수단을 생각
• 그 결과, 주변 분들도 많이 사용하시는 에 도전해보기로 함
에 기반한
49
역시 내 손으로 만들어야 제 맛
디지털 포렌식 도구 개발의 필요성
• 해당 과정을 으로 해주는 도구들이 존재하긴 함
• 그러나 뭔가 만족스럽지 못함.. 필요한 정보가 누락되기도..
• 솔루션이 비싸거나.. (기업 정부 대상이라 엄청 비쌈)
51
디지털 포렌식 도구 개발 과정
52
구조 및
의미 파악
및
데이터 처리
코드 작성
데이터 시각화 검증
발생
신규
분석
Main Script Setting File
Scenario
Datasets
디지털 포렌식 도구 개발 사례
: Digital Investigation Assist Tool
53
54
도구 사용 스크린샷
55
도구 사용 스크린샷
오픈 소스에 기반한 디지털 포렌식 도구 ( )
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
• 과 디지털 포렌식과의 만남은 현재 진행형 일거리가 점점 사라지고 있다
여러분께 드리는 마지막 메시지
뭐 아무렴 이런 것들을 같은 기술로
편하게 분석하면 안되시냐고 물으시는데
한 사람의 죄와 벌, 그 판단의 무게가 무거운 만큼
결국 분석은 사람이 해야 합니다.
이런 것이 분명 어렵고 힘든 일이지만..
재미와 사명감 하나로 버티고 있습니다.
사실 늘어나는 해커들과 하드 용량에
저희 한 숨이 비례합니다.
그런 저희와 함께 진실을 밝힘에 도움이 되어주는
에게 감사의 인사를 보냅니다.
현직에서 뛰고 있을 때도
을 계속 사용할 수 있길 바라고 있습니다.
더 많은 것을 다루지 못해 아쉬울 따름
무궁무진한 흔적들과 그와 연관된
활용 방법
많이 부족했지만 이번 세션을 통해서
조금이라도 얻은 게 있으셨다면 그걸로 만족합니다.
디지털 포렌식에 대해 알고,
으로 할 수 있다는 것만 알아도 충분!
Find Job!
Thanks to
• (산업기능요원 보충역)
•
•
•
•
•
질의 응답
Question & Answer
감사합니다.
Thank You!
진실은 언제나 하나! : Python으로 만나보는 Digital Forensic

Más contenido relacionado

Similar a [PyCon KR 2018] 진실은 언제나 하나! : Python으로 만나보는 Digital Forensic

Foss open sorucesw_6902
Foss open sorucesw_6902Foss open sorucesw_6902
Foss open sorucesw_6902승우 백
 
(130608) #fitalk trends in d forensics (may, 2013)
(130608) #fitalk   trends in d forensics (may, 2013)(130608) #fitalk   trends in d forensics (may, 2013)
(130608) #fitalk trends in d forensics (may, 2013)INSIGHT FORENSIC
 
정보보호통합플랫폼 기술 트렌드
정보보호통합플랫폼 기술 트렌드정보보호통합플랫폼 기술 트렌드
정보보호통합플랫폼 기술 트렌드Logpresso
 
웹기술 이해 (프론트엔드 기초)
웹기술 이해 (프론트엔드 기초)웹기술 이해 (프론트엔드 기초)
웹기술 이해 (프론트엔드 기초)JoonHee Lee
 
(140407) #fitalk d trace를 이용한 악성코드 동적 분석
(140407) #fitalk   d trace를 이용한 악성코드 동적 분석(140407) #fitalk   d trace를 이용한 악성코드 동적 분석
(140407) #fitalk d trace를 이용한 악성코드 동적 분석INSIGHT FORENSIC
 
(141031) #fitalk plaso 슈퍼 타임라인 분석 도구 활용 방안
(141031) #fitalk   plaso 슈퍼 타임라인 분석 도구 활용 방안(141031) #fitalk   plaso 슈퍼 타임라인 분석 도구 활용 방안
(141031) #fitalk plaso 슈퍼 타임라인 분석 도구 활용 방안INSIGHT FORENSIC
 
Embedded project presentation
Embedded project presentationEmbedded project presentation
Embedded project presentationJae-yeol Lee
 
실리콘 밸리 데이터 사이언티스트의 하루
실리콘 밸리 데이터 사이언티스트의 하루실리콘 밸리 데이터 사이언티스트의 하루
실리콘 밸리 데이터 사이언티스트의 하루Jaimie Kwon (권재명)
 
(130511) #fitalk utilization of ioc, ioaf and sig base
(130511) #fitalk   utilization of ioc, ioaf and sig base(130511) #fitalk   utilization of ioc, ioaf and sig base
(130511) #fitalk utilization of ioc, ioaf and sig baseINSIGHT FORENSIC
 
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun KimDeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun KimGruter
 
[경북] I'mcloud information
[경북] I'mcloud information[경북] I'mcloud information
[경북] I'mcloud informationstartupkorea
 
1.introduction(epoch#2)
1.introduction(epoch#2)1.introduction(epoch#2)
1.introduction(epoch#2)Haesun Park
 
[NetSec-KR 2018] 2017 정보보호 R&D 데이터 챌린지를 통해 살펴본 Data-Driven Security
[NetSec-KR 2018] 2017 정보보호 R&D 데이터 챌린지를 통해 살펴본 Data-Driven Security[NetSec-KR 2018] 2017 정보보호 R&D 데이터 챌린지를 통해 살펴본 Data-Driven Security
[NetSec-KR 2018] 2017 정보보호 R&D 데이터 챌린지를 통해 살펴본 Data-Driven SecurityKorea University
 
Case Study를 통해 본 데이터사이언스 협업 플랫폼의 필요성 (옥주영 컨설턴트, Hancom MDS) :: AWS Techforum ...
Case Study를 통해 본 데이터사이언스 협업 플랫폼의 필요성 (옥주영 컨설턴트, Hancom MDS) :: AWS Techforum ...Case Study를 통해 본 데이터사이언스 협업 플랫폼의 필요성 (옥주영 컨설턴트, Hancom MDS) :: AWS Techforum ...
Case Study를 통해 본 데이터사이언스 협업 플랫폼의 필요성 (옥주영 컨설턴트, Hancom MDS) :: AWS Techforum ...Amazon Web Services Korea
 
리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리Seungyong Lee
 
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020Jinwoong Kim
 
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020 AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020 AWSKRUG - AWS한국사용자모임
 
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용중선 곽
 

Similar a [PyCon KR 2018] 진실은 언제나 하나! : Python으로 만나보는 Digital Forensic (20)

Foss open sorucesw_6902
Foss open sorucesw_6902Foss open sorucesw_6902
Foss open sorucesw_6902
 
(130608) #fitalk trends in d forensics (may, 2013)
(130608) #fitalk   trends in d forensics (may, 2013)(130608) #fitalk   trends in d forensics (may, 2013)
(130608) #fitalk trends in d forensics (may, 2013)
 
정보보호통합플랫폼 기술 트렌드
정보보호통합플랫폼 기술 트렌드정보보호통합플랫폼 기술 트렌드
정보보호통합플랫폼 기술 트렌드
 
웹기술 이해 (프론트엔드 기초)
웹기술 이해 (프론트엔드 기초)웹기술 이해 (프론트엔드 기초)
웹기술 이해 (프론트엔드 기초)
 
(140407) #fitalk d trace를 이용한 악성코드 동적 분석
(140407) #fitalk   d trace를 이용한 악성코드 동적 분석(140407) #fitalk   d trace를 이용한 악성코드 동적 분석
(140407) #fitalk d trace를 이용한 악성코드 동적 분석
 
(141031) #fitalk plaso 슈퍼 타임라인 분석 도구 활용 방안
(141031) #fitalk   plaso 슈퍼 타임라인 분석 도구 활용 방안(141031) #fitalk   plaso 슈퍼 타임라인 분석 도구 활용 방안
(141031) #fitalk plaso 슈퍼 타임라인 분석 도구 활용 방안
 
Embedded project presentation
Embedded project presentationEmbedded project presentation
Embedded project presentation
 
실리콘 밸리 데이터 사이언티스트의 하루
실리콘 밸리 데이터 사이언티스트의 하루실리콘 밸리 데이터 사이언티스트의 하루
실리콘 밸리 데이터 사이언티스트의 하루
 
(130511) #fitalk utilization of ioc, ioaf and sig base
(130511) #fitalk   utilization of ioc, ioaf and sig base(130511) #fitalk   utilization of ioc, ioaf and sig base
(130511) #fitalk utilization of ioc, ioaf and sig base
 
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun KimDeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
 
[경북] I'mcloud information
[경북] I'mcloud information[경북] I'mcloud information
[경북] I'mcloud information
 
1.introduction(epoch#2)
1.introduction(epoch#2)1.introduction(epoch#2)
1.introduction(epoch#2)
 
Linked Open Data
Linked Open DataLinked Open Data
Linked Open Data
 
Infiniflux introduction
Infiniflux introductionInfiniflux introduction
Infiniflux introduction
 
[NetSec-KR 2018] 2017 정보보호 R&D 데이터 챌린지를 통해 살펴본 Data-Driven Security
[NetSec-KR 2018] 2017 정보보호 R&D 데이터 챌린지를 통해 살펴본 Data-Driven Security[NetSec-KR 2018] 2017 정보보호 R&D 데이터 챌린지를 통해 살펴본 Data-Driven Security
[NetSec-KR 2018] 2017 정보보호 R&D 데이터 챌린지를 통해 살펴본 Data-Driven Security
 
Case Study를 통해 본 데이터사이언스 협업 플랫폼의 필요성 (옥주영 컨설턴트, Hancom MDS) :: AWS Techforum ...
Case Study를 통해 본 데이터사이언스 협업 플랫폼의 필요성 (옥주영 컨설턴트, Hancom MDS) :: AWS Techforum ...Case Study를 통해 본 데이터사이언스 협업 플랫폼의 필요성 (옥주영 컨설턴트, Hancom MDS) :: AWS Techforum ...
Case Study를 통해 본 데이터사이언스 협업 플랫폼의 필요성 (옥주영 컨설턴트, Hancom MDS) :: AWS Techforum ...
 
리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리
 
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
 
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020 AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
 
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
 

Último

캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 

Último (6)

캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 

[PyCon KR 2018] 진실은 언제나 하나! : Python으로 만나보는 Digital Forensic

  • 1. 진실은 언제나 하나! : Python으로 만나보는 Digital Forensic
  • 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
  • 4.
  • 5. 디지털 포렌식이 무엇이고, 또 어떻게 이뤄지는지
  • 6. 디지털 포렌식이란? + 6 디지털 방식이 사용되는 매체로부터 정보를 수집하고 분석하여 유의미한 결과를 도출하는 행위 및 기술
  • 7. 디지털 포렌식이 사용되는 경우 • 개인의 디지털 기기의 사용률이 높은 만큼, 범죄도 디지털 기기를 경유하는 경우가 매우 많음 • 범죄 사건 외에 내부 감사 및 침해사고 대응에서도 디지털 포렌식 기술이 사용됨 7
  • 8. 근데 프로그래밍이나 파이썬을 쓰는 이유라도 있나요?
  • 9. 디지털 포렌식에서 프로그래밍의 필요성 9 인간이 실현 하기에 많은 시간이 소요 되는 일 및 반복적인 일을 대신하기 위해
  • 10. 디지털 포렌식에서 의 필요성 Life is short, You need Python 10
  • 11. 좋아요, 이젠 정확히 뭘 할 수 있는지 알아 봅시다.
  • 12. 디지털 포렌식 절차 12 준비 ( ) 수집 ( ) 조사 분석 ( ) 보고서 ( ) • 관련 교육 • 도구 개발 및 검증 • 인력 양성 • 수집 대상 선정 • 디스크 이미징 • 증거물 포장 • 데이터 추출 • 데이터 분류 • 데이터 분석 • 객관적 내용 • 분석 과정 • 분석 소견
  • 13. 수집 대상 기기 13 • 데이터를 저장하는 기기에 대해서는 대부분 수집 가능 • 다만 사건의 유형에 따라 수집 대상이 달라질 수는 있음 (DDOS 공격 혹은 전산망 테러) • 기기의 등장으로 관련 연구도 활발하게 진행되는 중 분석해야 하는게 늘었다는 말이다.
  • 14. 이미징 및 분석 과정 14 원본 (Original) 빈 저장매체 사본 (Copy) Imaging Machine 분석용 PC 분석 보고서
  • 15. 주요 분석 정보 15 보관 증거 생성 증거 SNS, 작성 문서 시간 정보, 기타 정보 Artifact
  • 16. 의 다양성과 한계 • 운영체제마다 의 종류와 성격이 다름 • 해당 세션에서는 으로 쉽게 접근할 수 있는 만을 다룰 예정 16
  • 17. 포렌식의 기본, 를 알아본다.
  • 18. 소개 18 • 에서 제공하는 로 혹은 에 대한 정보와 설정이 포함되어 있다. • 가장 큰 Hive 아래에 여러 개의 Key 그에 대응하는 Value와 Data로 이루어져 있다. Hive Key Value Data HKEY_CURRENT_USER Software/Google/Info InstalledVersion 1.0.2.4
  • 19. 아래아 한글 관련 19 • 가장 최근에 열람한 문서들을 저장함 •
  • 20. 아래아 한글 추출 예제 20 #-*- coding:utf-8 -*- import winreg reg_path = r"SoftwareHncCommon9.6CommonFrameRecentFile" reg_key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, reg_path) print("[+] HWP RecentFile Viewer") try: count = 0 while 1: value, data, type = winreg.EnumValue(reg_key, count) if isinstance(data, int): pass else : print("[!] " + value + " - " + data.decode('UTF-16')) count = count + 1 except WindowsError: exit() Key 접근 함수 접근 한 키에 대한 데이터 조회 함수 데이터 디코딩
  • 21. 예제 실행 결과 및 실제 사례 21 예제 ( ) 실행 결과 관련 Artifact 실제 수집 & 조사 사례 Similar Case (XLS, PPTX, DOCX)
  • 22. 오늘 어떤 곳을 방문했나?
  • 23. 소개 23 • 사용자가 방문한 사이트 / 검색 기록 등을 통해 경위 파악 가능 • 사용량이 많은 과 국내 개발 웹 브라우저 구조가 거의 동일 ( )
  • 24. 파일 분석 • 사용자 계정 명 • Chrome Browser와 관련된 Artifact는 대부분 SQLite DB 형식을 지님 24
  • 25. 탐색 예제 25 #-*- coding:utf-8 -*- file_signature = b'SQLite format' file_name = input("[+] Input File Name : ") with open(file_name, "rb") as file: file_header = file.read(16) search_result = file_header.find(file_signature) if(search_result != -1): print("[!] Found File Signature") print("[!] File Signature : %s" % file_signature) else: print("[!] Not Found File Signature") Read Binary (이진 모드) 1 Byte 단위로 읽음 헤더에 찾고자 하는 시그니처가 존재하는지 탐색
  • 26. 파일 내부 분석 • 등 다양한 존재 • 내부에 정보를 담고 있는 들 존재 26
  • 27. 에서 기록 추출 예제 27 #-*- coding:utf-8 -*- import os import sqlite3 history_path = 'C:UsersDonghyun KimDesktopHistory' if os.path.isfile(history_path): sql_con = sqlite3.connect(history_path) sql_cur = sql_con.cursor() sql_cur.execute("SELECT * FROM downloads ORDER BY id DESC") count = 0 print("[+] Recent Download File") while(count < 15): count += 1 search_data = sql_cur.fetchone() download_path = search_data[2] if(download_path == ""): download_path = "Download Cancel" print("[!] Download Path : %s" % download_path) SQLite DB 연결 및 Query 실행 다음 데이터로 이동
  • 28. 예제 실행 결과 및 실제 사례 28 실행 결과 실행 결과
  • 29. 이거 믿어도 되나요? 조작은 아니죠?
  • 30. Hash 함수? 30 • 정보보안 측면에서는 비밀번호, 전자 서명에 사용 • 디지털 포렌식 분야에서는 증거의 무결성을 증명 F82744475AB73B6581BAF18EC0FAC8F5 7FE708ECC2F925BC9A81F5BB1AEF7FCF
  • 31. 31 #-*- coding:utf-8 -*- import hashlib file_name = input("[!] Input File Name : ") with open(file_name, "rb") as file: file_content = file.read() print("MD5 : %s" % hashlib.md5(file_content).hexdigest()) print("SHA1 : %s" % hashlib.sha1(file_content).hexdigest()) print("SHA256 : %s" % hashlib.sha256(file_content).hexdigest()) 읽어 들인 File Content를 Argument로 Hash 함수 계산 16진수 형태로 표현 대상 함수 계산 예제
  • 32. 예제 ( ) 실행 결과 32 관련 Artifact 실제 수집 & 조사 사례 예제 실행 결과 및 실제 사례
  • 33. 날고 기어 봐야 결국 손바닥 안 인 것을..
  • 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 저장
  • 39. 39 디스크 Carving 결과 디지털 포렌식 도구를 사용한 경우
  • 40. 삽질의 결과를 담아 보낼 차례
  • 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 함수 값 기록
  • 44. 실행 결과 44 발표 예제 실행 결과 관련 Artifact 실제 수집 & 조사 사례
  • 45. 보기 좋은 데이터가 분석하기도 좋은 법
  • 46. 시각화의 필요성 • 시간 정보, 파일 정보, 작성자 등.. 텍스트의 난립, 봐야하는 양이 한 두개가 아니라는 것 • 수사관 및 분석가의 수고와 안구를 보호하기 위해 각종 시각화 기술들이 필요로 하기 시작함 46
  • 47. 대중적인 라이브러리 사용 시도 • 요즘 에서 잘 알려진 시각화 라이브러리, • 그러나 과 연관된 데이터를 시각화 하기에는 무엇인가 부족함 • 100개의 PDF 파일보다 증거가 포함된 1개의 TXT 파일을 찾는 것이 더 중요 47
  • 48. 에 기반한 웹 시각화 구성 48 • 웹 기반의 시각화에 관심을 두기 시작함 (간결함, 확장성, 예쁨) • 과 사이에 Data를 원활하게 주고 받고 연산할 수 있는 수단을 생각 • 그 결과, 주변 분들도 많이 사용하시는 에 도전해보기로 함
  • 50. 역시 내 손으로 만들어야 제 맛
  • 51. 디지털 포렌식 도구 개발의 필요성 • 해당 과정을 으로 해주는 도구들이 존재하긴 함 • 그러나 뭔가 만족스럽지 못함.. 필요한 정보가 누락되기도.. • 솔루션이 비싸거나.. (기업 정부 대상이라 엄청 비쌈) 51
  • 52. 디지털 포렌식 도구 개발 과정 52 구조 및 의미 파악 및 데이터 처리 코드 작성 데이터 시각화 검증 발생 신규 분석 Main Script Setting File Scenario Datasets
  • 53. 디지털 포렌식 도구 개발 사례 : Digital Investigation Assist Tool 53
  • 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 • 과 디지털 포렌식과의 만남은 현재 진행형 일거리가 점점 사라지고 있다
  • 58. 뭐 아무렴 이런 것들을 같은 기술로 편하게 분석하면 안되시냐고 물으시는데 한 사람의 죄와 벌, 그 판단의 무게가 무거운 만큼 결국 분석은 사람이 해야 합니다.
  • 59. 이런 것이 분명 어렵고 힘든 일이지만.. 재미와 사명감 하나로 버티고 있습니다. 사실 늘어나는 해커들과 하드 용량에 저희 한 숨이 비례합니다.
  • 60. 그런 저희와 함께 진실을 밝힘에 도움이 되어주는 에게 감사의 인사를 보냅니다. 현직에서 뛰고 있을 때도 을 계속 사용할 수 있길 바라고 있습니다.
  • 61. 더 많은 것을 다루지 못해 아쉬울 따름 무궁무진한 흔적들과 그와 연관된 활용 방법
  • 62. 많이 부족했지만 이번 세션을 통해서 조금이라도 얻은 게 있으셨다면 그걸로 만족합니다. 디지털 포렌식에 대해 알고, 으로 할 수 있다는 것만 알아도 충분!
  • 63. Find Job! Thanks to • (산업기능요원 보충역) • • • • •
  • 65. 감사합니다. Thank You! 진실은 언제나 하나! : Python으로 만나보는 Digital Forensic