iOS 앱 정적 분석하기(class-dump-z, clutch)


 

Notice : 해당 자료가 저작권등에 의해서 문제가 있다면 바로 삭제하겠습니다.
연구목적으로 사용하지 않고 악의적인 목적으로 이용할 경우 발생할 수 있는 법적은 책임은 모두 본인에게 있습니다.

iOS 앱 보안진단을 위한 환경설정
iOS 앱 정적 분석하기(class-dump-z, clutch)
Objective-C Runtime의 이해와 gdb attach 하기
iOS 앱 Cycript를 이용항 동적분석 및 변조
개발자 등록하지 않고 iOS 기기에 앱 설치 하기
Cycript 를 이용해 iOS 앱 로그인 우회 실습
Snoop-it 을 이용해서 iOS 앱 분석하기

iOS 앱 정적 분석하기(class-dump-z, clutch)

1. 미리 설치된 앱의 class-dump

미리 설치된 앱의 위치는 /Applications 이다.

iOS_classdump1

이 중에 지도앱인 Maps.app(/Applications/Maps.app) 를 분석해보겠다.

디렉토리 안으로 가보면, images, plist files, lproj, sqlite, pdf 파일이 보이는데
이 중에 실행파일인 Maps 파일을 확인할 수 있다. (앱의 이름과 동일한 실행파일)

이 실행파일을 class-dump-z 를 이용해서 class 정보를 dump받는 것이다.

iOS_classdump2

생각보다 size가 꽤 된다. 10714 줄

이제 해당 파일을 stfp 를 이용해 다운로드 받아서 정적분석하면 된다.

header 정보와 구조체의 정보가 있어 메소드명과 파라미터들을 보면서 어떤 기능을 하는지 확인할 수 있다.

2. 앱스토어에서 다운받은 앱의 class-dump

앱스토어에서 다운받은 파일의 위치는 /var/mobile/Applications/ 이다.

iOS_classdump3

이 중에 자주쓰는 Facebook를 분석해보겠다.

위에서 본 것 같이 디렉토리가 코드로 되어있어서 앱을 찾기 위해 find 명령어을 이용했다.

그리고 앱과 동일한 이름의 실행파일인 Facebook 실행파일을 위와 동일하게 class-dump를 해보니..

iOS_classdump4

암호화 되어 있어 class명과 구조체명을 확인할수 없었다.

이렇게 앱스토어에서 받은 앱은 clutch 를 이용해서 crack한다.

clutch는 Hackulous 에서 만들었는데, Hackulous는 해체 되었지만 clutch는 인터넷에서 다운받을수 있다.
https://github.com/KJCracks/Clutch/releases/tag/1.4.3

나의 경우 1.2.4 버전이 이미 설치되어 있었다..

iOS_classdump5

최신 버전으로 다시 파일을 업로드 했다.

iOS_classdump6

그럼 다시 clutch를 이용해서 facebook을 crack 해보자

iOS_classdump7

결과로 ipa 파일의 위치를 알려준다.

해당 디렉토리로 이동해서, 압축을 푼다.(ipa 파일은 압축파일이다)

unzip Facebook-v8.0–\(Clutch-1.4.3\).ipa -d Facebook

다시 class-dump를 시도하니..

iOS_classdump8

Segmentation fault가 난다…(원인은 모르겠음..ㅠ)

그래서 다른 앱인 youtube로 다시 시도해보았다.

iOS_classdump9

먼저 clutch 으로 crack하고, class-dump-z 으로 dump했다.

iOS_classdump10

오 성공!

이제 objective-c를 공부해야 정적분석을 할수 있겠구나~

참고 : http://highaltitudehacks.com/2013/06/16/ios-application-security-part-2-getting-class-information-of-ios-apps/

 


This entry was posted in Objective-C/iPhone, Security/Hacking and tagged , , . Bookmark the permalink.

6 Responses to iOS 앱 정적 분석하기(class-dump-z, clutch)

  1. wanted says:

    글 정말 감사합니다. clutch는 wget으로 설치하셨나요??

  2. apollo89 says:

    네 아마도 그랬던 것 같네요^^;

  3. wanted says:

    Clutch를 설치하다가 질문 드립니다.
    1. 최신 버전이 2.0 RC4가 맞습니까?
    2. 지금 1.4.3을 설치 중인데 tar 압축풀고 어떤식으로 진행해야 업데이트가 되는 것인가요?
    자세히 가르켜주시면 정말 감사하겠습니다.

  4. apollo89 says:

    iPhone6plus:~ root# /usr/bin/Clutch –version
    Clutch: version 2.0 RC2

  5. 오인석 says:

    최신 버전은 2. 대구요, 굳이 tar파일로 안받으시고 Clutch파일만 받아서 /usr/bin에 넣어주시면 되겠습니다.

  6. 오인석 says:

    apollo89님 글 많이 도움 됩니다. 감사합니다.

댓글 남기기