Android/InsecureBankv2

인시큐어뱅크 앱 취약점 - 루트 노출 및 우회 취약점

박연준 2023. 7. 3. 19:42

인시큐어뱅크 앱 취약점 - 루트 노출 및 우회 취약점

취약점 소개

루팅이란 안드로이드 디바이스 시스템 권한을 얻는 것이다.

리눅스 기반의 운영체제의 경우 시스템 루트 권한 취득이 가능하지만 안드로이드의 경우 보안상의 이유로 루트 권한을 막아 놓았으며 이로인해 행위의 제한이 생긴다.

이러한 제한을 풀거나 우회하기 위해서는 시스템 권한을 루팅으로 획득해야 한다.

기기를 루팅하면 슈퍼 유저의 권한으로 하드웨어 성능 조작, 제조사 및 통신사 기본 앱 삭제, 시스템 권한을 이용한 다양한 디바이스 조작이 가능하다.

루팅된 기기는 디바이스 내부의 민감한 정보에도 접근 가능하다.

취약점 진단

루팅 체크가 필수적인 금융 앱이나 게임 앱에서 주로 체크하는 경로

  1. /system/bin/su
  2. /system/xbin/su
  3. /system/app/superuser.apk
  4. /data/data/com.noshufou.android.su

현재 루팅 되어있는 상태에서 InsecureBankv2 애플리케이션을 실행하면 ‘Rooted Deviced’ 라는 문구가 보이면서 루팅되어 있다고 나타난다.

루팅된 디바이스를 참조하는 소스를 찾아보니 PostLogin.java에서/system 경로의 su, Superuser.apk 파일을 확인하여 루팅의 여부를 판단하게 된다.

 

/system/app/Superuser.apk 파일이 존재할 경우 “Rooted Device”라는 문구가 뜨게 되며 없을 시엔 “Device not Rooted” 문구가 뜨게 되는 코드이다.

 

/system/bin/which su를 통해 su 파일이 존재하는지 확인하여 루팅을 판별하게 된다.

/system/xbin 의 폴더에 su 파일이 있는지 확인한다.

파일 명을 변경하기 위해선 su 명령을 입력한 뒤 mount -o rw,remount /system 명령어를 입력해 system 폴더에 읽기와 쓰기 권한을 부여해야 한다.

아래와 같이 mv명령어를 이용해 su파일을 su2로 변경하면 우회에 성공한 것이다.

InsecureBankv2 앱에 다시 접속한 후 로그인을 하면 Device not Rooted라고 뜨면서 우회에 잘 성공한 모습을 확인할 수 있다.

대응 방안

  1. 탐지 후 별다른 제재를 하지 않아 앱 사용에 문제가 없으면 루트 권한으로 정보 열람이 가능
  2. 루팅된 디바이스로 접근 시 즉시 앱을 종료시켜야한다.
    • 이때, 중요한 점은 루팅을 방지하는 소스 코드 로직이 노출되면 안된다.
    • 무결성 검증이 필요하며 디컴파일 방지 솔루션을 적용하는 것이 중요하다.
  1.