안드로이드 애플리케이션은 4가지 주요 컴포넌트(Components)로 구성되며
각 컴포넌트는 특정 기능을 수행하며 서로 통신할 수 있다.
1.액티비티(Activity) - UI 화면을 담당

-
- 앱의 화면(사용자 인터페이스, UI) 을 구성하는 요소.
- 사용자는 액티비티를 통해 앱과 상호작용할 수 있다.
- 여러 개의 액티비티를 가질 수 있으며, Intent를 사용해 다른 액티비티로 전환 가능.
- Intent는 앱 내에서 컴포넌트 간의 상호작용을 가능하게 하는 메시지 객체이다.
- 외부 앱에서 특정 액티비티를 실행할 수 있도록 보호되지 않은 경우(exported=true 설정).
- 인텐트(Intent) 조작을 통한 권한 상승 공격 가능.
- app.activity.info -a <패키지명> → 앱의 액티비티 정보를 확인
- app.activity.start --component <패키지명> <액티비티명> → 강제로 액티비티 실행
2. 서비스(Service) - 백그라운드 작업 담당

- UI 없이 백그라운드에서 실행되며, 장시간 작업을 수행하는 컴포넌트.
- 예: 음악 재생, 푸시 알림, 네트워크 작업 등.
🔹 보안 취약점 예시
- 외부에서 실행 가능한 서비스가 보호되지 않은 경우 공격자가 악용할 수 있음.
- 서비스에서 민감한 데이터를 처리하는 경우, 정보 유출 가능.
🔹 Drozer 활용
- app.service.info -a <패키지명> → 앱의 서비스 정보 확인
- app.service.start --component <패키지명> <서비스명> → 강제 실행 시도
3. 브로드캐스트 리시버(Broadcast Receiver) - 시스템 및 앱 간 이벤트 전달

- 앱 또는 시스템에서 발생한 특정 이벤트(부팅 완료, 네트워크 변경 등)를 감지하고 처리하는 역할.
- 예: 배터리 부족 알림, 새 SMS 수신, 앱 설치 이벤트 등.
🔹 보안 취약점 예시
- 외부 앱이 악성 인텐트를 보내서 민감한 데이터를 조작할 수 있음.
- 중요한 시스템 이벤트를 가로채는 공격 가능.
🔹 Drozer 활용
- app.broadcast.info -a <패키지명> → 브로드캐스트 리시버 정보 확인
- app.broadcast.send --action <액션명> → 특정 브로드캐스트 메시지 전송
4. 콘텐츠 프로바이더(Content Provider) - 데이터 공유 및 저장소 접근

- 앱 간에 데이터를 공유하거나 저장소에 접근할 수 있도록 하는 컴포넌트.
- 예: 연락처, 메시지, 파일, 데이터베이스(SQLite) 등.
🔹 보안 취약점 예시
- 보호되지 않은 콘텐츠 프로바이더를 통해 민감한 정보 유출 가능.
- SQL Injection 공격 가능성 (입력값 검증 부족 시).
🔹 Drozer 활용
- app.provider.info -a <패키지명> → 콘텐츠 프로바이더 정보 확인
- app.provider.query <URI> → 특정 콘텐츠 프로바이더 데이터 조회
5. 컴포넌트 간의 상호작용 (다이어그램)

- 사용자는 주로 액티비티를 통해 앱과 상호작용
- 액티비티는 다른 컴포넌트들과 상호작용 가능
- 서비스, 브로드캐스트 리시버, 콘텐츠 프로바이더는 서로 연결되어 데이터와 이벤트를 교환
'Mobile_security' 카테고리의 다른 글
| Android reversing - Plan (0) | 2026.02.03 |
|---|---|
| 0. Android - NDK 학습 (0) | 2025.12.22 |
| 0. Android - 아키텍처 (0) | 2025.12.17 |
| 0. Android,IOS - 모바일 사전 지식 정리 (0) | 2025.12.11 |
| 0. Android - AVD, ADB, Rooting, Pm (1) | 2025.07.22 |