Disk Forensic #32 (IU는 악성코드에 의해 감염된...)

 

디스크 포렌식 32번 문제

 

주어진 문제 파일은 확장자가 존재하지 않아 어떤 유형의 파일인지 알 수 없습니다.

 

리눅스 환경으로 옮겨서 file 명령어를 통해 파일 유형을 확인하였습니다.

 

[그림 1] file 명령어 사용

 

file 명령어를 통해 확인한 결과, 7z 압축 알고리즘 파일인 것을 확인하였습니다.

 

확장자를 7z로 지정하고 압축을 풀면 피해 시스템에 저장된 쿠키 파일이 존재합니다.

 

[그림 2] 쿠키 파일

 

파일 경로 : Users\proneer\AppData\Local\Google\Chrome\User Data\Default\Cookies

 

 

Cookies 파일 역시 확장자가 존재하지 않아 file 명령어로 파일 유형을 확인합니다.

 

[그림 3] file 명령어 사용

 

파일 유형 확인 결과, SQLite에 관한 파일입니다.

 

SQLite 파일에 대한 상세 분석을 위해 SQLiteBrowser 도구로 분석하였습니다.

 

DB Browser for SQLite 다운로드 : https://sqlitebrowser.org/dl/

 

Downloads - DB Browser for SQLite

Windows Our latest release (3.11.2) for Windows: Note - If for any reason the standard Windows release does not work (e.g. gives an error), try a nightly build (below). Nightly builds often fix bugs reported after the last release. 😄 macOS Our latest relea

sqlitebrowser.org

[그림 4] SQLiteBrowser 프로그램 실행 (URL 정보)

 

SQLiteBrowser 프로그램으로 Cookies 파일을 오픈한 화면입니다.

 

URL 정보를 확인해보면 악성 URL로 보이는 정보는 찾아볼 수 없습니다.

 

지문에서 악성코드에 시스템이 감염됐을 때 흔적이 지워졌을 수도 있다고 언급한 것을 생각해보면 악성 URL이 쿠키 파일에서 기록 되어야할 위치에서 지워져서 일반적인 SQLite 분석 프로그램을 사용했을 때 발견되지 않았을 수도 있습니다.

 

추가 분석을 위해 SQLiteBrowser 프로그램으로 분석했을 때는 없었지만 strings 명령어로 분석했을 때는 존재하는 URL이 있는지 확인하였습니다.

 

[그림 5] strings 명령어 사용

 

Cookies 파일의 데이터가 커서 텍스트 파일로 저장한 다음, 분석하였습니다.

 

[그림 6] 텍스트 파일 - URL 발견

 

내용을 확인해보면 .test.wargame.kr이라는 URL이 발견됩니다.

 

이 URL은 SQLiteBrowser 프로그램을 사용했을 때는 존재하지 않았던 URL입니다.

 

그리고 정상적으로 운영하는 워게임 사이트의 URL 앞에 test라는 문자열이 포함된 것을 보면 해당 URL이 악성 URL일 가능성이 매우 큽니다.

 

악성 URL 뒤에 utmz, utma 쿠키와 관련 값이 존재합니다.

 

utma는 웹 브라우저에서  웹 사이트를 처음 방문할 때의 시간 정보가 저장되는 쿠키이고, utmz는 방문자가 사이트를 방문하는데 사용하는 접속 유형 정보가 저장되는 쿠키입니다.

 

악성코드에 시스템이 감염되는 상황을 따져보면 웹 사이트에 처음 방문할 때가 감염 됐을 확률이 가장 높습니다.

 

데이터 위치

의미

1번째

각 도메인의 고유한 Hash값

2번째

고유 식별자(고유 ID)

3번째

처음 웹사이트를 방문한 시간의 타임스탬프

4번째

이전 방문에 대한 타임스탬프

5번째

현재 방문에 대한 타임스탬프

6번째

시작된 세션 수

 

위 표는 utma 쿠키에 기록된 값을 구분할 수 있는 데이터의 위치와 의미입니다.

 

utma 쿠키에 기록된 인코딩 시간 정보를 DCODE 프로그램을 사용해서 실제 시간으로 변환하였습니다.

 

Dcode 다운로드 : https://www.digital-detective.net/dcode/

 

DCode™ | Digital Detective

DCode™ is a simple utility for converting the hex and integer values found by investigators during a forensic investigation into readable timestamps.

www.digital-detective.net

 

[그림 7] 시간 정보 계산

 

3번째 값이 처음 웹 사이트를 방문한 시간이므로 1328799447 값을 디코딩합니다.

 

Decode Format을 Unix: Numeric Value로 변경하고, Value to Decode에 1328799447을 입력합니다.

 

마지막으로 Decode 버튼을 누르면 날짜와 시간이 실제 시간 정보로 나타납니다.

 

이제 최종적으로 구한 정보들을 토대로 플래그 포맷에 맞게 입력하면 문제를 해결할 수 있습니다.


# Reference

 

http://www.yes24.com/Product/Goods/59156934

Disk Forensic #23 (서울에 사는 IU가 특정 웹...)

 

디스크 포렌식 23번 문제

 

주어진 문제 파일은 확장자가 존재하지 않아 어떤 유형의 파일인지 알 수 없습니다.

 

파일 유형 정보 확인을 위해 리눅스 환경으로 옮겨서 file 명령어를 사용하여 확인하였습니다.

 

[그림 1] file 명령어 사용

 

file 명령어로 확인한 결과, 7z 알고리즘 압축 파일입니다.

 

확장자를 7z로 지정하고 압축을 풀면 Users 폴더가 생성됩니다.

 

[그림 2] Users 폴더 내용

 

Users 폴더 안에는 All Users, Default 폴더 등 여러 폴더가 존재합니다.

 

이는 윈도우 사용자 폴더 구조와 동일합니다.

 

따라서 문제 파일은 윈도우 운영체제의 사용자 폴더를 압축한 파일임을 알 수 있습니다.

 

문제 지문에서 범인이 SQL Injection 공격을 시도하다가 브라우저가 갑작스럽게 종료됐다고 했습니다.

 

이와 관련된 증거가 존재하는지 확인을 위해 사용자 계정으로 보이는 proneer의 폴더 내 각 브라우저 데이터가 저장되는 폴더를 분석하였습니다.

 

브라우저

데이터 저장 경로

인터넷 익스플로어

C:\Users\[사용자]\AppData\Local(Roaming)\Microsoft\Internet Explorer

파이어폭스

C:\Users\[사용자]\AppData\Local(Roaming)\Mozilla\Firefox

크롬

C:\Users\[사용자]\AppData\Local(Roaming)\Google\Chrome

3개의 브라우저 중, 파이어폭스의 데이터가 저장되는 폴더를 분석하면 sessionstore.js 파일이 존재하는 것을 확인할 수 있습니다.

 

[그림 3] sessionstore.js 파일

 

파일 경로 : C:\Users\proneer\AppData\Roaming\Mozilla\Firefox\Profiles\0751fxbt.default

 

sessionstore.js 파일은 파이어폭스 브라우저가 비정상적으로 종료가 될 때, 그 시점의 상태 정보가 저장되는 파일입니다.

 

만약 범인이 파이어폭스를 사용하다가 비정상적으로 브라우저가 종료 됐으면 이 파일에 공격에 관한 정보가 존재할 것입니다.

 

이번에는 자바스크립트를 해석해주는 웹사이트를 이용해서 파일의 내용을 분석하였습니다.

 

jsonlint : 자바스크립트를 해석해주는 온라인 웹사이트

 

참조 사이트 : https://jsonlint.com/

 

The JSON Validator

JSONLint is the free online validator and reformatter tool for JSON, a lightweight data-interchange format.

jsonlint.com

[그림 4] SQL 쿼리 발견

 

위 화면과 같이 sessionstore.js 파일의 내부 정보를 확인하면 '1_UNI/**/ON_SELECT' 라는 'UNION SELECT' 쿼리를 삽입한 정황을 확인할 수 있습니다.

 

브라우저에 이런 쿼리를 입력하는 것을 볼 때 악의적인 목적으로 입력한 것으로 판단됩니다.

 

Injection value 값을 찾았으니 이제는 브라우저가 종료된 시간을 찾으면 됩니다.

 

[그림 5] 브라우저 종료 시간 정보 발견

 

위 화면과 같이 lastUpdate 변수로 브라우저가 종료된 시간 정보가 인코딩되어 저장된 것을 확인할 수 있습니다.

 

마지막으로 DCODE 프로그램을 사용해서 실제 종료된 시간을 정확하게 확인합니다.

 

Dcode 다운로드 : https://www.digital-detective.net/dcode/

 

DCode™ | Digital Detective

DCode™ is a simple utility for converting the hex and integer values found by investigators during a forensic investigation into readable timestamps.

www.digital-detective.net

[그림 6] 시간 정보 계산

 

Decode Format을 Unix: Numeric Value로 지정해주고, Value to Decode에 lastUpdate 변수 값을 넣고 Decode 버튼을 누르면 위 화면과 같이 날짜와 시간 정보가 실제 시간으로 나타납니다.

 

이제 키 포맷대로 Injection_value와 time을 포맷에 맞게 입력해주면 플래그로 인정되며, 문제를 해결할 수 있습니다.


# Reference

 

http://www.yes24.com/Product/Goods/59156934

Disk Forensic #22 (파일에서 플래그를 찾아라.)

 

디스크 포렌식 22번 문제

 

주어진 문제 파일은 확장자가 존재하지 않아 어떤 유형의 파일인지 알 수 없다.

 

리눅스 환경으로 옮겨서 file 명령어를 사용하여 어떤 유형의 데이터인지 확인하였다.

 

[그림 1] file 명령어 사용

 

결과를 확인해보면 문제 파일은 xz 압축 알고리즘으로 압축된 파일임을 알 수 있다. (이름이 너무 길어서 keka로 변경)

 

파일 압축을 풀기 위해 xz 확장자를 추가하고, unxz 명령어를 사용해서 압축을 해제한다.

 

[그림 2] xz 확장자 - unxz 명령어

 

압축을 풀면 동일한 명칭의 파일이 생성된다.

 

또다시 file 명령어를 사용해서 파일의 유형을 확인한다.

 

[그림 3] file 명령어 사용

 

결과를 확인하면 이번 파일은 7z 압축 알고리즘으로 압축된 파일이다.

 

파일을 더블 클릭하면 어떤 파일들이 압축되어 있는지 확인이 가능하다.

 

[그림 4] 압축 파일 내용 확인

 

위 화면과 같이 16개의 압축 파일들을 볼 수 있다.

 

(파일이 한 개당 4GB 크기라서 압축 풀면 노트북 용량이 터진다...ㅠㅠ)

 

문제에서 제공된 압축 파일의 용량은 10MB도 안 되지만 이 파일에 압축된 파일들은 모두 동일하게 4.2GB나 된다.

 

이런 특징들을 보면 해당 파일은 ZipBomb로 보인다..

 

ZipBomb : 압축이 풀릴 때 엄청난 양의 하드디스크와 메모리의 용량을 고갈시키는 악성 파일

 

압축을 풀면 노트북이 터질 거 같아 7-Zip File Manager 프로그램을 사용해서 압축된 파일들의 상세 정보를 확인하였다.

 

7-Zip File Manager : 7z 압축 알고리즘으로 압축된 파일의 상세한 분석을 할 수 있는 도구

 

 

7-Zip File Manager 프로그램 실행

 

7-Zip File Manager 프로그램을 통해 문제 파일을 불러오면 위 화면과 같이 이름, 크기, 압축된 크기, CRC, 수정한 날짜 등의 정보를 볼 수 있다.

 

이 중에서 013.7z만 다른 파일들과 다르게 압축된 크기와 CRC 정보가 다른 것을 볼 수 있다.

 

013.7z 압축 파일만 압축을 해제한 후에 또다시 어떤 파일들이 있는지 확인하였다.

 

013.7z 압축 파일 내용

 

013.7z 압축 파일의 내용이다.

 

똑같이 16개의 파일이 있지만, 이번에는 0009.7z 파일이 다른 파일들과 다르다. (노가다 문제..)

 

위 방법과 같이 특정한 파일만 압축을 해제한다.

 

0009.7z 압축 파일 내용

 

이번에도 똑같이 하나의 파일만 특정하게 파일 크기와 CRC 부분이 다르다.

 

계속 위 방법대로 하나만 압축을 풀어준다.

 

0000007.7z 압축 파일 내용

 

계속 풀어준다... 하하 (언제 끝남??)

 

0000000008.7z 압축 파일 내용

 

드디어 끝이 났다..

 

이번에는 7z 파일이 아닌 아무 확장자가 없는 파일로 보인다.

 

특정 파일만 압축을 풀고, file 명령어로 파일 유형을 확인한다.

 

bomb_08 파일 유형 확인

 

파일 유형에 대한 정보는 없고, 그냥 데이터 정보만 존재한다.

 

혹시 파일에서 플래그에 대한 문자열이 있는지 strings 명령어를 사용해서 분석하였다.

 

플래그 확인

 

다행히 플래그가 바로 나왔다..

 

strings 명령어를 통해 나온 결과값을 플래그로 입력하면 문제를 해결할 수 있다.


# Reference

 

http://www.yes24.com/Product/Goods/59156934

Disk Forensic #15 (X 회사의 재정 정보를 훔치기...)

 

디스크 포렌식 15번 문제

 

주어지는 문제 파일은 확장자가 존재하지 않아 어떤 유형의 파일인지 알 수 없다.

 

그래서 리눅스 환경으로 옮겨서 file 명령어로 파일 유형을 확인하였다.

 

[그림 1] file 명령어 사용

 

file 명령어로 확인한 결과, 7z 압축 파일인 것을 확인하였다.

 

확장자를 .7z로 지정하고 압축을 풀면 Users 폴더가 생성된다.

 

[그림 2] Users 폴더 내용

 

Users 폴더 안에는 All Users, Default 폴더 등 여러 폴더가 존재한다.

 

그리고 CFO로 보이는 proneer 폴더도 존재한다.

 

이는 윈도우 사용자 폴더 구조와 동일하다.

 

따라서 문제 파일은 윈도우 운영체제의 사용자 폴더를 압축한 파일임을 알 수 있다.

 

이제 문제에서 제시한 EXCEL 파일의 흔적을 찾아야 한다.

 

시스템의 운영체제가 윈도우고 해당 파일이 문서파일이란 점을 고려했을 때 파일이 실행되는 순간 링크 파일이 생성됐을 것이다.

 

문서 파일의 링크 파일 정보가 담긴 폴더의 경로는 다음과 같다.

 

Users\proneer\AppData\Roaming\Microsoft\Office\Recent

 

 

[그림 3] EXCEL 파일 발견

 

해당 경로로 들어가면 위와 같이 재무 정보 문서의 링크 파일이 존재한다.

 

이제 이 링크 파일을 분석해서 파일 크기와 전제 경로를 파악해야 한다.

 

링크 파일 분석을 위해 WFA 도구를 사용하여 분석하였다.

 

WFA(Windows File Analyzer) : 윈도우 아티팩트를 분석해주는 도구

 

설치 / 참조 사이트 : https://www.mitec.cz/wfa.html

 

MiTeC Homepage

 

www.mitec.cz

 

[그림 4] WFA 실행 - Analyze Shortcuts

 

WFA를 실행한 다음, [File] - [Analyze Shortcuts] 기능을 선택하여 위 경로대로 이동하여 Recent 폴더를 불러온다.

 

[그림 5] 링크 파일 분석 결과

 

분석 결과를 확인해보면 재무 정보 문서 링크 파일의 파일 크기와 전체 경로를 알 수 있다.

 

문제에서 제시한 포맷대로 정리하면 다음과 같다.

 

[그림 6] 전체 경로 파일 크기

 

마지막으로 최종 포맷에 맞게 md5 Hash값으로 변환한다.

 

md5 인코딩 / 디코딩 사이트 : https://tools.web-max.ca/encode_decode.php

 

Tools to help encode/encrypt or decode/decrypt MD5, MD4, Sha1, Sha256 URL encoding, Base85 or Base64

Encoders / decoders This tool will allow you to either encode / encrypt a string to its MD5 hash. You can also perform the same operation for SHA1, SHA256, SHA384, SHA512 and CRC32 hashes, and also convert to and from URL encoded strings, Base64 and Base85

tools.web-max.ca

[그림 7] 플래그 확인

 

정상적으로 문제에 대한 플래그가 출력된다.

 

위 과정을 통해 문제를 해결할 수 있다.


# Reference

 

http://www.yes24.com/Product/Goods/59156934

Disk Forensic #16 (Find Key(slack))

 

디스크 포렌식 16번 문제

 

주어진 문제 파일은 gz 확장자의 파일이다.

 

편하게 압축을 풀기 위해, 리눅스 환경으로 옮겨서 gunzip 명령어로 압축을 해제하였다.

 

[그림 1] gunzip 명령어 사용

 

압축을 해제하면, 아무 확장자도 없는 파일이 생성된다.

 

파일 유형을 확인하기 위해 file 명령어를 사용하였다.

 

[그림 2] file 명령어 사용

 

파일 유형 확인 결과, 똑같은 gz 파일로 보이지만 압축이 풀리지 않아 FTK Imager로 파일을 마운트하여 확인하였다.

 

FTK Imager : 포렌식의 가장 기본 도구로, 디스크 이미징 작업에 많이 활용

 

다운로드 사이트 : https://accessdata.com/product-download/ftk-imager-version-4-2-1

 

FTK Imager version 4.2.1

AccessData provides digital forensics software solutions for law enforcement and government agencies, including the Forensic Toolkit (FTK) Product.

accessdata.com

 

[그림 3] FTK Imager - Add Evidence Item 선택

 

 

다운받은 FTK Imager를 실행하고, [File]에서 [Add Evidence Item]을 선택한다.

 

[그림 4] Image File 선택

 

파일 선택 화면에서 Image File을 선택하고, 문제 파일을 마운트한다.

 

[그림 5] 이미지 마운트 - Untitled0 파일

 

위 화면과 같이 Untitled0 파일이 존재한다.

 

상세 분석을 위해 파일을 추출하여 분석하였다.

 

[그림 6] Export Files...

 

Untitled0 파일을 마우스 우클릭한 다음, Export Files를 눌러 파일을 추출할 수 있다.

 

다시 추출된 파일을 리눅스 환경으로 옮겨 file 명령어로 파일 유형을 분석하였다.

 

[그림 7] file 명령어 사용

 

Untitled0 파일을 file 명령어로 확인하면 문제 파일이 ext3 파일 시스템 데이터인 것을 확인할 수 있다.

 

다시 FTK Imager로 Untitled0 파일을 마운트하여 분석하였다.

 

[그림 8] Untitled0 마운트

 

위에서 마운트한 방법대로, Untitled0 파일도 마운트하면 여러 운영체제나 언어와 관련된 파일들이 존재한다.

 

분석 결과, 플래그와 관련된 파일은 찾을 수 없었다.

 

하지만 한 가지 방법을 생각해볼 수 있다.

 

파일 시스템 데이터에 Key를 숨겨두는 방법으로 슬랙 공간을 이용하는 방법이 있다.

 

슬랙 공간 : 디스크 섹터에 데이터가 저장되고 남은 데이터 공간으로, 다른 데이터가 디스크에 기록되어도 슬랙 공간에 저장되지 않고 다른 섹터에 저장된다.

 

그러므로 이 슬랙 공간은 악성코드나 특정 데이터들을 숨기거나 기록하는데 악용될 확률이 매우 높다.

 

슬랙 공간에 숨겨진 데이터가 존재하는지 알아보기 위한 디지털 포렌식 도구로 SleuthKit이라는 도구가 존재한다.

 

SleuthKit : 파일 시스템을 분석하는데 사용되는 디지털 포렌식 도구

 

참조 사이트 : https://www.sleuthkit.org/sleuthkit/download.php

 

The Sleuth Kit: Download

 

www.sleuthkit.org

저는 리눅스 환경에서 SleuthKit의 blkls 명령어로 파일을 분석하였다.

 

blkls 명령어 : 슬랙 공간에 존재하는 모든 데이터 정보 출력하는 명령어

 

[그림 9]플래그 확인

 

명령어를 실행하면 슬랙 공간에 숨겨져 있던 플래그가 출력된다.

 

위 과정대로 문제를 해결할 수 있다.


# Reference

 

http://www.yes24.com/Product/Goods/59156934

Disk Forensic #38 (서울에 위치한 X 에너지 기업이...)

 

디스크 포렌식 38번 문제

 

주어진 문제 파일은 확장자가 존재하지 않아 어떤 유형의 파일인지 알 수 없다.

 

우선 리눅스 환경으로 옮겨 file 명령어를 통해 파일 유형을 확인하였다.

 

[그림 1] file 명령어 사용

 

확인 결과, 7z 압축 파일인 것을 확인하였다.

 

이름 뒤에 .7z를 붙여 확장자를 7z로 지정하고 압축을 풀면 MFT 파일이 생성된다.

 

[그림 2] MFT 파일 생성

 

지문에서 포렌식 전문가인 IU가 MFT를 분석해서 공격자의 흔적을 찾았다고 하였다.

 

그러니 AnalyzeMFT 도구를 사용해서 MFT 파일을 분석하였다.

 

AnalyzeMFT : NTFS 파일 시스템에서 가장 중요한 파일이며, 여러 파일에 대한 메타 데이터 정보가 들어 있는 MFT를 분석할 수 있는 도구

 

참조 사이트 : https://github.com/dkovar/analyzeMFT

 

dkovar/analyzeMFT

Contribute to dkovar/analyzeMFT development by creating an account on GitHub.

github.com

[그림 3] AnalyzeMFT 실행

 

위 화면대로 명령어 입력 시, MFT 파일을 분석한 정보가 들어 있는 텍스트 파일이 생성된다.

 

이제 본격적으로 파일을 분석한다.

 

일단 악성 파일의 특성상 실행 파일(.exe)일 확률이 매우 높다.

 

데이터가 매우 많기 때문에 먼저 exe 확장자를 검색해서 수상한 파일이 있는지 확인하였다.

 

[그림 4] 수상한 파일 발견

 

exe 문자열로 검색하면 많은 실행 파일이 검색되면서 소프트웨어 설치, 포렌식 도구 등이 존재한다.

 

하지만 이 중에서 다른 파일들과 다르게 이름이 직관적이지 않고 특이한 파일 하나를 발견하였다.

 

위 화면에서 내용을 보면 r32.exe 파일은 휴지통에 버려진 파일임을 확인할 수 있다.

 

그리고 지문에서 공격자는 악성 파일과 다른 흔적들을 지우려고 노력했다는 것을 언급한 내용과 r32.exe 파일이 휴지통에 들어 있다는 것을 바탕으로 악성 파일은 r32.exe 파일이 맞다.

 

이제 플래그를 구하는 일만 남았다.

 

플래그는 r32.exe 파일의 생성 시간이지만, 지문에서 UTC + 09:00를 요구하였으니 위 화면에서 확인한 생성 시간에서 9시간을 더해준 다음 플래그로 입력하면 문제를 해결할 수 있다.


# Reference

 

http://www.yes24.com/Product/Goods/59156934

+ Recent posts