[Android] 내부 데이터 내 개인정보 노출 여부 확인하기(feat. jadx)
Jadx툴로 SQLITE 확인하기
jadx에서 apk 파일을 열고, 텍스트 검색 기능으로 sqlite 문자열이 있는지 확인하여 해당 앱이 sqlite 를 사용하고 있는지 확인한다.
이때, jadx의 검색 기능의 경우 검색이 실시간으로 이루어지기때문에 한글자만 타이핑해도 검색을 시작하여 프로그램이 과부하 걸릴 가능성이 있다. 때문에 다른 메모장에 검색할 문자열을 써두고, 검색창에 복사붙여넣기로 검색하기를 추천한다.
위와 같이 결과에 sqlite가 잔뜩 노출되어있다면, 보통은 sqlite를 사용하고 있다고 볼 수 있다.
데이터베이스 내부를 확인하기 위해 기기 내부에서 데이터베이스 폴더를 추출해온다.
DB 폴더는 /data/data 아래에 패키지 이름으로 된 폴더 아래에 databases 라는 폴더이다.
(이때 루트로 이동이 안되는거면 루팅이 안켜져있는것이므로 루팅을 켜주면 된다.)
폴더안에 .db 파일들을 꺼내기 위해 폴더를 사용자의 PC로 추출한다. 방법은 아래와 같다.
databases 폴더를 꾸욱누름▶전체선택해서 복사▶공유 폴더(Pictures 기본)에 복붙 후 확인
.db 확장자의 파일을 확인하려면, db browser for sqlite 프로그램을 설치해야한다.
해당 프로그램을 설치한 후, db 파일들을 드래그 하면 내부 데이터를 확인할 수 있고, 해당 파일 내에 개인을 식별할 수 있는 데이터가 있는지 확인할 수 있다.
다만 여기서 SQLITE 를 사용하더라도 db파일 내에 데이터가 없을 수도있는데, 이런 경우는 sharp_pref 라는 걸 사용해서 토큰값으로 저장하는 경우일 수도 있다. 폴더 안을 봤을 때 sharp_pref 라는 폴더가 있으면 개인정보가 암호화 안된 상태로 있을 수도 있기 때문에 한번 봐주면 좋다.
Nox 에서 폴더 복붙이 안되는 경우에는 아래처럼 adb를 사용해서 추출하는 방식을 사용하면 된다.
Nox의 경우 Nox 설치 경로로 가서 adb를 직접 실행해주면 된다.(24.01.15 Update)
단말기에서 추출하기
해당 앱의 db 및 sharp_pref 데이터 추출하는 adb 명령어는 다음과 같다.
//0. adb shell 접근
> adb shell
# su
//1. /data/local/tmp 아래에 임의의 백업 폴더 생성
# mkdir /data/local/tmp/[백업폴더명]
//2. adb shell에 su권한으로 접속해서 /data/local/tmp 폴더 아래 임의의폴더로 복사
# cp -r /data/data/[패키지이름]/databases /data/local/tmp/[백업폴더명]
# cp -r /data/data/[패키지이름]/shared_prefs /data/local/tmp/[백업폴더명]
//3. 권한 부여
# chmod -R 777 /data/local/tmp/[백업폴더명]
//4. adb pull로 추출
# exit
$ exit
>adb pull /data/local/tmp/[백업폴더명]
Permission 에러 나면 chmod로 권한 조정해주자.
추출한 파일은 메모장 or SQLite 에서 확인..