디지털 포렌식
Digital + Forensic : 디지털 범죄의 부검
=> 디지털 증거물(스마트폰, PC)을 수집, 분석하여 범죄의 단서와 증거를 찾아내는 과학수사 기법
- 대상
디스크 포렌식(컴퓨터 디스크)
메모리 포렌식(컴퓨터 메모리 RAM)
네트워크 포렌식(네트워크 패킷, 네트워크 장비 로그, 네트워크 관련 설정들)
모바일 포렌식(모바일 디바이스, IoT디바이스)
기타(데이터베이스 포렌식, 암호 포렌식, 회계 포렌식, 소스코드 포렌식 등)
- 5대 원칙
1. 정당성의 원칙
디지털 증거는 법적 절차에 의해 수집되어야 한다. 위법한 방법으로 수집 시 법적 효력이 상실한다.
2. 무결성의 원칙
디지털 증거는 습득 후 어떠한 일이 발생하여도 변조가 되어서는 안된다.
3. 연계성의 원칙
디지털 증거의 습득, 이송, 분석, 보관, 법정 제출 각 단계에서 담당자와 업무자를 명확히 하여야 한다.
4. 신속성의 원칙
모든 과정은 지체없이 신속하게 진행되어야 한다.
5. 재현의 원칙
피해 직전과 같은 환경에서 현장 재현 시 피해 당시와 동일한 결과가 나와야 한다.
- 유형
1. 침해사고 대응
A. 침해 사고(해킹)를 당한 상태
B. 상황이 실시간으로 전개
C. 사태 파악 및 수습이 주 목적
D. 엄격한 입증이 필요 없음
2. 법적 증거 추출
A. 사후 조사
B. 범죄 증거 수집
C. 엄격한 입증이 필요함

네트워크 포렌식
Net(그물) + Work : 연결하는 선이나 장치 같은 물리적인 측면부터 데이터를 주고받는 데에 필요한 메시지나 규약과 같은 물리적이지 않은 측면까지 모두 포함한, 통신 과정 전체를 아우르는 개념
- 프로토콜(Protocal) : 데이터를 주고받기 위한 약속
eg. HTTP(Hyper Text Transfer Protocal), TCP(Transmission Control Protocal), UDP(User Datagram Protocal), SMTP(Simple Mail Transfer Protocal), FTP(File Transfer Protocal)
- 패킷(Packet) = Package + Buket : 통신망을 통한 전송을 위해 데이터를 작게 나눈 것
- 네트워크 포렌식 : 네트워크를 통하여 전송되는 데이터, 암호 등을 특정도구를 이용하여 가로채거나 서버에 로그형태로 저장된 것을 접근하여 분석하는 포렌식 분야
- 패킷 분석 도구
WireShark : 네트워크 패킷을 감시 및 분석하는 프로그램, 패킷 분석 도구 중 가장 널리 알려진 소프트웨어
크로스 플랫폼(Windows, Linux, Mac 등 지원)
패킷 분석을 위한 GUI 제공
파일 형태로 기록 간응
메모리 포렌식
컴퓨터 시스템의 데이터 저장 방식 -> 디스크 + 메모리
- 메모리
컴퓨터의 RAM(Random Access Memory)
데이터를 일시적으로 저장 -> 전원을 끄면 데이터가 사라지는 휘발성
- 디스크
HDD(Hard Disk Drive)나 SSD(Solid Disk Drive)와 같은 저장 장치
데이터를 영구적으로 저장 -> 비휘발성
메모리에 비해 데이터 접근 속도가 느림
- 메모리 포렌식 : 주기억장치(RAM)에 남아있는 휘발성 데이터를 분석하는 과정 -> 주로 악성코드 감염 여부를 확인 및 분석
RAM에는 프로세스, 네트워크, 사용자 활동 정보 등의 정보가 담겨있음
- 프로세스
컴퓨터에서 실행 중인 프로그램 -> 프로그램이 메모리에 로드되어 있는 상태
운영체제가 관리
- Volatility : CLI 인터페이스를 제공하는 메모리 분석 도구
오픈소스 기반
파이썬으로 작성된 메모리 포렌식 프레임워크
메모리의 프로세스, 네트워크 정보 등을 확인하고 분석할 수 있음
브라우저 포렌식
: 사용자의 컴퓨터에 저장되어 있는 웹 브라우저 사용 흔적을 디지털 포렌식적인 방법을 이용하여 조사하는 것
웹 브라우저 : 웹 서버에서 쌍방향 통신하는 HTML 문서나 파일을 연동하고 출력하는 응용 소프트웨어
- 중요성
웹 브라우저는 인터넷 검색을 통해 파일을 다운로드하거나 생성할 수 있음
-> 그 과정에서 여러 흔적이 남게 됨
=> 인터넷 이용과 관련된 사이버 범죄 수사에서 웹 브라우저 포렌식이 중요함
- Artifact : 인공물 흔적
컴퓨터 시스템에서 사용자가 어떠한 행위를 했을 때 운영체제가 이벤트 로그 혹은 데이터 로그 등의 형태로 특정한 행위에 대한 활동 흔적을 남김
=> 사용 활동 흔적 = 아티팩트(artifact)
- 브라우저 분석 요소
- Cache(캐시)
웹사이트에 접속할 때, 방문한 사이트의 데이터를 자동으로 다운로드하는 데이터
기존에 방문한 웹사이트 재방문하면 캐시에서 해당 데이터를 불러와 빠르게 접근 가능
C:\Users\{User}\AppData\Local\Google\Chrome\User Data\Default\Cache\Cache_Data
- History(히스토리)
사용자가 방문한 웹사이트의 접속 정보
웹사이트 방문 시 웹사이트 정보를 분류해 저장
C:\Users\{User}\AppData\Local\Google\Chrome\User Data\Default\History
- Cookie(쿠키)
웹사이트에서 사용자의 하드디스크에 저장해놓은 사용자에 관한 데이터
HTTP 통신에서 접속 상태 유지하도록 사용자 정보를 잠시 저장해두는 임시저장소
C:\Users\{User}\AppData\Local\Google\Chrome\User Data\Default\Network\Cookies
- Download list(다운로드 목록)
사용자가 임의로 선택하여 다운로드 한 파일
의도치 않게 다운로드된 파일과 구분됨
C:\Users\{User}\AppData\Local\Google\Chrome\User Data\Default\History
- FTK Imager
- FTK Toolkit : 가장 많이 사용되고 있는 디지털 포렌식 분석 소프트웨어
- FTK Imager : FTK Toolkit의 구성 요소 중 하나, 증거를 수집하고 수집된 증거를 확인할 때 용이하게 사용할 수 있는 도구
- 기능
- Evidence Tree : 계층적 트리구조로 추가한 증거 항목을 보여줌
- File List : Evidence Tree에서 선택된 항목의 파일과 폴더를 보여줌
- Viewer : Preview Mode 옵션(Natural, Text, Hex) 선택에 따라 선택된 파일의 내용 보여줌
- Properties/Hex Value interpreter : Evidence Tree나 File List에서 선택된 객체의 다양한 정보를 보여주고, 뷰어에 선택된 16진수 값을 10진수와 가능한 날짜, 시간 값으로 변환함
- Custom Content Sources : 이미지에 포함된 내용을 보여줌
- Add Evidence Item : 증거 자료를 Evidence Tree에 추가함
- Create Disk Image : 디스크 이미지를 생성함
- Image Mounting : 이미지 파일의 경로를 주고 마운트 시키면 읽기 전용 보기 옵션이 있는 물리 장치로 마운트됨
- Capture Memory : 메모리를 캡쳐한 결과를 저장함
- Detect EFS Encryption : 증거를 스캔해 암호화된 파일이 있는지 검사함
실습
WireShark
Puzzle #1: Ann's Bad AIM

- What is the name of Ann’s IM buddy?
Sec558user1
- What was the first comment in the captured IM conversation?
Here's the secret recipe... I just downloaded it from the file server. Just copy to a thumb drive and you're good to go
- What is the name of the file Ann transferred?
recipe.docx
- What is the magic number of the file you want to extract (first four bytes)?
.docx 파일을 찾는 것이므로 50 4B 03 04로 시작하는 부분을 찾아야 함
50 4B 03 04
- What was the MD5sum of the file?
8350582774E1D4DBE1D61D64C89E0EA1
- What is the secret recipe?

FTK imager
Browser Forensics - Cryptominer
문제 1: How many browser-profiles are present in Google Chrome?
윈도우에서 크롬 사용자 프로필 -> C:\Users{User}\AppData\Local\Google\Chrome\User Data에 저장됨

2개
문제 2: What is the name of the browser theme installed on Google Chrome?

theme의 id 값인 iiihlpikmpijdopbaegjibndhpgjmjfe를 검색하면 확장프로그램의 이름이 나옴
Earth in Space
문제 3: Identify the Extension ID and Extension Name of the cryptominer
확장 프로그램은 manifest.json이 있어야 하므로 해당 파일을 찾아야 한다.

egnfmleidkolminhjlkaomjefheafbbb,DFP Cryptocurrency Miner
문제 4: What is the description text of this extension?
Allows staff members to mine cryptocurrency in the background of their web browser
문제 5: What is the name of the specific javascript web miner used in the browser extension?

CryptoLoot
문제 6: How many hashes is the crypto miner calculating per second?
20
문제 7: What is the public key associated with this mining activity?
b23efb4650150d5bc5b2de6f05267272cada06d985a0
문제 8: What is the URL of the official Twitter page of the javascript web miner?
twitter.com/cryptolootminer
과제
Volatility
- volatiltiy를 다운로드 받고, 문제파일을 다운 받았음
- powershell에서 문제파일이 있는 폴더로 이동하고, volatility_2.6_win64_standalone.exe -f .\cridex.vmem imageinfo를 실행해서 운영체제를 확인함

- volatility_2.6_win64_standalone.exe -f .\cridex.vmem --profile=WinXPSP2x86 pslist로 프로세스들의 리스트를 출력함

- pslist, psscan, pstree, psxview 명령어를 실행하고 각각을 .log의 형식으로 저장함

-> pslist : 프로세스를 시간 순서대로 출력함

-> psscan : 숨김 프로세스를 볼 수 있음

-> pstree : PID, PPID를 기반으로 구조화해서 보여줌

-> psxview : pslist와 psscan을 한 눈에 볼 수 있음
- 의심스러운 프로세스의 목록 만들기
파일 이름을 검색해보면서 의심스러운 프로세스를 찾아야 함.
reader_sl.exe는 pdf에 대한 프로세스 -> PDF 문서를 통한 악성코드가 많으므로 의심스러움
pslist에서 reader_sl.exe를 실행한 이후에 실행된 프로그램도 의심해볼 수 있음
-> 0x820e8da0 alg.exe, 0x821fcda0 wuauclt.exe, 0x8205bda0 wuauclt.exe
- cmdline, consoles, cmdscan 명령어를 실행하고 .log 파일로 만들어서 결과를 확인함
cmdscan과 consoles는 아무것도 나오지 않음

-> 경로만 알 수 있으므로 넘어감
- filescan으로 메모리 내에 존재하는 모든 파일에 대한 정보를 얻음
-> 아까 의심했던 reader_sl.exe를 찾아보고, 해당 오프셋 값을 얻어서 dumpfiles -Q 0x00000000023ccf90 -D .\files\ -n을 실행함
이 결과 실행된 파일을 virustotal에 넣고 돌려보면 다음과 같은 결과가 나온다

- 네트워크 정보를 보기 위해 connections 명령어를 사용함
connections -> 연결된 TCP 목록을 출력함

PID가 1484인 것이 통신 중임을 보여줌 -> explorer.exe가 해당됨 -> explorer.exe 이후에 실행된 reader_sl.exe도 의심스러움
- memdump 명령어를 실행하고 결과를 파일로 저장함
memdump -> 프로세스의 메모리 부분을 dump
memdump의 결과를 HxD에서 열어서 확인하면 불필요한 부분이 많음 -> string.exe .\dumps\1640.dmp를 실행함
strings_1640.log 파일에서 PID가 1484인 프로세스의 도착지 ip 주소를 검색해봄
=> reader_sl.exe가 악성 PDF 문서를 읽고, 그 취약점으로 URL로 접속을 했을 것으로 추측
로그를 보면 은행 관련 피싱일 것으로 추측
- procdump를 통해 실제 실행되었던 .exe 파일을 찾고, 그 파일을 virustotal에 넣어봄

=> 결과를 통해 악성코드임을 확인할 수 있음