6.8 KiB
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras formas de apoiar o HackTricks:
- Se você quiser ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF Confira os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os HackTricks e HackTricks Cloud repositórios do github.
O compartilhamento de dados dentro e entre aplicativos em dispositivos iOS é facilitado pelo mecanismo UIPasteboard
, que é dividido em duas categorias principais:
- Pasteboard geral em todo o sistema: Isso é usado para compartilhar dados com qualquer aplicativo e é projetado para persistir dados através de reinicializações do dispositivo e desinstalações de aplicativos, um recurso disponível desde o iOS 10.
- Pasteboards personalizados/nomeados: Estes 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 projetados para persistir além da vida do processo do aplicativo que os cria, seguindo as alterações introduzidas no iOS 10.
As considerações de segurança desempenham um papel significativo ao utilizar os pasteboards. Por exemplo:
- Não há mecanismo para os usuários gerenciarem as permissões do aplicativo para acessar o pasteboard.
- Para mitigar o risco de monitoramento não autorizado em segundo plano do pasteboard, o acesso é restrito quando o aplicativo está em primeiro plano (desde o iOS 9).
- O uso de pasteboards nomeados persistentes é desencorajado em favor de contêineres compartilhados devido a preocupações com a privacidade.
- O recurso Universal Clipboard introduzido com o iOS 10, permitindo o compartilhamento de conteúdo entre dispositivos via pasteboard geral, pode ser gerenciado pelos desenvolvedores para definir a expiração dos dados e desativar a transferência automática de conteúdo.
Garantir que informações sensíveis não sejam armazenadas inadvertidamente no pasteboard global é crucial. Além disso, os aplicativos devem ser projetados para evitar o uso indevido de dados do pasteboard 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, pesquise o código-fonte ou binário por:
generalPasteboard
para identificar o uso do pasteboard geral em todo o sistema.pasteboardWithName:create:
epasteboardWithUniqueName
para criar pasteboards personalizados. Verifique se a persistência está ativada, embora isso seja obsoleto.
Análise Dinâmica
A análise dinâmica envolve o hooking ou rastreamento de métodos específicos:
- Monitore
generalPasteboard
para uso em todo o sistema. - Rastreie
pasteboardWithName:create:
epasteboardWithUniqueName
para implementações personalizadas. - Observe chamadas de método
setPersistent:
obsoletas para verificar as configurações de persistência.
Detalhes-chave a serem monitorados incluem:
- Nomes e conteúdos do pasteboard (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 somente local ao inspecionar o método
setItems:options:
.
Um exemplo de uso de ferramenta de monitoramento é o monitor de pasteboard do objection, que verifica o 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 do pasteboard a cada 5 segundos:
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://hackmd.io/@robihamanto/owasp-robi
- https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras formas de apoiar o HackTricks:
- Se você deseja ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF, verifique os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os repositórios HackTricks e HackTricks Cloud.