안드로이드의 취약점 분석 방법과 설명
1. 안드로이드 분석 방법
정적분석 ( + 코드분석 )
- APK 파일 ← dex+리소스+권한 ← smali 코드 ← .class 파일 ← 자바 (코틀린)파일
동적 분석
- 내부 / 외부 저장소, 로그캣, 패킷정보
- 프로세스 정보
- 프록시 서버 - burpsuite
- 네트워크 통신 - wireshark
2. 디컴파일 순서
- 기본의 상태인 APK 파일
- APK의 파일을 .zip으로 확장자 변경 후, 압축을 풀면 .dex 파일, rsc폴더, META-INF로 이루어져 있다.
- apktool로 APK 파일을 디컴파일 진행하면, smali 코드가 출력된다.
- dex2jar로 APK 파일을 디컴파일 진행하면. .class 파일로 출력된다.
- Bytecode-Viewer, jadx 파일로 디컴파일 진행하며, 자바 파일로 출력된다. 컴파일이 안되는 부분도 있으니 교대로 참고하여 컴파일을 실행한다.
2.1 smali 코드 ( apktool )
APK 파일을 apktool로 컴파일 한다.
#java가 설치되어 있는 상태에서 진행
java -jar apktool_2.3.3.jar d (디컴파일 진행할 파일명)
위의 순서도 대로 Bytecode, jadx를 쓰면 한번에 디컴파일이 되지만, smali 코드를 사용하는 이유는 자바파일로의 디컴파일을 100% 신뢰할 수 없기 때문이다.
해킹방지 솔루션, 내부 알고리즘 등의 보안 설정이 있다면, 자바 파일로의 디컴파일 도중 에러가 발생한다.
이런 이유로 기계어에 가까운 smali 코드에서 수정하고 빌드하여 모의해킹을 진행한다.
AndroidManifest.xml
apktool 로 디컴파일하여 AndroidManifest.xml의 값을 확인 할 수 있다.
내부에는 permission으로 권한과 하단의 activity로 구성되어 있다.
permission에는 불필요한 권한이 존재할 경우 취약점으로 보고있다.
Acticity는 서블릿의 느낌으로 사용하고 있으며, android:export="true" 일 경우 외부에서 호출이 가능한 액티비티이다.
2.2 자바 파일 ( GDA )
위의 순서도에서는 Bytecode-Viewer, jadx 로 자바 파일을 디컴파일을 진행한다고 작성했다.
하지만, 사용 툴중에서는 GDA가 제일 사용하기 편하다고 생각한다.
무엇보다도 속도가 제일 빠를 뿐더러, 검색과 MalScan의 기능이 탁월하다고 생각한다.
3. 내부 저장소( 로컬 스토리지 )와 외부 저장소 ( SD 카드 스토리지 )
내부 저장소
- 중요한 정보가 포함이 되어야함
- 강한 암호를 가지고 있어야함 ( Sha 256, ... 등 )
외부 저장소
- /mnt/sdcard 에 위치함. ( 외부 저장소에 정보노출이 있는지 확인해야 한다.)
- /mnt/sdcard/Apps 확인도 필요하다.
- ls 명령어가 아닌 ls -al 명령어를 사용해 숨김파일도 확인해야 한다.
저장소 목록
Shared Preferences
- 안드로이드 앱 설정 파일 ( ID, PW 설정 등 )
- 웹에서 액티비티가 호출되면 key.xml 파일에 제공된 데이터가 작성됨
- /data/data/<packages-name>/shared_prefs/key.xml 에 사용자이름과 비밀번호가 저장된다.
SQLite Databases
- 경량 파일 기반 데이터베이스
- 콘텐츠 목록, 사용자 목록 등 DB 정도 등에 대한 목록
Internal Storage
- Shared Preferences 와 SQLite Databases를 포함하고 있다.
External Storage
- 모든 사용자들의 권한이 접근할 수 있도록 설정되어 있으므로, 중요 파일은 외부저장소에 저장하지 않아야 한다.
3.1 내부저장소 외부저장소 모의해킹 방법
내부 저장소의 경우 /data/data//shared_prefs/key.xml에서 EncryptedUsername을 수정하여 username을변경해도 접속이 되는지 확인한다.
외부저장소의 경우 /mnt/sdcard 내부에 html 파일 또는 .txt 파일 등 내부 금액의 전송 값, 비밀번호 변경 값 등등 이 노출되는 파일이 있는지 확인한다.
[출처] 인프런 보안프로젝트 안드로이드 모바일 앱 모의해킹과 시큐어코딩
'앱 모의해킹 > 안드로이드' 카테고리의 다른 글
Frida(1) - 문법, 개념 이해 (0) | 2024.06.13 |
---|---|
InsecureBank 취약점 분석 (0) | 2024.06.04 |
Drozer 프레임워크 (0) | 2024.05.30 |
안드로이드 기본개념(2) (0) | 2024.05.28 |
안드로이드 기본개념(1) (0) | 2024.03.26 |