728x90
반응형
- 콘텐츠 프로바이더 분석
- 콘텐츠 프로바이더 : 특정 애플리케이션이 사용하고 있는 데이터베이스를 공유하기 위해 사용된다.
- 전체 데이터가 아닌 공유를 원하는 데이터만을 공유하기 위한 수단이기도 하다.
- 앱에 의해 노출된 콘텐츠 프로바이더 정보는 “run app.provider.info” 모듈로 추출할 수 있다.
- run app.provider.info 옵션
- “-a” 옵션으로 어떤 프로바이더가 노출되었는지 확인했다.
- 명령어 : run app.provider.info -a com.android.insecurebankv2
- 결과 값으로 “com.android.insecurebankv2.TrackUserContentProvider”가 노출되었다.
- 콘텐츠 프로바이더는 데이터베이스에 있는 정보를 URI로 공유하기 때문에 데이터베이스에 접근하기 위해서는 URI에 대한 정보가 반드시 필요하다.
- 프로바이더가 사용하는 URI 정보를 찾기 위해서는 “app.provider.finduri” 모듈을 사용한다.
- 명령어 : run app.provider.finduri [패키지 이름]
- URI 주소는 특정 데이터에만 접근하도록 제한하여 공유한다.
- 아래의 명령어로 얻은 URI를 통해 어떤 정보에 접근할 수 있는지 확인한다.
- 명령어 : run scanner.provider.sqltables --uri [URI 주소]
- “content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers/” 라는 URI 주소로 3개의 테이블(android_metadata, names, sqlite_sequence)에 접근할 수 있다.
- “-a” 옵션을 사용하면 입력한 패키지에서 사용하는 모든 URI 주소 검색을 실시한다.
- 명령어 : run scanner.provider.sqltables -a [패키지명] : 앱의 모든 URI 조사
- URI로부터 테이블명까지 추출하고 테이블 안에 어떤 정보가 저장되어 있는지 확인하기 위해 “app.provider.query” 모듈로 구체적인 정보들을 얻어낸다.
- 명령어 : run app.provider.query -h : 해당 모듈에 대한 설명
- app.provider.query 모듈로 URI 주소만 입력함으로써 자동으로 분석하는 방법이 있고, “—selection”, “—projection” 등과 같은 추가 옵션으로 데이터베이스의 정보를 추출하는 방법도 있다.
- 먼저 노출된 URI 정보로 데이터베이스에서 정보를 추출하는 작업을 했다.
- 명령어 : run app.provider.query [uri]
- URI 정보로부터 로그인한 사용자의 아이디와 로그인한 순서를 나타내는 테이블 정보가 출력된다.
- 위 테이블 외에 다른 테이블 유무 확인을 위해 sqlite_master라는 테이블을 확인했다.
- 안드로이드에서는 기본적으로 sqlite를 사용하며, sqlite_master라는 테이블에서는 현재 앱에서 사용하고 있는 테이블들의 정보를 확인할 수 있다.
- 이를 조회하기 위해 다음 명령어를 사용했다.
- 명령어 : run app.provider.query content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers --projection "* FROM SQLITE_MASTER WHERE type='table';--"
- sql_master 테이블이 성공적으로 조회되었다. 이를 통해서 “—projection” 옵션으로 사용자가 입력한 쿼리문이 적용되며 SQLITE_MASTER 데이터베이스의 테이블 정보가 노출되었다는 것이다.
- 활용 명령어 : run app.provider.query content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers --projection name' from names where id=2;'-
- 사용자가 원하는 궈리문을 만들어 조회가 가능하다는 것을 확인했고, 쿼리문 입력이 가능하다면 sql 인젝션 공격이 가능할 것이다. 지금까지는 콘텐츠 프로바이더에 관련된 정보를 얻은 후에 URI 정보를 얻었다.
- 또한 URI의 정보를 기반으로 쿼리문을 생성하여 sql 인젝션 공격이 가능한지를 확인했다.
- 이런 작업을 자동으로 점검해주는 “scanner.provider.injection” 모듈에 대해 알아 볼 것이다.
- 이 모듈은 특정 앱에서 사용하는 프로바이드를 자동으로 검색하고 sql 인젝션 공격이 가능한지, 취약한지의 여부를 판단한다.
- 취약한 URI 주소와 인젝션 공격 방법도 자동으로 분류해주기 때문에 많은 양의 앱을 분석하거나 빠른 분석이 필요할 경우에 사용하는 것이 좋다.
- 명령어 : run scanner.provider.injection -a com.android.insecurebankv2
728x90
반응형