Multimedia Forensic #72 (저는 애니메이션을 좋아하는...)
지문이 200점 문제치고는 의외로 까다롭다...
우선 문제 파일인 jpg 파일을 열어 확인해보면 다음과 같은 그림이 나온다.
확인해보면 손상된 이미지이며, 지문에서 나온 Hint 2를 통해 손상된 이미지 복구가 아닌 해당 파일에 대한 원본 파일이 필요하다는 것을 추측해볼 수 있다.
문제 파일의 원본 파일은 다음과 같다.
원본 파일 : https://pp.userapi.com/c625217/v625217819/1eec5/5WzbbhtpMkQ.jpg
원본 파일을 확인한 후, 리눅스 환경에서 ls -l 명령어를 통해 원본 파일과 문제 파일을 비교해보자.
두 파일의 크기는 같지만, 정확한 데이터 값 분석을 위해 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]에서 보이는 붉은 부분이 두 파일을 비교하였을 때, 서로 틀린 데이터 값을 표시하는 부분이다.
선명하게 보여주기 때문에 매우 유용한 도구이다.
다시 [그림 3]을 보면 원본 파일은 [7C 44 9E]로 시작하지만, 문제 파일은 [7C 45 9F]로 시작한다.
그리고 계속 분석해보면, 원본 파일의 특정 오프셋 Hex값에 1을 더해주면 문제 파일에 수정한 부분의 값들과 같음을 알 수 있다.
예를 들어 원본 파일의 [7C 44 9E]가 문제 파일에서는 [7C 45 9F]로 수정되었음을 알 수 있다.
이것으로 표시한 부분의 Hex값 차이를 구해 정리하면, 0과 1로 이루어진 이진 문자열을 얻을 수 있을 것이다.
이진 문자열 확인을 위해 Python 코드를 작성해보자.
이제 해당 코드를 이용하여 명령을 수행해보자.
diff라는 이름으로 Python 코드를 저장한 후, 2개의 파일을 입력하여 이진 문자열을 얻게하는 방식이다.
이진 문자열을 다음과 같이 출력하는 것을 볼 수 있다. (위 화면은 중간 내용으로, 나머지 내용은 너무 길어 생략)
이진 문자열을 확인한 후에 정리해보면, 해당 내용과 관련하여 아스키코드를 변환하는 방식이 있다.
아스키코드 변환 방식은 데이터를 은닉할 때 흔히 사용되는 방식으로 쓰인다.
따라서 위 [그림 5]에서 확인한 이진 문자열을 다음과 같은 명령을 통해 아스키코드로 변환할 수 있다.
echo와 perl 옵션을 통해 [그림 6]처럼 아스키코드로 변환이 가능하다.
명령을 수행하게 되면 하단에 문자열이 출력되며, 해당 문자열이 플래그라는 것을 확인할 수 있다.
위 과정을 통해 본 문제를 해결할 수 있다.
문제 해결~~
# Reference
'Digital Forensics > CTF-D' 카테고리의 다른 글
[Multimedia Forensic] 어딘가에 숨겨진 메시지가 있을 것이다. (0) | 2020.04.20 |
---|---|
[Multimedia Forensic] stream (0) | 2020.04.20 |
[Disk Forensic] 도와주십시오, 누군가... (2) | 2020.04.19 |
[Disk Forensic] 경찰청은 최근 아동 성폭력... (0) | 2020.04.19 |
[Disk Forensic] 거대한 마약 조직을 잡으려는... (0) | 2020.04.16 |