← Zurück zum Blog LERNREISE · HTB

Meine erste HackTheBox AI-Challenge: eine Flag, versteckt in 1.822 Datenpunkten

Veröffentlicht am 2026-06-23 · ~5 Min. Lesezeit

Auf meinem Weg zum HackTheBox AI Red Teamer habe ich meine erste Challenge aus der AI-/ML-Kategorie gelöst: Uplink-Artefakt, Schwierigkeit „Sehr einfach". Sie ist der perfekte Einstieg, um zu zeigen, wie man in der KI-Sicherheit denkt — denn die Aufgabe war keine klassische Hacking-Aufgabe, sondern reine Datenanalyse. Genau das ist Alltag, wenn man KI-Systeme und ihre Datensätze untersucht.

Diese Challenge ist retired — deshalb ist dieser Writeup erlaubt. Trotzdem habe ich die Flag wie in einem echten Pentest-Report unkenntlich gemacht: Den Lösungsweg zeige ich, das Ergebnis bleibt euch zum Selberfinden.
HackTheBox-Challenge Uplink-Artefakt, Schwierigkeit Sehr einfach, 100 XP.
Die Challenge: „Uplink-Artefakt", AI-/ML-Kategorie, Sehr einfach.

1. Erst aufklären, nicht raten

Die Challenge liefert ein ZIP-Archiv mit einer einzigen CSV-Datei. Die wichtigste Regel bei jeder Aufgabe: zuerst verstehen, was man vor sich hat. Ein kurzer Blick in die Datei zeigt vier Spalten — x, y, z, label — und rund 1.800 Zeilen. Geladen mit pandas sieht man vier Klassen:

import pandas as pd
df = pd.read_csv("uplink_spatial_auth.csv")
print(df["label"].value_counts())
# 0 → 525   2 → 518   3 → 457   1 → 322

Vier Klassen, räumliche Koordinaten (der Dateiname spatial_auth ist ein Wink). Sobald Daten Koordinaten und Klassen haben, lautet der erste Reflex: visualisieren.

2. Der erste Plot: nur Rauschen

Alle Punkte auf einmal, eingefärbt nach Klasse — das Ergebnis ist enttäuschend: ein gleichmäßiges Gewusel ohne erkennbares Muster.

Streudiagramm aller Datenpunkte nach Label — sieht aus wie zufälliges Rauschen.
Alle Klassen übereinander = Chaos. Das Signal versteckt sich im Rauschen.

Ein Detail in den Rohdaten war aber verdächtig: Die Punkte einer Klasse hatten auffällig glatte, ganzzahlige Koordinaten (z. B. 21.0, 22.0), während die anderen „krumme" Kommazahlen trugen. Das ist kein Zufall — das ist ein Fingerabdruck.

3. Signal vom Rauschen trennen

Also habe ich jede Klasse einzeln geplottet. Und siehe da: Drei Klassen sind reines Tarn-Rauschen — eine einzige (label == 1) bildet ein klares Raster.

Vier Streudiagramme, eines pro Label. Label 1 zeigt ein klares rasterartiges Muster, die anderen sind zufällig.
Pro Klasse getrennt: label == 1 tanzt aus der Reihe — ein verstecktes Muster.

4. Aus Punkten ein Bild machen

Das Muster sah aus wie ein QR-Code. Um es lesbar zu machen, habe ich die ganzzahligen Koordinaten in ein Schwarz-Weiß-Raster übersetzt — jeder Punkt wird ein „Modul" des Codes:

import numpy as np, matplotlib.pyplot as plt

q = df[df["label"] == 1]
xs = q["x"].round().astype(int)
ys = q["y"].round().astype(int)

grid = np.ones((ys.max()+1, xs.max()+1))   # 1 = weiß
grid[ys, xs] = 0                            # 0 = schwarz

plt.imshow(grid, cmap="gray", origin="lower")
plt.axis("off"); plt.show()
Aus den Datenpunkten rekonstruierter QR-Code, zur Veröffentlichung unkenntlich gemacht.
Der rekonstruierte QR-Code (hier bewusst unscharf gemacht). Einmal scannen → die Flag.

Ein kurzer Scan mit dem Handy — und die Flag erscheint. Challenge gelöst. 🚩

5. Was diese Challenge mit KI-Sicherheit zu tun hat

Die eigentliche Lektion ist nicht der QR-Code, sondern die Methode: Strukturen finden, die jemand absichtlich zwischen Rauschen versteckt hat. Genau das ist unüberwachtes Denken — Muster und Anomalien in unbeschrifteten Daten erkennen. In der KI-Sicherheit ist das täglich Brot:

Mein Ablauf war derselbe, den ich auch bei echten Analysen nutze: Recon → visualisieren → Signal vom Rauschen trennen → in lesbare Form bringen. Eine simple Challenge, aber ein Werkzeug, das bleibt.

Teil meines Wegs zum HackTheBox AI Red Teamer

Das war Station eins in der praktischen AI-Security-Welt — weitere folgen. Wenn du KI- oder ML-Systeme betreibst und wissen willst, ob sie einer realistischen Prüfung standhalten, helfe ich dir gern weiter.

▶ AI Red Teaming Mehr aus dem Blog