티스토리 뷰

안녕하세요.

광주아이입니다.

어제 안드로이드에 이어 iPhone 함수 후킹 방법에 대해서 얘기좀 해볼까 합니다.

저는 주로 금융권 앱들 탈옥(jailbreak) 탐지 우회를 목적으로 후킹을 합니다.

iOS binary는 mach-o 라는 파일 형태입니다.

이를 분석하기 위해서는 아래와 같은 준비물이 필요합니다.

1. 탈옥된 iPhone 디바이스

 - 저는 iPhone 6s (iOS 11.4.1) 디바이스를 이용했구요.

2. MAC OSX

 - THEOS framework 을 이용한 .dylib 생성

3. IDA

 - Binary 파일을 분석하기 위함

4. iOS Binary Dump 도구

 - Frida, Clutch ( 디바이스에 따라 Frida를 이용할 때도 있고, jailbreak 탐지하는 앱에 따라 clutch를 이용할 때도 있습니다.)

 - 궁금하신 분들은 Frida, Clutch를 구글에 검색해보시면 원하는 블로그, 사이트 많이 나오니 이 문서에서는 언급하지 않겠습니다.

 - 목적은 jailbreak bypass이니깐요.

5. lldb, trace가 가능한 디버거

 - IDA로만 분석하기에는 흐름도를 파악하기 힘듭니다.

6. Tweak Injector, tweakCompatible

 - 트윅이 가능하게끔 해주는 트윅입니다.

 - Cydia에서 Electra, BigBoss 소스에서 찾을 수 있습니다.

 

앱을 이용하여 전자금융거래를 하기 위해서는 다양한 보안 프로그램, 보안 소프트웨어를 탑재시켜야 하는데요.

사실, 탑재를 시켜도 해당 디바이스가 jailbreak 된 폰인지 구분하기는 쉽지 않습니다.

(해당 디바이스가 jailbreak가 안돼 있는 것처럼 보이기만 하면 되니깐요. ;; )

이 역할을 해주는게 Cydia MobileSubstrate 라는 모듈인데요.

THEOS로 tweak 섹션으로 만들어진 .dylib를 인젝션 시키면 됩니다.

설명하기 너무 어렵네요. ㅠㅠ

특정 금융권 앱을 선정 후 스크린샷으로 보여드리면 엄청 간단한데 말이죠.

하지만 민감한 내용이기도 하고 특정 금융권 앱을 건드리는건 불법이나 마찬가지니

정말 궁금하시거나 탈옥 우회를 해야할 앱이 있으시면 트윅을 드릴수.......는 있습니다만

구글링을 통하여 직접 트윅 개발 해보시는 것도 나쁘지는 않다고 봅니다.

(추후 THEOS framework를 이용해서 SpringBoard 후킹하는 법을 알려드리도록 하겠습니다.

물론 그 시기가 언제가 될련지는 저도 잘 모르겠습니다. (: )

======================================================================

int main() {

    if([DeviceUtil isJailBreak]) {
        exit(-1);
    }
    else {
        if([DeviceUtil isHack]) {
            MessageBox("is jailbreak phone!");
            exit(-1);
        }
        else {
            GoLogin();
        }
    }
}

bool -[DeviceUtil isJailBreak]() {
    return true;
}

bool -[DeviceUtil isHack]() {
    return true;
}

======================================================================

위와 같은 코드가 있다고 가정해보겠습니다.

THEOS framework로 프로젝트를 생성시킵니다.

트윅을 개발할 것이기 때문에 13 선택해주시고

Project : 프로젝트명

Package Name : cydia에 배포할 때 유니크한 패키지명

Author : 만든이

MobileSubstrate Bundle filter : 트윅을 적용할 앱 패키지명

마지막은 스프링보드 재시작 할 것 인지 Enter

이렇게 하면 프로젝트가 생성되며

생성되는 파일은 아래와 같습니다.

 

1. Makefile

.dylib 파일을 만들기 위한 Makefile

 

2. Tweak.xm

실제 트윅을 적용할 파일입니다.

 

3. control

트윅에 대한 설명입니다.

 

4. testbypass.plist

인젝션 시킬 번들 kr.hanssomi.test

 

총 4개의 파일이 생성이 됩니다.

대충 보시면 이해하시리라 믿습니다.

이제 위에서 간단한 소스의 두개 함수를 후킹해보겠습니다.

소스는 정말 간단합니다.

Tweak.xm 파일을 편집기로 열어주시고

위와 같이 작성했습니다.

kr.hanssomi.test 앱이 실행이 되고 함수들은 return false로 변경이 됩니다.

컴파일이 완료가 되면 packages 폴더가 생성이 되고

kr.hanssomi.testbypass_0.0.1-1+debug_iphones-arm.deb

설치 파일이 생성이 됩니다.

디바이스에 접속(ssh)하셔서 

dpkg -i .deb 명령어를 주면 설치가 완료가 되며

해당 라이브러리는 

디바이스의 /usr/lib/TweakInject 에 설치가 됩니다.

이로서 kr.hanssomi.test 의 DeviceUtil 클래스의 isJailBreak, isHack 함수는 라이브러리를 삭제하기 전까지 각각 return false가 리턴되며

정상적인 앱으로 구동이 가능하게 됩니다.

실제 앱으로 보여드리지 못한 점 이해해주시길 바랍니다.

아래 스크린샷들은 제가 테스트 하는 아이폰 디바이스입니다.

몇 개 탈옥감지우회가 완료된 앱들이며, 소스는 공개할 수 없는 점 이해부탁드립니다.

토스 정말 어렵게 우회 했고요.

버전 4.4.1

 

 

 

 

카뱅 정말 어렵습니다.

개발자님들 존경합니다.

버전 1.14.1

 

현대카드 개발자님들 역시 존경합니다.

버전 2.2.3

 

위에서 언급했듯이 다음에는 THEOS를 이용하여 iPhone SpringBoard를 후킹

간단한 메시지를 띄워보도록 해보겠습니다.

 

 

((( 참고사항

아직 탈옥탐지우회하지 못한 앱들도 있는데.....

저 뿐만 아니라 트윅 개발하시는 분들이 있어서 지금의 보안개발 하시는 분들이 

더욱 역량을 펼치시지 않았나 저는 그렇게 생각합니다.

하지만 좀 쉽게 탈옥감지 해주시면 감사하겠습니다. (:

댓글
댓글쓰기 폼
Total
198,094
Today
1
Yesterday
40
«   2019/10   »
    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 29 30 31    
글 보관함