
androidqf (Android Quick Forensics) एंड्रॉइड उपकरणों से फोरेंसिक साक्ष्य तेजी से एकत्र करने में मदद करता है, ताकि समझौता के संभावित निशानों की पहचान की जा सके।
androidqf (Android Quick Forensics) एक पोर्टेबल उपकरण है जो Android उपकरणों से प्रासंगिक फोरेंसिक डेटा के अधिग्रहण को सरल बनाता है।
androidqf का उद्देश्य Android उपकरणों से शीघ्रता से डेटा प्राप्त करने के लिए एक सरल और पोर्टेबल क्रॉस-प्लेटफ़ॉर्म उपयोगिता प्रदान करना है। यह कार्यक्षमता में mvt-android के समान है। हालाँकि, MVT के विपरीत, androidqf को गैर-तकनीकी उपयोगकर्ताओं द्वारा भी आसानी से चलाने के लिए डिज़ाइन किया गया है। androidqf द्वारा निकाला गया डेटा MVT से विश्लेषित किया जा सकता है।
यह रिपॉजिटरी Amnesty International की सुरक्षा प्रयोगशाला द्वारा अनुरक्षित androidqf का एक फोर्क है। androidqf उपकरण मूल रूप से Claudio Guarnieri द्वारा विकसित किया गया था।

Linux, Windows और Mac के लिए निष्पादन योग्य बाइनरी नवीनतम रिलीज़ में उपलब्ध होने चाहिए। यदि आपको बाइनरी चलाने में समस्या हो तो आप इसे स्वयं बनाना चाह सकते हैं।
यह प्रोजेक्ट स्वचालित निर्माण और रिलीज़ के लिए GoReleaser का उपयोग करता है। स्थानीय रूप से निर्माण करने के लिए:
GoReleaser स्थापित करें:
go install github.com/goreleaser/goreleaser@latest
एक स्नैपशॉट निर्माण चलाएं (प्रकाशन नहीं):
./build_locally.sh
यह सभी प्लेटफ़ॉर्म के लिए dist/ निर्देशिका में बाइनरी बनाएगा, जिसमें macOS के लिए एक यूनिवर्सल बाइनरी शामिल है जो Intel और Apple Silicon दोनों पर काम करती है।
आप अभी भी पारंपरिक Makefile दृष्टिकोण का उपयोग कर सकते हैं। आपको Go 1.23+ स्थापित होना चाहिए, साथ ही make, git, unzip और wget भी। AndroidQF में एक क्रॉस-संकलित collector शामिल है जो लक्ष्य डिवाइस पर चलता है ताकि फोरेंसिक रूप से प्रासंगिक जानकारी अधिक विश्वसनीय रूप से निकाली जा सके।
पहले collector मॉड्यूल बनाएं:
make collector
फिर अपनी पसंद के प्लेटफ़ॉर्म के लिए AndroidQF संकलित करें:
make linux
make darwin
make windows
ये आदेश build/ फ़ोल्डर में बाइनरी उत्पन्न करेंगे।
वितरण पैकेज unbundle बिल्ड टैग के साथ निर्माण करके बंडल किए गए ADB और collector बाइनरी को एम्बेड करने से ऑप्ट आउट कर सकते हैं:
go build -tags unbundle -o build/
जब यह टैग सक्षम होता है, तो androidqf अपेक्षा करता है:
adb सिस्टम PATH से उपलब्ध हो।/usr/lib/androidqf/android-collector/ के अंतर्गत androidqf द्वारा अपेक्षित नामों जैसे collector_arm और collector_arm64 के साथ स्थापित हों।पैकेजर्स निर्माण से पहले assets/ से बंडल बाइनरी संपत्तियों को हटा सकते हैं, लेकिन assets/ पैकेज निर्देशिका और उसकी Go स्रोत फ़ाइलें मौजूद रहनी चाहिए। unbundle बिल्ड अभी भी assets पैकेज को आयात करता है, और यदि पूरी assets/ निर्देशिका हटा दी जाती है तो निर्माण विफल हो जाएगा।
रिलीज़ कंटेनर छवि GitHub Container Registry पर प्रकाशित की गई है:
docker pull ghcr.io/mvt-project/androidqf:latest
Linux पर USB-कनेक्टेड Android डिवाइस से डेटा एकत्र करने के लिए, USB बस को पास-थ्रू करें और एक आउटपुट निर्देशिका माउंट करें:
docker run --rm -it --privileged \
-v /dev/bus/usb:/dev/bus/usb \
-v "$(pwd)/output:/output" \
ghcr.io/mvt-project/androidqf:latest -fast -output /output
आप रिलीज़ किए गए संस्करण के लिए स्थानीय रूप से भी छवि बना सकते हैं:
docker build --build-arg VERSION=1.8.3 -t androidqf .
[!TIP] संग्रह प्रारूप, अखंडता हैश, एन्क्रिप्शन और बड़ी फ़ाइल हैंडलिंग के लिए अधिग्रहण संग्रह देखें। एकत्रित फ़ाइलों के शब्दकोश के लिए, तृतीय-पक्ष SocialTIC AndroidQF आउटपुट फ़ाइल शब्दकोश देखें।
androidqf लॉन्च करने से पहले आपके पास लक्ष्य Android डिवाइस USB के माध्यम से आपके कंप्यूटर से जुड़ा होना चाहिए, और आपने USB डिबगिंग सक्षम किया होना चाहिए। कृपया इसे करने के तरीके पर आधिकारिक दस्तावेज़ीकरण देखें, लेकिन यह भी ध्यान रखें कि विभिन्न निर्माताओं के Android फ़ोनों में डिफ़ॉल्ट से भिन्न नेविगेशन चरणों की आवश्यकता हो सकती है।
USB डिबगिंग सक्षम होने के बाद, आप androidqf लॉन्च कर सकते हैं। यह पहले USB ब्रिज पर डिवाइस से कनेक्ट करने का प्रयास करेगा, जिसके परिणामस्वरूप Android फ़ोन आपको मैन्युअल रूप से होस्ट कुंजियों को अधिकृत करने का संकेत देगा। उन्हें अधिकृत करना सुनिश्चित करें, आदर्श रूप से स्थायी रूप से ताकि संकेत फिर से प्रकट न हो।
अब androidqf निष्पादित होना चाहिए और आपकी वर्तमान कार्यशील निर्देशिका में, या -output के साथ प्रदान की गई निर्देशिका में एक अधिग्रहण ज़िप संग्रह बनाना चाहिए। निष्पादन के किसी बिंदु पर, androidqf आपको कुछ विकल्पों के लिए संकेत देगा: ये संकेत तब तक अधिग्रहण को रोक देंगे जब तक आप एक चयन प्रदान नहीं करते, इसलिए ध्यान दें।
निम्नलिखित डेटा निकाला जा सकता है:
प्रत्येक अधिग्रहण में acquisition.json, command.log (जब लॉग आउटपुट उत्पन्न हुआ हो), और hashes.csv भी शामिल होता है। हैश सूची पिछले प्रत्येक सादा पाठ संग्रह प्रविष्टि के SHA-256 डाइजेस्ट को रिकॉर्ड करती है और स्वयं को शामिल नहीं करती है। असफल डिवाइस पुल को संग्रह प्रविष्टियों के रूप में प्रतिबद्ध नहीं किया जाता है। विवरण के लिए अधिग्रहण संग्रह देखें।
androidqf संग्रह चलाते समय निम्नलिखित विकल्प प्रस्तुत किए जाते हैं:
क्या आप डिवाइस का बैकअप लेना चाहेंगे?
...
? बैकअप:
▸ केवल SMS
सब कुछ
कोई बैकअप नहीं
ये विकल्प पृष्ठभूमि में adb backup कमांड चलाकर डिवाइस से एकत्र किए गए डेटा को संदर्भित करते हैं। यदि "कोई बैकअप नहीं" चुना जाता है, तो adb backup कमांड नहीं चलाया जाता है।
| विकल्प | स्पष्टीकरण |
|---|---|
| केवल SMS | चलाया जाता है। केवल से डेटा एकत्र किया जाता है। इसमें SMS डेटाबेस शामिल है। |
क्या आप सभी ऐप्स या केवल गैर-सिस्टम वाले ऐप्स की प्रतियां डाउनलोड करना चाहेंगे?
? डाउनलोड करें:
▸ सभी
केवल गैर-सिस्टम पैकेज
कोई भी डाउनलोड न करें
| विकल्प | स्पष्टीकरण |
|---|---|
| सभी | सभी स्थापित पैकेज फ़ोन से प्राप्त किए जाएंगे |
| केवल गैर-सिस्टम पैकेज | adb pm list packages -s में सूचीबद्ध किसी भी पैकेज को डाउनलोड न करें |
| कोई भी डाउनलोड न करें | कोई भी पैकेज डाउनलोड न करें |
क्या आप डिवाइस के इंट्रूज़न लॉग लेना चाहेंगे?
? इंट्रूज़न लॉग:
▸ हाँ
नहीं
| विकल्प | स्पष्टीकरण |
|---|---|
| हाँ | इंट्रूज़न लॉग फ़ोन से प्राप्त किए जाएंगे। |
| नहीं | इंट्रूज़न लॉग अधिग्रहण छोड़ दिया जाता है। |
androidqf अधिग्रहणों को अनएन्क्रिप्टेड ड्राइव पर ले जाना आपको, और विशेष रूप से जिनसे आपने डेटा प्राप्त किया है, महत्वपूर्ण जोखिम में डाल सकता है। उदाहरण के लिए, आपको किसी समस्याग्रस्त सीमा पर रोका जा सकता है और आपकी androidqf ड्राइव जब्त की जा सकती है। कच्चा डेटा न केवल आपकी यात्रा के उद्देश्य को उजागर कर सकता है, बल्कि इसमें संभवतः बहुत संवेदनशील डेटा (जैसे स्थापित अनुप्रयोगों की सूची, या यहां तक कि SMS संदेश) भी शामिल होगा।
आदर्श रूप से आपके पास पूरी तरह से एन्क्रिप्टेड ड्राइव होनी चाहिए, लेकिन यह हमेशा संभव नहीं हो सकता है। आप androidqf को VeraCrypt कंटेनर के अंदर रखने और इसे माउंट करने के लिए VeraCrypt की एक प्रतिलिपि साथ ले जाने पर भी विचार कर सकते हैं। हालाँकि, VeraCrypt कंटेनर आमतौर पर केवल एक पासवर्ड द्वारा संरक्षित होते हैं, जिसे प्रदान करने के लिए आपको मजबूर किया जा सकता है।
वैकल्पिक रूप से, androidqf प्रदान की गई age सार्वजनिक कुंजी के साथ प्रत्येक अधिग्रहण को एन्क्रिप्ट करने की अनुमति देता है। अधिमानतः, यह सार्वजनिक कुंजी एक कुंजी जोड़ी से संबंधित है जिसके लिए अंतिम उपयोगकर्ता के पास निजी कुंजी नहीं है, या कम से कम साथ नहीं ले जाता है। इस तरह, अंतिम उपयोगकर्ता दबाव में भी अधिग्रहित डेटा को डिक्रिप्ट करने में सक्षम नहीं होगा।
androidqf प्रत्येक अधिग्रहण को एक ज़िप संग्रह में स्ट्रीम करता है। यदि आप वर्तमान कार्यशील निर्देशिका में key.txt नामक एक फ़ाइल रखते हैं, तो androidqf ज़िप स्ट्रीम को age से एन्क्रिप्ट करेगा और <UUID>.zip.age लिखेगा; अन्यथा, यह एक अनएन्क्रिप्टेड <UUID>.zip लिखता है। androidqf निष्पादन योग्य के समान फ़ोल्डर में भी key.txt की जाँच करता है; यदि दोनों फ़ाइलें मौजूद हैं, तो वर्तमान कार्यशील निर्देशिका को प्राथमिकता दी जाती है।
एन्क्रिप्टेड अधिग्रहण एक सादा पाठ अधिग्रहण संग्रह नहीं बनाते हैं। डिवाइस फ़ाइलें जिन्हें एन्क्रिप्टेड संग्रह में जोड़ने से पहले मान्य किया जाना चाहिए, उन्हें प्रमाणित ChaCha20-Poly1305 एन्क्रिप्शन के साथ अस्थायी रूप से चरणबद्ध किया जाता है। पूर्ण डेटा प्रवाह और बड़े APK व्यवहार के लिए अधिग्रहण संग्रह देखें।
एक बार जब आप एक एन्क्रिप्टेड अधिग्रहण फ़ाइल प्राप्त कर लेते हैं, तो आप इसे age के साथ इस प्रकार डिक्रिप्ट कर सकते हैं:
$ age --decrypt -i ~/path/to/privatekey.txt -o <UUID>.zip <UUID>.zip.age
ध्यान रखें, यह हमेशा संभव है कि अनएन्क्रिप्टेड डेटा का कम से कम कुछ हिस्सा उन्नत फोरेंसिक तकनीकों के माध्यम से पुनर्प्राप्त किया जा सकता है - हालाँकि हम इसे कम करने के लिए काम कर रहे हैं।
androidqf का उद्देश्य उन लोगों के उपकरणों के सहमति-आधारित फोरेंसिक विश्लेषण को सुविधाजनक बनाना है जो परिष्कृत मोबाइल स्पाइवेयर हमलों के लक्ष्य हो सकते हैं, विशेष रूप से नागरिक समाज और हाशिए के समुदायों के सदस्य। हम नहीं चाहते कि androidqf गैर-सहमति वाले व्यक्तियों की गोपनीयता के उल्लंघन को सक्षम करे। इसलिए, इस लाइसेंस का उद्देश्य androidqf (और उसी तरह लाइसेंस प्राप्त किसी भी अन्य सॉफ़्टवेयर) के उपयोग को प्रतिकूल फोरेंसिक के उद्देश्य से प्रतिबंधित करना है।
इसे प्राप्त करने के लिए androidqf को MVT License 1.1 के तहत जारी किया गया है, जो Mozilla Public License v2.0 का एक अनुकूलन है। इस संशोधित लाइसेंस में एक नया खंड 3.0, "Consensual Use Restriction" शामिल है, जो लाइसेंस प्राप्त सॉफ़्टवेयर (और उससे व्युत्पन्न किसी भी "Larger Work") के उपयोग की अनुमति केवल उस व्यक्ति/व्यक्तियों के स्पष्ट सहमति से देता है जिनका डेटा निकाला और/या विश्लेषित किया जा रहा है ("Data Owner").
| डेटा | वैकल्पिक? | आउटपुट पथ |
|---|
| SMS और MMS संदेशों का पूर्ण बैकअप या बैकअप। | ✅ | backup.ab |
| getprop शेल कमांड का आउटपुट, जो बिल्ड जानकारी और कॉन्फ़िगरेशन पैरामीटर प्रदान करता है। | getprop.txt | |
| सभी सिस्टम सेटिंग्स | settings_*.txt | |
| ps शेल कमांड का आउटपुट, जो सभी चल रही प्रक्रियाओं की सूची प्रदान करता है। | processes.txt | |
| सिस्टम की सेवाओं की सूची। | services.txt | |
| सिस्टम से सभी लॉग की प्रतिलिपि। | logs/, logcat.txt | |
| dumpsys शेल कमांड का आउटपुट, जो डिवाइस के बारे में नैदानिक जानकारी प्रदान करता है। | dumpsys.txt | |
| स्थापित सभी पैकेजों और संबंधित वितरण फ़ाइलों की सूची। | packages.json | |
| स्थापित सभी APK की प्रतिलिपि या केवल उनकी जो सिस्टम ऐप के रूप में चिह्नित नहीं हैं। | ✅ | apks/* |
| इंट्रूज़न लॉगिंग लॉग। निजी डेटा जैसे नेविगेशन इतिहास शामिल हैं। | ✅ | intrusion_logs/* |
| सिस्टम पर फ़ाइलों की सूची। | files.json | |
| टेम्प फ़ोल्डरों में उपलब्ध फ़ाइलों की प्रतिलिपि। | tmp/* | |
| सिस्टम और ऐप-विशिष्ट लॉग वाली एक बग रिपोर्ट, जिसमें कोई निजी डेटा शामिल नहीं है। | bugreport.zip |
adb backup com.android.providers.telephonycom.android.providers.telephony| सब कुछ | adb backup -all चलाया जाता है। यह केवल उन ऐप्स के बैकअप का अनुरोध करता है जिन्होंने इस विधि के माध्यम से अपने डेटा के बैकअप की स्पष्ट रूप से अनुमति दी है। Android 12+ के बाद से, यह विधि लगभग सभी ऐप्स के लिए कुछ भी नहीं निकालती है। |
| कोई बैकअप नहीं | adb backup नहीं चलाया जाता है |