CTF/포렌식

[DanteCTF] Who Can Haz Flag - 포렌식 / Wireshark / Tshark / awk

SecurityMan 2023. 6. 15. 11:00

 

네트워크 패킷과 관련한 포렌식 문제

 

제목이 문제의 힌트였다.

 

반응형

 

 

문제에서 주어지는 것은

 

WhoCanHazFlag.pcapng 파일이다.

 

.pcapng 파일은 Wireshark 라는 도구로 열어볼 수 있다.

 

 

Wireshark 로 열어보면 이런 화면이 나온다.

 

DNS, UDP 패킷부터

 

HTTP, OCSP, TLS 등등 다양한 프로토콜의 패킷이

 

약 900개 정도 캡쳐되어 있다.

 

문제는 어떤 패킷을 골라서 봐야하냐는 것인데

 

 

아까 언급했듯이 문제 제목이 힌트였다.

 

 

패킷 중에 Who has 라는 문구를 가진 패킷이 있따.

 

ARP 패킷인데

 

Address Resolution Protocol 으로 

 

네트워크 상에서 IP 주소를 물리적 네트워크 주소로 대응시키기 위해 사용되는

 

프로토콜이다.

 

이 패킷의 맨 뒷부분을 보면

 

flgD 라고 되어있는것을 볼 수 있다.

 

 

두번째 ARP 패킷은

 

flgA 라고 되어있는데

 

플래그 포맷이 DANTE 로 시작하는것을 감안하면

 

이 부분을 모으면 플래그를 찾을 수 있을듯 하다.

 

 

그냥 하나씩 써도 되지만 tshark 를 이용해 봤다.

 

tshark는 Wireshark의 커맨드라인 버전이라고 생각하면 된다.

 

tshark는 칼리 리눅스를 설치하면 안에 내장되어 있다.(https://hackingstudypad.tistory.com/58)

 

tshark 명령어로 실행 가능하며

 

-r 옵션으로 불러올 패킷 파일을 지정해준다.

-Y 옵션으로 필터링을 시킬 수 있다. arp 프로토콜을 지정하고

-T 옵션은 텍스트 출력형식을 지정하는데 fields 형식으로 지정해준다.

-e 옵션은 표시하고자 하는 필드를 지정할 수 있다. -T 옵션과 같이 쓰이는데 arp.dst.proto_ipv4 필드를 지정했다.

 

 

arp.dst.proto_ipv4 는 flgA 부분에 마우스를 가져다 대면 알아낼 수 있다.

 

실행시키면 위처럼 ip 주소같은게 나온다.

 

보기쉽게 Wireshark 에서 봤던것 처럼 ASCII 코드로 바꿔준다.

 

tshark -r WhoCanHazFlag.pcapng -Y arp -T fields -e arp.dst.proto_ipv4 | awk -F '.' '{ for(i=1; i<=NF; i++) printf("%c", $i); printf("\n"); }'

 

이렇게 하면 ASCII 코드로 보기 쉽게 출력된다.

 

예상했던것 처럼

 

마지막 글자만 모으면 플래그가 된다.

 

하나씩 모아도 되지만

 

이왕 AWK 쓴거 한번 더 써본다.

 

tshark -r WhoCanHazFlag.pcapng -Y arp -T fields -e arp.dst.proto_ipv4 | awk -F '.' '{ for(i=1; i<=NF; i++) printf("%c", $i); printf("\n"); }' | awk '{lastchar=substr($0, length($0)); printf("%s", lastchar)}'

 

이렇게 쓰면

 

위에서 출력된 값에서 마지막 글자만 떼서

 

한줄로 모아 출력해준다.

반응형