mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 12:43:23 +00:00
79 lines
5.6 KiB
Markdown
79 lines
5.6 KiB
Markdown
# iOS App Extensions
|
|
|
|
{% hint style="success" %}
|
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
앱 확장은 다른 앱이나 시스템과 상호작용하여 사용자 정의 기능이나 콘텐츠를 제공함으로써 앱의 기능을 향상시킵니다. 이러한 확장에는 다음이 포함됩니다:
|
|
|
|
- **커스텀 키보드**: 기본 iOS 키보드를 대체하여 모든 앱에서 고유한 키보드를 제공합니다.
|
|
- **공유**: 소셜 네트워크 또는 다른 사용자와 직접 공유할 수 있게 합니다.
|
|
- **오늘(위젯)**: 알림 센터의 오늘 보기에서 콘텐츠를 제공하거나 작업을 신속하게 수행합니다.
|
|
|
|
사용자가 호스트 앱에서 텍스트를 공유하는 등의 방식으로 이러한 확장과 상호작용할 때, 확장은 해당 입력을 자신의 컨텍스트 내에서 처리하며, 공유된 정보를 활용하여 작업을 수행합니다. 이는 Apple의 문서에 자세히 설명되어 있습니다.
|
|
|
|
### **보안 고려사항**
|
|
|
|
주요 보안 측면은 다음과 같습니다:
|
|
|
|
- 확장과 그를 포함하는 앱은 직접적으로가 아니라 프로세스 간 통신을 통해 통신합니다.
|
|
- **오늘 위젯**은 특정 방법을 통해 자신의 앱을 열도록 요청할 수 있다는 점에서 독특합니다.
|
|
- 공유 데이터 접근은 개인 컨테이너 내에서 허용되지만, 직접 접근은 제한됩니다.
|
|
- HealthKit을 포함한 특정 API는 앱 확장에서 사용할 수 없으며, iMessage 확장을 제외하고는 장기 실행 작업을 시작하거나 카메라 또는 마이크에 접근할 수 없습니다.
|
|
|
|
### 정적 분석
|
|
|
|
#### **앱 확장 식별하기**
|
|
|
|
소스 코드에서 앱 확장을 찾으려면 Xcode에서 `NSExtensionPointIdentifier`를 검색하거나 확장을 나타내는 `.appex` 파일이 있는 앱 번들을 검사합니다. 소스 코드가 없는 경우 grep 또는 SSH를 사용하여 앱 번들 내에서 이러한 식별자를 찾습니다.
|
|
|
|
#### **지원되는 데이터 유형**
|
|
|
|
확장의 `Info.plist` 파일에서 `NSExtensionActivationRule`을 확인하여 지원되는 데이터 유형을 식별합니다. 이 설정은 호스트 앱에서 호환되는 데이터 유형만 확장을 트리거하도록 보장합니다.
|
|
|
|
#### **데이터 공유**
|
|
|
|
앱과 그 확장 간의 데이터 공유는 "앱 그룹"을 통해 설정된 공유 컨테이너가 필요하며, `NSUserDefaults`를 통해 접근합니다. 이 공유 공간은 확장에서 시작된 백그라운드 전송에 필요합니다.
|
|
|
|
#### **확장 제한하기**
|
|
|
|
앱은 특정 확장 유형, 특히 커스텀 키보드를 제한할 수 있으며, 이는 민감한 데이터 처리가 보안 프로토콜에 맞도록 보장합니다.
|
|
|
|
### 동적 분석
|
|
|
|
동적 분석에는 다음이 포함됩니다:
|
|
|
|
- **공유 항목 검사**: `NSExtensionContext - inputItems`에 후킹하여 공유 데이터 유형과 출처를 확인합니다.
|
|
- **확장 식별하기**: `NSXPCConnection`과 같은 내부 메커니즘을 관찰하여 어떤 확장이 귀하의 데이터를 처리하는지 발견합니다.
|
|
|
|
`frida-trace`와 같은 도구는 프로세스 간 통신의 기술적 세부 사항에 관심이 있는 사람들에게 기본 프로세스를 이해하는 데 도움을 줄 수 있습니다.
|
|
|
|
## References
|
|
* [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/)
|
|
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0072/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0072/)
|
|
|
|
{% hint style="success" %}
|
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
{% endhint %}
|