Network Forensic #24 (Sans Network Forensic [Puzzle 4] #1)

 

네트워크 포렌식 24번 문제

 

문제 파일로 pcap 파일이 주어진다.

 

주어진 시나리오와 문제를 통해 Mr.X가 포트스캐닝을 하고 있을 것이라는 의심을 해볼 수 있다.

 

포트 스캐닝 : 대상의 어떤 포트가 열려 있는지 확인하는 작업, 침입 전에 취약점 분석을 위한 사전 작업

 

 

Wireshark 도구를 통해 문제에서 주어진 pcap 파일을 확인해보자.

 

Wireshark : 오픈 소스 패킷 분석 프로그램으로 pcap을 이용하여 패킷을 잡아내는 것이 주요 기능

 

다운로드 사이트 : https://www.wireshark.org/download.html

 

Wireshark · Download

Riverbed is Wireshark's primary sponsor and provides our funding. They also make great products that fully integrate with Wireshark. I have a lot of traffic... ANSWER: SteelCentral™ AppResponse 11 • Full stack analysis – from packets to pages • Rich perfor

www.wireshark.org

[그림 1] Wireshark 도구 실행 - pcap 파일 오픈

 

수많은 패킷을 확인할 수 있으며, 패킷 트래픽 흐름 확인을 위해 [Statics] - [Conversations] 기능을 이용하여 확인한다.

 

[그림 2] Port B를 정렬 - 확인한 포트 스캐닝

 

확인해보면 Mr.X가 포트 스캐닝에 사용한 IP 주소 확인이 가능하다.

 

위 화면처럼 TCP 프로토콜을 선택하면 10.42.42.253의 IP주소로 3개의 IP주소(10.42.42.25, 10.42.42.50, 10.42.42.56)로 1번 포트부터 차례대로 포트 스캐닝을 하는 것을 확인할 수 있다.

 

이것으로 Mr.X가 사용한 스캐너 IP 주소를 확인하여 플래그로 입력할 수 있다.


Network Forensic #25 (Sans Network Forensic [Puzzle 4] #2)

 

네트워크 포렌식 25번 문제

 

위 문제 파일을 계속 사용해서 푸는 문제이다.

 

사실 이 문제의 플래그는 지문에서 보이는 6개의 항목 중 하나라서, 모두 입력해보면 플래그로 인증된다..

 

그렇지만 제대로 된 네트워크 포렌식 공부를 위해 열심히 풀었다...하하

 

pcap 문제 파일을 확인해보면 수많은 TCP SYN 패킷을 보내고 RST/ACK 패킷을 받는 것을 확인할 수 있다.

 

[그림 3] SYN 패킷과 RST/ACK 패킷 확인

 

※ RST/ACK 패킷 발생 이유

  • 세션 연결이 되지 않은 Host로부터 TCP 연결 패킷이 온 경우

  • Listen 중이 아닌 포트로 SYN 패킷을 받은 경우

 

따라서 주어진 패킷을 통해 TCP 연결을 위한 3way-handshake 과정으로 포트 스캐닝을 하고 있다는 것을 의심해볼 수 있다.

 

3way-handshake 연결 과정 : Client > Server : TCP SYN

 

 

[그림 4] TCP 3way-handshake Connect 확인

 

pcap 파일을 분석하던 도중, 거의 끝 부분을 확인해보면 3way-handshake를 성공하는 것을 확인할 수 있다.

 

따라서 위 과정을 통해 정상적으로 해결할 수 있는 문제이다.


Network Forensic #26 (Sans Network Forensic [Puzzle 4] #3)

 

네트워크 포렌식 26번 문제

 

이번 문제는 Mr.X가 목표로 하는 IP 주소를 찾는 문제이다.

 

1번 문제에서 확인했던 [Statics]- [Conversations] 기능으로 총 3개의 목표 IP 주소를 확인할 수 있다.

 

[그림 5] 3개의 목표 IP 주소 확인

 

3개의 IP 주소를 숫자가 작은 순서대로 플래그로 입력하면 문제를 쉽게 해결할 수 있다.


# Reference

 

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

Disk Forensic #24 (Please get my key back!)

 

디스크 포렌식 24번 문제

 

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

 

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

 

[그림 1] file 명령어 사용

 

file 명령어로 확인 결과, data라는 정보만 나오고 어느 유형인지 내용을 알 수 없습니다.

 

어떤 문자열이 파일에 기록됐는지 HxD를 사용해서 확인하였습니다.

 

[그림 2] HxD 프로그램 실행

 

HxD를 실행하고 파일 내용을 확인해보면 type=firmware라는 문자열이 존재합니다.

 

여기서 중요한 것은, 이 파일은 펌웨어에 관한 파일로 추측할 수 있습니다.

 

펌웨어 데이터가 맞는지 확인을 위해, 다시 리눅스 환경으로 옮긴 다음 binwalk를 사용해서 확인하였습니다.

 

binwalk : 대표적인 펌웨어 분석 툴로, 펌웨어 분석뿐만 아니라 포렌식 시 파일 카빙 등에 사용할 수 있는 유용한 도구 

 

참고 사이트 : https://github.com/ReFirmLabs/binwalk

 

ReFirmLabs/binwalk

Firmware Analysis Tool. Contribute to ReFirmLabs/binwalk development by creating an account on GitHub.

github.com

[그림 3] binwalk 실행

 

binwalk로 파일을 분석하면 해당 파일이 LZMA 방식으로 압축된 SquashFS 데이터인 것을 확인할 수 있습니다.

 

LZMA : 데이터 압축에 쓰이는 알고리즘으로 최대 4GB의 가변 압축 시전 크기를 제공

 

SquashFS : 리눅스에서 사용되는 읽기 전용 파일 시스템으로 주로 임베디드 시스템에서 사용

 

 

펌웨어 이미지 파일 분석을 위해 Firmware-mod-kit 도구를 이용하였습니다.

 

Firmware-mod-kit : 리눅스 기반의 펌웨어 이미지를 다시 빌드하거나 추출하는 유틸리티와 스크립트로 구성된 소프트웨어

 

참조 사이트 : https://github.com/rampageX/firmware-mod-kit/wiki

 

rampageX/firmware-mod-kit

Automatically exported from code.google.com/p/firmware-mod-kit - rampageX/firmware-mod-kit

github.com

 

[그림 4] FMK 프로그램 실행

 

extract-firmware.sh을 실행시켜 분석을 시작합니다.

 

[그림 5] 분석 성공!

 

실행이 종료되면 fmk 폴더에 결과가 만들어집니다.

 

펌웨어 이미지 내부에 있는 데이터들은 rootfs 폴더에 저장됩니다.

 

[그림 6] Key.txt 파일 발견

 

파일 경로 : Firmware-mod-kit\FMK\rootfs\home\dlink

 

 

dlink 폴더에 key.txt 파일이 존재합니다.

 

[그림 7] 플래그 발견

 

파일을 열면 문제에 대한 플래그 확인이 가능합니다.


# Reference

 

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

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

+ Recent posts