
Scanner de Sequestro de Aplicativos para macOS

boko.py é um scanner de aplicativos para macOS que busca e identifica potenciais vulnerabilidades de sequestro de dylib e dylib fracas para executáveis de aplicativos, bem como scripts que um aplicativo pode usar e que têm potencial para serem infectados com backdoors. A ferramenta também destaca arquivos interessantes e os lista, em vez de navegar manualmente pelo sistema de arquivos para análise. Com a função de descoberta ativa, não há mais adivinhação se um executável é vulnerável a sequestro de dylib!
A razão por trás da criação desta ferramenta foi que eu queria mais controle sobre os dados que o Dylib Hijack Scanner descobria. A maioria dos scanners públicos para quando encontra o primeiro caso de uma dylib vulnerável, sem expandir o restante dos rpaths. Como às vezes o primeiro resultado é expandido em um arquivo inexistente dentro de uma área protegida pelo SIP, eu queria obter o restante desses caminhos expandidos. Por causa disso, existem falsos positivos, então a ferramenta atribui um campo de certeza para cada item.
| Certeza | Descrição |
|---|---|
| Definitivo | A vulnerabilidade é 100% explorável |
| Alta | Se a vulnerabilidade está relacionada a um executável principal e o rpath é o 2º na ordem de carregamento, há uma boa chance de a vulnerabilidade ser explorável |
| Potencial | Isso é atribuído a dylibs e scripts com possibilidade de backdoor, vale a pena investigar, mas pode não ser explorável |
| Baixa | Baixa chance de ser explorável devido à ordem de carregamento tardia, mas conhecimento é poder |
A espinha dorsal desta ferramenta é baseada no scan.py do DylibHijack por Patrick Wardle (@synack).
boko.py [-h] (-r | -i | -p /path/to/app) (-A | -P | -b) [-oS outputfile | -oC outputfile | -oA outputfile] [-s] [-v]
Recomenda-se usar o modo ativo (-A) apenas com a flag -p e selecionando um programa específico. Além disso, é uma boa ideia usar -v com -oS ou -oA, a menos que você esteja procurando apenas vulnerabilidades com certeza definitiva.
Nota de aviso:
É altamente desaconselhável executar esta ferramenta com as flags -i e (-A ou -b) juntas. Essa combinação abrirá todos os executáveis do seu sistema por 3 segundos cada. Não me responsabilizo por travamentos ou lentidão do seu sistema caso você execute isso. Além disso, se houver malware dormente no seu sistema, isso o executará. Também recomendo não escanear todo o diretório /Applications se você tiver o Xcode instalado, pois leva muito tempo.
python -m pip install psutil| Argumento | Descrição |
|---|
| -h, --help | Mostrar esta mensagem de ajuda e sair |
| -r, --running | Verificar processos atualmente em execução |
| -i, --installed | Verificar todos os aplicativos instalados |
| -p /file.app | Verificar um aplicativo específico, ex.: /Application/Safari.app |
| -A, --active | Executa os binários executáveis descobertos para identificar ativamente dylibs sequestráveis |
| -P, --passive | Realiza verificações apenas visualizando os cabeçalhos dos arquivos (Padrão) |
| -b, --both | Realiza ambos os métodos de teste de vulnerabilidade |
| -oS outputfile | Envia a saída padrão para um arquivo .log |
| -oC outputfile | Envia os resultados para um arquivo .csv |
| -oA outputfile | Envia os resultados para um arquivo .csv e log padrão |
| -s, --sipdisabled | Use se o SIP estiver desabilitado no sistema para pesquisar caminhos normalmente somente leitura |
| -v, --verbose | Exibe todos os resultados em modo verboso enquanto o script é executado; sem isso, apenas vulnerabilidades com certeza "Definitivo" são exibidas no console |