<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
XPC, que significa XNU (o kernel usado pelo macOS) inter-Process Communication, é um framework para **comunicação entre processos** no macOS e iOS. O XPC fornece um mecanismo para realizar **chamadas de métodos seguras e assíncronas entre diferentes processos** no sistema. É parte do paradigma de segurança da Apple, permitindo a **criação de aplicações com separação de privilégios** onde cada **componente** executa com **apenas as permissões necessárias** para realizar seu trabalho, limitando assim o potencial dano de um processo comprometido.
O XPC usa uma forma de Comunicação Inter-Processos (IPC), que é um conjunto de métodos para diferentes programas em execução no mesmo sistema enviarem dados um para o outro.
1.**Segurança**: Ao separar o trabalho em diferentes processos, cada processo pode ser concedido apenas as permissões de que precisa. Isso significa que mesmo que um processo seja comprometido, sua capacidade de causar danos é limitada.
2.**Estabilidade**: O XPC ajuda a isolar falhas no componente onde ocorrem. Se um processo falha, ele pode ser reiniciado sem afetar o restante do sistema.
A única **desvantagem** é que **separar uma aplicação em vários processos** fazendo-os comunicar via XPC é **menos eficiente**. Mas nos sistemas atuais isso quase não é perceptível e os benefícios são melhores.
Os componentes XPC de uma aplicação estão **dentro da própria aplicação.** Por exemplo, no Safari você pode encontrá-los em **`/Applications/Safari.app/Contents/XPCServices`**. Eles têm a extensão **`.xpc`** (como **`com.apple.Safari.SandboxBroker.xpc`**) e são **também bundles** com o binário principal dentro dele: `/Applications/Safari.app/Contents/XPCServices/com.apple.Safari.SandboxBroker.xpc/Contents/MacOS/com.apple.Safari.SandboxBroker` e um `Info.plist: /Applications/Safari.app/Contents/XPCServices/com.apple.Safari.SandboxBroker.xpc/Contents/Info.plist`
Como você deve estar pensando, um **componente XPC terá diferentes direitos e privilégios** do que os outros componentes XPC ou o binário principal do aplicativo. EXCETO se um serviço XPC for configurado com [**JoinExistingSession**](https://developer.apple.com/documentation/bundleresources/information\_property\_list/xpcservice/joinexistingsession) definido como “True” no seu arquivo **Info.plist**. Neste caso, o serviço XPC será executado na **mesma sessão de segurança que a aplicação** que o chamou.
Os serviços XPC são **iniciados** pelo **launchd** quando necessário e **encerrados** assim que todas as tarefas estão **completas** para liberar recursos do sistema. **Componentes XPC específicos de aplicações só podem ser utilizados pela aplicação**, reduzindo assim o risco associado a potenciais vulnerabilidades.
Serviços XPC de sistema estão acessíveis a todos os usuários. Esses serviços, seja do tipo launchd ou Mach, precisam ser **definidos em arquivos plist** localizados em diretórios especificados como **`/System/Library/LaunchDaemons`**, **`/Library/LaunchDaemons`**, **`/System/Library/LaunchAgents`**, ou **`/Library/LaunchAgents`**.
Os que estão em **`LaunchDameons`** são executados pelo root. Portanto, se um processo não privilegiado puder se comunicar com um deles, ele poderá escalar privilégios.
Aplicações podem **se inscrever** em diferentes mensagens de eventos, permitindo que sejam **iniciadas sob demanda** quando tais eventos ocorrerem. A **configuração** para esses serviços é feita nos arquivos **plist do launchd**, localizados nos **mesmos diretórios que os anteriores** e contendo uma chave extra **`LaunchEvent`**.
Quando um processo tenta chamar um método via uma conexão XPC, o **serviço XPC deve verificar se esse processo tem permissão para conectar**. Aqui estão as maneiras comuns de verificar isso e as armadilhas comuns:
A Apple também permite que aplicativos **configurem alguns direitos e como obtê-los** para que, se o processo de chamada tiver esses direitos, ele seja **permitido chamar um método** do serviço XPC:
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).