Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
AMDH — Android 모바일 기기 강화 | Kitploit
도구/GitHubGitHub/a-yatta/amdh
Android SecurityStatic AnalysisMobile App PentestingConfiguration AuditingForensicsMalware AnalysisMobile Security
GitHuba-yatta/amdh

AMDH

Android 모바일 기기 강화

저장소 보기
222273년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

AMDH

Android Mobile Device Hardening (안드로이드 모바일 기기 강화) - python3로 작성됨.

Android 버전, PObY-A (Privacy Owned by You - Android)는 Play 스토어에서 이용 가능하며, 맬웨어 및 설정 스캔 기능을 제공합니다. 소스 코드는 여기에서 확인할 수 있습니다.

동기

AMDH는 Android 기기에 설치된 애플리케이션을 자동으로 스캔하고, 알려진 일부 맬웨어를 탐지하며, 프라이버시를 보호하기 위해 만들어졌습니다.

기능

  • CIS(인터넷 보안 센터) Android 기기 벤치마크 검사 및 Android 마스터 브랜치 설정 문서 (Global 설정 및 Secure 설정)를 기반으로 시스템 설정 확인 및 강화
  • 현재 사용자 프로세스 목록 표시 및 선택된 프로세스 종료
  • 기기에 설치된 현재 애플리케이션 분석:
    • 위험한 권한 목록 표시 및 철회
    • 맬웨어가 사용하는 권한과 비교
    • 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 시스템이 손상될 수 있습니다. 시스템 앱의 경우 '제거' 대신 '비활성화'를 사용하는 것이 좋습니다.

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 (안드로이드 모바일 기기 강화)

선택적 인수:
  -h, --help            도움말 메시지 출력 후 종료
  -d DEVICES, --devices DEVICES
                        쉼표로 구분된 기기 목록 또는 "ALL" (연결된 모든 기기)
  -sS                   시스템 설정 스캔
  -sA                   설치된 애플리케이션 스캔
  -H                    시스템 설정 강화 /!\ 개발자 옵션 및 ADB가 비활성화됩니다 /!\
  -a ADB_PATH, --adb-path ADB_PATH
                        ADB 바이너리 경로
  -t {e,d,3,s}          애플리케이션 유형:
                                e: 활성화된 앱
                                d: 비활성화된 앱
                                3: 타사 앱
                                s: 시스템 앱
  -D APKS_DUMP_FOLDER, --dump-apks APKS_DUMP_FOLDER
                        기기에서 APK를 APKS_DUMP_FOLDER 디렉터리로 덤프
  -rar                  관리자 수신자 제거: 앱이 시스템 앱이 아닌 경우 모든 관리자 수신자 제거
                        스캔 애플리케이션 옵션 "-sA" 필요
  -R                    각 앱에 대해 모든 위험한 권한 철회
                        스캔 애플리케이션 옵션 "-sA" 필요
  -l                    번호가 매겨진 애플리케이션 목록 표시 (비활성화, 제거 또는 분석용)
  -P                    현재 사용자 프로세스 목록
  -S SNAPSHOT_DIR, --snapshot SNAPSHOT_DIR
                        현재 전화 상태를 JSON 파일로 스냅샷하고 애플리케이션을 SNAPSHOT_DIR에 백업
  -cS SNAPSHOT_REPORT, --cmp-snapshot SNAPSHOT_REPORT
                        SNAPSHOT_REPORT를 현재 전화 상태와 비교
  -rS SNAPSHOT_TO_RESTORE, --restore-snapshot SNAPSHOT_TO_RESTORE
                        SNAPSHOT_TO_RESTORE 복원
  -o OUTPUT_DIR, --output-dir OUTPUT_DIR
                        보고서 및 로그를 위한 출력 디렉터리. 기본값: out

문서 및 도움말

테스트 및 CIS 버전

  • Android 7.1.1, 8, 9 및 10에서 테스트됨
  • CIS 버전: 1.3.0

맬웨어 탐지

부여된 권한을 파일 malware_perms.json에 설명된 권한과 비교합니다. 이 파일에는 세 개의 노드가 포함되어 있습니다:

  • malware_only: 맬웨어만 사용하는 권한
  • all: 맬웨어 및 합법적인 앱이 사용하는 권한
  • combinations: 주로 맬웨어가 사용하는 권한 조합

맬웨어 전용 권한

맬웨어 전용 권한은 맬웨어만 사용하는 권한입니다. 분석된 맬웨어는 다음 저장소의 것들입니다:

  • 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개)의 권한을 덤프하는 것이었습니다. 맬웨어 전용 권한은 맬웨어가 사용하며 분석된 합법적인 애플리케이션에는 절대 나타나지 않는 권한입니다.

모든 권한

모든 권한은 맬웨어와 합법적인 애플리케이션 모두에서 사용됩니다. 값은 맬웨어가 이러한 권한을 합법적인 앱과 비교하여 얼마나 많이 사용했는지의 백분율입니다.

정적 분석

  • androguard를 사용하여 패킹된 APK의 위험한 권한을 찾고, 덤프하고, 나열
  • pwntools를 사용하여 라이브러리 덤프 및 알려진 맬웨어 네이티브 함수 스캔

스냅샷

스냅샷은 시스템 상태를 모니터링하고 전화 데이터를 백업하는 데 도움이 될 수 있습니다:

  • 애플리케이션 및 해당 권한
  • 시스템 설정
  • 연락처
  • SMS

알려진 문제

  • "pm revoke" 명령이 일부 맬웨어에 대해 종료 성공 코드를 반환하지만 권한을 철회하지 않습니다.
  • 일부 기기에서 ADB 셸이 SMS 데이터베이스에 접근할 권한이 없어 SMS 백업이 실패할 수 있습니다. 문제가 발생하면 이슈를 생성해 주세요.

예제

스캔

  • 애플리케이션 스캔
root@kitploit:~
(amdh)$ python amdh.py -d SERIAL1,SERIAL2,SERIAL3 -sA -o reports

각 기기에 대해 "reports" 폴더에 두 개의 파일이 생성됩니다:

  • 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": "이 앱은 GPS 또는 셀 타워 및 Wi-Fi 네트워크와 같은 네트워크 위치 소스를 기반으로 사용자의 위치를 확인할 수 있습니다. 이러한 위치 서비스는 앱이 이를 사용할 수 있도록 휴대폰에서 켜져 있고 사용 가능해야 합니다. 배터리 소모가 증가할 수 있습니다.",
                "android.permission.READ_EXTERNAL_STORAGE": "앱이 SD 카드의 내용을 읽을 수 있도록 허용합니다.",
                "android.permission.ACCESS_COARSE_LOCATION": "이 앱은 셀 타워 및 Wi-Fi 네트워크와 같은 네트워크 소스를 기반으로 사용자의 위치를 확인할 수 있습니다. 이러한 위치 서비스는 앱이 이를 사용할 수 있도록 휴대폰에서 켜져 있고 사용 가능해야 합니다.",
                "android.permission.CAMERA": "이 앱은 언제든지 카메라를 사용하여 사진을 찍고 동영상을 녹화할 수 있습니다.",
                "android.permission.WRITE_EXTERNAL_STORAGE": "앱이 SD 카드에 쓸 수 있도록 허용합니다."
            },
            "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

스캔 앱과 동일한 보고서에 다음 두 키가 추가됩니다:

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: 시작 중 ...
기기 SERIAL의 잠금을 해제하고 ENTER 키를 눌러 계속하세요
[-] INFO: 완료

"out" 폴더에는 "SERIAL_DATE-TIME" 형식의 하위 폴더가 포함됩니다. 여기서 DATE-TIME은 "YYYY-MM-DD-hh:mm:ss" 형식입니다.

스냅샷 비교

root@kitploit:~
(amdh)$ python amdh.py -cS out/report.json
[-] INFO: 시작 중 ...

[-] INFO: 스냅샷 생성 후 설치된 앱
{}
[-] INFO: 스냅샷에 존재하는 앱
{
    "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: 스냅샷 생성 후 제거된 앱
{
    "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: 스냅샷 생성 후 변경된 설정
{
    "global": [
        "stay_on_while_plugged_in"
    ],
    "secure": [],
    "system": []
}

스냅샷 복원: 앱

root@kitploit:~
(amdh)$ python amdh.py -d SERIAL -rS out/report.json
[-] INFO: 시작 중 ...
기기 SERIAL의 잠금을 해제하고 ENTER 키를 눌러 계속하세요
[-] INFO: 복원 시작
[-] INFO: 복원 완료
[-] INFO: 복원 보고서
{
    "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.

참여 및 아이디어

이 프로젝트에 관심을 가져주셔서 감사합니다! 이 도구를 개선할 아이디어가 있으시면 새 이슈를 생성하거나 풀 리퀘스트를 보내주세요.

도구 다운로드