Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
AMDH — Androidモバイルデバイスの堅牢化 | Kitploit
ツール/GitHubGitHub/a-yatta/amdh
Androidセキュリティ静的分析モバイルアプリペンテスト構成監査フォレンジックマルウェア分析モバイルセキュリティ
GitHuba-yatta/amdh

AMDH

Androidモバイルデバイスの堅牢化

リポジトリを見る
2222743年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

AMDH

Androidモバイルデバイスのハードニングツール(Python3製)。

Android版のPObY-A(Privacy Owned by You - Android)は、マルウェアと設定のスキャン機能を備え、Playストアで入手可能です。ソースコードはこちらで見つかります。

Google Playで入手

動機

AMDHは、Androidデバイス上のインストール済みアプリケーションのスキャンを自動化し、既知のマルウェアを検出し、プライバシーを保護するために作成されました。

機能

  • Androidデバイス向けCIS(インターネットセキュリティセンター)ベンチマークチェックとAndroidマスターブランチの設定ドキュメントに基づいて、システム設定をチェックしハードニングします(グローバル設定およびセキュア設定)。
  • 現在のユーザープロセスを一覧表示し、選択したプロセスを強制終了します。
  • デバイスにインストールされている現在のアプリケーションを分析します:
    • 危険な権限を一覧表示し、取り消します。
    • マルウェアが使用する権限と比較します。
    • JSON形式でレポートを生成します。
  • アプリケーションを一覧表示します:
    • アプリのアンインストール/無効化
    • 管理者レシーバーの取り消し
  • インストール済みアプリのAPKをダンプします。
  • システムに保留中のアップデートがあるか確認します。
  • パックされたAPKが存在する場合は抽出します。
  • マルウェア検出のための静的解析。現在検出可能なマルウェア:
    • ActionSpy
    • WolfRat
    • Anubis
  • 現在の電話状態をJSONファイルにスナップショットします:
    • アプリケーション:
      • APK
      • 初回インストール時刻
      • 最終更新時刻
      • 現在の権限
      • アプリがデバイス管理者かどうか
    • SMS:現在のSMSメッセージ
    • 連絡先:現在の連絡先一覧
    • バックアップが有効なアプリケーションのバックアップ
  • スナップショットと現在の電話状態の比較
    • アプリケーション
    • 設定
  • スナップショットの復元
    • アプリケーション
    • 連絡先
  • 複数デバイスを同時に管理(スナップショット比較と復元は未対応)
    • 各デバイスごとに新しいスレッドが作成されます。
  • HTMLレポート

必要条件

  • Python3
  • Android Debug Bridge(ADB)がインストールされていること
  • androguard
  • pwntools

インストール

root@kitploit:~
$ git clone https://github.com/SecTheTech/AMDH.git; cd AMDH
$ python3 -m venv amdh
$ source amdh/bin/activate
(amdh) $ pip install -r requirement.txt

使い方

注意:Windowsの場合は、ADBのパスを指定するか、config/main.py内の変数adb_windows_pathを編集してください。

警告:-l引数を使用し、-t eで有効なアプリケーションを指定すると、システムアプリが一覧表示されます。システムアプリのアンインストールはAndroidシステムを破壊する可能性があります。システムアプリではuninstallではなくdisableを使用することを推奨します。

root@kitploit:~
$ 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

ドキュメントとヘルプ

テストとCISバージョン

  • Android 7.1.1、8、9、10でテスト済み
  • CISバージョン:1.3.0

マルウェア検出

付与された権限をファイルmalware_perms.jsonに記述された権限と比較します。このファイルには3つのノードが含まれています:

  • malware_only:マルウェアのみが使用する権限
  • all:マルウェアと正規アプリの両方が使用する権限
  • combinations:主にマルウェアが使用する権限の組み合わせ

malware_only権限

malware_only権限は、マルウェアのみが使用する権限です。分析されたマルウェアは以下のリポジトリからのものです:

  • https://github.com/ashishb/android-malware
  • https://github.com/sk3ptre/AndroidMalware_2018
  • https://github.com/sk3ptre/AndroidMalware_2019
  • https://github.com/sk3ptre/AndroidMalware_2020
  • https://github.com/MalwareSamples/Android-Malware-Samples

権限のダンプにはコマンドaaptが使用されました。次に、正規アプリ(約400アプリ)の権限をダンプしました。malware_only権限とは、マルウェアが使用し、分析された正規アプリケーションには決して現れない権限です。

すべての権限

すべての権限は、マルウェアと正規アプリケーションの両方で使用されます。値は、マルウェアがこれらの権限を正規アプリと比較してどの程度使用したかの割合です。

静的解析

  • androguardを使用して、パックされたAPKの危険な権限を見つけ、ダンプし、一覧表示します。
  • pwntoolsを使用してライブラリをダンプし、既知のマルウェアネイティブ関数をスキャンします。

スナップショット

スナップショットは、システム状態を監視し、電話データをバックアップするのに役立ちます:

  • アプリケーションとその権限
  • システム設定
  • 連絡先
  • SMS

既知の問題

  • pm revokeコマンドは終了コード成功を返しますが、一部のマルウェアに対して権限を取り消しません。
  • 一部のデバイスでは、ADBシェルがSMSデータベースにアクセスする権限を持たないため、SMSのバックアップに失敗する場合があります。この問題が発生した場合は、issueを作成してください。

例

スキャン

  • アプリケーションのスキャン
root@kitploit:~
(amdh)$ python amdh.py -d SERIAL1,SERIAL2,SERIAL3 -sA -o reports

reportsフォルダ内に各デバイスにつき2つのファイルが生成されます:

  • SERIAL.log
  • SERIAL_report_apps.json:各アプリに対して、付与されている権限と危険とみなされる権限を含むJSONファイル。 各エントリは次のようになります:
root@kitploit:~
{
    "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,
        }
    }
}
  • 設定のスキャン
root@kitploit:~
(amdh)$ python amdh.py -sS

レポートはoutフォルダ(デフォルトの出力フォルダ)内にSERIAL_report_settings.jsonという名前で生成されます。

ハードニング

  • アプリケーションのハードニング
root@kitploit:~
(amdh)$ python amdh.py -sA -R -rar

アプリスキャンと同じレポートに、以下の2つのキーが追加されます:

root@kitploit:~
   "is_device_admin_revoked": true,
   "revoked_dangerous_pemissions": "succeeded"

アプリがデバイス管理者でない場合、キーis_device_admin_revokedは結果に含まれません。

  • 設定のハードニング
root@kitploit:~
(amdh)$ python amdh.py -sS -H -o reports

reportsディレクトリにレポートとログファイルが生成されます。

静的解析と複数アプリのアンインストール/無効化(対話式)

root@kitploit:~
(amdh)$ python amdh.py -l

現在実行中のユーザープロセスの一覧表示

root@kitploit:~
(amdh)$ python amdh.py -P -d SERIAL1,SERIAL2

スナップショット

root@kitploit:~
(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形式です。

スナップショット比較

root@kitploit:~
(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": []
}

スナップショット復元:アプリ

root@kitploit:~
(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"
            }
        }
    }
}

バイナリのビルド

root@kitploit:~
(amdh) $ pip install pyinstaller 
(amdh) $ pyinstaller --clean amdh.spec

出力バイナリ: dist/amdh。

参加とアイデア

このプロジェクトに興味を持っていただきありがとうございます!このツールを改善するためのアイデアがあれば、新しいissueを作成するか、プルリクエストを送信してください。

ツールをダウンロード