mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-24 20:13:37 +00:00
102 lines
7.3 KiB
Markdown
102 lines
7.3 KiB
Markdown
{% hint style="success" %}
|
|
Aprenda e pratique 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">\
|
|
Aprenda e pratique 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>
|
|
|
|
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
|
|
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
|
|
|
{% embed url="https://websec.nl/" %}
|
|
|
|
|
|
O compartilhamento de dados dentro e entre aplicativos em dispositivos iOS é facilitado pelo mecanismo [`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard), que é dividido em duas categorias principais:
|
|
|
|
- **Área de transferência geral do sistema**: Esta é usada para compartilhar dados com **qualquer aplicativo** e é projetada para persistir dados entre reinicializações do dispositivo e desinstalações de aplicativos, um recurso que está disponível desde o iOS 10.
|
|
- **Áreas de transferência personalizadas / nomeadas**: Estas são especificamente para compartilhamento de dados **dentro de um aplicativo ou com outro aplicativo** que compartilha o mesmo ID de equipe, e não são projetadas para persistir além da vida do processo do aplicativo que as cria, seguindo as mudanças introduzidas no iOS 10.
|
|
|
|
**Considerações de segurança** desempenham um papel significativo ao utilizar áreas de transferência. Por exemplo:
|
|
- Não há mecanismo para os usuários gerenciarem permissões de aplicativos para acessar a **área de transferência**.
|
|
- Para mitigar o risco de monitoramento não autorizado em segundo plano da área de transferência, o acesso é restrito a quando o aplicativo está em primeiro plano (desde o iOS 9).
|
|
- O uso de áreas de transferência nomeadas persistentes é desencorajado em favor de contêineres compartilhados devido a preocupações de privacidade.
|
|
- O recurso **Clipboard Universal** introduzido com o iOS 10, permitindo que o conteúdo seja compartilhado entre dispositivos via a área de transferência geral, pode ser gerenciado pelos desenvolvedores para definir a expiração de dados e desativar a transferência automática de conteúdo.
|
|
|
|
Garantir que **informações sensíveis não sejam armazenadas inadvertidamente** na área de transferência global é crucial. Além disso, os aplicativos devem ser projetados para evitar o uso indevido de dados da área de transferência global para ações não intencionais, e os desenvolvedores são incentivados a implementar medidas para evitar a cópia de informações sensíveis para a área de transferência.
|
|
|
|
### Análise Estática
|
|
|
|
Para análise estática, procure no código-fonte ou binário por:
|
|
- `generalPasteboard` para identificar o uso da **área de transferência geral do sistema**.
|
|
- `pasteboardWithName:create:` e `pasteboardWithUniqueName` para criar **áreas de transferência personalizadas**. Verifique se a persistência está habilitada, embora isso esteja obsoleto.
|
|
|
|
### Análise Dinâmica
|
|
|
|
A análise dinâmica envolve a interceptação ou rastreamento de métodos específicos:
|
|
- Monitore `generalPasteboard` para uso em todo o sistema.
|
|
- Rastreie `pasteboardWithName:create:` e `pasteboardWithUniqueName` para implementações personalizadas.
|
|
- Observe chamadas de método obsoleto `setPersistent:` para verificar configurações de persistência.
|
|
|
|
Detalhes importantes a serem monitorados incluem:
|
|
- **Nomes da área de transferência** e **conteúdos** (por exemplo, verificando strings, URLs, imagens).
|
|
- **Número de itens** e **tipos de dados** presentes, aproveitando verificações de tipos de dados padrão e personalizados.
|
|
- **Opções de expiração e locais apenas** inspecionando o método `setItems:options:`.
|
|
|
|
Um exemplo de uso de ferramenta de monitoramento é o **monitor de área de transferência do objection**, que verifica a generalPasteboard a cada 5 segundos em busca de alterações e exibe os novos dados.
|
|
|
|
Aqui está um exemplo simples de script JavaScript, inspirado na abordagem do objection, para ler e registrar alterações da área de transferência a cada 5 segundos:
|
|
```javascript
|
|
const UIPasteboard = ObjC.classes.UIPasteboard;
|
|
const Pasteboard = UIPasteboard.generalPasteboard();
|
|
var items = "";
|
|
var count = Pasteboard.changeCount().toString();
|
|
|
|
setInterval(function () {
|
|
const currentCount = Pasteboard.changeCount().toString();
|
|
const currentItems = Pasteboard.items().toString();
|
|
|
|
if (currentCount === count) { return; }
|
|
|
|
items = currentItems;
|
|
count = currentCount;
|
|
|
|
console.log('[* Pasteboard changed] count: ' + count +
|
|
' hasStrings: ' + Pasteboard.hasStrings().toString() +
|
|
' hasURLs: ' + Pasteboard.hasURLs().toString() +
|
|
' hasImages: ' + Pasteboard.hasImages().toString());
|
|
console.log(items);
|
|
|
|
}, 1000 * 5);
|
|
```
|
|
## Referências
|
|
|
|
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8)
|
|
* [https://hackmd.io/@robihamanto/owasp-robi](https://hackmd.io/@robihamanto/owasp-robi)
|
|
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/)
|
|
|
|
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
|
|
|
{% embed url="https://websec.nl/" %}
|
|
|
|
|
|
{% hint style="success" %}
|
|
Aprenda e pratique Hacking AWS:<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">\
|
|
Aprenda e pratique Hacking GCP: <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>
|
|
|
|
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
|
|
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
|
|
|
</details>
|
|
{% endhint %}
|