iOS UIActivity Sharing

Reading time: 3 minutes

tip

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

HackTricks 지원하기

UIActivity Sharing Simplified

iOS 6부터, 서드파티 애플리케이션은 Apple의 Inter-App Communication guide에서 설명된 대로 AirDrop과 같은 메커니즘을 사용하여 텍스트, URL 또는 이미지와 같은 데이터를 공유할 수 있게 되었습니다. 이 기능은 "Share" 버튼과 상호작용할 때 나타나는 시스템 전역 _공유 활동 시트_를 통해 구현됩니다.

모든 내장 공유 옵션의 포괄적인 열거는 UIActivity.ActivityType에서 확인할 수 있습니다. 개발자는 애플리케이션에 적합하지 않다고 판단되는 특정 공유 옵션을 제외할 수 있습니다.

How to Share Data

다음 사항에 주의를 기울여야 합니다:

  • 공유되는 데이터의 성격.
  • 사용자 정의 활동의 포함.
  • 특정 활동 유형의 제외.

공유는 UIActivityViewController의 인스턴스를 생성하여 이루어지며, 공유할 항목이 전달됩니다. 이는 다음과 같이 호출하여 달성됩니다:

bash
$ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems
0x1000df034 45 44 initWithActivityItems:applicationActivities:

개발자는 UIActivityViewController가 초기화된 활동 및 사용자 정의 활동과 지정된 excludedActivityTypes를 면밀히 검토해야 합니다.

데이터 수신 방법

데이터를 수신할 때 다음 사항이 중요합니다:

  • 사용자 정의 문서 유형의 선언.
  • 앱이 열 수 있는 문서 유형의 명시.
  • 수신된 데이터의 무결성 확인.

소스 코드에 접근할 수 없는 경우에도 Info.plist에서 UTExportedTypeDeclarations, UTImportedTypeDeclarations, CFBundleDocumentTypes와 같은 키를 검사하여 앱이 처리하고 선언할 수 있는 문서 유형을 이해할 수 있습니다.

이 키에 대한 간결한 가이드는 Stackoverflow에서 제공되며, 시스템 전반에 걸쳐 UTI를 정의하고 가져오는 것의 중요성과 "Open With" 대화 상자에서 문서 유형을 앱과 연관시키는 방법을 강조합니다.

동적 테스트 접근법

활동 전송을 테스트하기 위해 다음을 수행할 수 있습니다:

  • init(activityItems:applicationActivities:) 메서드에 후킹하여 공유되는 항목과 활동을 캡처합니다.
  • excludedActivityTypes 속성을 가로채어 제외된 활동을 식별합니다.

항목 수신의 경우:

  • 다른 소스(예: AirDrop, 이메일)에서 앱으로 파일을 공유하여 "Open with..." 대화 상자를 유도합니다.
  • 정적 분석 중 식별된 다른 메서드와 함께 application:openURL:options:에 후킹하여 앱의 반응을 관찰합니다.
  • 잘못된 형식의 파일이나 퍼징 기법을 사용하여 앱의 견고성을 평가합니다.

참고 문헌

tip

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

HackTricks 지원하기