모바일은 사용자 편의가 중요하기 때문에 데이터를 저장하는 것은 필수적이다.
자동 로그인 기능을 위해 사용자의 id, 패스워드 정보를 단말기 내에 저장해두는 것을 생각하면 쉽다.
이때, 패스워드 같은 중요 정보는 반드시 암호화해서 저장해야 한다.
로컬 암호화 이슈
- 로컬 저장소에 데이터를 저장하는 경우 보안을 고려하지 않으면 평문 형태로 저장됨
- 공격자가 악성코드에 감염시키거나 권한 상승에 성공하는 경우 평문 저장된 중요 데이터 획득 가능
진단 방법
- 앱의 기능을 이것 저것 사용해보면서 저장되는 데이터를 샅샅히 뒤져보면 된다.
살펴볼 주요 디렉터리
디렉터리 | 설명 |
/data/data/<package> | 설치된 앱의 패키지 경로 |
/data/data/<package>/databases | 설정 파일, 컨텐츠 파일 등이 포함된 SQLlite 데이터베이스 파일 (db 파일이 존재함) |
/data/data/<package>/shared_prefs | 앱 실행 동안 필요한 데이터가 xml 파일에 저장됨 |
특히 shared_prefs 디렉터리는 취약점 분석할 때 계속 확인해봐야하는 가장 중요한 디렉터리!!
실제로 /data/data 디렉터리로 이동해보면 설치된 앱 패키지들이 다양하게 존재하는 것을 확인할 수 있다.
취약점 진단에 사용할 insecurebank 앱 패키지로 들어가보면 databases와 shared_prefs 디렉터리가 있는 것을 볼 수 있다.
인시큐어뱅크 앱을 통한 실습
앱을 실행하면 로그인 화면이 가장 먼저 나온다. 여기서 Autofill Credentials를 클릭하면 자동 로그인이 된다. 이 기능을 통해서 아이디와 패스워드가 단말기 내에 저장되어있다는 것을 추측할 수 있다.
패스워드가 암호화돼서 안전하게 저장되어있는지 확인해보자.
adb shell 명령으로 안드로이드 쉘로 접근한 후
각 앱의 데이터가 저장되는 /data/data 디렉터리로 이동한다
ls -al 명령으로 인시큐어뱅크 앱 패키지 이름을 찾는다
찾은 인시큐어 뱅크 패키지로 이동 후
해당 디렉터리 내에 databases와 shared_prefs 디렉터리가 있는 것을 확인했다
우선 databases에 저장된 db 파일을 확인해보자
adb pull 명령으로 mydb 파일을 pc로 가져온 다음
db browser로 데이터를 확인해봤는데
패스워드는 저장되어있지 않았고, 그 외 중요한 데이터도 보이지 않았다
그렇다면앱 실행 중 필요한 데이터가 저장되는 shared_prefs 디렉터리를 확인해보자
데이터가 많이 저장되어있을 것 같진 않아서 cat 명령으로 확인할 수도 있겠지만,
adb pull 명령으로 데이터를 pc로 가져와서 확인해보기로 한다
mySharedPreferences.xml 파일을 열람해보니 username과 password가 알 수 없는 문자열로 저장되어있다
jadx로 인시큐어뱅크 apk 파일을 디컴파일해서 소스코드를 확인해보자
DoLogin 파일의 소스코드를 보면 username과 password를 저장하는 saveCreds 함수가 있다
username은 base64인코딩, password는 aesEncryptedString 함수로 암호화하고 있다
CryptoClass 파일을 확인하니 암호화키가 대놓고 평문으로 저장되어있는 것을 발견
"This is the super secret key 123"을 이용해서 패스워드 복호화를 해보자
곧바로 패스워드가 Dinesh@123$로 복호화되었다
대응방안
- 중요 정보는 암호화해서 저장한다.
- 복호화가 어려운 안전한 암호 알고리즘을 적용한다.
- 암호화 키, 인증 값이 노출되지 않도록 안전하게 관리한다.
'모바일 앱 해킹' 카테고리의 다른 글
[DIVA] Insecure Logging(안전하지 않은 로깅) | 안드로이드 앱 취약점 실습, DIVA란? (0) | 2024.05.18 |
---|---|
취약한 로깅 메커니즘 | 안드로이드 앱 해킹, 인시큐어뱅크 실습 (0) | 2024.05.16 |
안드로이드 앱 구조 이해하기 | apk, dex, manifest 등 (0) | 2024.05.10 |
모바일 앱 해킹 이걸 해봐라 | 모바일 앱 개발, Frida, DIVA (0) | 2024.05.10 |
모바일 앱 해킹 방향잡기 | 모바일 앱 해킹을 해야하는 이유, 취약점 구분 (0) | 2024.05.09 |