Objection을 활용한 iOS 앱 보안 분석은(는) 무엇을 하나요?
사용 시기
이 스킬은 다음과 같은 경우에 사용하세요:
- 승인된 침투 테스트 중 iOS 애플리케이션의 런타임 보안 평가 수행
- 민감한 데이터 노출을 위해 iOS 키체인, 파일 시스템, 메모리 검사
- 보안 테스트 중 클라이언트 측 보안 제어(SSL 핀닝, 탈옥 탐지) 우회
- 소스 코드에 접근하지 않고 iOS 앱 동작을 런타임에 평가
명시적 승인 없이 프로덕션 기기에서 이 스킬을 사용하지 마세요. Objection은 앱 런타임 동작을 수정하며 보안 모니터링을 트리거할 수 있습니다.
사전 요구 사항
- Python 3.10+ 및 pip
- Objection 설치:
pip install objection - Frida 설치:
pip install frida-tools - 대상 iOS 기기(Frida 서버가 설치된 탈옥 기기 또는 repackaged IPA가 있는 비탈옥 기기)
- 비탈옥 기기의 경우:
objection patchipa명령어로 IPA에 Frida Gadget 주입 - iOS 테스트를 위해 macOS 권장(Xcode, ideviceinstaller)
- 대상 기기에 USB 연결 또는 네트워크 Frida 서버
워크플로우
1단계: 테스트 환경 준비
탈옥된 기기의 경우:
# Cydia/Sileo를 통해 기기에 Frida 서버 설치
# SSH로 기기에 접속하여 Frida 서버 시작
ssh root@<device_ip> "/usr/sbin/frida-server -D"
# Frida 연결 확인
frida-ps -U # USB 연결 기기의 프로세스 목록 표시
비탈옥 기기의 경우 (승인된 테스트):
# Frida Gadget으로 IPA 패치
objection patchipa --source target.ipa --codesign-signature "Apple Development: [email protected]"
# 패치된 IPA 설치
ideviceinstaller -i target-patched.ipa
2단계: 대상 앱에 Objection 연결
# 번들 ID로 실행 중인 앱에 연결
objection --gadget "com.target.app" explore
# 또는 앱을 새로 실행
objection --gadget "com.target.app" explore --startup-command "ios hooking list classes"
연결되면 Objection은 런타임 탐색을 위한 대화형 REPL을 제공합니다.
3단계: 데이터 저장 보안 평가 (MASVS-STORAGE)
# 앱이 접근 가능한 iOS 키체인 항목 덤프
ios keychain dump
# 앱 샌드박스의 파일 목록 표시
ios plist cat Info.plist
env # 앱 환경 경로 표시
# NSUserDefaults에서 민감한 데이터 검사
ios nsuserdefaults get
# SQLite 데이터베이스 목록 표시
sqlite connect app_data.db
sqlite execute query "SELECT * FROM credentials"
# 클립보드에서 민감한 데이터 확인
ios pasteboard monitor
4단계: 네트워크 보안 평가 (MASVS-NETWORK)
# SSL/TLS 인증서 핀닝 비활성화
ios sslpinning disable
# Burp Suite 프록시에서 트래픽을 관찰하여 핀닝 우회 확인
# 네트워크 관련 클래스 메서드 호출 모니터링
ios hooking watch class NSURLSession
ios hooking watch class NSURLConnection
5단계: 인증 및 권한 부여 검사 (MASVS-AUTH)
# 모든 Objective-C 클래스 목록 표시
ios hooking list classes
# 인증 관련 클래스 검색
ios hooking search classes Auth
ios hooking search classes Login
ios hooking search classes Token
# 인증 메서드를 후킹하여 매개변수 관찰
ios hooking watch method "+[AuthManager validateToken:]" --dump-args --dump-return
# 생체 인증 호출 모니터링
ios hooking watch class LAContext
6단계: 바이너리 보호 평가 (MASVS-RESILIENCE)
# 탈옥 탐지 구현 확인
ios jailbreak disable
# 탈옥 탐지 우회 시뮬레이션
ios jailbreak simulate
# 로드된 프레임워크 및 라이브러리 목록 표시
memory list modules
# 메모리에서 민감한 문자열 검색
memory search "password" --string
memory search "api_key" --string
memory search "Bearer" --string
# 특정 메모리 영역 덤프
memory dump all dump_output/
7단계: 플랫폼 상호작용 검토 (MASVS-PLATFORM)
# 앱에 등록된 URL 스킴 목록 표시
ios info binary
ios bundles list_frameworks
# URL 스킴 핸들러 후킹
ios hooking watch method "-[AppDelegate application:openURL:options:]" --dump-args
# 클립보드 접근 모니터링
ios pasteboard monitor
# 사용자 정의 키보드 제한 확인
ios hooking search classes UITextField
주요 개념
| 용어 | 정의 |
|---|---|
| Objection | Frida 기반의 런타임 모바일 탐색 도구 키트로, 일반적인 보안 테스트 작업을 위한 사전 빌드된 스크립트를 제공합니다. |
| Frida Gadget | 앱 프로세스에 주입되어 탈옥 없이 Frida 계측을 가능하게 하는 공유 라이브러리입니다. |
| Keychain | iOS 보안 자격 증명 저장 시스템입니다. Objection은 대상 앱의 키체인 접근 그룹에 속한 항목을 덤프할 수 있습니다. |
| SSL Pinning Bypass | HTTPS 트래픽의 프록시 차단을 허용하기 위해 인증서 검증 로직을 런타임에 수정합니다. |
| Method Hooking | Objective-C/Swift 메서드 호출을 런타임에 가로채서 인수, 반환 값을 관찰하고 동작을 수정합니다. |
도구 및 시스템
- Objection: 사전 빌드된 명령어를 제공하는 고급 Frida 기반 모바일 보안 탐색 도구 키트
- Frida: 네이티브 앱 프로세스에 JavaScript를 주입하는 동적 계측 프레임워크
- Frida-tools: frida-ps, frida-trace, frida-discover를 포함한 Frida CLI 유틸리티
- ideviceinstaller: USB를 통해 iOS 앱을 설치/관리하기 위한 플랫폼 간 도구
- Burp Suite: SSL 핀닝 우회 후 트래픽을 차단하기 위한 HTTP 프록시
일반적인 문제점
- 연결 시 앱 충돌: 일부 앱은 Frida 탐지를 구현합니다.
--startup-command를 사용하여 앱 생애주기 초기에 안티-Frida 검사를 후킹하세요. - 키체인 접근 범위: Objection은 앱의 접근 그룹 내 키체인 항목만 덤프할 수 있습니다. 시스템 키체인 항목은 별도의 탈옥 수준 도구가 필요합니다.
- Swift 이름 난독화: Swift 메서드 이름은 런타임에서 난독화됩니다.
ios hooking list classes에 grep을 사용하여 디맹글된 이름을 찾으세요. - 비영구적 변경: 모든 Objection 수정은 런타임에만 적용되며 앱이 다시 시작되면 초기화됩니다. 발견 사항을 즉시 문서화하세요.