NOTÍCIAS

[ANONYMOUS][grids]

AndroTickler - testes de penetração e auditoria Toolkit para Android


Uma ferramenta que ajuda o pentest apps Android mais rápido, mais fácil e mais eficiente. AndroTickler oferece muitos recursos de coleta de informações, verificações estáticas e dinâmicas que cobrem a maioria dos aspectos do Android apps pentesting. Ele também oferece vários recursos que necessitar durante a sua pentesters pentests. AndroTickler também se integra com o método Frida para fornecer detecção e manipulação. Ele foi publicado anteriormente sob o nome de Tickler.

O AndroTickler requer um host Linux e um dispositivo Android rooteado conectado à sua porta USB. A ferramenta não instala nada no dispositivo Android, ele só cria um diretório Tickler no / sdcard. O AndroTickler depende do Android SDK para executar comandos no dispositivo e copiar os dados do aplicativo para o diretório TicklerWorkspace no host para análise posterior. TicklerWorkspace é o diretório de trabalho do AndroTickler e cada aplicativo possui um subdiretório separado no TicklerWorkspace que pode conter o seguinte (dependendo das ações do usuário):
  • Diretório DataDir: uma cópia do diretório de dados do aplicativo
  • Diretório extraído: Saída de apktool no aplicativo, contém código smali, recursos, bibliotecas ... etc.
  • Diretório bgSnapshots: Contém instantâneos de fundo copiados do dispositivo.
  • Diretório de imagens: contém as capturas de tela para o aplicativo.
  • Diretório JavaCode: Contém código Java do aplicativo descompilado por ferramentas dex2jar e JD
  • logs directory: contém arquivos de log produzidos por -t -log, conforme explicado abaixo
  • transferências: arquivos e diretórios copiados do dispositivo para o host usando -copy2host
  • AndroidManifest.xml: O arquivo de manifesto do aplicativo como apktool
  • base.apk: o arquivo APK do aplicativo, instalado no dispositivo
  • debuggable.apk: uma versão debugável do aplicativo, produzida por -dbg
O diretório libs e o arquivo de configuração Tickler.conf existem no mesmo diretório do arquivo jar. O arquivo de configuração define a localização do diretório TicklerDir no host e Tickler on / sdcard do dispositivo Android. Se o arquivo de configuração não existir ou estes 2 diretórios não estiverem configurados, os valores padrão serão usados ​​(Tickler_workspace no diretório atual e / sdcard / Tickler, respectivamente). O diretório Tickler_lib contém algumas bibliotecas Java e ferramentas externas usadas pelo AndroTickler, como apktool e dex2jar.
O AndroTickler depende muito das seguintes ferramentas, então elas devem existir em sua máquina antes de usá-la:
  • Java 7 ou superior
  • Ferramentas SDK do Android (adb e amigos)
  • sqlite3
Outras ferramentas são necessárias para alguns recursos, mas o AndroTickler ainda pode ser executado sem eles:
  • Frida
  • jarsigner

Como usá-lo
  1. Construa ferramenta a partir do código
  2. Move AndroTickler.jar é para o mesmo diretório do diretório Tickler_lib e do arquivo Tickler.conf (criado automaticamente em build / libs)
  3. Conecte seu dispositivo Android com o aplicativo para teste instalado no

Instalar
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install gradle 4.4
git clone https://github.com/ernw/AndroTickler
cd AndroTickler
gradle build
A versão atual faz o seguinte: 
Ajuda do comando
java -jar AndroTickler.jar -h

Coleta de informações / Análise estática:
lista de aplicativos instalados no dispositivo:
java -jar AndroTickler.jar -pkgs
Procura um aplicativo (pacote) instalado no dispositivo, cujo nome do pacote contém a chave de pesquisa
java -jar AndroTickler.jar -findPkg <searchKey>

pacote sem atributos extras
java -jar AndroTickler.jar -pkg <package> [other options]
Qualquer comando com uma opção -pkg (seja usado com qualquer uma das seguintes opções ou não), faz as seguintes ações se elas não foram feitas antes:
  • Copia o aplicativo do dispositivo
  • Extrai o arquivo Manifesto do aplicativo
  • Decompila o aplicativo em código Java usando ferramentas dex2jar e JD

Informações gerais

java -jar AndroTickler.jar -pkg <package> -info
Retorna as seguintes informações:
  • ID do usuário da aplicação
  • Caminho de diretórios da aplicação
  • Se o código do aplicativo indicar o uso do armazenamento externo
  • Diretórios da aplicação que já existem no armazenamento externo
  • URIs de conteúdo no código
  • Se o aplicativo for backable
  • Se o aplicativo for debugável
  • Esquemas de dados (como iOS IPC)
  • As permissões que usa

Code Squeezing
java -jar AndroTickler.jar -pkg <package> -squeeze [short | <codeLocation> ]
Obtém o seguinte do código Java descompilado do aplicativo:
  • Mensagens de registro
  • Qualquer indicação de possíveis credenciais de usuário
  • Comentários de Java
  • Libs usados
  • URL no código
  • Uso de preferências compartilhadas
  • Uso do armazenamento externo
  • Componentes comuns, como OkHttp e WebView
Não é de surpreender que a saída seja geralmente enorme, por isso recomenda-se redirecionar a saída do comando para um arquivo 
curto. Exprime apenas o código descompilado que pertence ao desenvolvedor. Por exemplo, se um aplicativo tiver um nome de pacote de com.notEnaf.myapp, então aperte curto aperta apenas o código no diretório com / notEnaf.
Espreme o código apenas no diretório de códigoLocalização . Útil para limitar sua busca ou espremer o código-fonte, se disponível. 


Listando Componentes
java -jar AndroTickler.jar -pkg <package> -l [-exp] [-v]
Lista todos os componentes do app 
-exp Mostra apenas componentes exportados 
-v Dá informações mais detalhadas para cada componente:

  • Tipo de componente
  • Seja exportado ou não
  • Seus filtros de intenção
  • A ferramenta verifica a classe Java correspondente para cada componente e retorna todos os extras de intenção possíveis

Listando qualquer tipo de componentes
java -jar AndroTickler.jar -pkg <package> -l [-act | -ser | -rec | -prov ] [-exp] [-v]
  • -acão: atividades
  • -ser: serviços
  • -rec: receptores de transmissão
  • -prov: provedores de conteúdo
  • -exp: mostra apenas componentes exportados de qualquer tipo acima

Bases de dados
java -jar AndroTickler.jar -pkg <package> -db [|e|l|d] [nu]
Por padrão, todos os comandos -db atualizam o diretório de armazenamento de dados do aplicativo no host antes de executar o cheque. 
nenhum atributo OU e Testa se os bancos de dados do aplicativo estão criptografados. É a ação padrão no caso de nenhuma opção ser dada após o sinalizador -db. l Lista todos os bancos de dados do aplicativo. Os bancos de dados criptografados podem não ser detectados. d Toma um despejo sqlite de qualquer um dos bancos de dados não criptografados. nu noUpdate: executa qualquer uma das opções acima sem atualizar o diretório de dados do aplicativo no host. 

Comparação de diretório de armazenamento de dados
java -jar AndroTickler.jar -pkg <package> -diff [d|detailed]
Copia o diretório de armazenamento de dados do aplicativo (para DataDirOld) e pede ao usuário que faça a ação que deseja e pressione Enter quando terminar. Em seguida, ele copia o diretório de armazenamento de dados novamente (para DataDir) e executa diff entre eles para mostrar quais arquivos foram adicionados, excluídos ou modificados. 
d | detailed Faz o mesmo que o comando normal -diff, também mostra o que exatamente mudou em arquivos de texto e bancos de dados não criptografados. Código de 


pesquisa


java -jar AndroTickler.jar -pkg <package> -sc <key> [<customLocation>]
Procura a chave nos seguintes locais:
  • O código Java descompilado do aplicativo
  • res / values ​​/ strings.xml
  • res / values ​​/ arrays.xml
A pesquisa é insensível a maiúsculas e minúsculas
Substitui o local do código Java descompilado pela localização personalizada. 

Armazenamento
java -jar AndroTickler.jar -pkg <package> -sd <key>
Procura o diretório de armazenamento de dados do aplicativo para os principais componentes de 

Tickling
Triggers da aplicação, por todas as combinações possíveis de intenções. Por exemplo, se uma atividade tiver um filtro intencional de 2 ações possíveis e 3 esquemas URI de dados, o AndroTickler desencadeará essa atividade com todas as combinações possíveis dessa intenção. Além disso, o AndroTickler captura os extras de intenção mencionados na classe Java correspondente ao componente, atribua valores falsos e adicione-os às possíveis combinações de intenções. Apenas são oferecidos extras de tipo booleano, string, int e float. 
se o -expopção é usada, então os componentes serão acionados sem privilégios de root ou quaisquer permissões especiais. Caso contrário, os componentes serão ativados com privilégios de root. Isso ajuda a testar o aplicativo em 2 cenários diferentes: contra atacantes com privilégios normais ou privilegiados. 
Antes de desencadear componentes, o AndroTickler imprime todos os comandos a serem executados. Em seguida, para cada comando, ele aciona o componente, imprime o comando e aguarda o usuário. Isso dá ao usuário tempo suficiente para fazer verificações extras após a execução do comando. Antes que o usuário avance para o próximo comando, ele oferece a opção de capturar uma captura de tela do dispositivo para a documentação do PoC.

java -jar AndroTickler.jar -pkg <package> -t [-all | -exp] [target] [-log]
alvo como explicado com o comando da lista, pode ser:
  • -acão: atividades. inicia (atividade / atividades) com todas as combinações de intenções, como explicado acima
  • -ser: serviços. inicia o (s) serviço (s) com todas as combinações de intenções conforme explicado acima
  • -rec: receptores de transmissão: envia todas as mensagens de transmissão possíveis que combinariam com o (s) receptor (es) de transmissão
  • -prov: provedores de conteúdo: consulta o (s) provedor (es) de conteúdo
se nenhum valor, então o alvo é tudo acima 
[-comp] <component_name> Especifica apenas um componente. Você também pode usar <component_name> diretamente sem sinalizador -comp. -exp O AndroTickler usa privilégios normais para desencadear apenas os destinos exportados. -todos a opção padrão. O AndroTickler usa privilégios de root para disparar os destinos exportados -log Captura todas as mensagens de logcat geradas durante a sessão de disparo. O arquivo de registro é salvo no subdiretório de logs. 


Frida:
Frida deve ser instalada em sua máquina host. Além disso, a localização do servidor Frida no dispositivo Android deve ser adicionada ao arquivo Tickler.conf na entrada Frida_server_path

Argumentos de captura e valor de retorno
java -jar AndroTickler.jar -pkg <package> -frida vals <ClassName> <MethodName> <NumberOfArgs> [-reuse]
Exibe argumentos e valor de retorno desse método (somente tipos de dados primitivos e String) 
reutilização No caso de vals e opções definidas, a Frida cria / atualiza um script Frida dessa funcionalidade. Você pode modificar o script criado como quiser, então, se você quiser executá-lo através do AndroTickler, use a opção -reusar para que não seja substituída. 


Modificar Argumentos ou Valor de Retorno
java -jar AndroTickler.jar -pkg <package> -frida set <ClassName> <MethodName> <NumberOfArgs> <NumberOfArgToModify> <newValue>[-reuse]
Define o número do argumento NumberOfArgToModify para newValue (apenas tipos de dados primitivos e String) Se NumberOfArgToModify > NumberOfArgs : define o valor de retorno 

Execute o script JS Frida
java -jar AndroTickler.jar -pkg <package> -frida script <scriptPath>
Executa um script frida JS localizado no scriptPath em seu host 
Enumerate classes carregadas:

java -jar AndroTickler.jar -pkg <package> -frida enum

Outras características

Versão de depuração
java -jar AndroTickler.jar -pkg <package> -dbg
Cria uma versão debugável do aplicativo, que pode ser instalada no dispositivo e depurada usando qualquer ferramenta externa. O AndroTickler vem com uma loja de chaves para assinar o apk desagradável , mas requer a ferramenta jarsigner no host. 

Versão personalizada
java -jar AndroTickler.jar -pkg <package> -apk <decompiledDirectory>
Desenvolve um arquivo apk de um diretório, o assina e o instala. 

Instantâneos de fundo
java -jar AndroTickler.jar [-pkg <package>] [-bg|--bgSnapshots]
Copia as instantâneas de fundo tomadas pelo dispositivo (funciona com e sem a opção -pkg) para o subdiretório bgSnapshots . 

Copiar arquivos / diretórios
Copiar o diretório de armazenamento de dados:

java -jar AndroTickler.jar -pkg <package> -dataDir  [dest]
Cópias Diretório de armazenamento de dados para o destino DataDir Nome opcional do diretório de destino, que será localizado de qualquer maneira em transferências sudirectory. 
Copie qualquer arquivo / diretório:

java -jar AndroTickler.jar -pkg <package> -cp2host <source_path> [dest]
Copia arquivos / diretórios dos dispositivos Android.
  • source_path é a localização absoluta do que você deseja copiar do dispositivo Android
  • dest: nome opcional do diretório de destino, que será localizado de qualquer maneira em transferências sudirectory.
Se a opção dest não for fornecida, o nome do diretório será o timestamp da transação. 

Captura de tela

java -jar AndroTickler.jar [-pkg <package>] -screen
  • Captura a captura de tela atual do dispositivo e salva-os no subdiretório de imagens
  • Funciona com ou sem a bandeira do pacote

Nota
Para as opções que não requerem opção -pkg, seus dados serão guardados em Tickler_Dir / NoPackage 

Exemplos:
java -jar AndroTickler.jar -pkg <package> -t  -act -exp
Disparadores de atividades exportadas
java -jar AndroTickler.jar -pkg <package> -t -prov -log
Consulta todos os provedores de conteúdo e salva mensagens logadas até que a ferramenta pare a execução
java -jar AndroTickler.jar -pkg <package> -t <component_name> 
Aciona o componente, o tipo de disparo depende do tipo de componente