티스토리 뷰

728x90
반응형

[ 애플리케이션 패칭 취약점 ]

      : 안드로이드의 코드를 변경해 APK 파일을 변조하고 비정상적인 실행하도록 유도하는 취약점

 

 

안드로이드 모바일 악성코드들은 정상적으로 서비스되고 있는 앱을 조작해 사용자들을 유인

아이콘만 다른 앱에서 가져와 간단한 기능만 포함해 배포하는 사례도 있음

 

공격자들도 앱을 처음부터 개발하는 것이 아닌 모두 개발된 앱에 사용자의 개인 정보를 포함해

원하는 데이터를 얻기 위한 코드들만 삽입하는 것이 효율적

 

 

 

< 취약점 진단 과정 >

1. 안드로이드 스튜디오에 인시큐어뱅크 프로젝트를 불러옴

 

2. app 목록에서 마우스 오른쪽 클릭 후 Open In --> Explorer 누른다

 

안드로이드 스튜디오에서 디렉토리 접근

 

릴리즈된 apk 파일 확인

 

 

Explorer을 누르면 소스 코드 프로젝트로 이동하며,

디버그 모드와 릴리즈 모드에서 생성된 apk 파일 확인 가능

 

안드로이드 스튜디오에서 소스 코드 수정하고 빌드하면 이 디렉터리에 새로 생성됨

소스 코드 존재하지 않는 상태에서는 apk 파일을 디컴파일한 후에 smali 코드 수정하고,

다시 디컴파일 한 후에 사이닝 과정 거쳐야만 정상적으로 설치됨

 

 

smali 코드 생성

컴파일 하면 app\app-release\smali\com\android\insecurebankv2\에 smail 코드가 생성

 

 

 

3. 수정 여부 판단 위해 PostLogin.smali 파일에서 Rooted Deviced 를 다른 문자로 수정

루팅 체크 smali 코드

 

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 파일 무결성 검증 

 

 

 

 

728x90
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함