hacktricks/mobile-pentesting/ios-pentesting/ios-uipasteboard.md

6.8 KiB

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

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: e pasteboardWithUniqueName 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: e pasteboardWithUniqueName 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

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks: