# iOS UIActivity 공유
htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!
HackTricks를 지원하는 다른 방법:
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**를** **팔로우**하세요.
* **Hacking 트릭을 공유하려면 PR을** [**HackTricks**](https://github.com/carlospolop/hacktricks) **및** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **github 저장소에 제출**하세요.
# UIActivity 공유 간소화
iOS 6부터 제3자 애플리케이션은 AirDrop과 같은 메커니즘을 사용하여 텍스트, URL 또는 이미지와 같은 **데이터를 공유**할 수 있도록 활성화되었습니다. 이 기능은 "공유" 버튼과 상호 작용할 때 나타나는 시스템 전체의 _공유 활동 시트_를 통해 표시됩니다.
내장된 모든 공유 옵션의 포괄적인 열거는 [UIActivity.ActivityType](https://developer.apple.com/documentation/uikit/uiactivity/activitytype)에서 확인할 수 있습니다. 개발자는 애플리케이션에 적합하지 않다고 판단되는 특정 공유 옵션을 제외할 수도 있습니다.
## **데이터 공유 방법**
주의해야 할 사항:
- 공유되는 데이터의 성격.
- 사용자 정의 활동의 포함.
- 특정 활동 유형의 제외.
공유는 공유할 항목이 전달되는 `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](https://stackoverflow.com/questions/21937978/what-are-utimportedtypedeclarations-and-utexportedtypedeclarations-used-for-on-i)에서 제공되며, 시스템 전체에서 인식할 수 있도록 UTI를 정의하고 문서 유형을 "열기" 대화 상자에 통합하는 것의 중요성을 강조합니다.
## 동적 테스트 접근 방식
**활동 전송**을 테스트하기 위해 다음을 수행할 수 있습니다:
- `init(activityItems:applicationActivities:)` 메서드에 후킹하여 공유되는 항목과 활동을 캡처합니다.
- `excludedActivityTypes` 속성을 가로채어 제외된 활동을 식별합니다.
**항목 수신**을 위해서는 다음이 필요합니다:
- 다른 소스(예: AirDrop, 이메일)에서 앱과 파일을 공유하여 "열기" 대화 상자를 띄웁니다.
- 정적 분석 중 식별된 `application:openURL:options:` 등의 메서드를 후킹하여 앱의 응답을 관찰합니다.
- 잘못된 파일이나 퍼징 기법을 사용하여 앱의 견고성을 평가합니다.
## 참고 자료
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction)
htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!
HackTricks를 지원하는 다른 방법:
* HackTricks에서 **회사 광고를 보거나 PDF로 HackTricks를 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 상품**](https://peass.creator-spring.com)을 구매하세요.
* 독점적인 [**NFT**](https://opensea.io/collection/the-peass-family) 컬렉션인 [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요.
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)을 **팔로우**하세요.
* **HackTricks**와 **HackTricks Cloud** github 저장소에 PR을 제출하여 여러분의 해킹 기법을 공유하세요.