Android/InsecureBankv2

인시큐어뱅크 앱 취약점 - 앱 패칭 취약점

박연준 2023. 7. 3. 21:16

인시큐어뱅크 앱 취약점 - 앱 패칭 취약점

취약점 소개

앱 패칭 취약점이란 안드로이드의 클라이언트 코드를 변경해 비정상적인 작동을 유도하도록 APK 파일을 변조해 실행되는 취약점을 말한다.

대표적인 예로 배포된 악성코드들이 정상적인 서비스 앱을 조작해 사용자들을 유인함으로 인해서 사용자의 개인 정보, 공인 인증서, 휴대폰 정보 등을 탈취한다.

서버 인증이 아닌 클라이언트 단의 인증을 우회해서 여러가지 인증 절차를 무력화시킬 수 있다.

취약점 진단

릴리즈된 apk 파일을 확인 한 후 명령 프롬포트 창을 연 후 apktool -d app-release.apk 를 입력해 디컴파일한다.

 

디컴파일을 하면 app-release\smali\com\android\insecurebankv2 경로에 smail 코드가 생성된다.

 

PostLogin.smail 파일을 열어 다음과 같이 “Rooted Device!!” 부분을 수정한다.

나는 Yeonjun 이라고 저장했다.

 

app-release가 있는 폴더로 이동한 후 app-release 파일을 다시 컴파일 한다.

apktool -b [릴리즈 파일 명]을 입력한 후 실행한다.

컴파일 된 apk 파일은 InsecureBankv2/app/app-release/dist/에 존재한다.

 

새로 릴리즈 된 apk 파일을 단말기에 설치하면 에러가 발생하기 때문에 서명키 값 인증을 해야 한다.

서명키 값 인증 후 변조된 앱을 정상적으로 설치하고 로그인 하면 로그인화면에 변조했던 문구가 출력되는 것을 볼 수 있을 것이다.

실무에서는 smail 코드 변조를 통해 루팅 우회를 하거나 인증 프로세스를 우회하는 곳에 패칭을 적용한다고 한다.

대응 방안

안드로이드 앱의 위변조에 대응하기 위해서 NDK를 사용하는데 소스코드를 난독화가 되어 있지 않다면 프로세스를 분석해 메모리에서 중요한 제어를 조작한다.

안드로이드 스튜디오에선 기본적으로 앱 난독화 도구인 프로가드를 제공한다.

프로가드는 자바코드에서 사용하지 않는 클래스, 메소드, 필드들을 찾은 후 삭제해서 코드 전체의 크기를 줄여주고 이름을난독화 해주는 프로그램이다.

인시큐어뱅크 폴더 목록에서 Gradle Scripts → build.gradle 파일에 buildType이 존재한다.

manifyEnabled는 기본적으로 false로 설정되어 있고 이를 true로 설정하면 가능하다.