[목차]
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 모바일 앱 모의해킹(기초) 강의
'APP 진단 > iOS' 카테고리의 다른 글
13. Sensitive Information in Memory (0) | 2022.11.20 |
---|---|
12. Exccesive Permissions (0) | 2022.11.19 |
10. Jailbreak Detection 3 - 탈옥 탐지 우회 실습 2 (0) | 2022.11.17 |
9. Jailbreak Detection 3 - 탈옥 탐지 우회 실습 1 (2) | 2022.11.16 |
8. Jailbreak Detection 2 - 프리다 기초 문법 (0) | 2022.11.15 |