본문 바로가기

40./42. iOS

[DVIA] 03. Runtime Manipulation

[DVIA] 03. Runtime Manipulation


Runtime Manipulation은 모바일 애플리케이션이 실행 중에 GDB, Cycript 등을 이용하여 동적으로 기능을 변경하는 방법이다. 


GDB나 Cycript는 이전 [DVIA] 02. Jailbreak Detection에서 사용하였으므로 이번에는 Snoop-it과 Theos/MobileSubstrate(Tweak)을 이용할 것이다.


031. Login Method 1


Theos는 Xcode를 사용하지 않고 iDevice의 소프트웨어를 관리, 개발 및 배포 가능한 크로스 플랫폼 개발 도구이다. ThoOS는 탈옥한 iOS에서 Tweak을 개발하기 위한 중요한 도구이다.


DVIA 모바일 애플리케이션에서 Login Method 1을 클릭하면 "Oops"라는 경고창을 확인 가능하다.


# 진행단계 #

1. 테스트 실행(로그인 불가능)

2. Theos 트윅 개발

3. 트윅 설치

4. 실행 확인


# /private/var/theos/bin/nic.pl

Choose a Template (required): 5

theos를 실행하고 [5.] iphone/tweak을 선택한다. 

Project Name (required): DVIBypass

Package Name [com.yourcompany.dviabypass]:

Author/maintainer Name [System Administrator]:

[iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]: com.highaltitudehacks.dvia

[iphone/tweak] List of application to terminate upon installation (space-separated, '-' for non) [SpringBoard]: -

MobileSubstrate Bundle filter에서 입력할 정보는 우리가 Tweak을 적용할 모배일 애플리케이션 명을 선택하며 DVIA의 전체 명칭를 적어준다.


현재 디렉토리에 DVIABypass.plist, Makefile, Tweak.xm, control, theos@가 생성된다. 그중 Tweak.xm이라는 파일에 후킹할 Object-C Class와 Object-C Method를 적어주면 된다.


후킹할 Object-C Class는 RuntimeManipulationDetaileVC 내 isLoginValidated이며, 해당 return 정보가 YES이면 로그인 인증이 성공하고, NO이면 로그인 인증이 실패한다.

해당 정보는 Class-dump-z를 이용하여 Object-C Class/Method를 확인 가능하다.

%hook RuntimeManipulationDetailsVC

- (BOOL)isLoginValidated {

return YES;

}

%end


export THEOS_DEVICE_IP=192.168.10.105 : 현재 iDevice의 IP주소

export SDKVERSION=8.1 : iOS 버전(8.1.2) 및 SDK 버전

export THEOS=/private/var/theos/ : theos 설치 경로


# make package install


com.yourcompany.dviabypass_0.0.1-1_iphoneos-arm.deb가 생성됨을 확인 가능하다.


또한, install명령어로 해당 패키지가 자동으로 설치 되어있다.


이전과 차이점은 /Libary/MobileSubstrate/DynamicLibraries 아래 DVIABypass.dylib와 DVIABypass.plist가 생성되어 있다.

MobileSubstrate는 기본적으로 모바일 후킹(Mobile Hooker), 모바일 로더(MobileLoader), 안전모드(Safe mode) 3가지 기능을 지원해준다.


Cydia 패키지를 확인하면 아래와 같이 설치됨을 확인 가능하다.



DVIA으로 돌아가서 로그인을 시도하면 계정과 비밀번호를 몰라도 로그인이 가능하다.





032. Login Method 2


Snoop-it은 동적으로 모바일 앱을 분석하기 위한 툴이다. 다양한 기능을 제공하나 Analysis/Objective-C Classes에서 Setup and Invoke라는 기능을 이용하여 로그인 우회를 할 것이다. 


Runtime Manipulation에서 계정과 비밀번호를 이용하여 로그인을 해야한다.


Snoop-it을 실행하고 DVIA을 선택한다.


DVIA를 실행한 후 웹 브라우저로 iDevice의 IP주소로 접근하면 아래와 같이 Snoop-it이 정상 실행되는 것을 확인 가능하다. DVIA에서 Runtime Manipulation 화면을 호출하면 Object-C Classes에서 RuntimeManipulationDetailsVC가 호출됨을 트레킹 가능하다.


RuntimeManipulationDetailsVC/-(void)pushSuccessPage;(Object-C Class/Object-C Method)를 선택한 후 우측 상단에 setup and invoke 기능을 실행한다.


invoke Method 메소드 호출한다.


DVIA 애플리케이션을 확인하면 로그인 성공 페이지가 강제로 호출됨을 확인가능하다.







'40. > 42. iOS' 카테고리의 다른 글

iNalyzer5  (0) 2014.11.23
[DVIA] 10. Binary Patching  (0) 2014.11.12
[DVIA] 02. Jailbreak Detection  (5) 2014.09.11
[DVIA] 01. Insecure Data Storage  (0) 2014.09.10
[iOS] Logify  (0) 2014.07.24