일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- diva
- Suninatas
- XSS
- 파이썬
- Strings
- 2018
- base64
- Docker
- Reflected XSS
- SQL Injection
- Volatility
- elasticsearch
- logstash
- otter
- lord of sql injection
- ctf
- CTF-d
- beebox
- NTFS
- ESXi
- frida
- InsecureBank
- foremost
- 인시큐어뱅크
- vulnhub
- Openstack
- kibana
- igoat
- MFT
- 안드로이드
- Today
- Total
Information Security
루팅 - Bypass Build-Tags 본문
- 루팅 패치 프로그램을 통해 디바이스 루팅을 진행할 때 해당 프로그램은 디바이스의 boot 이미지의 특정 설정 값을 수정하게 된다. 그리고 이러한 설정들은 시스템 속성 파일인 build.prop 파일에 반영되어 디바이스 부팅 시 참조하게 된다.
- Bypass Build-Tags 항목은 안드로이드 시스템 파일인 build.prop 파일의 속성 값을 검사하여 비정상 값이 존재할 경우 루팅 디바이스로 판단해 탐지하게 된다.
아래와 같은 내용을 확인
/system 디렉터리 위치에서 build.prop 파일 확인
build.prop 시스템의 속성 값을 확인
getprop 명령어로 속성 값 확인
isCheckRootingKeys() 함수는 Bypass Module 탐지 결과를 반환해 주는 역할을 한다. 시스템 속성 값인 ro.build.type, ro.build.keys 등이 getSystemProperty 클래스의 prop() 함수 호출 시 인수 값으로 사용되고 있으며, 결과 반환 값은 uArrayList0 리스트 변수에 저장된다. 그 후 contains() 함수를 통해 반환 값 중 test-keys와 일치하는 문자열이 있는지 검사하게 된다.
isCheckRootingKeys() 함수에서 사용된 getSystemProperty 클래스를 살펴보면 prop() 함수 하나만 존재하고 있고, 매개 변수로 받은 문자열은 Class 클래스를 통해 로드된 클래스의 함수 매개 변수값으로 사용되며 해당하는 시스템 속성 값을 반환한다.
isCheckRootingKeys() 함수에서 prop() 함수 호출 시 전달 했던 시스템 속성을 그대로 가져와 리스트로 선언했고 prop() 함수 사용을 위해 getSystemProperty 클래스 객체를 반환받았다. prop() 함수로 들어오는 매개 변숫값이 선언한 리스트에 포함되어 있을 경우 더미 값으로 변조하고 변조한 더미 값을 인수로 원본 prop 함수를 호출해 결괏값을 반환한다
탐지가 우회된것을 확인
'모바일 > ANDITER' 카테고리의 다른 글
루팅 - Bypass Command Execution (0) | 2023.12.28 |
---|---|
루팅 - Bypass Binaries (0) | 2023.12.17 |
루팅 - Bypass Packages (0) | 2023.12.16 |