2.2. 드로저를 활용한 취약점 진단
2.2.1. 드로저란?
-
드로저(drozer)는 MWR InfoSecurity 에서 개발한 모바일 앱 취약점 진단 프레임워크인 머큐리(Mercury)의 새로운 업데이트 버전이다.
윈도우와 리눅스를 지원하며 JRE, JDK, 안드로이드 SDK 가 설치되어 있어야 사용할 수 있다.
안드로이드 단말에 에이전트(Agent)를 설치한 후 PC 에서 ADB 로 명령을 내리는 서버와 클라이언트 방식으로 동작한다.
드로저는 가상 디바이스뿐만 아니라 실제 디바이스에서도 테스트할 수 있고 자동 테스팅도 가능하다.
안드로이드 익스플로잇과 같은 다양한 시나리오를 통해 취약점을 점검할 수 있다.
2.2.2. 드로저를 활용한 앱 패키지 정보 확인
-
설치된 패키지 목록을 보여준다.
dz> run app.package.list
dz> run app.package.list -f [filter word]
-
package 정보를 아래와 같이 볼 수 있다.
프로세스 정보, 버전, 데이터를 저장하는 위치, apk 파일 위치, UID 등을 알 수 있고, 권한도 확인할 수 있다.
dz> run app.package.list -a [package name]
-
특정 권한을 가진 앱들을 아래와 같이 조회해 볼 수 있다.
dz> run app.package.info -p [permission]
-
Manifest 정보를 보려면 아래와 같이 한다.
dz> run app.package.manifest [package name]
2.2.3. 드로저를 활용한 취약점 분석
-
드로저의 가장 큰 장점은 자동으로 앱의 취약한 부분을 검색하는 기능이 있다는 것이다.
점검 항목은 액티비티 노출, 브로드캐스트 취약점, 노출된 콘텐츠 프로바이더, 서비스 노출이다.
dz> run app.package.attacksurface [package name]
* 액티비티 분석
-
Activity 에 대한 정보를 보려면 아래와 같이 한다.
dz> run app.activity.info -a [package name]
-
Activity 실행은 아래와 같이 한다.
dz> run app.activity.start —component [package name] [activity class name]
* 브로드캐스트 리시버 분석
-
dz> run app.broadcast.info -a [package name]
-a [package name] : 특정 앱만 취약점 점검
-f [word] : 특정 단어를 포함한 앱만 취약점 점검
-u : 숨겨진 receiver 점검
* 콘텐츠 프로바이더 분석
-
dz> run app.provider.info -a [package name]
-a [package name] : 특정 package 만 검색
-f [word] : 특정 단어를 포함한 package 만 검색
-p [permission[ : 특정 permission 을 가진 패키지만 검색
-u : 숨겨진 provider 검색
-
provider 가 처리하는 uri 를 보기 위해서는
dz> run app.provider.finduri [package name]
-
특정 Uri 로 접근할 수 있는 db table 을 보기 위해서는..
dz> run scanner.provider.sqltables -uri [uri]
특정 package 가 접근하는 db table 을 보기 위해서는..
dz> run scanner.provider.sqltables -a [package name]
-
테이블 안에 어떤 정보가 저장되어 있는지 확인하기 위해서는 app.provider.query 모듈을 사용한다.
-h 옵션으로 추가 정보들을 볼 수도 있다.
dz> run app.provider.query [uri]
-
아래처럼 하여 다른 table 들을 query 해 볼 수 있다.
dz> run app.provider.query [uri] —projection “[after SELECT keyword query];--”
-
안드로이드에서는 기본적으로 sqlite 를 사용하며, sqlite_master 라는 테이블에서 현재 앱에서 사용하고 있는 테이블 정보를 확인할 수 있다.
dz> run app.provider.query [uri] —projection “* FROM SQLITE_MASTER WHERE type=‘table’;—“
dz> run app.provider.query [uri] —projection name ' FROM names WHERE id=2;’==
-
query 를 만들어 조회가 가능하기 때문에, 쿼리문 입력이 가능하면 sql 인젝션 공격 역시 가능하다.
dz> run scanner.provider.injection -a [package name]
* 서비스 분석
-
dz> run app.service.info -a [package name]
-f, -u option 도 제공한다.
* Debuggable package 분석
-
디버깅이 가능하도록 설정되어 있어 발생하는 취약점이 있다.
dz> run app.package.debuggable -f [word]
2.2.4. 모듈 관리
-
드로저는 모듈 명령어이기 때문에 다양한 기능을 추가하거나 삭제할 수 있고, 몇 가지 공격 코드도 제공한다.
모듈들은 파이썬으로 작성되었으며, 디바이스에 설치된 드로저 에이전트로 안드로이드 운영체제 안에서 실행할 수 있다.
사용자가 직접 <drozer python path>/drozer/modules 경로에 추가할 수도 있다.
-
모듈에서 사용할 수 있는 명령은 아래와 같다. -h 로 제공하는 기능들을 보자.
Command : 사용 가능한 명령어를 보여줌 ( dz> module command)
Install : 새로운 모듈을 설치 ( dz> module install )
Repository : 저장소를 관리하는 명령어 ( dz> module remote )
Search : 원격 저장소나 로컬 저장소를 관리 ( dz> module search )
Remote : 설치된 모듈들의 저장소를 관리
2.2.5 모듈 설치
-
현재 연결된 공식 모듈 저장소로부터 다운로드 할 수 있는 모듈을 검색한다.
dz> module search
dz> module search [keyword]
-
모듈의 기능을 확인해 볼 수 있다. (description)
dz> module search [module name] -d
-
원하는 모듈을 찾았으면 설치할 수 있다.
dz> module install [module name]
2.2.6. 저장소 관리
-
드로저에서 저장소(repository)를 관리하는 방법에는 크게 두 가지가 있다.
첫째는 remote 명령어로 인터넷에 있는 저장소에서 모듈을 찾아오는 방법
둘째는 repository 명령어로 사용자가 지정한 로컬 저장소에 있는 모듈을 사용하는 방법이다.
-
드로저를 설치하면 mwrlabs 의 저장소가 기본 remote 로 등록되어 있다.
dz> module remote list
dz> module remote add [address]
dz> module remote remove [address]
list : 등록된 모든 원격 연결지를 확인
add : 원격지에 있는 모듈 저장소 연결
remove : 등록된 원격 연결지 삭제
-
repository 명령어는 사용자가 만든 모듈, install 명령어로 설치한 모듈 및 인터넷에서 별도로 다운로드한 모듈들이 저장될 위치를 지정하기 위해 사용한다.
dz> module repository command // 명령어 확인
list : 로컬에 등록된 저장소 위치를 출력한다.
create : 로컬 주소를 새로운 로컬 저장소 위치에 추가한다.
delete : 기존에 등록된 로컬 저장소 경로를 삭제한다.
enable : 특정 저장소 위치를 활성화한다.
disable : 특정 저장소 위치를 비활성화한다.
2.3. 칼리 리눅스 설치
-
칼리리눅스는 침투 테스트를 위한 데비안을 기반으로 하고 있다.
다양한 침투 테스트, 법의학 및 리버스 엔지니어링 도구가 탑재되어 있으며, 2013년에 출시된 이후 데비안 개발 표준을 완전히 준수하여 전작인 백트랙을 유지하고 있다.
2.3.1. 가상 이미지 다운로드 및 설정
2.3.2. 칼리리눅스 설치
2.3.3. VMware Tools 및 한글 설치
2.4. 마무리하며
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
#3 취약점 항목별 상세 실습 part 2. - 안드로이드 모바일 앱 모의해킹 (3) | 2020.11.21 |
---|---|
#3 취약점 항목별 상세 실습 part 1. - 안드로이드 모바일 앱 모의해킹 (0) | 2020.11.20 |
#2 취약점 진단 및 분석 도구 part 1. - 안드로이드 모바일 앱 모의해킹 (0) | 2020.11.18 |
#1 안드로이드 취약점 분석 및 환경 소개 - 안드로이드 모바일 앱 모의해킹 (0) | 2020.11.17 |
[android] AsyncLayoutInflater tutorial (0) | 2020.08.22 |
댓글