안드로이드의 모든 앱들은 기본적으로 다른 앱에서 자신의 데이터에 접근하는 것을 금지
그러나 콘텐츠 프로바이더를 이용하여 자신의 데이터에 다른 앱이 접근하거나 부여한 권한대로 이용하도록 할 수 있음
콘텐츠 프로바이더
- 다른 앱의 데이터베이스나 파일에 접근할 수 있는 인터페이스 제공
- 주로 프로세스 간 통신으로 다른 앱과 데이터 공유
- 이 기능을 사용하기 위해서는 앱에서 프로바이더가 선언되어야 함, Androidmanifest.xml의 <provider> 요소에 속함
- content://로 시작
- 정상적인 경우 : 대상 앱의 데베에 접근하지 못하고 사용자가 원하는 항목에만 접근하도록 하여 공유 가능
- 비정상적인 경우 : 공격자는 민감 데이터에 접근하여 저장된 데이터를 마음대로 조회하거나 변경할 수 있게 됨
취약점 진단 과정
- 앱에 콘텐츠 프로바이더가 선언되어 있는지 확인
- adb로 취약점을 확인하기 전에 exported 상태를 확인
- false : 같은 애플리케이션에서만 해당 요소를 호출하여 사용할 수 있음
- true : 외부 앱에서 해당 요소 사용 가능 > 실습 진행
- 콘텐츠 프로바이더를 이용하여 다른 앱의 데이터에 접근하기 위해서는 URL을 이용, 앱 내에 content://로 시작하는 항목 있는지 확인
- 일단 하기 전 apktool로 디컴파일 필요할 거 같아서 추가, 다음에 이부분 자세히 쓰기
- 새로 추가된 디렉터리 이곳에 디컴파일 된 파일 저장
- C:\Android-InsecureBankv2-master\InsecureBankv2\app\app-release\smali\com\android\insecurebankv2
- https://programist.tistory.com/entry/Apktool%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-apk-%ED%8C%8C%EC%9D%BC-%EB%94%94%EC%BB%B4%ED%8C%8C%EC%9D%BC-%EB%B0%8F-%EB%A6%AC%ED%8C%A8%ED%82%A4%EC%A7%95 참고
- astrogrep을 이용하여 특정 폴더의 파일 내용 중 입력한 단어가 포함된 파일 확인
- content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers
- adb를 이용한 콘텐츠 프로바이더 취약점 확인
- 공격을 하기 위한 기본 정보가 모이면 앱의 데이터 확인
- name=jack : 인시큐어뱅크에서 로그인하는 사용자 id 값으로 보아 사용자가 로그인 한 내역으로 추측
- 이 값은 해당 앱의 데베에 저장되기 때문에 출력되는 정보는 데베에서 가져와 출력되는 것으로 판단
- 위에서 출력된 정보가 데베에 저장되었는지 확인하기 위해 앱에 저장된 데베 파일인 mydb를 pc로 복사하여 확인
- DB Browser for SQLite 도구 이용하여 검색
- 드로저를 이용하여 취약점 확인
- 콘탠츠 프로바이터 취약점 1개 존재 확인
- 대상 앱의 콘텐츠 프로바이더 정보 확인 가능
- 이 때 출력되는 정보는 androidmanifest.xml 파일에 선언된 정보와 동일
- 드로저의 모듈을 통해 콘텐츠 프로바이더의 URI 주소를 검색하여 접근 가능한 목록을 출력
- content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers/
- 콘텐츠 프로바이더는 대상 앱의 데베나 데이터 등을 확인할 수 있다고 했으므로 드로저를 이용하여 SQL Injection이나 경로 탐색도 가능
- SQL injection 실습 : 테이블 목록 및 컬럼 내용 확인
- ' ' 을 사용하여 취약점 여부 확인, 에러 메시지 출력되면 취약점 있다는 뜻
- SQLITE에 존재하는 테이블 목록 확인
- uri를 통해 접근한 경우 names라는 항목 존재하는 것 확인 했으니 names의 내용 출력
- 현재는 names밖에 중요 정보가 없어서 동일 내용을 출력하지만 테이블의 중요 정보가 있을 경우 공격자가 원하는 정보 얻을 수 있음
취약점 대응 방안
- exported = false로 설정
'정보보안 > 안드로이드해킹' 카테고리의 다른 글
안드로이드 모의해킹) 취약한 암호화 실행 (0) | 2020.07.29 |
---|---|
안드로이드 모의해킹) 안전하지 않은 웹 뷰 실행 (0) | 2020.07.28 |
안드로이드 모의해킹) 루팅 탐지 및 우회 (0) | 2020.07.28 |
안드로이드 모의해킹) 액티비티 컴포넌트 취약점 (0) | 2020.07.28 |
안드로이드 모의해킹) 로컬 암호화 이슈 (0) | 2020.07.28 |
댓글