[목차]

 

 

0. 개요

1. Fairplay DRM 설명과 기능

2. DRM 복호화 원리

3. Fairplay DRM 적용 여부 확인

4. 복호화 도구 소개 및 설치 (Windows 환경에서 작업 시)

     4-1) Frida-ios-dump

     4-2) itunnel_mux_rev71.zip (단말기 통신용)

5. frida-ios-dump 실습

     5-1) Gow 설치

     5-2) 캐싱 파일 삭제 후 덤프 시도

     5-3) IPA 파일 압축 해제 후 디버깅

6. 기타 복호화 툴 (CrackerXI)

 

 


 

 

[개요]

 

iOS 앱을 진단을 하기 위해선

암호화 되지 않은 IPA 파일이 필요한데

 

고객사에서 직접 IPA 파일을 제공받는 경우가 아니라면

앱 스토어에 정식 등록되어 있는 앱을 직접 다운로드 후

진행해야 하는 경우가 생긴다.

 

정식 앱 스토어에서 받는 앱의 경우

내부의 코드 및 데이터를 보호하기 위한

FairPlay DRM, 암호화가 기본 적용되어 있는데

 

정상적인 취약점 진단 작업을 수행하기 위해

사전 복호화 작업이 요구된다.

 

 

 


 

 

 

1. Fairplay DRM 설명과 기능

- 콘텐츠의 불법 사용과 유출을 방지하기 위해 제공하는 솔루션

- Failplay는 애플사의 DRM(Digital Rights Management) 규격

– 앱 스토어에서 다운로드한 공식 앱은 FairPlay DRM이 적용되어 있고

- 다운 받은 앱에 대한 바이너리 파일은 반드시 암호화되어 보호된다는 뜻

- MS사는 Playready, 구글은 Widevine DRM을 사용함

 

 

 

 

2. DRM 복호화 원리

– 단말기에서 앱 실행시 암호화된 바이너리 파일은

커널의 Mach-O(마크오브젝트) 로더에 의해 런타임 중 해독

- 이 런타임 중의 해독 과정 전체를 특정 도구(frida-ios-dump 등)로

덤프떠 해독된 바이너리 내용을 고스란히 확인할 수 있음

 

 


 

 

3. Fairplay DRM 적용 여부 확인

– Otool 도구를 사용하여 LC_ENCRYPTION_INFO의

cryptid 설정 값으로 확인 가능 (적용된 경우 1, 아닌경우 0)

 

 

# 실습

확인을 원하는 앱의 바이너리 경로에서 otool로 확인

/var/containers/Bundle/Application/UUID/DVIA-v2.app/DVIA-v2

# otool -l DVIA-v2 | grep -A4 LC_ENCRYPTION_INFO  
 

별도로 설치한 DVIA 앱은 설정 값 0(DRM 설정안됨)

공식 앱스토어에서 받은 캐치딜 앱은 설정 값 1(DRM 설정됨)

 

 

 


 

 

4. 복호화 도구 소개 및 설치 (Windows 환경에서 작업 시)

4-1) Frida-ios-dump

- 탈옥된 디바이스에서 복호화된 IPA 추출 도구

https://github.com/AloneMonkey/frida-ios-dump

 

- 내려 받은 뒤 pip로 설치

 

- 테스트 실행

 

- 덤프 가능한 앱 리스트 확인

정상 설치 완료!

 

 

4-2) ssh 사용을 위한 dump.py 설정 변경

 

단말기 IP 주소 확인 후 

 

dump.py 내 Host / Port 번호 수정

변경 전) Host = 127.0.0.1 / Port = 2222

변경 후) Host = 단말기 IP / Port = 22

 

dump.py 실행 시 정상 dump 가능!

 

 

 

 

번외) itunnel_mux_rev71.zip (단말기 통신용) - 비추

itunnel을 이용한 USB 터널은

무선랜보다 더 나은 환경에서

ssh를 쓸 수 있게 해준다.

https://code.google.com/archive/p/iphonetunnel-usbmuxconnectbyport/downloads

 

- 내려받은 후 실행해보면

정상 작동이 되는 듯 하지만

통신 연결을 시도해보면

Apple Application Support

폴더를 못 찾아 에러가 발생하는데

원인은 itunes의 버전이 올라가면서

Apple Mobile Device Support 서비스 관련

경로가 바뀐 것이 이유인 듯하며

(현재 내 itunes 버전은 12.12)

 

 

이를 해결하기 위해 iTunes 드라이버를

추가 설치하거나(iTunesDriver64_0205.exe)

12.4 이하 버전의 iTunes 설치해준다.

https://support.apple.com/ko_KR/downloads/itunes

 

 

* 참고로 맥에서는 문제없이 돌아감!

 

 

먼저 기존에 설치된 itunes를 삭제 후 itunnel을 돌려보면

정상적으로 디바이스 연결 대기 상태에 들어가며

 

 

구 버전 itunes(12.4.3)를 설치 후 돌려보면

정상 연결 확인!

 


 

 

5. frida-ios-dump 실습

- 덤프 가능 앱 리스트 확인

 

 

- 복호화 원하는 앱의 식별자(Indetifier) 복사 후 dump.py 실행

(예. 계산기 - com.apple.calculator)

 

정상 수행이 안되며 권한 문제 때문에

에러가 발생하는데 이유는

 

dump.py 파일에서

리눅스 명령어인 chmod 를 사용하는데

윈도우 cmd에서는 추가 프로그램 설치를 하지 않으면

해당 명령어를 사용하지 못하기 때문에

발생하는 에러이다.

 

따라서 Gow 라는 프로그램을 설치하여

윈도우 cmd 환경에서 리눅스 명령어가

사용 가능하게끔 해주면 해결 가능하다.

 

 

 

5-1) Gow 설치

https://github.com/bmatzelle/gow/releases

 

설치 후 ls 등의 리눅스 명령어를 실행해보면

정상 작동 확인!

 

 

다시 dump.py를 돌려보면

다시 액세스 거부!

 

 

5-2) 캐싱 파일 삭제 후 덤프 시도

원인은 캐싱된 garbage 파일 때문인데

위 빨간 박스 경로에 들어가

Payload 디렉터리를 삭제해주고

C:\Users\Public\Documents\ESTsoft\CreatorTemp\Payload

다시 덤프를 돌려보면

 

정상 덤프가 진행되며

 

 

복호화가 진행된

계산기.ipa 파일로 저장된다!

 

 

 

 

5-3) IPA 파일 압축 해제 후 디버깅

해당 파일 확장자를 zip으로 변경하면 압축 해제가 가능하고

해제한 뒤 디버깅 하면 끝!

 

- 복호화 전/후 클래스 차이

 

 

- 복호화 전/후 스트링 차이

 


 

 

6. 기타 복호화 툴

이 밖에 주로 사용하는 복호화 툴로

CrackerXI가 있는데 해당 툴은

Cydia Tweak으로 사용 방법은 

추후 기술 예정

 

 

 

 

[도움 출처]

: 보안프로젝트 김태영 팀장 iOS 모바일 앱 모의해킹(기초) 강의

728x90

+ Recent posts