frida를 이용한 rooting 탐지 우회하기
( ※ frida 설치 과정 : https://y0on-it.tistory.com/28 )
1. 환경구축, 구동
- 루트 권한 필요
- 디컴파일 도구 (apktool, dex2jar, bytecode-viewer, jd-gui, jadx 등)
- 테스트 대상 앱
*루트권한 설정하기
>adb root
*환경구동
>adb devices
>adb shell
#./data/local/tmp/frida-server-15.1.3-android-x86 &
# ps | grep frida-server
frida 서버 구동
>frida-ps -U
>frida-ls-devices //해당 명령어로 잘 연결되었는지 확인
+)루팅된 상태로 테스트 앱 열어봐도 탐지가 안된다.. 다른 앱은 정상적으로 되는데??
2. 디컴파일 & 분석
(환경구축 포스팅에서 기본적인 작업 해두었다 - https://y0on-it.tistory.com/33 )
dex-tools 이용하여 jar 파일 생성 후 ,
InsecureBankv2-dex2jar 파일을 jd-gui로 오픈
우회할 부분 찾기 -> root/Root로 검색!
search 메뉴에서 해당 키워드를 입력하니까 금방 찾을 수 있었다.
-> root_status 라는 TextView 발견.
-> Root 탐지 관련 함수 발견.
두번째 if절 진입 전에 bool 값이 fasle 값이어야 한다! == bool 값이 true면 루팅 탐지
그렇다면, true가 되는 조건은??? - 첫번째 if절 통과 (아래 조건 중 하나만 만족해도 통과)
-doesSuperuserApkExist 함수 반환 값이 true
-doesSUexist 함수 반환 값이 true
-> 둘 다 false 값이 반환되도록 해야한다.
if절에서 호출한 함수들 확인하기!
- doesSuperuserApkExist 함수 확인
/system/app/Superuser.apk 파일이 존재하지 않으면 false로 / 존재하면 true로 !
adb shell 에서 해당 파일을 찾아 보았지만 루팅 탐지가 제대로 안돼서 아직 생성이 안된 듯 하다.
==> 이미 생성되었다고 가정하면, apk 파일 이름을 바꾸거나 삭제하면 되지 않을까?
- doesSUexist 함수 확인
Runtime.getRuntime().exec("시스템 명령어"); //문자열 배열로 전달!!
Runtime.getRuntime().exec(new String[] { "/system/xbin/which", "su" });
//실행프로그램 : /system/xbin/which , 전달할 인수 : su
-> 즉, su 명령어를 cmd 창에서 입력하는 것과 동일한 프로세스 생성됨.
String str = bufferedReader.readLine(); -> 버퍼에 입력된 값을 str로 가져옴
null이 아니면 (su 파일이 있으면) 처음에 true로 선언했던 bool 변수 바로 return !! -> 결국 true 가 return 되는 것
==> str에 null 값 넣도록 정의 ?
==> 아니면 두 함수 모두 return false; 로 재정의하기 ?
+)
ShowRootStatus 함수가 어디서 호출되는지 알아보기위해서 함수명으로 검색.
->onCreate 안에서 호출되고 있고, setcontentView()메소드 다음으로 바로 호출됨을 확인할 수 있다.
일단
/system/app/Superuser.apk
3. 우회 스크립트 작성
4. 결과 확인
'보안 > android' 카테고리의 다른 글
[앱][리버싱] 악성앱 분석 - InsecureBankv2 (4) ; Intent Sniffing and Injection (0) | 2021.11.12 |
---|---|
[앱][리버싱] 악성앱 분석 - InsecureBankv2 (3) ; Flawed Broadcast Receivers (0) | 2021.11.12 |
[앱][리버싱] 악성앱 분석 - InsecureBankv2 (1) (0) | 2021.10.28 |
[앱][리버싱] 악성앱 분석 - InsecureBankv2 환경구축 (0) | 2021.10.28 |
[앱][리버싱] 7주차 정리+과제 ; frida를 이용한 rooting 탐지 우회 (0) | 2021.10.28 |