
Ein Android-HW-Attestierungs-Demo
Dieses Repository begleitet einen Quarkslab-Artikel über die Android-Hardware-Key-Attestierung und dient zu deren Veranschaulichung.
Es ist ein kleiner End-to-End-Proof-of-Concept, der einen einfachen Bypass zeigt: Ein Analyst auf einem gerooteten Telefon umgeht die Hardware-Attestierungsprüfung eines Backends, indem er die Attestierung an ein zweites, sauberes Gerät weiterleitet. Nichts wird gefälscht. Eine echte Attestierungskette, erzeugt von einem unveränderten Gerät und gebunden an den eigenen Nonce des Backends, wird anstelle der abgelehnten Kette des gerooteten Geräts weitergeleitet.
Umfang und Ethik. Dies ist Lehrmaterial für die Sicherheitsforschung. Es verwendet reines HTTP und deaktiviert absichtlich Sicherheitsprüfungen („nur zu Demo-Zwecken"-Markierungen durchgängig). Führen Sie es gegen Ihre eigenen Geräte und Ihr eigenes Backend in einem vertrauenswürdigen lokalen Netzwerk aus.
Die Keystore-Attestierung eines gerooteten Geräts meldet einen entsperrten Bootloader, weshalb das Backend sie ablehnt. Statt die Kryptografie anzugreifen, fängt der Analyst den Attestierungsaufruf der App ab und setzt eine Kette ein, die live von einem sauberen Gerät für dieselbe Challenge abgerufen wurde.
Der Hook ersetzt KeystoreAttestation.generateAttestedKey(challenge) in der Demo-App und ruft den lokalen Keystore nie auf, sodass die Kette des gerooteten Geräts nie erzeugt wird. Die weitergeleitete Kette ist echt und besteht die Verified-Boot- und hardwaregestützten Prüfungen des Backends.
Jede Komponente hat ein eigenes README mit allen Details; diese Datei führt sie zusammen.
frida-server 17.16.4 läuft, mit installierter Demo-App.backend/requirements.txt)../gradlew assembleDebug).instrumentation/_agent.js) ist eingecheckt, ein Neubau ist also optional.Starten Sie die Komponenten in dieser Reihenfolge.
Backend. Auf einem Rechner, der von beiden Geräten erreichbar ist:
cd backend
pip install -r requirements.txt
python3 attestation_backend.py # listens on 0.0.0.0:8080
Sauberes Gerät. Bauen und installieren Sie die Attestierungsserver-App, öffnen Sie sie, tippen Sie auf START SERVER und notieren Sie die angezeigte URL, z. B. http://192.168.1.42:8080.
Gerootetes Gerät. Starten Sie frida-server, bauen und installieren Sie die Demo-App, öffnen Sie sie und geben Sie die Backend-Adresse ein (host:port).
Beide Apps lassen sich aus Android Studio oder über die Kommandozeile mit dem Gradle-Wrapper bauen (./gradlew assembleDebug, JDK 17-21); die Details finden Sie im README der jeweiligen App.
Weiterleitung. Auf der Workstation:
cd instrumentation
python3 control.py --host <clean-device-ip> --port 8080
Der Controller startet die Demo-App, installiert den Hook und setzt sie anschließend fort.
Auslösen. Tippen Sie in der Demo-App auf RUN ATTESTATION. Das Backend gibt gültig zurück: Die weitergeleitete Kette meldet einen gesperrten Bootloader.
Negativkontrolle. Stoppen Sie control.py und tippen Sie erneut auf . Die Demo-App sendet nun die eigene Kette des gerooteten Geräts und das Backend lehnt sie ab. Genau diese Prüfung umgeht die Weiterleitung.
Den Agenten neu bauen (nur wenn Sie agent/agent.ts ändern):
cd instrumentation
nvm use # Node 22 from .nvmrc
npm install
npm run build # regenerates _agent.js
apps/
QuarkslabAttestationDemo/ target client app (Android Studio project)
QuarkslabAttestationServer/ clean-device attestation oracle (Android Studio project)
instrumentation/ Frida agent + relay controller
backend/ Python attestation validator
LICENSE MIT
Copyright 2026 Quarkslab. Lizenziert unter der MIT-Lizenz. Siehe LICENSE.
Dieses Repository veranschaulicht einen Quarkslab-Artikel.
| Komponente | Pfad | Rolle | Läuft auf |
|---|
| Demo-Client | apps/QuarkslabAttestationDemo/ | Ziel-App. Fordert einen Nonce an, attestiert, sendet die Kette an das Backend. Per Frida gehookt. | Gerootetes Analysegerät |
| Attestierungsserver | apps/QuarkslabAttestationServer/ | Attestierungs-Orakel. Erzeugt für einen gegebenen Nonce eine echte Kette. Validiert nichts. | Sauberes, unverändertes Gerät |
| Instrumentierung | instrumentation/ | Frida-Agent (der Hook) plus der Controller, der den Nonce an das saubere Gerät weiterleitet. | Analysten-Workstation + gerootetes Gerät |
| Backend | backend/ | Vertrauenspartei. Gibt Nonces aus und validiert Attestierungsketten. | Beliebiges Gerät, das von den Geräten erreichbar ist |