관리 메뉴

Information Security

루팅 - Bypass Packages 본문

모바일/ANDITER

루팅 - Bypass Packages

HackingPractice 2023. 12. 16. 16:26
  • 디바이스 루팅 시 사용된 응용프로그램 종류에 따라 내부 저장소에 특정 패키지들이 설치되거나, 공격자들이 앱 분석 및 악의적인 행위를 위하여 특정 앱을 설치한다.
  • 대표적인 앱으로는 magisk, BusyBox, Toolkit, Dex Manager 등이 있으며, 이러한 앱들은 특정 동작 수행을 위해 관리자 권한을 획득하거나 또는 디바이스 정보를 변경하는 데 사용된다.
  • Bypass Packages 항목은 디바이스에 설치된 앱 패키지 목록을 검사하여 루팅 시 설치되는 앱 또는 루팅 디바이스에서만 활용되는 앱들이 존재하는 확인한다.

루팅 Bypass packages 문제를 풀 것이다.

 

마우스로 클릭하면 아래와 같이 내용을 확인할 수 있다.

Fail이 보이는 것을 알 수 있다.

APK 파일을 압축푼 후에 JEB 프로그램을 이용하여 class.dex파일을 열어봄

소스코드 부분에서 Tab키를 누르면 오른쪽에 디컴파일하여 소스코드 확인

루팅이라는 글자로 찾는 방법

/system/bin으로 su 명령어로 찾는 방법

isCheckRootingInstalled() 함수는 Bypass Packages 탐지 결과를 반환해 주는 역할을 한다. 코드를 보면 rootingPackages에서 패키지 목록을 가져오고 있으며  getPackagesInfoCompat() 함수를 통해 가져온 패키지 정보를 반환받게 된다. 패키지 정보가 있을 경우 디바이스에 해당 패키지가 설치되어 있는 것으로 판단해 탐지하게 된다.

isCheckRootingInstalled() 변조할 Smali 코드이다. Smali 코드 구문이 Java 소스코드의 while문 조건 구문이며 v4, v2 레지스터리에 저장된 값을 비교해 v3 값이 v1 보다 클 경우 38(return)로 이동하게 된다. 그래서 Smali 코드 구문의 조건문을 참으로 만들어 38로 이동시킨 다음 false 값을 반환할 수 있도록 변조하면 된다.

 

조건문 설명
if-eq A==B
if-ne A!=B
if-lt A<B
if-le A<=B
if-ge A>=B
if-gt A>B

 

APK Easy Tool을 이용해 해당 APK 파일을 디컴파일을 한다.

smali\com\playground\anditer 위치에서 RottingDetector.smali 코드에서 if-ge를 if-ne로 변조

smali 코드를 변조 후 APK Easy Tool에서 Complie 클릭

컴파일한 APK 설치하면 Fail에서 Success!로 변경된 것을 확인

'모바일 > ANDITER' 카테고리의 다른 글

루팅 - Bypass Build-Tags  (0) 2023.12.30
루팅 - Bypass Command Execution  (0) 2023.12.28
루팅 - Bypass Binaries  (0) 2023.12.17