Dexcalibur é uma plataforma de engenharia reversa do Android focada na automação de instrumentação. Sua particularidade é usar a análise dinâmica para melhorar as heurísticas da análise estática. Ele tem como objetivo automatizar tarefas chatas relacionadas à instrumentação dinâmica, como:
Você quer compartilhar algo ou precisa de ajuda? Junte -se aos nossos bate -papos oficiais:
Telegram - a maneira mais rápida de dar uma resposta
A documentação oficial está disponível aqui (site - trabalho em andamento).
Veja as últimas notícias aqui: http://docs.dexcalibur.org/news.html
Mostrar vídeos de demonstração de Dexcalibur: Demo: menos de 1 minuto para conectar 61 métodos? Não é um problema. (YouTube)
Contribuir!
Não hesite! Existem várias maneiras de contribuir:
Vá para instalar documentos
Alternativa: Use Docker
adb (e um emulador Android, se apropriado)docker-compose build android-dexcaliburdocker run --rm -it --net=host -v /tmp/dexcalibur:/shared -p 8000:8000 dexcalibur:2023.01 /bin/bashPara Linux e MacOS
Instalação do NPM: Se o dexcalibur tiver sido instalado global usando o NPM ( -g Opção), o dexcalibur poderá ser lançado a partir do terminal fazendo $ dexcalibur , caso contrário, o local em que ele pode ser lançado por $ node $(node root -g dexcalibur)/dexcalibur/dexcalibur.js .
Instale da fonte: da pasta dexcalibur , execute $ dexcalibur ou $ node dexcalibur.js .
Para Windows
NPM Instale: Evento Se o dexcalibur estiver instalado globaly usando o npm ( -g opção), o dexcalibur deve ser lançado a partir do terminal executando o seguinte comando de um node <NPM_ROOT>/dexcalibur/dexcalibur.js .
Instale da fonte: da pasta dexcalibur , no terminal, execute o node dexcalibur.js .
Você está usando uma versão anterior do Dexcalibur?
Siga as mesmas etapas que uma nova instalação e, quando você entrar no caminho da área de trabalho, insira o local atual da área de trabalho.
Apenas fazendo:
$ npm install -g dexcalibur
A configuração e o espaço de trabalho existentes serão detectados automaticamente.
As capturas de tela a seguir ilustram a atualização automática do XREFS no tempo de execução.
Na verdade, a maior limitação é que Dexcalibur não é capaz de gerar o código -fonte da função nativa de direcionamento do gancho (na biblioteca JNI). No entanto, você pode declarar manualmente um interceptor de Frida editando um gancho.
Supondo que o Dexcalibur não forneça (no momento) recursos para analisar a parte nativa, como a biblioteca JNI ou o JNA, apenas recursos e limitações relacionados à parte Java foram detestados.
A precisão da análise depende da integridade da imagem da API Android usada durante as etapas iniciais da análise. Isso significa que, se você usar um arquivo DEX gerado a partir do arquivo Android.jar do Android SDK, algumas referências a métodos internos, campos ou classes da API Android Java poderiam estar faltando. Melhores resultados são obtidos quando a análise é iniciada a partir de um arquivo "boot.oat" extraído diretamente de um dispositivo real executando a versão esperada do Android.
TODO: Escreva texto
TODO: Escreva texto
Comportamentos rastreados
Analisador estático envolvido na ação "Run Smali (VM)" é capaz de descobrir e aceitar, mas acompanhar os seguintes comportamentos:
Na verdade, manipuladores/ouvintes para obter uma instrução inválida não são suportados, mas os eventos são rastreados e renderizados.
Dexcalibur ir
A VM produz uma representação intermediária personalizada e simplificada (IR), exibida apenas para ajudar o analista a executar sua análise.
Dependendo do valor da profundidade e configuração da pilha de chamadas, o IR pode incluir ou não a instrução executada na função chamada. Se a execução entrar em um bloco de tentativa e continuar retornando, mas nunca a captura, o bloco de captura não será renderizado. De fato, o objetivo do Dexcalibur IR é render apenas "o que é executado" ou "o que poderia ser executado dependendo do valor de algum símbolo" no contexto da VM.
Dexcalibur IR ajuda a ler uma versão limpa do BytCode, removendo o predicado inútil e opaco. Dexcalibur IR pode ser gerado pela VM com 2 níveis simplificadores:
1º nível IR, poderia ser usado se você não confiar no 2º nível IR:
2º nível:
API Android Mock
PENDÊNCIA
Detalhes
Smali VM segue as etapas:
Como as alças da VM invocam-* Instrução?
Análise de Manifest (Limited)
Antes da primeira execução, o manifesto do Android da aplicação é analisado. Na verdade, as anomalias no manifesto tais configurações inseguras são realmente detectadas nesse nível.
O único objetivo do manifesto do Android é preencher outros tipos de analisadores.
Análise de permissão
Todas as permissões extraídas do manifesto são listadas e identificadas e comparadas à especificação Android da versão API do Android de destino.
Dexcalibur fornece - apenas em alguns casos - uma descrição do objetivo da permissão, a versão mínima da API Android, ...
Análise de atividades
Análise dos provedores
Análise de Serviços
Análise dos receptores
Monitoramento da rede
Monitoramento de intenções
Monitoramento de acesso a arquivos
Você não consegue encontrar menu multi-usuário? Não é um problema, não há um menu, mas o trabalho colaborativo minimalista pode ser alcançado.
Dexcalibur executa um servidor da web. Portanto, se várias pessoas estiverem na mesma rede deste servidor da Web e se o firewall host estiver bem configurado, você poderá ser vários para trabalhar na mesma instância de Dexcalibur.
As limitações reais são:
Um agradecimento especial aos colaboradores:
Antes de ir mais fundo:
dexcalibur --reinstall ? Se não, tente. Primeiro, verifique se as configurações globais foram salvas em <user_directory>/.dexcalibur/
$ ls -la ~/.dexcalibur
total 8
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x+ 87 test_user staff 2784 29 avr 11:47 ..
-rw-r--r-- 1 test_user staff 204 29 avr 11:41 config.json
$ cat ~/.dexcalibur/config.json
{
"workspace":"/Users/test_user/dexcaliburWS3",
"registry":"https://github.com/FrenchYeti/dexcalibur-registry/raw/master/",
"registryAPI":"https://api.github.com/repos/FrenchYeti/dexcalibur-registry/contents/"
}
Em seguida, verifique se a estrutura do espaço de trabalho Dexcalibur é o seguinte (o conteúdo da pasta /api pode ser difere).
$ ls -la ~/dexcaliburWS/.dxc/*
/Users/test_user/dexcaliburWS/.dxc/api:
total 0
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
drwxr-xr-x 8 test_user staff 256 29 avr 11:41 sdk_androidapi_29_google
/Users/test_user/dexcaliburWS/.dxc/bin:
total 34824
drwxr-xr-x 4 test_user staff 128 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
-rwxr-xr-x 1 test_user staff 17661172 29 avr 11:41 apktool.jar
drwxr-xr-x 18 test_user staff 576 29 avr 11:41 platform-tools
/Users/test_user/dexcaliburWS/.dxc/cfg:
total 8
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
-rw-r--r-- 1 test_user staff 314 29 avr 11:41 config.json
/Users/test_user/dexcaliburWS/.dxc/dev:
total 0
drwxr-xr-x 2 test_user staff 64 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
/Users/test_user/dexcaliburWS/.dxc/tmp:
total 0
drwxr-xr-x 2 test_user staff 64 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
Se você usar um dispositivo físico conectado ao USB, verifique se o modo de desenvolvimento e a depuração USB estão ativados.
Se você usar um dispositivo virtual, acesse /splash.html , selecione Device Manager , clique em Connect over TCP ... e siga as instruções. Se você não conhece o endereço IP do seu dispositivo, deixe Dexcalibur detectá -lo verificando automatic configuration da caixa.
Você precisa inscrever o dispositivo de destino antes de poder usá -lo. Durante a inscrição, o DexCalibur coleta os metadados do dispositivo e pressione uma versão compatível do servidor FRIDA.
Tais metadados são usados para selecionar alvos Frida-Server e Frida-Gadget direito.
Se um ponto de exclamação vermelho ! Aparece em uma linha na lista de dispositivos, então sua área de trabalho não é permitida pelo dispositivo. Você provavelmente precisa confirmar
Se o seu dispositivo estiver listado no DeviceManager e a coluna online for verificada, clique em enroll
Se o seu dispositivo estiver listado no DeviceManager e a coluna online for verificada, clique em enroll
A versão DexCalibur <V0.7 não conseguiu detectar o dispositivo emulado automaticamente e usá -lo devido a uma análise de saída de ADB incompleta.
Como versão> = v0.7, depois que seu dispositivo virtual estiver em execução, vá para /splash.html ou clique em DEXCALIBUR na barra de navegação. Clique no botão Device Manager no menu esquerdo e clique no botão Refresh na parte superior da matriz.
Você deve ter uma linha começando pelo ID do ADB do seu dispositivo virtual.
Primeiro, como qualquer dispositivo de destino, você deve inscrevê -lo.
Clique em Connect over TCP ... para adicionar um novo dispositivo sobre o TCP ou conectar um dispositivo inscrito no TCP.
Se o dispositivo nunca tiver sido inscrito, a inscrição será executada através do TCP. Em alguns casos, a conexão com o TCP é mais lenta que o USB. Portanto, a inscrição pode levar tempo adicional.
Se o dispositivo foi inscrito no USB, o novo tipo de transporte preferido para este dispositivo se tornará TCP.
Crie uma solicitação de tração neste repositório ou crie um problema.
Crie uma solicitação de tração no repositório DEXCALIBUR-DOC.
A documentação está disponível aqui (site do documento) e aqui (wiki)
![]() |
|---|
| Eles ofereceram uma licença para todos os produtos <3 |
Na verdade, existem poucos recursos de documentação e treinamento sobre Dexcalibur. Se você usou com sucesso Dexcalibur para ganhar o CTF Challenge ou encontrar vulnerabilidade, eu o encorajo a compartilhar sua experiência.