보안 공부/모바일 보안

안드로이드 취약점 점검(Activity 컴포넌트, Broadcast Receiver, Content Provider)

H.J.World 2022. 6. 8. 21:33
728x90
반응형

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)

728x90
반응형