무기는 끈기

[모바일 앱 해킹 / 안드로이드] Uncrackable.apk 모의해킹 실습 write up 본문

카테고리 없음

[모바일 앱 해킹 / 안드로이드] Uncrackable.apk 모의해킹 실습 write up

김유비야 2024. 7. 3. 16:49

<개요>

증상

  1. 실행 시 루팅 탐지 경고가 뜨며 강제종료

목표

  1. 루팅 탐지 우회
  2. su, superuser 감지 우회

 

Step 1. 

Uncrackable.apk 앱을 실행하면 아래와 같은 루팅 탐지 알림이 뜹니다.

 

Step 2. 

“Root detected!” 문구를 텍스트 검색하여 JADX에서 루팅 탐지 로직을 찾아봅니다.

 

c.a() || c.b() || c.c() → 이 메소드는 셋 중 하나라도 true가 뜨면 루팅된 상태로 감지하여 a라는 루트 감지 알림을 호출하는 메소드로 보입니다.

 

 

c클래스를 살펴보면 아래와 같이 3가지 조건을 살펴볼 수 있습니다.

 

  1. “su”라는 파일을 감지하면 루팅 O
  2. “test-keys”라는 태그를 감지하면 루팅 O
  3. “Superuser.apk”, “daemonsu”, … 등 여러 파일을 감지하면 루팅 O

 

이 3가지 조건 중 하나라도 true일 경우엔 루팅된 상태로 감지하여 접근을 막기 때문에 3가지 모두 해당되지 않도록 파일을 이동하거나, 이름을 변경해서 감지할 수 없도록 우회해야 합니다.



 

Step 3. 

루팅 탐지 로직을 우회합니다.

 

관리자 권한으로 “su”라는 이름을 가진 파일이 있는지 확인합니다.

 

/system/bin/su

/system/xbin/su

→ 2개의 파일이 있는 것을 확인했습니다.

 

2개의 파일의 이름을 변경해줍니다.

 

su → su2 로 모두 바꿔주었습니다.

 

변경하고 제대로 변경이 되었는지 확인을 위해 다시 “su” 파일을 확인했더니 제대로 변경이 되어 기존 이름으로는 감지되지 않습니다.

 

“su2”로도 검색해보았더니 정상적으로 아까 2개의 파일이 검색됩니다.

 

첫번째 a 조건은 우회 성공하였습니다.

 

이번엔 b 조건인 test-keys  태그가 있는지 보려고 했더니, 해당 태그가 release-keys라는 태그로 변경이 되어 따로 수정하지 않아도 됩니다.

 

최신으로 업데이트 되며 이름이 변경된 것으로 확인됩니다.



마지막 c 조건은 "/system/app/Superuser.apk", "/system/xbin/daemonsu", "/system/etc/init.d/99SuperSUDaemon", "/system/bin/.ext/.su", "/system/etc/.has_su_daemon", "/system/etc/.installed_su_daemon", "/dev/com.koushikdutta.superuser.daemon/" 7개의 파일을 확인해야 하는 조건이었습니다.

 

하나하나 확인을 진행하였고, 모두 없어서 따로 수정하지 않아도 됩니다.

 

 

Step 4. 

앱을 다시 실행해봅니다.

 

루팅 탐지 조건 3가지를 모두 우회했으니, 이제 다시 앱을 실행해봅니다.

 

우회에 성공하여 루팅 탐지 경고 알림이 뜨지 않고 정상적으로 접속이 되는 것을 확인했습니다.