Đề bài

Phân tích gói tin
Mình được cung cấp một file pcap, mình sẽ bắt đầu với wireshark để phân tích lưu lượng mạng xem sao
$ wireshark zoo.pcap

Mình sẽ follow TCP Stream để xem nội dung các gói tin gửi đi

Nhận thấy có một gói tin truy vấn đến đường dẫn tải tool OpenStego, có vẻ là mình sẽ cần cho sau này
Tiếp tục xem thử các gói tin tiếp theo

Những cái sau đều có vẻ không có gì mấy nên mình thử tìm kiếm bên ngoài xem sao

Nhận thấy bên dưới có rất nhiều truy vấn DNS lạ như sau
Chúng ta sẽ cùng filter protocol DNS để trích xuất ra xem sao
$ tshark -r zoo.pcap -Y "dns.flags.response==0 && dns.qry.type==TXT" \
-T fields -e frame.number -e dns.qry.name \
| sort -n -k1,1 \
| awk -F'\t' '{print $2}' \
| awk -F'.' '{
for(i=1;i<=NF;i++){
if($i ~ /^[0-9A-Fa-f]+$/ && (length($i)%2)==0) printf "%s",$i
}
} END{print ""}' > dns_hex.txt
Sau khi trích xuất các chuỗi HEX này ra thì mình phát hiện nó bắt đầu với chuỗi ASCII tương ứng là PK - Magic bytes của file zip
Mình sẽ chuyển đổi toàn bộ file về dạng nhị phân để ra file zip
$ xxd -r -p dns_hex.txt carved.zip
Sau đó mình giải nén ra folder zoo/
$ 7z x -ozoo carved.zip || unzip -d zoo carved.zip || true
Nhận thấy có khá nhiều file ở đây

Phân tích file
Ở đây mình sẽ phân tích từng file một, bắt đầu với hint.txt trước
Animals that receive hearts are hiding something.
Theo như hint thì mình sẽ tiếp tục với những ảnh con vật chứa trái tim, là những ảnh sau



Ngoài ra thì có thể còn ảnh con mèo cầm cờ nữa thì có thể phân tích thêm xem sao

Ở đây dựa theo hint trước đó từ file pcap, mình sẽ sử dụng OpenStego xem sao
- Bắt đầu với cat.png

Mình sẽ trích xuất ra được file flag.txt với nội dụng sau
JFu:l`>|c:bQj`}Q~:me=zQb=:e}Qj:z:s
- Tiếp theo là dog.png

Mình extract ra được giraffe.png

Câu hỏi là số lượng con vật trong file zip này, mình sẽ trả lời sau vậy vì bây giờ chưa extract hết, có thể còn thêm những con khác
- Tiếp tục với hamster.png

Mình extract ra được hint2.txt với nội dung như sau
( cat's hidden ) ( squirrel's hidden ) ( dog's hidden ) = FLAG
Ok vậy có vẻ là nốt squirrel.txt là xong
- Cuối cùng là squirrel.png

Mình extract ra được file parrot.png

Thông tin cuối cùng mình nhận được là XOR
Xâu chuỗi thông tin
Dựa trên những thông tin mình vừa có được như sau:
- cat.png: JFu:l`>|c:bQj`}Q~:me=zQb=:e}Qj:z:s
- dog.png: How many animals exist in the 1.zip file in total?
- squirrel.png: XOR
Vậy thì mình có thể khá chắc chắn rằng là với chuỗi text thu được từ cat.png, mình sẽ XOR với key là số lượng con vật trong file zip extract ra
Script
Mình đã chuẩn bị script XOR đơn giản như sau
flag_enc = open("zoo/flag.txt","rb").read()
print(bytes([b ^ 0x0E for b in flag_enc]).decode())
Flag
Flag: DH{4bn0rm4l_dns_p4ck3t_l34ks_d4t4}
'WriteUp > Forensics' 카테고리의 다른 글
| [Forensics] abcdefg-who - Dreamhack (0) | 2025.10.12 |
|---|---|
| [Forensics] My Nervous PPT - Dreamhack (0) | 2025.10.12 |
| [Forensics] Silent Visitor - Securinets CTF Quals 2025 (0) | 2025.10.06 |
| [Forensics] Remotely Interesting (SunshineCTF 2025) (0) | 2025.09.30 |
| [Forensics] Rocommunications (SunshineCTF 2025) (0) | 2025.09.30 |
