What is

what is Rooting?

kielo 2025. 8. 11. 16:18

Rooting과 Hooking 기초 – 루팅 탐지 우회 기본편

0. 시작하며

여러분, 휴대폰 안에는 우리가 보지 못하는 보안 울타리가 있습니다.
제조사와 운영체제가 "이건 건드리지 마" 하고 정해놓은 영역이죠.
그런데 이 울타리를 넘어, 휴대폰 속 모든 문을 열 수 있는 ‘열쇠’를 손에 넣는다면 어떨까요?
바로 오늘 이야기의 주인공, 루팅(Rooting)입니다.





1. Rooting이란?


루팅은 안드로이드 기기에서 루트 권한,
즉 운영체제의 ‘관리자 계정’을 얻는 걸 말합니다.

쉽게 말해, 집 주인의 마스터 키를 쥐고
원래 잠겨 있던 방문까지 마음대로 열 수 있는 상태가 되는 거죠.

그렇게 되면 어떤 일을 할 수 있을까요?

  • 시스템 앱을 강제로 지우기
  • 제조사가 막아둔 숨겨진 설정 열기
  • 앱 데이터를 수정해서 원하는 값으로 바꾸기


iPhone에서는 이런 행동을 탈옥(Jailbreaking)이라고 부릅니다.
안드로이드의 루팅과 거의 같은 개념이에요.




2. 왜 위험할까?


권한이 커지면 자유도 높아지지만, 동시에 위험도 커집니다.
특히 보안에 민감한 앱 입장에서는 큰 위협이죠.

예를 들어, 루팅된 기기에서는

악성 앱이 시스템 깊숙이 파고들 수 있고

금융 앱의 데이터가 변조될 수 있으며

비밀번호나 카드번호 같은 민감 정보가 쉽게 탈취됩니다.


그래서 은행 앱, 결제 앱, 일부 게임은
루팅된 기기에서 아예 실행 자체를 막아버립니다.





3. Hooking이란?


자, 여기서 문제가 생깁니다.
루팅한 기기에서는 앱이 "넌 루팅됐네? 실행 안 할래"라고 말해 버리죠.
그런데 이 말을 못하게 할 방법이 있습니다.
그게 바로 후킹(Hooking)입니다.

후킹은 간단히 말해,
"앱이 실행 중일 때, 특정 기능을 가로채서 다른 동작을 시키는 기술"입니다.

예를 들어, 게임의 ‘점프’ 함수를 몰래 바꿔서
두 배 높이 뛰게 만들 수 있죠.
이걸 보안 앱에 쓰면, 루팅 탐지 결과를 ‘아니오’로 바꾸는 것도 가능합니다.





4. 실습을 위한 준비


이번 예시는 Nox 안드로이드 에뮬레이터에서 진행한다고 가정해 볼게요.

Android

  • 소프트웨어 정보 내 ‘빌드 번호’를 여러 번 눌러 개발자 옵션 켜기
  • USB 디버깅 활성화
  • PC와 같은 네트워크 연결

pc

  1. ADB 설치하고 환경 변수 등록
  2. adb connect 127.0.0.1:62001로 연결
  3. adb devices로 연결 상태 확인
  4. pip install frida로 Frida 설치
  5. Frida 서버 파일을 디바이스에 넣기



5. 간단 예시

su 디렉토리 탐지 우회

많은 앱은 /system/bin/su 같은 경로가 있는지 확인해서
루팅 여부를 판단합니다.
이 과정을 후킹으로 바꿔치기하면,
앱이 무조건 “루팅 안 됨”이라고 믿게 만들 수 있죠.


Java.perform(function() {
    var root = Java.use('b.a.a.k.a'); // 루팅 체크 클래스
    root.isDeviceRooting.implementation = function() {
        console.log("Rooting 탐지 우회 시도 중");
        return false; // 항상 루팅 아님으로 반환
    }
});



이렇게 되면, 실제로는 루팅되어 있어도
앱은 아무것도 모른 채 정상 동작합니다.



함수 이름을 모를 땐?


루팅 탐지 함수의 이름을 모른다면
리버스 엔지니어링 도구(JEB 등)를 써서 코드를 분석해야 합니다.

Java.perform(function() {
    var root = Java.use('[Class Name]');
    root.findRootingAppName.implementation = function(a, b) {
        console.log("루팅 앱 탐지 우회 중: " + b);
        return null; // 무조건 ‘없음’으로
    }
});




6. 오늘의 마무리


오늘은 루팅과 후킹의 기본 개념,
그리고 아주 간단한 루팅 탐지 우회 예시를 살펴봤습니다.

루팅 = 운영체제의 관리자 권한 획득

후킹 = 실행 중 함수 동작을 바꾸는 기술

간단한 스크립트만으로도 앱의 보안 로직을 속일 수 있음


다음 편에서는 실제 서비스 앱의 다양한 루팅 탐지 방법과
그에 맞는 고급 우회 기법, 그리고 방어 방법까지 알려드릴게요.