iOS Basic Testing Operations
Last updated
Last updated
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
iOS 기기를 고유하게 식별하기 위해 40자리 시퀀스인 UDID가 사용됩니다. macOS Catalina 이상에서는 Finder 앱에서 이를 찾을 수 있으며, iTunes는 더 이상 존재하지 않습니다. USB로 연결된 기기를 Finder에서 선택하면, 이름 아래의 세부 정보를 클릭하여 UDID를 포함한 기타 정보를 확인할 수 있습니다.
Catalina 이전 버전의 macOS에서는 iTunes가 UDID 발견을 용이하게 합니다. 자세한 지침은 여기에서 확인할 수 있습니다.
명령줄 도구는 UDID를 검색하는 대체 방법을 제공합니다:
I/O Registry Explorer 도구 ioreg
사용하기:
macOS (및 Linux)에서 ideviceinstaller
사용하기:
system_profiler
활용:
instruments
를 사용하여 장치 나열하기:
SSH 접근은 탈옥 후 OpenSSH 패키지를 설치하여 활성화되며, ssh root@<device_ip_address>
를 통해 연결할 수 있습니다. 디바이스를 보호하기 위해 root
와 mobile
사용자에 대한 기본 비밀번호(alpine
)를 변경하는 것이 중요합니다.
USB를 통한 SSH는 Wi-Fi가 없을 경우 필요하며, iproxy
를 사용하여 SSH 연결을 위한 디바이스 포트를 매핑합니다. 이 설정은 다음 명령어를 실행하여 USB를 통해 SSH 접근을 가능하게 합니다:
온디바이스 셸 애플리케이션은 NewTerm 2와 같은 도구로, 직접적인 장치 상호작용을 용이하게 하며, 문제 해결에 특히 유용합니다. 리버스 SSH 셸도 호스트 컴퓨터에서 원격 액세스를 위해 설정할 수 있습니다.
잊어버린 비밀번호를 기본값(alpine
)으로 재설정하려면 /private/etc/master.passwd
파일을 편집해야 합니다. 이는 기존 해시를 root
및 mobile
사용자 항목 옆에 있는 alpine
해시로 교체하는 것을 포함합니다.
SSH 및 SCP를 통한 아카이빙 및 검색: tar
를 사용하여 애플리케이션의 Data 디렉토리를 아카이브한 다음 scp
를 사용하여 전송하는 것은 간단합니다. 아래 명령은 Data 디렉토리를 .tgz 파일로 아카이브한 후 장치에서 가져옵니다:
iFunbox와 iExplorer 사용: 이 GUI 도구는 iOS 장치의 파일을 관리하는 데 유용합니다. 그러나 iOS 8.4부터 Apple은 장치가 탈옥되지 않는 한 이러한 도구의 애플리케이션 샌드박스 접근을 제한했습니다.
Objection을 통한 인터랙티브 셸: Objection을 실행하면 앱의 Bundle 디렉토리에 접근할 수 있습니다. 여기에서 앱의 Documents 디렉토리로 이동하고 파일을 관리할 수 있으며, iOS 장치로부터 파일을 다운로드하고 업로드할 수 있습니다.
OTA 배포 링크: OTA를 통해 테스트용으로 배포된 앱은 ITMS 서비스 자산 다운로드 도구를 사용하여 다운로드할 수 있으며, 이 도구는 npm을 통해 설치되고 IPA 파일을 로컬에 저장하는 데 사용됩니다.
IPA에서: IPA를 압축 해제하여 복호화된 앱 바이너리에 접근합니다.
탈옥된 장치에서: 앱을 설치하고 메모리에서 복호화된 바이너리를 추출합니다.
수동 복호화 개요: iOS 앱 바이너리는 Apple의 FairPlay를 사용하여 암호화됩니다. 리버스 엔지니어링을 위해서는 메모리에서 복호화된 바이너리를 덤프해야 합니다. 복호화 과정은 PIE 플래그를 확인하고, 메모리 플래그를 조정하며, 암호화된 섹션을 식별한 후 이 섹션을 복호화된 형태로 덤프하고 교체하는 것을 포함합니다.
PIE 플래그 확인 및 수정:
암호화된 섹션 식별 및 메모리 덤프:
otool
을 사용하여 암호화된 섹션의 시작 및 끝 주소를 확인하고, gdb를 사용하여 탈옥된 장치에서 메모리를 덤프합니다.
암호화된 섹션 덮어쓰기:
원본 앱 바이너리의 암호화된 섹션을 복호화된 덤프로 교체합니다.
최종 복호화: MachOView와 같은 도구를 사용하여 이진 파일의 메타데이터를 수정하여 암호화가 없음을 나타내고 cryptid
를 0으로 설정합니다.
frida-ios-dump 도구는 iOS 장치에서 자동으로 앱을 복호화하고 추출하는 데 사용됩니다. 처음에는 dump.py
를 구성하여 iOS 장치에 연결해야 하며, 이는 iproxy를 통해 localhost의 포트 2222로 하거나 장치의 IP 주소와 포트를 통해 직접 수행할 수 있습니다.
장치에 설치된 애플리케이션은 다음 명령어로 나열할 수 있습니다:
특정 앱, 예를 들어 Telegram을 덤프하려면 다음 명령어를 사용합니다:
이 명령은 앱 덤프를 시작하여 현재 디렉토리에 Telegram.ipa
파일을 생성합니다. 이 과정은 탈옥된 장치에 적합하며, 서명되지 않았거나 가짜 서명된 앱은 ios-deploy와 같은 도구를 사용하여 재설치할 수 있습니다.
flexdecrypt 도구와 그 래퍼 flexdump는 설치된 애플리케이션에서 IPA 파일을 추출할 수 있게 해줍니다. 장치에서 flexdecrypt를 설치하는 명령은 .deb
패키지를 다운로드하고 설치하는 것입니다. flexdump는 아래 명령에서 보여지는 것처럼 앱을 나열하고 덤프하는 데 사용할 수 있습니다:
bagbak, 또 다른 Frida 기반 도구로, 앱 복호화를 위해 탈옥된 장치가 필요합니다:
r2flutch는 radare와 frida를 활용하여 앱을 복호화하고 덤프하는 데 사용됩니다. 더 많은 정보는 GitHub 페이지에서 확인할 수 있습니다.
사이드로딩은 공식 App Store 외부에서 애플리케이션을 설치하는 것을 의미합니다. 이 과정은 installd daemon에 의해 처리되며, 앱은 Apple에서 발급한 인증서로 서명되어야 합니다. 탈옥된 장치는 AppSync를 통해 이를 우회하여 가짜 서명된 IPA 패키지를 설치할 수 있습니다.
Cydia Impactor: iOS에서 IPA 파일과 Android에서 APK 파일을 서명하고 설치하는 도구입니다. 가이드와 문제 해결 방법은 yalujailbreak.net에서 확인할 수 있습니다.
libimobiledevice: iOS 장치와 통신하기 위한 Linux 및 macOS용 라이브러리입니다. USB를 통해 앱을 설치하기 위한 ideviceinstaller의 설치 명령과 사용 예제가 제공됩니다.
ipainstaller: 이 명령줄 도구는 iOS 장치에 직접 앱을 설치할 수 있게 해줍니다.
ios-deploy: macOS 사용자를 위해 ios-deploy는 명령줄에서 iOS 앱을 설치합니다. IPA 파일을 압축 해제하고 직접 앱을 실행하기 위해 -m
플래그를 사용하는 것이 과정의 일부입니다.
Xcode: Xcode를 사용하여 Window/Devices and Simulators로 이동하고 앱을 Installed Apps에 추가하여 앱을 설치합니다.
iPhone 또는 iPod touch 장치에 iPad 전용 애플리케이션을 설치하려면 Info.plist 파일의 UIDeviceFamily 값을 1로 변경해야 합니다. 그러나 이 수정은 서명 검증 체크로 인해 IPA 파일을 다시 서명해야 합니다.
참고: 이 방법은 애플리케이션이 구형 iPhone 또는 iPod touch를 사용할 때 최신 iPad 모델에만 해당되는 기능을 요구하는 경우 실패할 수 있습니다.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)