티스토리 뷰
[ 애플리케이션 패칭 취약점 ]
: 안드로이드의 코드를 변경해 APK 파일을 변조하고 비정상적인 실행하도록 유도하는 취약점
안드로이드 모바일 악성코드들은 정상적으로 서비스되고 있는 앱을 조작해 사용자들을 유인
아이콘만 다른 앱에서 가져와 간단한 기능만 포함해 배포하는 사례도 있음
공격자들도 앱을 처음부터 개발하는 것이 아닌 모두 개발된 앱에 사용자의 개인 정보를 포함해
원하는 데이터를 얻기 위한 코드들만 삽입하는 것이 효율적
< 취약점 진단 과정 >
1. 안드로이드 스튜디오에 인시큐어뱅크 프로젝트를 불러옴
2. app 목록에서 마우스 오른쪽 클릭 후 Open In --> Explorer 누른다
Explorer을 누르면 소스 코드 프로젝트로 이동하며,
디버그 모드와 릴리즈 모드에서 생성된 apk 파일 확인 가능
안드로이드 스튜디오에서 소스 코드 수정하고 빌드하면 이 디렉터리에 새로 생성됨
소스 코드 존재하지 않는 상태에서는 apk 파일을 디컴파일한 후에 smali 코드 수정하고,
다시 디컴파일 한 후에 사이닝 과정 거쳐야만 정상적으로 설치됨
컴파일 하면 app\app-release\smali\com\android\insecurebankv2\에 smail 코드가 생성
3. 수정 여부 판단 위해 PostLogin.smali 파일에서 Rooted Deviced 를 다른 문자로 수정
4. 코드 수정 후 apktool 도구 이용해 b 옵션으로 다시 빌드
- 문자 수정해 생성된 apk 파일은 InsecureBankv2\app\app\release\dist\에 존재
- 이 파일은 사이닝 되어 있지 않으므로 디바이스에 설치할 때 에러 발생
apktool b app-release
5. 디바이스에 어플 재설치
변조된 파일 위치 : D:\Android-InsecureBankv2-master\InsecureBankv2\app\app-release\dist
adb install app-release.apk
실제로 실무에선 smail 코드 변조해 루팅 우회 하거나 인증 프로세스 우회하는 곳에 코드 패칭을 이용함
보안 솔루션은 분기점(if문) 이용하므로 smali 코드에서 true, false 부분만 수정해도 우회 가능
< 대응 방안 >
1. 코드 난독화
- 안드로이드 스튜디오에서는 기본적으로 앱 난독화 도구 프로가드(Proguard) 제공
- 프로가드 : 자바코드에서 사용하지 않는 클래스, 필드, 메서드들을 찾은 후 삭제해 코드 전체 크기 줄여주고.
클래스, 필드, 메서드 등의 이름 난독화해주는 오픈소스 프로그램
2. 디컴파일 방지 위한 바이너리 난독화 or 파일 무결성 검증
'Security Study > Android' 카테고리의 다른 글
[InsecureBankv2] 메모리 내 민감한 정보 저장 (0) | 2023.01.27 |
---|---|
Apk 코드 패치(리앱) 후 서명(Signing) 하는 법 (0) | 2023.01.27 |
[InsecureBankv2] 취약한 암호화 실행 (0) | 2023.01.27 |
[InsecureBankv2] 안전하지 않은 웹 뷰 실행 (0) | 2023.01.25 |
[InsecureBankv2] 안전하지 않은 콘텐츠 프로바이더 접근 (1) | 2023.01.25 |
- Total
- Today
- Yesterday
- reversing
- 안드로이드
- rev
- 스테가노그래피
- dreamhack
- 인시큐어뱅크
- 해킹
- 리버싱
- sqlinjection
- 모바일
- SQLi
- FTKImager
- forensics
- AssaultCube
- 드림핵
- web
- CTF
- md5
- MISC
- Steganography
- forensic
- Android
- Cookie
- 취약점
- networking
- cheatengine
- Fiesta
- 포렌식
- mongodb
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |