iOS App Extensions

Reading time: 3 minutes

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks 지원하기

앱 확장은 다른 앱이나 시스템과 상호작용할 수 있도록 하여 앱의 기능을 향상시키고, 사용자 정의 기능이나 콘텐츠를 제공합니다. 이러한 확장에는 다음이 포함됩니다:

  • Custom Keyboard: 기본 iOS 키보드를 대체하여 모든 앱에서 고유한 키보드를 제공합니다.
  • Share: 소셜 네트워크 또는 다른 사람과 직접 공유할 수 있게 합니다.
  • Today (Widgets): 알림 센터의 오늘 보기에서 콘텐츠를 제공하거나 작업을 신속하게 수행합니다.

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

Security Considerations

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

  • 확장과 그를 포함하는 앱은 직접적으로가 아니라 프로세스 간 통신을 통해 통신합니다.
  • Today widget은 특정 방법을 통해 자신의 앱을 열도록 요청할 수 있다는 점에서 독특합니다.
  • 공유 데이터 접근은 개인 컨테이너 내에서 허용되지만, 직접 접근은 제한됩니다.
  • HealthKit을 포함한 특정 API는 앱 확장에서 사용할 수 없으며, iMessage 확장을 제외하고는 장기 실행 작업을 시작하거나 카메라 또는 마이크에 접근할 수 없습니다.

Static Analysis

Identifying App Extensions

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

Supported Data Types

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

Data Sharing

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

Restricting Extensions

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

Dynamic Analysis

동적 분석은 다음을 포함합니다:

  • Inspecting Shared Items: NSExtensionContext - inputItems에 후킹하여 공유 데이터 유형과 출처를 확인합니다.
  • Identifying Extensions: NSXPCConnection과 같은 내부 메커니즘을 관찰하여 어떤 확장이 데이터를 처리하는지 발견합니다.

frida-trace와 같은 도구는 프로세스 간 통신의 기술적 세부 사항에 관심이 있는 사람들에게 특히 유용하게 작용할 수 있습니다.

References

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks 지원하기