
एक Android HW Attestation डेमो
यह रिपॉजिटरी Android हार्डवेयर की अटेस्टेशन पर Quarkslab लेख के साथ आती है और इसे समझाने के लिए मौजूद है।
यह एक छोटा, एंड-टू-एंड प्रूफ ऑफ कॉन्सेप्ट है जो एक सरल बायपास दिखाता है: रूटेड फोन पर एक विश्लेषक अटेस्टेशन को दूसरे, साफ डिवाइस पर रिले करके बैकएंड की हार्डवेयर अटेस्टेशन जांच को हरा देता है। कुछ भी जाली नहीं होता। एक वास्तविक अटेस्टेशन श्रृंखला, जो एक अपरिवर्तित डिवाइस द्वारा उत्पन्न होती है और बैकएंड के अपने नॉन्स से बंधी होती है, रूटेड डिवाइस की अस्वीकृत श्रृंखला के स्थान पर आगे भेजी जाती है।
दायरा और नैतिकता। यह सुरक्षा अनुसंधान के लिए शैक्षिक सामग्री है। यह सादे HTTP का उपयोग करता है और जानबूझकर सुरक्षा जांचों को अक्षम करता है (हर जगह "डेमो ओनली" मार्कर)। इसे अपने स्वयं के डिवाइसों और अपने स्वयं के बैकएंड पर, एक विश्वसनीय स्थानीय नेटवर्क पर चलाएं।
रूटेड डिवाइस की केस्टोर अटेस्टेशन एक अनलॉक किए गए बूटलोडर की रिपोर्ट करती है, इसलिए बैकएंड इसे अस्वीकार कर देता है। क्रिप्टो पर हमला करने के बजाय, विश्लेषक ऐप के स्वयं के अटेस्टेशन कॉल को इंटरसेप्ट करता है और उसी चैलेंज के लिए एक साफ डिवाइस से लाइव प्राप्त श्रृंखला को अदला-बदली करता है।
हुक डेमो ऐप में KeystoreAttestation.generateAttestedKey(challenge) को बदल देता है और स्थानीय केस्टोर को कभी कॉल नहीं करता, इसलिए रूटेड डिवाइस की श्रृंखला कभी उत्पन्न नहीं होती। रिले की गई श्रृंखला वास्तविक होती है और बैकएंड की सत्यापित बूट और हार्डवेयर-समर्थित जांचों को पास करती है।
| घटक | पथ | भूमिका | कहाँ चलता है |
|---|---|---|---|
| डेमो क्लाइंट | apps/QuarkslabAttestationDemo/ | लक्ष्य ऐप। नॉन्स का अनुरोध करता है, अटेस्ट करता है, श्रृंखला को बैकएंड को भेजता है। Frida द्वारा हुक किया गया। | रूटेड विश्लेषण डिवाइस |
| अटेस्टेशन सर्वर | apps/QuarkslabAttestationServer/ | अटेस्टेशन ओरेकल। दिए गए नॉन्स के लिए वास्तविक श्रृंखला उत्पन्न करता है। कुछ भी सत्यापित नहीं करता। | साफ, अपरिवर्तित डिवाइस |
| इंस्ट्रूमेंटेशन | instrumentation/ | Frida एजेंट (हुक) और वह कंट्रोलर जो नॉन्स को साफ डिवाइस तक रिले करता है। | विश्लेषक वर्कस्टेशन + रूटेड डिवाइस |
| बैकएंड | backend/ | आश्रित पक्ष। नॉन्स जारी करता है और अटेस्टेशन श्रृंखलाओं को सत्यापित करता है। | कोई भी मशीन जो डिवाइसों से पहुंच योग्य हो |
प्रत्येक घटक का अपना README है जिसमें पूरा विवरण है; यह फ़ाइल उन्हें एक साथ जोड़ती है।
frida-server 17.16.4 चल रहा हो, और डेमो
ऐप स्थापित हो।backend/requirements.txt में)।./gradlew assembleDebug) के साथ कमांड लाइन से।instrumentation/_agent.js) कमिट किया गया है, इसलिए पुनर्निर्माण
वैकल्पिक है।टुकड़ों को इस क्रम में चालू करें।
बैकएंड। दोनों डिवाइसों से पहुंच योग्य मशीन पर:
cd backend
pip install -r requirements.txt
python3 attestation_backend.py # listens on 0.0.0.0:8080
साफ डिवाइस। अटेस्टेशन सर्वर ऐप बनाएं और इंस्टॉल करें, फिर इसे खोलें,
START SERVER पर टैप करें, और यह जो URL दिखाता है उसे नोट करें, जैसे http://192.168.1.42:8080।
रूटेड डिवाइस। frida-server शुरू करें, डेमो ऐप बनाएं और इंस्टॉल करें, इसे खोलें,
और बैकएंड का पता (host:port) दर्ज करें।
दोनों ऐप Android Studio से या Gradle रैपर (./gradlew assembleDebug, JDK 17-21) के साथ कमांड लाइन से बनते हैं; विवरण के लिए प्रत्येक ऐप का README देखें।
रिले। वर्कस्टेशन पर:
cd instrumentation
python3 control.py --host <clean-device-ip> --port 8080
कंट्रोलर डेमो ऐप को स्पॉन करता है, हुक इंस्टॉल करता है, फिर इसे रिज़्यूम करता है।
ट्रिगर। डेमो ऐप में RUN ATTESTATION पर टैप करें। बैकएंड मान्य लौटाता है: रिले की गई श्रृंखला एक लॉक किए हुए बूटलोडर की रिपोर्ट करती है।
नेगेटिव कंट्रोल। control.py रोकें और फिर से RUN ATTESTATION पर टैप करें।
डेमो ऐप अब रूटेड डिवाइस की अपनी श्रृंखला भेजता है और बैकएंड इसे अस्वीकार कर देता
है। यह वह जांच है जिसे रिले हरा देता है।
एजेंट को पुनर्निर्मित करना (केवल यदि आप agent/agent.ts बदलते हैं):
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
कॉपीराइट 2026 Quarkslab। MIT लाइसेंस के तहत लाइसेंस प्राप्त। LICENSE देखें।
यह रिपॉजिटरी एक Quarkslab लेख को उदाहरण के रूप में दिखाती है।