Deutschlands Bester Hacker - Notruf (Forensics) - Das Writeup

Disclaimer: Im August 2026 fand die Qualifikation für das Finale von Deutschlands Bester Hacker statt, welches ich auf Platz 1 abschließen konnte. Nur zwei Teilnehmer waren in der Lage, alle Challenges zu lösen. Dieses Writeup wurde mit KI auf Basis meiner Notizen erstellt und kann Fehler enthalten, bei Fragen bitte direkt an mich wenden im DBH-Discord.

Wettbewerb Deutschlands Bester Hacker 2026 — Qualifikation
Kategorie Forensics
Punkte 50
Angriffsklasse Audio-SteganografieSteganografieVerbergen von Informationen in unauffälligen Trägerdaten, sodass ihre Existenz nicht erkennbar ist. im Ultraschallbereich
Flag DBH{SP3KTROGRAMM_W4RUM_NUR_4LS_D3R_TON}

Die Challenge

42 Sekunden Funkmitschnitt. Das Bandprotokoll meldet eine Übertragung — hörbar ist praktisch nichts. Das ist ein starker Hinweis darauf, dass die Information entweder außerhalb des normalen Hörbereichs liegt, nur in einer anderen Darstellung sichtbar wird oder als Steganografie in der Datei steckt.

Aufklärung

Zuerst die Datei einordnen:

file notruf.wav
afinfo notruf.wav

Ergebnis: WAV/PCM, 16 Bit, mono, 48 kHz, 42 Sekunden Laufzeit. Danach die Prüfung, ob im Container selbst etwas Offensichtliches steckt:

strings -a notruf.wav | head -100
xxd -l 256 notruf.wav

Fehlanzeige — eine ganz normale Audio-Datei. Der nächste sinnvolle Schritt ist also Signalanalyse.

Da ffprobe, ffmpeg und sox lokal nicht vorhanden waren, lief fast die gesamte Analyse über kleine Python-Skripte direkt auf den WAV-Rohdaten: RMS/Peak grob pro Sekunde, Verteilung der niederwertigen Bits, dominante Frequenzen in kurzen Fenstern.

Die Schwachstelle

Die Energie über die Zeit zeigte zwei Auffälligkeiten:

  • um etwa 8-10 s ein deutlicher Aktivitätsblock
  • von etwa 14-36 s ein längerer Bereich mit starker Energie

Damit war klar: die Datei ist nicht leer. Das Problem ist nicht „zu leise“, sondern „falsch dargestellt“.

Die Dominantfrequenzen über Zeitfenster bestätigten das: der lange Block sitzt fast vollständig im Bereich 17-19 kHz. Das passt perfekt zur Story — auf einem normalen Mitschnitt hört man fast nichts, im Spektrum ist aber sehr wohl etwas los.

Die LSB-Verteilung war dagegen ziemlich gleichmäßig, einfache LSB-SteganografieLSB-SteganografieVerbergen von Daten in den niederwertigsten Bits von Bild- oder Audiowerten. schied also aus.

Der Angriff

Da keine fertigen Audiotools vorhanden waren, habe ich das SpektrogrammSpektrogrammanalyseDarstellung eines Signals über Frequenz und Zeit, um darin verborgene Strukturen sichtbar zu machen. mit Python selbst gebaut und anschließend in ein ansehbares Bildformat umgewandelt — einmal über den vollen Bereich, einmal auf 16-20 kHz und 14-36 s gezoomt.

Im Zoom war die Lösung direkt als Text lesbar: der PayloadPayloadTeil eines Angriffs oder Exploits, der die beabsichtigte schädliche Wirkung ausführt. ist im hochfrequenten Bereich nicht als Tonfolge oder Sprache versteckt, sondern schlicht als Schriftzug ins Spektrum gezeichnet.

Ein paar naheliegende Ideen waren Sackgassen: einfache LSB-Steganografie war es nicht; testweise habe ich den Ultraschallbereich nach unten demoduliert, was für die eigentliche Lösung gar nicht nötig war; ein lokaler Speech-to-Text-Versuch auf der demodulierten Spur scheiterte an fehlender Berechtigung. Gerade der letzte Punkt war ein guter Reality-Check — ich war schon dabei, aus dem Signal „Sprache“ machen zu wollen, obwohl die Challenge viel eleganter zu lösen war, indem man das Signal einfach sichtbar macht.

Die Flag

DBH{SP3KTROGRAMM_W4RUM_NUR_4LS_D3R_TON}

Was ich mitnehme

Der Durchbruch war die Erkenntnis: nicht hören, nicht dekodieren, sondern als Spektrogramm anschauen.

„Unsichtbar“ heißt in Audio oft nur: falsche Darstellung. Der entscheidende Hinweis lag schon im Text der Aufgabe — weil eine Übertragung protokolliert war, aber akustisch kaum etwas zu hören war, war der richtige nächste Schritt eine Frequenz- und Spektrumsanalyse statt stumpfem Abhören.