예제 1. Follow Streeeeam!!
- ICMP 패킷이 많이 보임
Protocol Hierarchy로 패킷에서 사용된 프로토콜을 확인
- TCP
- ICMP
Follow TCP Stream으로 주고받은 데이터를 연결해서 확인
- ctf4b{netcat-is-useful}
예제 2. 이건 파일입니까?
- TCP 패킷이 많이 보임
Conversations 를 보면 ipv4 주소가 사설 ip 임을 알수 있음
- 대부분의 TCP 통신이 80
Protocol Hierarchy
- TCP
- HTTP
http로 필터링
- .txt 확장자 파일을 다운로드하는 패킷들을 발견할 수 있음
Export Objects로 HTTP 파일을 내보냄
- Adefdx2e 파일만 파일 크기가 다름
- 파일이름이 다 랜덤한데 filename, FlaGDesu는 의도가 있어보임
먼저 Adefdx2e 파일을 바이너리 에디터로 열면
- PNG
확장자를 png로 변경하고 열면 FLAG를 확인할 수 있다.
다른 방법
file * 명령어로 file 타입을 확인
- FlaGDesu의 확장자를 zip으로 바꾸고 추출해 보았음
예제 3. Find the key!
- 일반적으로 ping 명령으로 만들어진 ICMP 응답 패킷은 변하지 않지만 이 패킷에서는 불규칙하게 변하고 있음
- info 부분에서 볼 수 있는 ICMP 의 id 부분은 ASCII 문자로 표시할 수 있는 16진수 범위다.
위의 내용으로 생각해보면 ICMP의 id 부분에 FLAG가 되는 ASCII 문자열이 포함됐을 것이라고 추측할 수 있다.
ICMP request만 표시되도록 필터링해보자.
- Packet Detail에서 Identifier를 선택하고 위에서 부터 보면 F, l, a,g 순으로 바뀌는 것을 볼 수 있다.
scapy를 사용하여 flag를 찾아보자.
- Flag is "CTF for Beginners!"
예제 4. Picture over ICMP
- 첫번째 패킷의 데이터 부분을 Packets Byte에서 보면 FF D8로 시작하는 것을 볼 수 있다.
- FF D8은 JPEG 파일의 헤더를 나타내는 바이너리 열이다.
이런 방식으로 JPEG 파일을 전송하는 경우는 없기 때문에 JPEG 파일을 추출하면 FLAG를 얻을 수 있다고 추측할 수 있다.
찾기기능으로 Hex value가 "FF D9"인 패킷을 찾아보자
- 마지막 패킷에서 FF D9를 찾을 수 있었다.
- 첫 패킷에서 JPEG 시작을 알리는 데이터가 있고 마지막에 끝을 알이는 데이터가 있으니 순서대로 분할돼었을 거라 추측할 수 있다.
TCP 데이터라면 TCP Follow Stream 기능으로 쉽게 바이너리를 추출할 수 있지만 ICMP 데이터는 그럴 수 없으니 scapy를 이용해서 Raw데이터를 추출하자.
References
'네트워크 보안 > CTF' 카테고리의 다른 글
[HTB/starting-point] Responder (0) | 2022.04.13 |
---|---|
[VulnHub] Mr.Robot 🤖 (0) | 2022.03.02 |
📖 실전 바이너리 분석 (lvl2) (0) | 2022.03.02 |
🎄사이버 2의 출현 [2020] (0) | 2022.01.09 |
🥤OWASP 주스가게 (0) | 2022.01.02 |