본문 바로가기
정보보안/안드로이드해킹

안드로이드 모의해킹) 브로드캐스트 리시버 결함

by _miiiiiin_zzang_ 2020. 7. 28.

브로드캐스트 리시버

  • 안드로이드 시스템의 중요한 요소, 안드로이드 디바이스에서 이벤트 발생 브로드 캐스트 신호를 보내게 되는데 신호를 받아 처리하는 역할 수행
  • 대상 애플리케이션에서 발생하는 브로드캐스트를 받기 위해서는 브로드캐스트 리시버가 설정되어 있어야
  • 신호를 바든 경우 앱에 정의해 놓은 작업 수행
  • AndroidManifest.xml <reciver> </reciver> 선언
  • 악의적인 목적을 갖고 사용자가 받는 알림을 중간에서 가로채는 행위를 있으며, 특정한 상황에서만 발생하는 작업을 우회하여 수행하도록 조작

 

취약점 진단 과정

    1. androidManifest.xml 선언된 리시버와 브로드캐스트 리시버를 상속받은 메서드 확인
    2. MyBroadCastReceiver 리시버 선언 : 브로드캐스트 신호 받으면 여기서 작업 수행
    3. theBroadcast : 설정된 브로드캐스트 이름
    4. exported="true" : 외부 애플리케이션으로부터 intent 받을 있는 상태
    1. BroadcastReceiver 객체를 상속받음
    2. 애플리케이션이 사용자 정의 브로드캐스트 리시버를 사용하거나 intent-filter 특정 권한을 명시하지 않는다면 다른 앱에 의해 오남용될 있음

 

ADB 이용한 브로드캐스트 생성

  • 임의의 브로드캐스트를 생성하여 리시버를 속이려면 am 명령어를 사용해야
  • am : 액티비티 매니저, 안드로이드 시스템에 포함된 다양한 액션을 명령으로 수행

실습 브로드캐스트를 생성하기 위해 먼저 대상 장치에 adb shell 명령으로 대상 장치의 프롴프트에 진입하고 명령어 수행 필수

 

    1. 아닌거 같으네...일단 진행해보자
    1. log 확인 하려면 cmd창에 adb logcat 틀어놓고 다른 창으로 am 명령어 입력하기
    1. --es 옵션 사용 변수와 함께 값을 추가하는 가능
    2. 로그 확인하면 비밀번호 노출된느 확인

 

드로저를 이용한 브로드캐스트 생성

    1. 1 content providers exported : 1개의 브로드캐스트 리시버가 외부에서 접근할 있다는 것을 있음
    1. 권한은 따로 설정되어 있지 않음
    2. app.broadcast.send 사용 : 브로드캐스트를 생성하여 브로드캐스트 리시버에 정의된 액션을 수행

 

    1. 확인 가능

 

취약점 대응 방안

    1. android:exported=false 설정
    2. true : 외부 앱에서 발생하는 인텐트ㅔ 영향을 받지 않게 되므로 브로드캐스트 리시버도 임의의 브로드캐스트에 영향을 받지 않게
  1. 리시버에 별도의 권한을 주는
  • 권한이 있는 경우에만 접근 가능
  • 요소에 사용자가 임의의 권한을 부여하기 대문에 접근 제한을 관리하기 쉬움

댓글