관리 메뉴

Information Security

루팅 - Bypass Build-Tags 본문

모바일/ANDITER

루팅 - Bypass Build-Tags

HackingPractice 2023. 12. 30. 16:49
  • 루팅 패치 프로그램을 통해 디바이스 루팅을 진행할 때 해당 프로그램은 디바이스의 boot 이미지의 특정 설정 값을 수정하게 된다. 그리고 이러한 설정들은 시스템 속성 파일인 build.prop 파일에 반영되어 디바이스 부팅 시 참조하게 된다.
  • Bypass Build-Tags 항목은 안드로이드 시스템 파일인 build.prop 파일의 속성 값을 검사하여 비정상 값이 존재할 경우 루팅 디바이스로 판단해 탐지하게 된다.

그림 1 Bypass Build-Tags

 

아래와 같은 내용을 확인

그림 2 개요

 

/system 디렉터리 위치에서 build.prop 파일 확인

그림 3 build.prop

 

build.prop 시스템의 속성 값을 확인

그림 4 속성 값

 

getprop 명령어로 속성 값 확인

그림 5 getprop

 

isCheckRootingKeys() 함수는 Bypass Module 탐지 결과를 반환해 주는 역할을 한다.  시스템 속성 값인 ro.build.type, ro.build.keys 등이 getSystemProperty 클래스의 prop() 함수 호출 시 인수 값으로 사용되고 있으며, 결과 반환 값은 uArrayList0 리스트 변수에 저장된다. 그 후 contains() 함수를 통해 반환 값 중 test-keys와 일치하는 문자열이 있는지 검사하게 된다.

그림 6 isCheckRootingKeys

 

isCheckRootingKeys() 함수에서 사용된 getSystemProperty 클래스를 살펴보면 prop() 함수 하나만 존재하고 있고, 매개 변수로 받은 문자열은 Class 클래스를 통해 로드된 클래스의 함수 매개 변수값으로 사용되며 해당하는 시스템 속성 값을 반환한다.

그림 7 getSystemProperty

 

 isCheckRootingKeys() 함수에서 prop() 함수 호출 시 전달 했던 시스템 속성을 그대로 가져와 리스트로 선언했고 prop() 함수 사용을 위해 getSystemProperty 클래스 객체를 반환받았다. prop() 함수로 들어오는 매개 변숫값이 선언한 리스트에 포함되어 있을 경우 더미 값으로 변조하고 변조한 더미 값을 인수로 원본 prop 함수를 호출해 결괏값을 반환한다

그림 8 frida 스크립트

 

탐지가 우회된것을 확인

그림 9  성공

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

루팅 - Bypass Command Execution  (0) 2023.12.28
루팅 - Bypass Binaries  (0) 2023.12.17
루팅 - Bypass Packages  (0) 2023.12.16