KubSTU CTF 2026 Spring — Silence in Verona Writeup

Magic header'ı olmayan, gövdesi şifreli bir Cisco Packet Tracer .pkt dosyası gizli bir Shakespeare Programming Language programı barındırıyor; konteyneri çöz, Borring novel.txt'yi bul, çalıştır ve master key'i kurtar.

4 dk okuma
ibrahimsql
656 kelime

KubSTU CTF 2026 Spring — Silence in Verona

Bir master recovery key'i Packet Tracer topolojisi boyunca saklayan bir network-forensics challenge'ı. Üç parça, "3 in 1" — port mantığı, workstation logları ve topolojinin görsel artefaktları — ve tek bir dosya: 3 in 1 .pkt.

  • Etkinlik: KubSTU CTF 2026 Spring
  • Kategori: Network
  • Artefakt: 3 in 1 .pkt (1.48 MB)
  • Flag formatı: KubSTU{...}

1. Dosya bir paket yakalaması değil

.pkt "packet" gibi görünüyor, bu yüzden ilk refleks tcpdump -r:

tcpdump -r "3 in 1 .pkt" -c 1
tcpdump: unknown file format

Hiçbir offset'te pcap/pcapng magic'i, zip/gzip/xz/zstd imzası yok ve file sadece data diyor. Ölçelim:

Python
import math
from collections import Counter
d = open("3 in 1 .pkt","rb").read()
c = Counter(d); n = len(d)
H = -sum(v/n*math.log2(v/n) for v in c.values())
print("bytes:", n, "distinct:", len(c), "entropy:", round(H,3))
bytes: 1482220  distinct: 256  entropy: 7.999

256 byte değerinin tamamı, entropi 7.999, otokorelasyon sıfır — gövde şifreli veya obfuske edilmiş ve hiçbir konteyner imzası yok.

Bu tam olarak modern bir Cisco Packet Tracer dosyasının parmak izi. PT 5.3.3'ten beri .pkt/.pka konteynerinin magic header'ı yoktur ve şifreli saklanır: iç XML topolojisi Qt qCompress ile sıkıştırılır, iki özel obfuscation katmanına sarılır ve ardından hard-coded key ve IV (0x89 * 16 ve 0x10 * 16) ile EAX modunda Twofish‑128 ile şifrelenir. Challenge anlatısı — "topolojinin görsel artefaktları", "port mantığı" — dosyanın bir Packet Tracer labı olduğunu doğruluyor.

2. Konteyneri offline çözme

Pipeline Packet Tracer olmadan tamamen geri çevrilebilir. securedypkt bunu saf Python ile uygular:

Bash
python3 -m venv ptvenv
./ptvenv/bin/pip install securedypkt
 
./ptvenv/bin/python -c \
  "import securedypkt; open('cap.xml','wb').write(securedypkt.decrypt_file('3 in 1 .pkt'))"

EAX authentication tag doğrulanır (kurcalama yok) ve Packet Tracer'ın dahili olarak sakladığı düz XML'i elde ederiz:

<PACKETTRACER5>
 <VERSION>8.2.1.0118</VERSION>
 ...

3.4 MB'lık bir topoloji dokümanı: cihazlar, IOS konfigürasyonları ve — en önemlisi — her PC'nin emüle edilmiş dosya sistemleri.

3. İş istasyonlarını denetlemek

Anlatı, anahtarın üç parçaya bölündüğünü söylüyor. Gömülü dosya sistemlerini okumak parçaları tek tek çıkarıyor:

  • Port mantığı — network_security_audit_2026.txt:

    Text
    [2026-03-10 09:15] Applying Port Security policy on Access_Switch_1.
    [2026-03-10 09:30] Detected unauthorized MAC on Fa0/2. Port shutdown triggered.
    [2026-03-10 10:45] SSH session established from 172.16.10.10 to CORE_ROOT.
    [2026-03-10 11:20] VLAN 666 isolation test - SUCCESS.
  • Sistem logları / notlar — hardware_repair_log_room2.txt, DnD_notes.txt, Note.txt, vpn_connection_reset_notes.txt. Çoğu dekor; bir vpn:// config bloğu ve DnD notlarında bir "Hunter's Adventure" soundtrack göndermesi eşliğinde.

  • Görsel artefaktlar — base64 bir PNG (capybaras_tears.png) ve The GOAT(CapybaraMayCry).txt içinde Unicode braille ASCII‑art bir resim.

Bunların hiçbiri payload değil. İzlenecek yolun ilk adımı basitçe tüm text dosyalarını aramak; bir iş istasyonunun c: sürücüsünde Borring novel .txt gömülü.

4. Payload — "sıkıcı bir roman"

Borring novel .txt düz yazı değil. SPL — Shakespeare Programming Language ile yazılmış bir program:

Text
The  Romeo's adventure.
 
Romeo, a man.
Juliet, a woman.
 
Act I: The Output.
Scene I: Display.
 
[Enter Romeo and Juliet]
 
Romeo:
You are as sweet as the sum of a sweet sweet sweet sweet sweet sweet flower and the sum of a sweet sweet flower and the sum of a sweet flower and a flower.
Speak your mind!
...
[Exeunt]

SPL programları kötü Shakespeare gibi okunur: Romeo ve Juliet tamsayı değişkenlerdir, "sweet"/"flower" gibi isimler sayısal sabitleri kodlar, sum of X and Y toplama yapar ve Speak your mind! mevcut değeri bir karakter olarak çıkarır. 11 KB'lık dosyanın tamamı uzun bir aritmetik + Speak your mind! dizisi — yani karakter karakter bir string yazdırma.

5. Çalıştırmak

Herhangi bir SPL interpreter çalışır. shakespearelang paketiyle:

./ptvenv/bin/pip install shakespearelang
./ptvenv/bin/python -c \
  "from shakespearelang import Shakespeare; Shakespeare(open('borring.spl').read()).run()"
Good job bookworm, here's your reward
Mellin_The_Hunter

Kurtarılan master key: Mellin_The_Hunter.

6. Flag

KubSTU{Mellin_The_Hunter}

"Üç parça" hikâyede yanıltmacadır: denetim gerçektir (port security, loglar, görseller), ama master key bir iş istasyonunda text dosyası olarak gizlenmiş tek bir SPL programıdır. Packet Tracer konteynerini çöz, "sıkıcı romanı" bul, Shakespeare'i çalıştır ve anahtar çıkar.

---
Bu yazıyı paylaş:
TwitterLinkedInFacebook

Ne düşünüyorsun?

Tepki bırakarak geri bildirim ver

İlgili Yazılar