
OWASP의 실습형 Android 보안 교육 랩으로, 78개의 MASVS/MASTG 모듈이 취약한 앱, 안전한 앱, 공격자 앱을 짝지어 모바일 취약점과 그 해결책을 보여줍니다.
공식 OWASP 프로젝트 — Android 개발자 및 펜테스터를 위한 실습형 OWASP MASVS/MASTG 보안 교육 랩 — 미러 아키텍처: 취약 ↔ 안전 ↔ 공격자
Android 보안 마스터클래스는 미러 아키텍처로 설계된 공식 OWASP 프로젝트로, Android 개발자와 보안 연구원에게 취약점이 정확히 어떤 모습인지, 그리고 현대적인 Android 개발 관행을 사용하여 정확히 어떻게 수정하는지를 가르칩니다.
구식 Java 코드베이스에서 버그를 찾아 헤매는 대신, 이 프로젝트는 최신 기술 스택(Kotlin, Jetpack Compose, MVVM, Material 3)을 사용하며 대규모로 확장 가능한 "Package-by-Feature" 시스템을 기반으로 구성되어 있습니다.
🌐 OWASP 프로젝트 포털 및 문서:
- OWASP 프로젝트 페이지: https://owasp.org/projects/android-security-masterclass
- 문서 포털: https://owasp.github.io/Android-Security-Masterclass/
- 백서 및 78개 모듈 매핑 매트릭스: 문서 포털에서 확인 가능합니다.
graph TD
COMMON("🧱 :common<br/>Shared Data · Theme<br/>Dashboard Metadata")
subgraph FEATURES ["📦 Package-by-Feature (78 Isolated MASWE Modules)"]
direction LR
M1(":features:maswe0001<br/>Private Storage")
M2(":features:maswe0002<br/>External Storage")
M5(":features:maswe0005<br/>Logging Leaks")
MDOT("...<br/>... ")
M78(":features:maswe0078<br/>Privacy")
end
VULN("❌ :app-vulnerable<br/>Thin Shell Orchestrator")
SEC("✅ :app-secure<br/>Thin Shell Orchestrator")
ATK("😈 :app-attacker<br/>Simulated Malware")
COMMON --> FEATURES
FEATURES -- "Insecure Implementation" --> VULN
FEATURES -- "Hardened Implementation" --> SEC
VULN -. "Active Exploit<br/>IPC / Logcat" .-> ATK
classDef common fill:#4A90D9,stroke:#2C5F8A,color:#fff,stroke-width:2px,font-weight:bold
classDef feat fill:#F39C12,stroke:#D35400,color:#fff,stroke-width:2px,font-weight:bold
classDef vuln fill:#E74C3C,stroke:#C0392B,color:#fff,stroke-width:2px,font-weight:bold
classDef secure fill:#27AE60,stroke:#1E8449,color:#fff,stroke-width:2px,font-weight:bold
classDef attacker fill:#8E44AD,stroke:#6C3483,color:#fff,stroke-width:2px,font-weight:bold
class COMMON common
class M1,M2,M5,MDOT,M78 feat
class VULN vuln
class SEC secure
class ATK attacker이 프로젝트는 총 80개 이상의 모듈에 걸친 하이퍼 모듈식 아키텍처를 사용합니다:
MasterclassData 고충실도 모델사소한 데이터("admin:password")를 사용하는 다른 교육 프로젝트와 달리, 저희 유출 시뮬레이션은 규제 등급의 페이로드를 사용합니다:
💡 팁: 취약 앱 또는 안전 앱의 대시보드에서 "Data Vault" 버튼을 클릭하면 이 시뮬레이션된 모든 데이터를 기기에서 실시간으로 볼 수 있습니다.
전체 OWASP MASVS 표준을 8개 도메인에 걸친 78개의 개별 모듈로 매핑했습니다:
다음 모듈은 비즈니스 로직, MVI 아키텍처, 단위 테스트, 그리고 공격/방어 시뮬레이션이 완전히 구현되어 있습니다:
-assumenosideeffects) 및 SecureLog 래퍼로 강화되었습니다.adb backup 또는 Google Drive 클라우드 백업을 통한 민감 데이터 추출을 보여줍니다. android:allowBackup="false", dataExtractionRules, fullBackupContent로 강화되었습니다.(전체 78개 벡터 분석은 MkDocs 사이트의 docs/mapping_matrix.md를 참조하세요).
app-vulnerable 또는 app-secure 실행 구성을 선택하고 에뮬레이터에 배포합니다.Build Variants 도구 창을 열고 debug를 선택합니다. 앱을 실행하고 Logcat을 확인합니다. 취약한 앱에서 유출을 볼 수 있습니다.release로 전환합니다. R8(ProGuard) 축소가 작동합니다. app-secure에서는 모든 중요 로그가 완전히 제거됩니다!:app-attacker) 설정이러한 취약점의 실제 결과를 확인하려면 동일한 기기에 :app-vulnerable과 함께 :app-attacker 모듈을 설치하세요.
graph LR
subgraph VICTIM ["❌ :app-vulnerable"]
direction TB
LOG("📋 Log.d sends PII<br/>to system Logcat")
FP("📂 FileProvider<br/>exported paths")
end
subgraph MALWARE ["😈 :app-attacker"]
direction TB
LE("🔍 LogcatExploitScreen<br/>reads all logs")
ER("📥 ExploitReceiverScreen<br/>steals files via URI")
end
LOG -- "READ_LOGS permission" --> LE
FP -- "content:// URI interception" --> ER
classDef victim fill:#E74C3C,stroke:#C0392B,color:#fff,stroke-width:2px
classDef malware fill:#8E44AD,stroke:#6C3483,color:#fff,stroke-width:2px
class LOG,FP victim
class LE,ER malwareREAD_LOGS 권한 부여 (MASWE-0005용):
기본적으로 Android는 앱이 시스템 로그를 읽도록 허용하지 않습니다. 악성 앱이 권한이 부여된 경우(또는 루팅된/구형 기기에서) 로그를 읽을 수 있는 방법을 보여주려면 ADB를 통해 이 권한을 수동으로 부여해야 합니다:
adb shell pm grant com.hasantuncay.mobsec.attacker android.permission.READ_LOGS
실제 기기 사용자를 위한 참고: MIUI, ColorOS 등에서 테스트하는 경우 개발자 옵션으로 이동하여 **"USB 디버깅(보안 설정)"**을 활성화해야 ADB가 권한을 부여할 수 있습니다.
이 프로젝트는 교육 목적으로만 제작되었습니다. :app-vulnerable 모듈에서 시연된 취약점은 실제이며 위험합니다. :app-vulnerable 모듈의 코드를 프로덕션 환경에서 사용하지 마세요. 항상 모범 사례는 :app-secure 모듈을 참조하세요.
커뮤니티의 기여를 환영합니다! Pull Request를 열기 전에 포괄적인 **기여 가이드**를 읽어주세요. 이 가이드는 프로젝트 철학(Package-by-Feature 미러 아키텍처), 코딩 표준, 그리고 :features:masweXXXX 모듈 내에서 로직을 생성하고 구현하는 단계별 프로세스를 다룹니다.
프로젝트 리더:
커뮤니티 및 지원:
| 모듈 계층 | 역할 | 상태 |
|---|
:common | 기반 계층. MasterclassData 고충실도 페이로드 생성기, 대시보드 메타데이터, 핵심 UI 테마, 그리고 일반적인 내비게이션 컴포넌트를 포함합니다. | 기반 ✅ |
:features:masweXXXX | 78개의 완전히 격리된 Gradle 모듈 (0001부터 0078까지). 각 모듈은 단일 특정 취약점에 대한 취약한 로직과 안전한 로직을 모두 포함하여 모듈 간 코드 유출을 완전히 방지합니다. | 78개 모듈 생성됨 ✅ |
:app-vulnerable | "Thin Shell" 오케스트레이터 앱. 78개 기능 모듈의 안전하지 않은 UI 컴포넌트를 연결하여 OWASP 위반의 정확한 결과를 보여줍니다. | 활성 ✅ |
:app-secure | "Thin Shell" 오케스트레이터 앱. 현대적인 표준(Jetpack Security, Tink, SQLCipher, ProGuard)을 활용한 안전한 구현을 연결합니다. | 활성 ✅ |
:app-attacker | 시뮬레이션된 악성 서드파티 앱. 기기에서 동시에 실행되는 보조 프로세스를 통해 실시간 IPC 익스플로잇을 보여줍니다. | 활성 ✅ |