안드로이드·갤럭시·AOS 취약점진단/모의해킹 무료 강의 학식(hagsig)
가. 취약점 정의
- 안드로이드 앱은 로컬 스토리지에 파일을 저장할 수 있다.
- 환경설정 정보, 외부 API 연동 및 인증을 위한 토큰 값, 연동 서버 정보 등이 로컬 스토리지에 저장된다.
- 루팅 된 환경에서는 애플리케이션이 다른 애플리케이션의 디렉터리에 접근할 수 있으므로 데이터를 탈취할 수 있다.
- 중요 데이터가 평문 형태로 저장되어 제삼자에게 유출될 경우 2차 피해로 이어질 수 있다.
1. 내부 저장소(Internal Storage)
- 애플리케이션 설치 시 /data/data/ 경로에 패키지 이름과 같은 디렉터리가 생성된다.
- 해당 디렉토리는 생성한 애플리케이션 전용이며 다른 애플리케이션은 접근할 수 없다.
- 애플리케이션을 제거하면 내부 저장소에 저장된 파일도 삭제된다.
1-1. Shared Preferences
- SharedPreferences 객체는 키(key)-값(value) 쌍이 포함된 파일을 가리키며, 앱의 환경설정이나 인증정보 등을 저장하는데 사용된다.
- /data/data/[package_name]/shared_prefs/ 경로에 .xml 확장자 파일로 저장된다.
1-2. SQLite Databases
- 모바일 환경에서 일반적으로 사용되는 경량 파일 기반 데이터베이스이다.
- 안드로이드 SDK는 SQLite 데이터베이스를 기본적으로 지원한다.
- 특정 애플리케이션의 SQLite 데이터베이스에 저장된 데이터는 다른 애플리케이션에 접근할 수 없다.
- /data/data/[package_name]/databases/ 경로에 .db 확장자 파일로 저장된다.
2. 외부 저장소(External Storage)
- SD카드와 같은 외부 저장소를 말하며 내부 저장소와 마찬가지로 파일을 저장하는 데 사용된다.
- 모든 앱이 이 저장소에 접근하여 파일을 읽고 쓸 수 있으므로 민감한 정보는 여기에 저장하면 안된다.
- 애플리케이션을 제거해도 외부 저장소에 저장된 파일은 삭제되지 않는다.
- /sdcard 또는 /mnt/sdcard 경로에 저장된다.
나. 대응방법
- 로컬 저장소에 저장된 데이터는 노출될 우려가 있으므로 최소한의 정보만 저장한다.
- 중요정보를 저장해야 하는 경우 안전한 암호화 알고리즘을 이용하여 저장한다.
분류 | 미국(NIST) | 일본(CRYPTREC) | 유럽(ECRYPT) | 국내 |
대칭키 암호 알고리즘 | AES-128/192/256 3TDEA |
AES-128/192/256 Camellia-128/192/256 |
AES-128/192/256 Camellia-128/192/256 Serpent-128/192/256 |
SEED HIGHT ARIA-128/192/256 LEA-128/192/256 |
공개키 암호 알고리즘 (메시지 암·복호화) |
RSA (사용 권고하는 키길이 확인 필요) |
RSAS-OAEP | RSAS-OAEP | RSAES |
일방향 암호 알고리즘 | SHA-224/256/384/512 | SHA-256/384/512 | SHA-224/256/384/512 Whirlpool |
SHA-224/256/384/512 |
출처 : 개인정보의 안정성 확보조치 기준 해설서, KISA, 2020.12.
다. 취약점 진단 실습
1. 분석 대상 앱 설치
- 실습을 위해 DIVA 애플리케이션을 설치한다.
※ DIVA 앱이 설치되어있지 않은 사람은 아래의 글을 참고하여 앱을 설치하길 바란다.
[AOS App 취약점 진단 · 모의해킹] - 안드로이드 DIVA 설치 및 실행방법 정리
안드로이드 DIVA 설치 및 실행방법 정리
1. 안드로이드 DIVA 란? - 안드로이드(Android, AOS)에서 사용하는 애플리케이션(Application, App)에 대해 취약점 진단을 실습할 수 있는 환경을 제공한다. - 2016년 이후 업데이트가 중단되었다. 2. 실습할
hagsig.tistory.com
2. DIVA 앱 실행
- 5.INSECURE DATA STORAGE - PART 3 → 아이디(ID, username)와 패스워드(password) 입력 → SAVE
![](https://blog.kakaocdn.net/dn/RtePZ/btsBiqWtRVf/mj9iUeDqm7fI18rivtpi60/img.png)
![](https://blog.kakaocdn.net/dn/Z7MGO/btsBiruippM/kEvev6WfLw2iuEgcGaMkk1/img.png)
3. 저장된 데이터 확인
- ADB를 이용하여 디바이스에 접근한다.
※ NOX 에뮬레이터의 경우 adb connect 127.0.0.1:62001 명령어를 입력하여 연결할 수 있다.
adb connect 127.0.0.1:62001 #NOX일경우 해당 명령어를 통해 연결 가능
adb devices #디바이스 리스트 및 연결가능 여부가 출력됨
adb shell #디바이스에 연결
※ adb에 대한 자세한 사용방법은 아래의 게시글을 참고하자.
[AOS App 취약점 진단 · 모의해킹] - adb 다운로드, 디바이스 연결 및 파일 송수신 명령어 정리
adb 다운로드, 디바이스 연결 및 파일 송수신 명령어 정리
가. Android Debug Bridge(adb) 정의 - adb(안드로이드 디버그 브릿지)는 기기와 통신할 수 있도록 지원하는 다목적 명령줄 도구이다. - 디바이스에서 다양한 명령어를 실행하는 데 사용할 수 있는 Unix Shel
hagsig.tistory.com
- 애플리케이션 *내부 저장소 설치 디렉터리로 이동. 루트권한이 없을 시 접근할 수 없음.
*내부 저장소 설치 디렉토리 경로 : /data/data/[package_name]
cd /data/data/jakhar.aseem.diva #패키지 이름은 앱 이름과 비슷하므로 유추가 가능함
- *ls -alR 명령어를 입력, SAVE 버튼을 눌렀을 때의 시간으로 AccessTime이 변경된 파일을 찾는다.
*ls -alR : 하위 디렉토리 경로에 있는 모든 파일 및 폴더를 리스트 형태로 출력한다.
- uinfo1566991760tmp 파일의 데이터를 확인하기 위해 cat 명령어를 사용한다.
- 사용자가 입력한 아이디/패스워드가 평문으로 저장되어있는것을 확인할 수 있다.
cat /data/data/jakhar.aseem.diva/uinfo1566991760tmp
'Mobile App 취약점 진단 · 모의해킹 > AOS App 취약점 진단 · 모의해킹' 카테고리의 다른 글
adb 다운로드, 디바이스 연결 및 파일 송수신 명령어 정리 (0) | 2023.12.03 |
---|---|
[AOS 취약점 진단] 06강 - 로컬저장소 내 평문 저장된 중요정보 확인(External Storage 실습) (0) | 2023.12.02 |
[AOS 취약점 진단] 06강 - 로컬저장소 내 평문 저장된 중요정보 확인(SQLlite Database 실습) (0) | 2023.12.02 |
[AOS 취약점 진단] 06강 - 로컬저장소 내 평문 저장된 중요정보 확인(SharedPreferences 실습) (0) | 2023.12.01 |
[AOS 취약점 진단] 05강 - 하드코딩된 중요정보 확인(실습 3) (0) | 2023.11.18 |