Android Penetration Test Check List


1. Static Analysis

Check Item Details Test Cases / Method Tools
Weak Signer Certificate The app is signed with a weak or compromised certificate (e.g., a debug certificate or one using a weak algorithm like SHA1withRSA). 1. Use apksigner or jarsigner to verify the certificate’s algorithm and details. <br> 2. Check for Janus vulnerability. <br> 3. Check if the certificate is a known public debug certificate. apksigner, jarsigner, Jadx
Source Code Obfuscation The app’s source code is not obfuscated, making it easy to reverse engineer. 1. Decompile the APK and check if class, method, and variable names are readable or have been renamed to meaningless characters. Jadx, Ghidra, Bytecode-Viewer
Hardcoded Sensitive Information Sensitive data like API keys, tokens, or passwords are hardcoded directly in the source code or resource files. 1. Decompile the app and search the source code for keywords like API_KEY, token, password, secret. Jadx, MobSF, grep
Insecure Coding Practices The app uses insecure functions, weak random number generators, or weak encryption algorithms. 1. Review code for use of java.util.Random instead of SecureRandom. <br> 2. Look for weak crypto algorithms like MD5, SHA1, or Base64 used for encryption. Jadx, Ghidra
Missing Integrity Checks The app does not verify its own integrity, allowing for repackaging attacks. 1. Decompile the app, modify its code (e.g., Smali), recompile, sign it, and check if it still functions properly. apktool, apksigner
Insecure Manifest Configuration The AndroidManifest.xml file has insecure flags set, such as allowBackup=true or debuggable=true. 1. Review the manifest file for android:debuggable="true", android:allowBackup="true", and network_security_config allowing cleartext traffic. Jadx, apktool, MobSF

2. Dynamic Analysis

Check Item Details Test Cases / Method Tools
SSL Pinning The app does not properly verify the server’s SSL certificate, allowing for Man-in-the-Middle (MitM) attacks. 1. Intercept traffic to check if pinning is implemented. <br> 2. Use hooking frameworks to bypass pinning logic in common libraries (OkHttp, etc.). Burp Suite, Frida, Objection
Root Detection The app does not properly detect and prevent access by rooted devices, allowing for unauthorized access to data or functionality. 1. Run the app on a rooted device to check for detection. <br> 2. Use hooking frameworks to bypass functions that check for root indicators (e.g., su binary, specific packages). Frida, Xposed Framework, Magisk
Emulator Detection The app does not properly detect and prevent access by emulators, allowing users to bypass security controls. 1. Run the app on an emulator (Android Studio, Genymotion). <br> 2. Use Frida to hook and bypass functions that check for emulator-specific properties. Frida, Android Studio Emulator
Sensitive Data in Application Memory Unencrypted sensitive data is stored in the application’s memory, making it vulnerable to memory dumping attacks. 1. While the app is running, use memory dumping scripts to extract the app’s memory heap. <br> 2. Search the memory dump for sensitive strings. Frida, fridump.py, GameGuardian
Vulnerable Android Activities Activities are improperly configured, leading to auth bypass, hijacking, or Denial of Service. 1. Use adb or drozer to directly launch non-exported or protected activities, bypassing login screens. <br> 2. Check if activities can be hijacked or cause a crash. adb, drozer
WebView Vulnerabilities The app’s WebView component is insecurely configured, allowing for XSS, LFI, or remote code execution. 1. Check if JavaScript is enabled (setJavaScriptEnabled). <br> 2. Test for insecure addJavascriptInterface usage. <br> 3. Check for insecure file access flags. Frida, Drozer, Burp Suite
Insecure Intent Handling Intent data is not properly filtered or validated, leading to spoofing, sniffing, or redirection vulnerabilities. 1. Use drozer to craft and send malicious intents to exported components. <br> 2. Check for vulnerabilities related to PendingIntent or sticky broadcasts. drozer, adb
Vulnerable Broadcast Receivers An exported broadcast receiver without proper permission checks can be triggered by any app on the device. 1. Identify exported receivers in the manifest. <br> 2. Use drozer or adb to send a broadcast intent and trigger the receiver. drozer, adb, Jadx
Insecure Content Provider Content providers leak information due to missing security controls, leading to SQL Injection or Path Traversal. 1. Use drozer to query content provider URIs. <br> 2. Attempt to inject SQL or path traversal sequences into the query. drozer, SQLmap
Insecure Deeplinks Deeplinks are not properly validated, allowing attackers to access sensitive data or functionality within the app. 1. Identify URL schemes in the manifest. <br> 2. Use adb to invoke the deeplink with manipulated parameters to test for vulnerabilities. adb, drozer, Web Browser
Biometric/Lock Auth Bypass Application logic that relies on biometric or screen lock authentication can be bypassed at runtime. 1. Use Frida to hook the methods that handle the authentication result and force them to return true. Frida, Xposed Framework
Task Hijacking A malicious app manipulates the Android Task stack to take over a legitimate app’s task due to taskAffinity misconfigurations. 1. Check taskAffinity and launchMode attributes in the manifest. <br> 2. Create a PoC app with the same taskAffinity to attempt hijacking. Jadx, Custom PoC App
Tapjacking A malicious app draws an overlay to trick the user into clicking on the underlying victim app. 1. Check if filterTouchesWhenObscured is set to true. <br> 2. Create a PoC overlay app to test exploitability. Custom PoC App, Jadx
Custom URL Scheme Abuse The app does not safely parse data from custom URL schemes (myapp://), leading to data leakage or injection. 1. Fuzz the parameters and paths of the custom URL scheme. <br> 2. Test for injection vulnerabilities (SQLi, XSS) through the URL parameters. adb, drozer, Frida

3. Data Storage & Network Analysis

Check Item Details Test Cases / Method Tools
Sensitive Data in ADB Logcat The app logs sensitive data (passwords, tokens, personal info) to the system log, exposing it via ADB. 1. Run adb logcat while using the app, especially during login or data entry. <br> 2. Filter logs for keywords like password, token, key. adb logcat, PIDcat
Sensitive Data in Local Storage Sensitive data is stored in an unencrypted or unsecured manner in SharedPreferences, databases, or other local files. 1. Access the app’s data directory (/data/data/<package>) on a rooted device. <br> 2. Examine the contents of SharedPreferences XML files and SQLite databases. adb shell, SQLite Browser
Background Screen Caching The OS takes a screenshot of the app for the task switcher, which could expose sensitive data. 1. Navigate to a screen with sensitive info. <br> 2. Send the app to the background and check the app switcher preview. <br> 3. Check if FLAG_SECURE is used. OS Functionality
Insecure File Permissions The app creates files with world-readable or world-writable permissions in its internal storage. 1. Use adb shell and ls -l in the app’s data directory to check file permissions. <br> 2. Check for use of MODE_WORLD_READABLE/WRITABLE. adb shell, drozer
Insecure Firebase Database The Firebase database has misconfigured security rules, allowing for unauthorized read/write access. 1. Append .json to the end of the Firebase database URL. <br> 2. Try to write data using a curl PUT request. Web Browser, cURL, Burp Suite
API & Network Security The APIs used by the app have common web vulnerabilities like broken access control, injection, or data exposure. 1. Intercept all traffic with a proxy. <br> 2. Perform standard web API pentesting (fuzzing, injection, access control checks). Burp Suite, Postman, SQLmap

1. 정적 분석 (Static Analysis)

점검 항목 상세 내용 테스트 케이스 / 방법 도구
취약한 서명 인증서 앱이 취약하거나 손상된 인증서(예: 디버그 인증서 또는 SHA1withRSA와 같은 약한 알고리즘 사용)로 서명됨. 1. apksigner 또는 jarsigner로 인증서의 알고리즘과 세부 정보 확인. <br> 2. Janus 취약점 확인. <br> 3. 알려진 공개 디버그 인증서 여부 확인. apksigner, jarsigner, Jadx
소스 코드 난독화 부재 앱의 소스 코드가 난독화되지 않아 리버스 엔지니어링이 쉬움. 1. APK를 디컴파일하고 클래스, 메서드, 변수 이름이 읽기 가능하거나 무의미한 문자로 변경되었는지 확인. Jadx, Ghidra, Bytecode-Viewer
하드코딩된 민감 정보 API 키, 토큰, 패스워드 같은 민감 데이터가 소스 코드나 리소스 파일에 직접 하드코딩됨. 1. 앱을 디컴파일하고 API_KEY, token, password, secret 같은 키워드로 소스 코드 검색. Jadx, MobSF, grep
안전하지 않은 코딩 관행 앱이 안전하지 않은 함수, 약한 난수 생성기, 또는 약한 암호화 알고리즘 사용. 1. SecureRandom 대신 java.util.Random 사용 여부 코드 리뷰. <br> 2. 암호화에 MD5, SHA1 또는 Base64 같은 약한 알고리즘 사용 여부 확인. Jadx, Ghidra
무결성 검사 부재 앱이 자체 무결성을 검증하지 않아 리패키징 공격에 취약. 1. 앱을 디컴파일하고 코드를 수정(예: Smali)하여 재컴파일, 서명 후 정상 작동 여부 확인. apktool, apksigner
안전하지 않은 매니페스트 구성 AndroidManifest.xml 파일에 allowBackup=true 또는 debuggable=true 같은 안전하지 않은 플래그 설정. 1. 매니페스트 파일에서 android:debuggable="true", android:allowBackup="true", 평문 트래픽을 허용하는 network_security_config 검토. Jadx, apktool, MobSF

2. 동적 분석 (Dynamic Analysis)

점검 항목 상세 내용 테스트 케이스 / 방법 도구
SSL 피닝 앱이 서버의 SSL 인증서를 제대로 검증하지 않아 중간자 공격(MitM)에 취약. 1. 트래픽을 인터셉트하여 피닝 구현 여부 확인. <br> 2. 후킹 프레임워크로 공통 라이브러리(OkHttp 등)의 피닝 로직 우회. Burp Suite, Frida, Objection
루팅 탐지 앱이 루팅된 기기를 제대로 탐지 및 차단하지 않아 데이터나 기능에 무단 접근 가능. 1. 루팅된 기기에서 앱을 실행하여 탐지 여부 확인. <br> 2. 후킹 프레임워크로 루팅 지표(su 바이너리, 특정 패키지 등)를 확인하는 함수 우회. Frida, Xposed Framework, Magisk
에뮬레이터 탐지 앱이 에뮬레이터를 제대로 탐지 및 차단하지 않아 보안 제어 우회 가능. 1. 에뮬레이터(Android Studio, Genymotion)에서 앱 실행. <br> 2. Frida로 에뮬레이터 특정 속성을 확인하는 함수를 후킹하여 우회. Frida, Android Studio 에뮬레이터
애플리케이션 메모리의 민감한 데이터 암호화되지 않은 민감한 데이터가 애플리케이션 메모리에 저장되어 메모리 덤핑 공격에 취약. 1. 앱 실행 중 메모리 덤핑 스크립트로 앱의 메모리 힙을 추출. <br> 2. 메모리 덤프에서 민감한 문자열 검색. Frida, fridump.py, GameGuardian
취약한 Android 액티비티 액티비티가 부적절하게 구성되어 인증 우회, 하이재킹, 또는 서비스 거부 발생. 1. adb 또는 drozer로 내보내지지 않은 또는 보호된 액티비티를 직접 실행하여 로그인 화면 우회. <br> 2. 액티비티 하이재킹 또는 충돌 가능 여부 확인. adb, drozer
WebView 취약점 앱의 WebView 컴포넌트가 안전하지 않게 구성되어 XSS, LFI, 또는 원격 코드 실행 허용. 1. JavaScript가 활성화되었는지 확인(setJavaScriptEnabled). <br> 2. 안전하지 않은 addJavascriptInterface 사용 테스트. <br> 3. 안전하지 않은 파일 접근 플래그 확인. Frida, Drozer, Burp Suite
안전하지 않은 인텐트 처리 인텐트 데이터가 제대로 필터링 또는 검증되지 않아 스푸핑, 스니핑, 또는 리다이렉션 취약점 발생. 1. drozer로 악의적인 인텐트를 만들어 내보내기된 컴포넌트에 전송. <br> 2. PendingIntent 또는 스티키 브로드캐스트 관련 취약점 확인. drozer, adb
취약한 브로드캐스트 리시버 권한 확인 없이 내보내기된 브로드캐스트 리시버를 기기의 모든 앱이 트리거 가능. 1. 매니페스트에서 내보내기된 리시버 식별. <br> 2. drozer 또는 adb로 브로드캐스트 인텐트를 전송하여 리시버 트리거. drozer, adb, Jadx
안전하지 않은 콘텐츠 프로바이더 콘텐츠 프로바이더가 보안 제어 부재로 정보를 노출하여 SQL 인젝션 또는 경로 순회 발생. 1. drozer로 콘텐츠 프로바이더 URI 쿼리. <br> 2. 쿼리에 SQL 또는 경로 순회 시퀀스 삽입 시도. drozer, SQLmap
안전하지 않은 딥링크 딥링크가 제대로 검증되지 않아 공격자가 앱 내 민감한 데이터나 기능에 접근 가능. 1. 매니페스트에서 URL 스킴 식별. <br> 2. adb로 조작된 파라미터로 딥링크를 호출하여 취약점 테스트. adb, drozer, 웹 브라우저
생체 인식/잠금 인증 우회 생체 인식 또는 화면 잠금 인증에 의존하는 애플리케이션 로직을 런타임에 우회 가능. 1. Frida로 인증 결과를 처리하는 메서드를 후킹하여 true를 반환하도록 강제. Frida, Xposed Framework
태스크 하이재킹 악의적인 앱이 taskAffinity 잘못 구성으로 인해 Android 태스크 스택을 조작하여 합법적인 앱의 태스크를 탈취. 1. 매니페스트의 taskAffinitylaunchMode 속성 확인. <br> 2. 동일한 taskAffinity의 PoC 앱을 만들어 하이재킹 시도. Jadx, 커스텀 PoC 앱
탭재킹 악의적인 앱이 오버레이를 그려 사용자가 피해 앱을 클릭하도록 속임. 1. filterTouchesWhenObscuredtrue로 설정되었는지 확인. <br> 2. PoC 오버레이 앱을 만들어 악용 가능성 테스트. 커스텀 PoC 앱, Jadx
커스텀 URL 스킴 남용 앱이 커스텀 URL 스킴(myapp://)의 데이터를 안전하게 파싱하지 않아 데이터 유출 또는 인젝션 발생. 1. 커스텀 URL 스킴의 파라미터와 경로를 퍼징. <br> 2. URL 파라미터를 통한 인젝션 취약점(SQLi, XSS) 테스트. adb, drozer, Frida

3. 데이터 저장 및 네트워크 분석 (Data Storage & Network Analysis)

점검 항목 상세 내용 테스트 케이스 / 방법 도구
ADB Logcat의 민감한 데이터 앱이 민감한 데이터(패스워드, 토큰, 개인정보)를 시스템 로그에 기록하여 ADB를 통해 노출. 1. 앱 사용 중(특히 로그인 또는 데이터 입력 시) adb logcat 실행. <br> 2. password, token, key 같은 키워드로 로그 필터링. adb logcat, PIDcat
로컬 저장소의 민감한 데이터 민감한 데이터가 SharedPreferences, 데이터베이스 또는 기타 로컬 파일에 암호화되지 않거나 안전하지 않게 저장. 1. 루팅된 기기에서 앱의 데이터 디렉토리(/data/data/<package>) 접근. <br> 2. SharedPreferences XML 파일 및 SQLite 데이터베이스 내용 검사. adb shell, SQLite Browser
백그라운드 화면 캐싱 OS가 태스크 전환기를 위해 앱 스크린샷을 찍어 민감한 데이터를 노출할 수 있음. 1. 민감한 정보가 있는 화면으로 이동. <br> 2. 앱을 백그라운드로 보내고 앱 전환기 미리보기 확인. <br> 3. FLAG_SECURE 사용 여부 확인. OS 기능
안전하지 않은 파일 권한 앱이 내부 저장소에 전 세계 읽기 또는 쓰기 가능한 권한으로 파일을 생성. 1. 앱의 데이터 디렉토리에서 adb shellls -l로 파일 권한 확인. <br> 2. MODE_WORLD_READABLE/WRITABLE 사용 여부 확인. adb shell, drozer
안전하지 않은 Firebase 데이터베이스 Firebase 데이터베이스에 잘못 구성된 보안 규칙이 있어 무단 읽기/쓰기 접근 허용. 1. Firebase 데이터베이스 URL 끝에 .json 추가. <br> 2. curl PUT 요청으로 데이터 쓰기 시도. 웹 브라우저, cURL, Burp Suite
API 및 네트워크 보안 앱이 사용하는 API에 손상된 접근 제어, 인젝션 또는 데이터 노출 같은 일반적인 웹 취약점 존재. 1. 프록시로 모든 트래픽 인터셉트. <br> 2. 표준 웹 API 펜테스팅 수행(퍼징, 인젝션, 접근 제어 확인). Burp Suite, Postman, SQLmap