SH1R0_HACKER

우리의 제일 귀여운... (난이도 : ★★★☆☆) 본문

Capture the flag/Network Forensic

우리의 제일 귀여운... (난이도 : ★★★☆☆)

SH1R0_HACKER 2021. 1. 5. 16:44

[ 문제 ]

http://ctf-d.com/challenges#우리의%20제일%20귀여운...

 


[ 풀이 ]

stego.pcap 파일을 와이어샤크로 열었습니다.

 

패킷들을 보면 클라이언트가 message.png 파일을 서버로 요청한 기록이 있습니다.

Follow TCP Stream 을 이용하여 데이터를 보면 message.png를 다운로드 한 기록이 있다는것을 확인할 수 있습니다.

 

해당 png파일을 다운로드하기 위해 Show data as 를 Raw로 변경해주고

 

 

하단에 있는 Save as... 버튼을 클릭하여 png 파일로 저장해줍니다.

 

그러나 사진을 열 수 없었습니다.

스트림을 저장할 때 PNG 파일에 필요한 정보 이외에

 

위와 같은 것이 함께 저장되어서 이미지 파일을 열 수 없습니다.

 

헥스에디터로 파일을 열어서 PNG 헤더 시그니처인

 

89 50 4E 47 0D 0A 1A 0A

 

부분을 제외하고 위에 쓸데없는 부분을 모두 삭제합니다.

 

 

수락 버튼을 클릭하면 다음과 같이 수정됩니다.

 

저장한 후 파일을 보면

 

정상적으로 복구된 파일을 볼 수 있습니다.

하지만 이 파일에서도 특별한 정보는 찾을 수 없었습니다.

 

스테가노그래피, 이미지 포렌식 (히든픽셀 등) 다양한 방법을 시도해 보았으나 별다른 성과가 없었습니다.

이렇게 삽질을 하던 도중 Urgent Pointer 라는 것을 알게 되었고 

 

tshark 를 이용하여 Urgent Pointer 값들 중에서 0을 제외한 값들을 추출했습니다.

이 값들을 아스키코드에 매칭되는 문자열로 변환해주면

 

플래그를 찾을 수 있습니다.

 

KEY : CTF{And_You_Thought_It_Was_In_The_Picture}


[ Urgent Pointer ]

Urgent Pointer을 알기 위해서는 먼저 TCP 헤더구조에 대해 알아야 합니다.

 

sh1r0hacker.tistory.com/118

 

TCP Header (TCP 헤더)

< 참고 사이트 > evan-moon.github.io/2019/11/10/header-of-tcp/ en.wikipedia.org/wiki/Transmission_Control_Protocol ◆ Source Port : 출발지 포트 번호 (16비트) ◆ Destination Port : 목적지 포트 번호 (..

sh1r0hacker.tistory.com


[tshark]

Urgent Pointer 값들 중에서 0을 제외한 값들을 추출할 때 사용한 명령어 입니다.

 

tshark -r stego.pcap -T fields -e tcp.urgent_pointer | egrep -vi "^0$"

 

Usage : tshark [options] ...

 

RPCAP options (Input file) :

-r <infile>

set the filename to read from (-to read from stdin)

 

output :

-T pdml|ps|psml|text|fields

format of text output (def: text)

 

-e <field>

field to print if -Tfields selected (e.g. tcp.port, _ws.col.Info)

this option can be repeated to print multiple fields

 


[ grep 명령어 ]

 

egrep : grep의 확장판으로, 추가 정규표현식 메타문자들을 지원한다.

 

옵션 :

정규표현식 메타문자 :