1. Activity 컴포넌트 취약점
- AndroidMainfest.xml
-> exported 속성이 true일 경우, 다른 애플리케이션에서 activity 실행 가능하며, false일 경우, 동일한 애플리케이션 또는 UID를 가진 애플리케이션에서만 실행 가능
-> ADB의 am 옵션을 사용하여 Activity 실행
--> adb shell am start -n 패키지명/.Activity 경로
-> Drozer 활용 노출된 Activity 확인 : Adb는 단순 외부에 노출된 Activity를 실행하였다면, Drozer는 애플리케이션에 노출된 모든 Activity를 확인할 수 있음
--> rum app.activity.start --component 패키지명 패키지명.Activity명
2. Broadcast Receiver 취약점
- Android Broadcast Receive는 백그라운드에서 대기하고 있다가 이벤트 발생 시 시스템에서 전달한 메시지(intend)를 모든 애플리케이션에게 전달하는 역할. 메시지를 수신한 애플리케이션은 그에 맞는 응답 메시지를 사용자에게 전달
-> AndroidMainfest.xml에서 확인
-> 선언된 Receiver의 exported 속석이 true일 경우, 다른 애플리케이션에서 intent 가능
--> adb shell am broadcast -a Action_Name -n 패키지명/.Receiver 경로
--> run app.broadcast.send -component 패키지명 Receiver 경로
3. Content Provider 취약점
- Content Provider는 다른 애플리케이션의 데이터베이스나 파일에 접근할 수 있는 인터페이스를 제공, 허용된 데이터, 파일에만 접근 가능하도록 하는 권한 설정이 부재일 때 발생하는 취약점
- 위협 : 공격자는 사용자가 공유하기를 원하는 데이터 외 데이터에 비정상적으로 접근하여 중요데이터 조회/변경 등 악이적인 행동을 할 수 있음
-> 선언된 Provider의 exported 속성이 true일 경우, 다른 애플리케이션에서 provider 실행 가능하며 false일 경우, 동일한 애플리케이션 또는 UID를 가진 애플리케이션에서만 실행 가능
--> APKTOOL를 사용해 디컴파일 후 소스코드 내 노출된 Content URL를 검색 (keyword: "content://")
-->> adb shell "content query --uri content경로"
--> Drozer의 attacksurface 기능을 사용하여 애플리케이션 내 공격 가능성 있는 content 검색
-->> run app.package.attacksurface 패키지명 : Drozer의 attacksurface 기능을 사용하여 애플리케이션 내 공격가능성이 있는 content 검색
-->> run app.provider.info -a 패키지명 : Drozer 기능을 사용하여 Provider에 존재하는 Content 경로 정보를 얻음
-->> run app.provider.query content경로 : Drozer로 확인한 Content provider를 사용하여 데이터 확인
- 대응방안 : protectionLevel 속성으로 permission을 사용 (normal, dangerous, signature, system)
'보안 공부 > 모바일 보안' 카테고리의 다른 글
Content Provider Permission 설정 (0) | 2022.09.04 |
---|---|
녹스 adb 연결 시 발생하는 오류 해결 방법 (1) | 2022.06.30 |
안드로이드(Android) 모의해킹/보안진단(2) (0) | 2022.06.01 |
안드로이드(Android) 모의해킹/보안진단(1) (0) | 2022.05.25 |
[iOS 취약점 진단] iOS 자체 보안 (0) | 2022.04.30 |