
एंड्रॉइड मोबाइल डिवाइस हार्डनिंग
एंड्रॉइड मोबाइल डिवाइस हार्डनिंग, python3 में लिखा गया।
एंड्रॉइड संस्करण, PObY-A (Privacy Owned by You - Android), मैलवेयर और सेटिंग्स स्कैन के साथ, Play Store पर उपलब्ध है और स्रोत कोड यहाँ पाया जा सकता है
AMDH को Android उपकरणों पर स्थापित अनुप्रयोगों की स्कैनिंग को स्वचालित करने, कुछ ज्ञात मैलवेयर का पता लगाने और गोपनीयता की रक्षा करने में मदद के लिए बनाया गया था।
$ git clone https://github.com/SecTheTech/AMDH.git; cd AMDH
$ python3 -m venv amdh
$ source amdh/bin/activate
(amdh) $ pip install -r requirement.txt
नोट: विंडोज के लिए आपको ADB पथ निर्दिष्ट करना होगा या "config/main.py" में चर "adb_windows_path" संपादित करना होगा।
चेतावनी: -l तर्क का उपयोग करते समय सक्षम अनुप्रयोग '-t e' के साथ, सिस्टम ऐप सूचीबद्ध होंगे। सिस्टम ऐप को अनइंस्टॉल करने से आपका Android सिस्टम टूट सकता है। सिस्टम ऐप के लिए 'अनइंस्टॉल' के बजाय 'अक्षम' का उपयोग अनुशंसित है।
$ python amdh.py -h
usage: amdh.py [-h] [-d DEVICES] [-sS] [-sA] [-H] [-a ADB_PATH] [-t {e,d,3,s}] [-D APKS_DUMP_FOLDER]
[-rar] [-R] [-l] [-P] [-S SNAPSHOT_DIR] [-cS SNAPSHOT_REPORT] [-rS SNAPSHOT_TO_RESTORE] [-o OUTPUT_DIR]
Android Mobile Device Hardening
optional arguments:
-h, --help show this help message and exit
-d DEVICES, --devices DEVICES
list of devices separated by comma or "ALL" for all connected devices
-sS Scan the system settings
-sA Scan the installed applications
-H Harden system settings /!\ Developer Options and ADB will be disabled /!\
-a ADB_PATH, --adb-path ADB_PATH
Path to ADB binary
-t {e,d,3,s} Type of applications:
e: enabled Apps
d: disabled Apps
3: Third party Apps
s: System Apps
-D APKS_DUMP_FOLDER, --dump-apks APKS_DUMP_FOLDER
Dump APKs from device to APKS_DUMP_FOLDER directory
-rar Remove admin receivers: Remove all admin receivers if the app is not a system App
Scan application option "-sA" is required
-R For each app revoke all dangerous permissions
Scan application option "-sA" is required
-l List numbered applications to disable, uninstall or analyze
-P List current users processes
-S SNAPSHOT_DIR, --snapshot SNAPSHOT_DIR
Snapshot the current state of the phone to a json file and backup applications into SNAPSHOT_DIR
-cS SNAPSHOT_REPORT, --cmp-snapshot SNAPSHOT_REPORT
Compare SNAPSHOT_REPORT with the current phone state
-rS SNAPSHOT_TO_RESTORE, --restore-snapshot SNAPSHOT_TO_RESTORE
Restore SNAPSHOT_TO_RESTORE
-o OUTPUT_DIR, --output-dir OUTPUT_DIR
Output directory for reports and logs. Default: out
दी गई अनुमतियों की तुलना फ़ाइल malware_perms.json में वर्णित अनुमतियों से करें। फ़ाइल में तीन नोड हैं:
केवल मैलवेयर अनुमतियाँ वे हैं जो केवल मैलवेयर द्वारा उपयोग की जाती हैं। विश्लेषित मैलवेयर निम्नलिखित रिपॉजिटरी से हैं:
कमांड "aapt" का उपयोग अनुमतियाँ डंप करने के लिए किया गया था। दूसरा भाग वैध ऐप्स (लगभग 400 ऐप) की अनुमतियाँ डंप करना था। केवल मैलवेयर अनुमतियाँ वे अनुमतियाँ हैं जो मैलवेयर द्वारा उपयोग की जाती हैं और विश्लेषित वैध अनुप्रयोगों में कभी प्रकट नहीं होती हैं।
सभी अनुमतियाँ मैलवेयर और वैध अनुप्रयोगों दोनों द्वारा उपयोग की जाती हैं। मान प्रतिशत हैं कि वैध ऐप्स की तुलना में मैलवेयर ने इन अनुमतियों का कितना उपयोग किया।
स्नैपशॉट सिस्टम स्थिति की निगरानी और फोन डेटा का बैकअप लेने में मदद कर सकता है:
स्कैन
(amdh)$ python amdh.py -d SERIAL1,SERIAL2,SERIAL3 -sA -o reports
प्रत्येक डिवाइस के लिए "reports" फ़ोल्डर में दो फ़ाइलें उत्पन्न होती हैं:
{
"com.package.name": {
"malware": true,
"permissions": {
"all_permissions": [
"com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE",
"com.google.android.c2dm.permission.RECEIVE",
"com.google.android.providers.gsf.permission.READ_GSERVICES",
"android.permission.WRITE_SYNC_SETTINGS",
"android.permission.RECEIVE_BOOT_COMPLETED",
"android.permission.AUTHENTICATE_ACCOUNTS"
],
"dangerous_perms": {
"android.permission.ACCESS_FINE_LOCATION": "This app can get your location based on GPS or network location sources such as cell towers and Wi-Fi networks. These location services must be turned on and available on your phone for the app to be able to use them. This may increase battery consumption.",
"android.permission.READ_EXTERNAL_STORAGE": "Allows the app to read the contents of your SD card.",
"android.permission.ACCESS_COARSE_LOCATION": "This app can get your location based on network sources such as cell towers and Wi-Fi networks. These location services must be turned on and available on your phone for the app to be able to use them.",
"android.permission.CAMERA": "This app can take pictures and record videos using the camera at any time.",
"android.permission.WRITE_EXTERNAL_STORAGE": "Allows the app to write to the SD card."
},
"is_device_admin": false,
}
}
}
(amdh)$ python amdh.py -sS
"out" फ़ोल्डर में "SERIAL_report_settings.json" नाम से एक रिपोर्ट उत्पन्न होती है (डिफ़ॉल्ट आउटपुट फ़ोल्डर)।
हार्डन करें
(amdh)$ python amdh.py -sA -R -rar
स्कैन ऐप के समान रिपोर्ट, इन दो कुंजियों के अतिरिक्त:
"is_device_admin_revoked": true,
"revoked_dangerous_pemissions": "succeeded"
यदि ऐप डिवाइस प्रशासक नहीं है तो कुंजी
is_device_admin_revokedपरिणाम में नहीं होगी
(amdh)$ python amdh.py -sS -H -o reports
"reports" निर्देशिका में एक रिपोर्ट और लॉग फ़ाइल उत्पन्न होती है।
स्थैतिक विश्लेषण और एकाधिक ऐप अनइंस्टॉल/अक्षम करें (इंटरैक्टिव)
(amdh)$ python amdh.py -l
वर्तमान चल रही उपयोगकर्ता प्रक्रियाओं को सूचीबद्ध करें
(amdh)$ python amdh.py -P -d SERIAL1,SERIAL2
स्नैपशॉट
(amdh)$ python amdh.py -S out
[-] INFO: Start ...
Unlock device SERIAL and press ENTER key to continue
[-] INFO: Finished
फ़ोल्डर "out" में एक उपफ़ोल्डर "SERIAL_DATE-TIME" होगा। जहाँ DATE-TIME "YYYY-MM-DD-hh:mm:ss" प्रारूप में है।
स्नैपशॉट तुलना
(amdh)$ python amdh.py -cS out/report.json
[-] INFO: Start ...
[-] INFO: Installed Apps after snapshot was taken
{}
[-] INFO: Apps exists in snapshot
{
"com.package.name1": {
"firstInstallTime": "2020-07-06 18:53:07",
"lastUpdateTime": "2020-07-06 18:53:07",
"grantedPermissions": [
"com.google.android.c2dm.permission.RECEIVE",
"android.permission.USE_CREDENTIALS",
"android.permission.MODIFY_AUDIO_SETTINGS",
"com.google.android.providers.gsf.permission.READ_GSERVICES",
"android.permission.MANAGE_ACCOUNTS",
"android.permission.NFC"
],
"deviceAdmin": false,
"apk": "com.package.name1.apk"
},
"com.package.name2": {
"firstInstallTime": "2020-07-10 23:57:53",
"lastUpdateTime": "2020-07-10 23:57:53",
"grantedPermissions": [
"android.permission.DOWNLOAD_WITHOUT_NOTIFICATION",
"com.google.android.c2dm.permission.RECEIVE",
"android.permission.USE_CREDENTIALS",
"android.permission.MODIFY_AUDIO_SETTINGS",
"org.thoughtcrime.securesms.ACCESS_SECRETS",
"android.permission.ACCESS_NOTIFICATION_POLICY",
"android.permission.CHANGE_NETWORK_STATE",
"android.permission.FOREGROUND_SERVICE",
"android.permission.WRITE_SYNC_SETTINGS"
],
"deviceAdmin": false,
"backup": "com.package.name2.ab",
"apk": "com.package.name2.apk"
}
}
[-] INFO: Uninstalled after snapshot was taken
{
"com.package.name3": {
"firstInstallTime": "2020-07-18 07:56:44",
"lastUpdateTime": "2020-07-18 07:56:44",
"grantedPermissions": [
"android.permission.INTERNET",
"android.permission.ACCESS_NETWORK_STATE"
],
"deviceAdmin": false,
"backup": "com.package.name3.ab",
"apk": "com.package.name3.apk"
}
}
[-] INFO: Changed settings after snapshot was taken
{
"global": [
"stay_on_while_plugged_in"
],
"secure": [],
"system": []
}
स्नैपशॉट पुनर्स्थापना : ऐप्स
(amdh)$ python amdh.py -d SERIAL -rS out/report.json
[-] INFO: Start ...
Unlock device SERIAL and press ENTER key to continue
[-] INFO: Starting restore
[-] INFO: Restore finished
[-] INFO: Restore report
{
"apps": {
{
"com.package.name1": {
"install": "success",
"backup": "restored"
},
"com.package.name2": {
"install": "success",
"backup": "NOT FOUND"
},
"com.package.name3": {
"install": "success",
"backup": "restored"
}
}
}
}
(amdh) $ pip install pyinstaller
(amdh) $ pyinstaller --clean amdh.spec
आउटपुट बाइनरी: dist/amdh।
इस परियोजना में रुचि दिखाने के लिए धन्यवाद! यदि आपके पास इस उपकरण को बेहतर बनाने के बारे में कोई विचार है, तो कृपया नई समस्या बनाएं या पुल रिक्वेस्ट भेजें।