Android

Android /data/app, /system/app 및 /data/data 확인하기

서원근양학계정 2022. 11. 7. 19:57

본격적으로 시작하기 전에 먼저 ADB연결이 되어있는지부터 확인해주겠습니다.

 

이제 아래에 있는 명령어를 입력해주겠습니다.

이 명령어는 칼리 리눅스에서 안드로이드로 명령어를 실행할 수 있게 해 줍니다.

adb shell

 

앞에 $가 붙어있는 것으로 쉘 환경에 잘 접근한 것을 확인할 수 있습니다.

 

/data/app

/data/app은 사용자가 설치한 애플리케이션의 APK 파일이 위치하는 디렉터리로, 누구나 파일을 읽을 수 있고 복사할 수 있습니다.

먼저 InsecureBankv2의 APK 파일이 있는 위치로 이동하겠습니다.

cd /data/app

 

그리고 ls 명령어를 입력했는데 권한이 없다고 하네요.

 

이 부분은 더 알아봐야 할 것 같습니다.

일단 root 권한을 얻는 명령어를 사용하겠습니다.

su

 

그러면 쉘의 모양이 바뀌고 $도 #으로 바뀐 것을 볼 수 있습니다.

 

이제 다시 명령어를 실행시켜보겠습니다.

cd /data/app
ls

 

 

많은 것들이 보이는데 그중에서 insecurebankv2를 찾을 수 있습니다.

이것이 진짜로 저희가 설치한 InsecureBankv2.apk파일인지 확인하기 위해서 안드로이드에 있는 파일을 칼리 리눅스로 다운로드해보겠습니다.

터미널을 하나 더 열어주고 아래의 명령어를 입력합니다.

adb pull /data/app/com.android.insecurebankv2-2Z_vR34Vw-gXbiG6JQx_cQ==

 

사용자 폴더 아래에 무언가 생겼습니다.

 

들어가 보면 한 APK 파일이 있습니다.

 

cmp 명령어를 통해서 원래의 InsecureBankv2.apk과 비교하니 같다는 것을 확인할 수 있습니다.

 

/system/app

/system/app은 전화나 메시지 같은 안드로이드에 기본적으로 내장되어 있는 앱들의 APK 파일이 있는 디렉터리입니다.

이런 앱들은 삭제되면 치명적일 수 있으므로 root 권한만 파일을 읽고 복사할 수 있습니다.

새로운 터미널을 열고 /system/app에 접근하고 파일 목록을 확인해보겠습니다.

adb shell
cd /system/app
ls

 

/data/app에서는 안 작동해서 문제였는데 /system/app에서는 작동해서 문제네요.

Bluetooth나 Chrome 같은 익숙한 이름이 보이네요.

이번에도 파일을 칼리 리눅스로 가져와보겠습니다.

adb pull /system/app/Chrome

 

잘 다운로드되네요.

 

/data/data

/data/data는 내부 저장소에 저장된 앱의 데이터가 저장되는 디렉터리입니다.

아래에 있는 명령어를 실행해줍니다.

adb shell
su
cd /data/data/com.android.insecurebankv2
ls -al

 

 

총 4개의 디렉터리가 있는데 cache와 code_cache는 비어있습니다.

먼저 databases 디렉터리로 들어가서 파일 목록을 확인해보겠습니다.

ls -al

 

 

mydb와 임시 파일로 보이는 것들이 있습니다.

mydb의 내용을 확인해보겠습니다.

sqlite3 mydb #SQLite3으로 mydb를 열어줍니다.
.tables #mydb의 테이블을 확인합니다.

 

 

2개의 테이블을 확인할 수 있습니다.

테이블의 내용을 확인해보겠습니다.

.dump android_metadata #테이블의 정보를 출력합니다.
.dump names #테이블의 정보를 출력합니다.

 

 

names 테이블에서는 dinesh와 같은 익숙한 문자열을 찾을 수 있습니다.

이 명령어를 이용해서 SQLite3 환경을 빠져나오겠습니다.

.quit
.exit

 

 

이제 상위 디렉터리로 이동해서 아직 확인하지 않은 shared_prefs디렉터리의 내용을 확인해주겠습니다.

cd ..
cd shared_prefs
ls -al

 

 

XML확장자를 가진 두 개의 파일이 있습니다.

cat 명령어를 이용해서 내용을 확인해보겠습니다.

cat com.android.insecurebankv2_preferences.xml
cat mySharedPreferences.xml

 

 

com.android.insecurebankv2_preferences.xml파일에는 서버와 연결할 때 사용하는 정보가 있고
mySharedPreferences.xml 파일에는 Base64로 인코딩 된 것으로 추정되는 문자열이 있습니다.

디코딩을 시도해본 결과 Username만 디코딩이 되네요.