Multimedia Forensic #72 (저는 애니메이션을 좋아하는...)

 

멀티미디어 포렌식 72번 문제

 

지문이 200점 문제치고는 의외로 까다롭다...

 

우선 문제 파일인 jpg 파일을 열어 확인해보면 다음과 같은 그림이 나온다.

 

[그림 1] yuno.jpg

 

확인해보면 손상된 이미지이며, 지문에서 나온 Hint 2를 통해 손상된 이미지 복구가 아닌 해당 파일에 대한 원본 파일이 필요하다는 것을 추측해볼 수 있다.

 

문제 파일의 원본 파일은 다음과 같다.

 

원본 파일 : https://pp.userapi.com/c625217/v625217819/1eec5/5WzbbhtpMkQ.jpg

 

 

원본 파일을 확인한 후, 리눅스 환경에서 ls -l 명령어를 통해 원본 파일과 문제 파일을 비교해보자.

 

[그림 2] 문제 파일, 원본 파일 비교

 

두 파일의 크기는 같지만, 정확한 데이터 값 분석을 위해 HexCmp2 프로그램을 통해 상세 분석을 진행해보자.

 

HexCmp2 : 각 파일의 Hex값을 비교하고, 다른 부분을 표시해주는 도구

 

설치 사이트 : https://softfamous.com/hexcmp/ 

 

HexCmp Free Download for Windows 10, 7, 8 (64 bit / 32 bit)

You just can’t beat it’s advantageous duality which powers it to function effectively and a perfect solution for technological geeks. Different files have different signatures and they are uniqu, although they can have the same size in some cases. It is

softfamous.com

 

[그림 3] HexCmp2.exe > 상세 파일 비교

 

[그림 3]에서 보이는 붉은 부분이 두 파일을 비교하였을 때, 서로 틀린 데이터 값을 표시하는 부분이다.

 

선명하게 보여주기 때문에 매우 유용한 도구이다.

 

다시 [그림 3]을 보면 원본 파일은 [7C 44 9E]로 시작하지만, 문제 파일은 [7C 45 9F]로 시작한다.

 

그리고 계속 분석해보면, 원본 파일의 특정 오프셋 Hex값에 1을 더해주면 문제 파일에 수정한 부분의 값들과 같음을 알 수 있다.

 

예를 들어 원본 파일의 [7C 44 9E]가 문제 파일에서는 [7C 45 9F]로 수정되었음을 알 수 있다.

 

이것으로 표시한 부분의 Hex값 차이를 구해 정리하면, 0과 1로 이루어진 이진 문자열을 얻을 수 있을 것이다.

 

이진 문자열 확인을 위해 Python 코드를 작성해보자.

[그림 4] Python 코드

 

이제 해당 코드를 이용하여 명령을 수행해보자.

 

[그림 5] 명령 수행

 

diff라는 이름으로 Python 코드를 저장한 후, 2개의 파일을 입력하여 이진 문자열을 얻게하는 방식이다.

 

[그림 6] 결과 값 출력

 

이진 문자열을 다음과 같이 출력하는 것을 볼 수 있다. (위 화면은 중간 내용으로, 나머지 내용은 너무 길어 생략)

 

이진 문자열을 확인한 후에 정리해보면, 해당 내용과 관련하여 아스키코드를 변환하는 방식이 있다.

 

아스키코드 변환 방식은 데이터를 은닉할 때 흔히 사용되는 방식으로 쓰인다.

 

따라서 위 [그림 5]에서 확인한 이진 문자열을 다음과 같은 명령을 통해 아스키코드로 변환할 수 있다.

 

[그림 7] 플래그 확인

 

echo와 perl 옵션을 통해 [그림 6]처럼 아스키코드로 변환이 가능하다.

 

명령을 수행하게 되면 하단에 문자열이 출력되며, 해당 문자열이 플래그라는 것을 확인할 수 있다.

 

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

 

문제 해결~~


# Reference

 

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

+ Recent posts