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

3분 읽기 작성 2014.04.15

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/

 

“iOS 앱 정적 분석하기(class-dump-z, clutch)”에 대한 7개의 생각

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

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

댓글 남기기