iOS App Extensions

Support HackTricks

앱 확장은 다른 앱이나 시스템과 상호작용하여 사용자 정의 기능이나 콘텐츠를 제공함으로써 앱의 기능을 향상시킵니다. 이러한 확장에는 다음이 포함됩니다:

  • 커스텀 키보드: 기본 iOS 키보드를 대체하여 모든 앱에서 고유한 키보드를 제공합니다.

  • 공유: 소셜 네트워크 또는 다른 사용자와 직접 공유할 수 있게 합니다.

  • 오늘(위젯): 알림 센터의 오늘 보기에서 콘텐츠를 제공하거나 작업을 신속하게 수행합니다.

사용자가 호스트 앱에서 텍스트를 공유하는 등의 방식으로 이러한 확장과 상호작용할 때, 확장은 해당 입력을 자신의 컨텍스트 내에서 처리하며, 공유된 정보를 활용하여 작업을 수행합니다. 이는 Apple의 문서에 자세히 설명되어 있습니다.

보안 고려사항

주요 보안 측면은 다음과 같습니다:

  • 확장과 그를 포함하는 앱은 직접적으로가 아니라 프로세스 간 통신을 통해 통신합니다.

  • 오늘 위젯은 특정 방법을 통해 자신의 앱을 열도록 요청할 수 있다는 점에서 독특합니다.

  • 공유 데이터 접근은 개인 컨테이너 내에서 허용되지만, 직접 접근은 제한됩니다.

  • HealthKit을 포함한 특정 API는 앱 확장에서 사용할 수 없으며, iMessage 확장을 제외하고는 장기 실행 작업을 시작하거나 카메라 또는 마이크에 접근할 수 없습니다.

정적 분석

앱 확장 식별하기

소스 코드에서 앱 확장을 찾으려면 Xcode에서 NSExtensionPointIdentifier를 검색하거나 확장을 나타내는 .appex 파일이 있는 앱 번들을 검사합니다. 소스 코드가 없는 경우 grep 또는 SSH를 사용하여 앱 번들 내에서 이러한 식별자를 찾습니다.

지원되는 데이터 유형

확장의 Info.plist 파일에서 NSExtensionActivationRule을 확인하여 지원되는 데이터 유형을 식별합니다. 이 설정은 호스트 앱에서 호환되는 데이터 유형만 확장을 트리거하도록 보장합니다.

데이터 공유

앱과 그 확장 간의 데이터 공유는 "앱 그룹"을 통해 설정된 공유 컨테이너가 필요하며, NSUserDefaults를 통해 접근합니다. 이 공유 공간은 확장에서 시작된 백그라운드 전송에 필요합니다.

확장 제한하기

앱은 특정 확장 유형, 특히 커스텀 키보드를 제한할 수 있으며, 이는 민감한 데이터 처리가 보안 프로토콜에 맞도록 보장합니다.

동적 분석

동적 분석에는 다음이 포함됩니다:

  • 공유 항목 검사: NSExtensionContext - inputItems에 후킹하여 공유 데이터 유형과 출처를 확인합니다.

  • 확장 식별하기: NSXPCConnection과 같은 내부 메커니즘을 관찰하여 어떤 확장이 귀하의 데이터를 처리하는지 발견합니다.

frida-trace와 같은 도구는 프로세스 간 통신의 기술적 세부 사항에 관심이 있는 사람들에게 기본 프로세스를 이해하는 데 도움을 줄 수 있습니다.

References

Support HackTricks

Last updated