A forensics challenge involving network traffic analysis and IP Time-to-Live (TTL) steganography.
Challenge Description
A packet capture was collected from an internal network segment during routine monitoring. No alerts were triggered at the time, and the traffic appears largely normal. Your task is to analyze the capture and determine whether any meaningful information can be recovered.
Initial Analysis
The provided file ttl_stego.pcap contains a series of ICMP Echo (ping) requests. While the payloads appear standard, the IP Time-to-Live (TTL) values fluctuate between 64 and 65, suggesting binary data is encoded in these variations.
Using tshark to inspect the TTL values:
tshark -r ttl_stego.pcap -c 10 -T fields -e ip.ttl# Output: 64, 65, 65, 64, 65, 64, 65, 65, 64, 65...Extraction & Decoding
The TTL values can be mapped to binary bits:
- 64
0 - 65
1
We can extract the full sequence of TTLs and decode them using a Python script:
import sys
# Extract TTLs using: tshark -r ttl_stego.pcap -T fields -e ip.ttl > ttls.txtwith open('ttls.txt', 'r') as f: ttls = [int(line.strip()) for line in f if line.strip()]
# Convert TTLs to bitsbits = "".join(['0' if t == 64 else '1' for t in ttls])
# Convert bits to characters (8 bits per byte)flag = ""for i in range(0, len(bits), 8): byte = bits[i:i+8] if len(byte) == 8: flag += chr(int(byte, 2))
print(f"Decoded message: {flag}")Flag
kashiCTF{ttl_stego_is_evil}