Multimedia Forensic #98 스테가노그래피에 대해서...

 

98번 문제

 

steg.pdf 파일이 주어지고, 바로 파일을 다운받아 내용을 확인하였습니다.

 

파일 내용 확인

 

파일을 열어 확인해보면 논문으로 된 pdf 파일입니다.

 

하지만 이상한 점은 파일의 크기가 16MB로 보통 PDF 크기보다 매우 크다는 것을 알 수 있습니다.

 

스테가노그래피라고 하였으니 PDF 파일 안에 데이터가 은닉되어 있음을 알 수 있고, HxD로 열어 PDF 파일을 분석하였습니다.

 

PDF 파일 확인

 

PDF 파일은 %PDF 문자열 시그니처를 시작으로 해서 %EOF 문자열로 끝이 납니다.

 

찾기 기능을 통해 바로 %EOF 문자열이 있는 곳으로 이동합니다.

 

숨겨진 데이터 확인

 

%EOF 문자열 뒤에 RIFF와 WAVE 문자열이 있는 것으로 보아 WAV 파일의 시그니처를 확인할 수 있습니다.

 

PDF 파일 안에 WAV 파일을 은닉하였다고 확인할 수 있습니다.

 

RIFF(52 49 46 46)부터 마지막 오프셋까지 카빙하여 wav확장자로 파일을 저장하고 확인해보겠습니다.

 

Audacity 실행

 

오디오 파일이므로 Audacity 프로그램을 통해 wav 파일을 분석하였습니다.

 

Audacity : 오디오 편집 기능과 녹음 기능을 제공해주는 도구

 

검은색 삼각형을 누르고 스테레오 트랙 분할을 누르면 두 개의 트랙으로 분리됩니다.

 

위쪽 채널은 음악이 나오지만, 아래쪽 채널만 집중해서 들어보면 음높이가 다른 2개의 음이 불규칙적으로 나오게 됩니다.

 

2개의 음이 반복됨에 따라 해당 소리를 통하여 바이너리 값을 얻을 수 있습니다.

 

두 음 중에서 높은 음을 1로 잡고, 낮은 음을 0으로 잡고 확인해보면 85bit 바이너리 문자열을 확인할 수 있습니다.

 

1001100111001000010101011000000011001000100100000100000000100111001101011100110110011

 

바이너리 문자열을 식별할 수 있는 내용으로 변환할 수 있는 방식을 분석하던 도중 Bacon's 암호화라는 것에 대해 알게 되었고, Bacon's 암호화는 스테가노그래피를 위한 암호화 방식이라는 것을 확인하였습니다.

 

Baconian Cipher는 Francis Bacon에 의해 고안된 스테가노그래피 방법으로 메시지의 내용이 아니라 표현 방식에 데이터를 은닉시킨다.

 

'A'와 'B'의 조합으로 문자를 나타내며 2가지 버전이 있다.

 

1번째 버전

 

2번째 버전

 

1번째 버전으로 해봤지만, 겹치는 알파벳이 있어서 그런지 플래그가 나오지 않아 2번째 버전으로 해봤더니 성공적으로 플래그를 얻을 수 있었습니다.

 

앞에 10011은 T가 되고, 다음 글자는 00111이기에 H가 옵니다.

 

이런 형식으로 85bit를 알파벳으로 바꾸면 플래그를 얻을 수 있습니다.

Multimedia Forensic #74 sayonara-bye가 남긴 흥미...

 

74번 문제

 

문제로 주어진 sayonara.mp3 파일이 주어지고. 오디오 파일이라서 Audacity 도구로 열어 분석하였습니다.

 

Audacity : 오디오 편집 기능과 녹음 기능을 제공해주는 도구

 

파일 확인

 

두 개의 채널이 나오고, 파일 이름 옆에 검정색 삼각형을 눌러서 스테레오 채널 분할을 눌러 두 개의 채널을 분리합니다.

 

각 채널을 따로 들어보면 아래의 채널이 이상한 소리가 들리는 채널임을 알 수 있습니다.

 

오디오 스테가노그래피 문제에서 주로 나오는 문자열 은닉에 대한 문제인 것 같아서 스펙트로그램 기능으로 확인하였습니다.

 

스펙트로그램

 

좀 약간 이상해보이는 문자열 형태를 볼 수 있으며, 제대로 된 문자열로는 식별할 수 없습니다.

 

선명하게 보기 위해서 여러 방법으로 분석한 결과, 검정색 삼각형을 누르고 속도 -> 기타를 눌러 Hz를 3500 정도로 설정해주면 플래그 같은 문자열을 확인할 수 있습니다.

 

플래그 확인

 

이렇게 봐도 이해하기는 좀 힘들지만 그래도 숨겨져 있는 문자열 플래그를 확인할 수 있습니다.

 

flag = easyctf{do_a_frustration}

Multimedia Forensic #64 스타워즈 시간이 돌아왔다!

 

64번 문제

 

문제 파일로 eightcircleofhell.png 파일이 주어집니다.

 

파일 확인

 

파일을 실행해서 내용을 확인해보면 다양한 색상으로 된 사진을 확인할 수 있습니다.

 

이 사진만 봐서는 어떤 내용인지 알 수 없습니다.

 

일반적인 스테가노그래피 기법으로는 분석해봐도 플래그가 나오지 않아 추측이나 내용을 찾아보면 도트로 그림을 그리게 되면 점의 위치와 RGB 값이 코드 역할을 하는 piet 언어로 작성된 파일이라는 것을 추측해볼 수 있습니다.

 

piet : 그림의 도트 위치, RGB 값을 이용하는 프로그래밍 언어

 

piet 인터프리팅을 지원해주는 웹사이트를 이용하여 파일을 분석합니다.

 

piet 인터프리터 사이트 : https://www.bertnase.de/npiet/npiet-execute.php 

 

BertNase's Own - Have fun!

  Welcome, please feel free to look around.

www.bertnase.de

분석 결과

 

파일을 선택한 다음, 분석해보면 어떤 문자열이 출력되는 것을 확인할 수 있습니다.

 

RCdgJHFwIkp9fXtGeXk2L2V0MmJOTkwnLGwqaignZ2dle0FjP2A8eykoeHdZb3Rzcmsxb1FQbGtkKilKSWVkY2JbIUJYV1ZbWlN3V1ZVN1NSS29JSGxGLkpDQkdAZERDQiQjPzhcNnw6MzJWNjU0MzIxKnAoTG0lSSMiJ34lJHtBYn59dnV0OnhxWXV0bTNUcGluZ2xrZCpoZ2BIXiRiRFpfXl1WelRTWFdWVU5yTFFKT05NTEVEaEJBZShEQ0JBOl44PTw7NDkyVjA1LjMyK08vKC0sKyojRyEmfSR7ekB+d197enM5WnZvdG0zcXBvbm1mTitpS2dmZV4kXFtaWV5XXFV5U1hRdVVUU0xLbzJOR0ZqLUlIR0BkPkM8YCM/OFw8NXszVzc2djQzLCtPL28nLCskI0cnJmZlI3p5eD5fe3R5cjhZdW40bGtwaWguT2tkY2IoYGVeY1xbIUJeV1ZVeVlYOlBPVE1xUTMySEdMS0RoSCpGRT5iJUE6Pzg3Wzs0M1c3dzUuUixyMC8uLSwlSWooJ35EfHt6eT9gX3t0eXJ3cDZuc3JxcGkvbWxlamloZ2ZfXl0jYWBCQV1cW1R4WFdWOE5TUktKbjFNTEtKQ2dBRkVEPWEkOj8+PTw1NFg4eDYvU3RzMTApTS0sbGsjRycmJXxkInk/YF91dHM5d3ZYdG1sazFvbm1sZU0qdQ==

 

문자를 보면 마치 Base64로 인코딩 된 암호문으로 보입니다.

 

이제 Base64 디코딩 사이트로 가서 암호문을 디코딩 해줍니다.

 

Base64 디코딩 사이트 : https://www.base64decode.org/

 

Base64 Decode and Encode - Online

Decode from Base64 or Encode to Base64 - Here, with our simple online tool.

www.base64decode.org

base64 디코딩 결과

 

결과를 확인해봐도 플래그가 나오지 않고 알아볼 수 없는 문자열들로 구성됩니다.

 

여러 삽질(?)을 해보다가 맨 처음 문제 이름인 eight circle of hell을 검색해보면 malbolge라는 언어가 연관되면서 동일한 이름으로 된 프로그래밍 언어가 나옵니다.

 

이 프로그래밍 언어는 존재하는 모든 프로그래밍 언어 중 가장 어렵고 난해한 언어로 알려져 있다고 합니다.

 

디코딩 결과로 출력된 텍스트 문자열이 malbolge 언어로 작성된 문자열인지 확인해보기 위해 malbolge 인터프리팅을 지원하는 웹사이트를 이용하여 결과를 확인하였습니다.

 

Malbolge는 세상에 존재하는 모든 프로그래밍 언어 중 가장 난해한 언어로 알려져 있으며, 단테의 신곡에 등장하는 제8옥 Malebolge에서 이름이 유래되었다.

 

말레볼제 인터프리팅 사이트 : http://malbolge.doleczek.pl/

 

Malbolge - interpreter online

Malbolge, invented by Ben Olmstead in 1998, is an esoteric programming language designed to be as difficult to program in as possible.

malbolge.doleczek.pl

플래그 확인

 

결과를 확인해보면 디코딩 된 문자열로 플래그가 출력됩니다.

 

flag = dafuck_how_did_you_find_this! 

[Reversing] 리버스 엔지니어링이란?

 

리버스 엔지니어링


(1) 리버스 엔지니어링이란 무엇인가?

1-1. 리버스 엔지니어링 개념

 

1-1-1. 리버스 엔지니어링

  • 물건, 기계장치 혹은 시스템 등의 구조, 기능, 동작 등을 분석하며 그 원리를 이해하고 단점을 보완하며 새로운 아이디어를 추가하는 일련의 작업

 

1-1-2. 리버스 코드 엔지니어링

  • 소프트웨어 분야의 리버스 엔지니어링으로 소프트웨어를 리버싱 관점에서 상세하게 분석한다는 뜻


(2) 리버싱 분석 방법

2-1. 정적 분석

  • 파일의 겉모습을 관찰하여 분석하는 방법

  • 정적 분석 단계에서는 파일 실행하지 않음

  • 파일의 종류(DLL, EXE, DOC, ZIP등), 크기, 헤더(PE)정보, Import/Export API, 내부 문자열, 실행 압축 여부, 등록 정보, 디버깅 정보, 디지털 인증서 등 다양한 내용 확인

  • 디스어셈블러를 이용하여 내부 코드와 그 구조를 확인하는 것

 

2-2. 동적 분석

  • 파일을 실행시켜 그 행위를 분석하는 방법

  • 디버깅을 통하여 코드 흐름과 메모리 상태 등을 자세히 살펴보는 방법

  • 파일 레지스트리, 네트워크 등을 관찰하면서 프로그램의 행위 분석

  • 디버거를 이용하여 프로그램 내부 구조와 동작 원리를 분석

 

두 가지 방법을 잘 활용하면 프로그램을 리버싱할 때 시간 단축과 효과적인 분석이 가능하다.

 

디버깅은 리버싱 방법 중 비중이 크고 재미있는 분야이긴 하지만 리버싱의 하위 개념이다.


(3) Source Code, Hex Code, Assembly Code

  • 리버싱에서 취급하는 대상은 보통 실행 파일인 경우가 많은

  • 소스코드 없이 실행 파일의 바이너리 자체를 분석

 

3-1. Source Code

 

[그림 1] Source Code

  • [그림 1]과 같이 개발 도구(Visual C++)에서 소스 코드를 빌드하면 실행 파일 생성

 

 

3-2. Hex Code

 

[그림 2] Hex Code

  • 생성된 실행 파일은 컴퓨터가 이해할 수 있는 2진수(Binary) 형식으로 되어 있음

  • 리버싱 전문가라도 0과 1로만 구성되어 있는 binary 파일을 직접 보고 의미를 해석하는 것은 매우 힘듦

  • 2진수를 16진수(Hex)형식으로 변환시키는데, 자릿수가 줄어들면서 보기 수월하기 때문

 

 

3-3. Assembly Code

 

[그림 3] Assembly Code

  • 사실 Hex Code는 사람에게 직관적인 형태가 아님

  • Hex Code를 디스어셈블(Disassemble) 과정을 거쳐서 어셈블리 코드로 변환하여 보여줌

  • 일반적인 리버시 과정에서는 어셈블리 코드를 분석하곤 함


(4) 패치와 크랙

 

4-1. 패치

  • 프로그램의 파일 혹은 실행 중인 프로세스 메모리 내용을 변경하는 작업

  • 주된 목적은 프로그램 취약점 수정과 기능 개선

 

4-2. 크랙

  • 패치와 같은 개념이지만 특별히 의도가 비합법적이고 비도덕적인 경우를 구분하여 뜻함

  • 주된 목적은 저작권을 침해하는 행위(불법 복제/사용 등)에 주로 사용


# Reference

 

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

'Reversing' 카테고리의 다른 글

[Reversing] Process Explorer  (0) 2020.03.26
[Reversing] 스택  (0) 2020.03.25
[Reversing] IA-32 Register  (0) 2020.03.25
[Reversing] 리틀 엔디언 표기법  (0) 2020.03.24
[Reversing] OllyDbg 사용법  (0) 2020.03.24

Memory Forensic #1 GrrCoN 2015 #1

1번 문제

문제 파일로 vmss 확장자 파일이 주어집니다.

 

vmss : 가상 머신에서 일시 중지(suspend) 상태일 때 운영체제 상태를 저장한 파일 확장자 

 

해당 파일을 분석하기 위해 메모리 포렌식 도구인 volatility를 사용하여 분석하였습니다.

 

volatility : 오픈 소스 기반으로 CLI 인터페이스 제공하는 메모리 분석 도구

 

volatility 도구 사용

 

volatility 사용 방법 (Windows 기준)

 

1. volatility 다운로드 하고, cmd를 실행하여 exe 실행 파일이 있는 경로로 이동 (cd 명령어 사용) 

2. vmss 파일을 exe 파일이 있는 곳으로 같이 넣어주고, 분석하기 위해 다음 명령어 입력

 

volatility.exe -f [파일 이름] imageinfo

 

파일을 분석하면 Windows 7 운영체제에서 사용한 메모리라는 것을 확인 가능합니다.

 

이제 어떤 프로그램이 실행되었는지 확인하기 위해 프로세스 리스트를 출력해주는 명령어를 사용합니다.

(pslist, psscan, pstree 사용)

 

pslist : 프로세스 리스트 출력, 리스트 워킹 (가상 주소)

psscan : 프로세스 리스트 출력, 패턴 매칭 (물리적 주소)

pstree : 프로세스를 트리구조로 출력

 

psscan 명령어 사용

 

volatility.exe -f [파일 이름] --profile=[운영체제명] [플러그인]

 

프로세스 리스트 출력
이상한 프로그램 실행 확인

 

지문에서 이상한 이메일을 클릭했다는 결정적 증거가 있습니다.

 

플러그인 실행 결과를 보면 OUTLOOK.EXE 프로그램이 실행 중인 것을 확인할 수 있습니다.

 

만약 이 프로그램을 사용하여 이메일을 받았다면 파일 내 이메일 주소가 존재할 것입니다.

 

파일 분석을 위해서 memdump 플러그인을 사용하여 메모리 파일에 존재하는 OUTLOOK.EXE 파일을 복구하겠습니다.

 

memdump 플러그인 사용

 

memdump : 프로세스가 사용한 전체 메모리 영역 덤프

 

volatility.exe -f [파일 이름] --profile=[운영체제명] memdump -p [해당 프로세스 PID] -D ./(해당 폴더에 저장한다는 뜻)

 

파일이 저장된 것을 확인하면 strings 프로그램으로 dmp 파일을 txt 파일로 변환시킵니다.

 

strings : 프로그램 안에서 사용된 문자열 출력 프로그램

 

덤프 파일 > 텍스트 파일 변환

strings.exe [변경하고 싶은 파일] > [변경할 파일]

 

이제 복구된 파일 내용이 기록된 텍스트 파일을 코드 편집 프로그램으로 실행하여 이메일을 확인합니다.

(메모장으로 열면 정상적으로 작동하지 않거나, 에러가 발생하여 코드 편집 프로그램으로 실행해야 한다.)

 

서브라임 텍스트3 프로그램을 이용하여 텍스트 파일을 확인하였습니다.

 

텍스트 확인

수많은 텍스트 문자열을 확인할 수 있습니다.

 

문제를 해결하려면 이메일을 확인해야 하니 시간 단축을 위해 검색 기능(Ctrl + F)을 활용하여 텍스트 문자열을 분석합니다.

 

gmail 검색 > 이메일 확인

 

분석하던 도중, gmail로 된 이메일과 Wellick이라는 사람에게 온 내용을 확인할 수 있었습니다.

 

이메일명도 플래그처럼 되어 있어 플래그에 해당 메일 주소를 입력해주면 됩니다.

 

 

 

Memory Forensic #2 GrrCoN 2015 #2

2번 문제

 

앞에 문제에서 발견했던 이메일에 첨부된 파일명을 확인합니다.

 

첨부파일 확인

 

이메일 내용 아래를 보면 첨부 파일 URL 주소가 적혀 있고 IP주소 뒤에 첨부파일명을 확인할 수 있습니다.

Multimedia Forensic #69 플래그를 얻어라!

 

69번 문제

 

문제 파일로 problem 이름으로 된 png 파일이 주어집니다.

 

사진 파일 확인

 

사진 파일을 열어 확인해보면 이상하게 생긴 성 사진을 확인할 수 있습니다.

 

혹시 플래그가 있는지 확인해보기 위해 여러 도구들을 사용해본 결과, stegsolve 도구를 통해 플래그를 알 수 있었습니다.

 

Stegsolve : 스테가노그래피 분석 도구로 색상과 비트별로 이미지를 분석하는 기능을 제공해주는 도구

 

stegsolve 도구 실행

 

cmd(명령 프롬프트)를 실행한 다음, stegsolve 도구를 실행하고 위 사진을 열어보면 플래그를 확인할 수 있습니다.

 

플래그 확인

 

Red plane 0에서 위와 같이 플래그를 확인할 수 있습니다.

 

flag = MMA{raw_cr3am_pasta!}

 

+ Recent posts