
Uma ferramenta de digitalização de coleta de informações móveis (Android, iOS, WEB, H5, sites estáticos) adequada para cenários de ações de HW, equipes vermelhas e equipes de teste de penetração, que pode ajudar engenheiros de teste de penetração, membros de equipes de ataque e membros de equipes vermelhas a coletar rapidamente ativos de informações importantes em sites móveis ou estáticos e fornecer saída básica de informações, como: Título, Domínio, CDN, informações de impressão digital, informações de status, etc.
Atualmente, este projeto é apenas uma pequena parte do que está planejado. Se você tiver interesse neste projeto ou quiser participar do desenvolvimento de projetos subsequentes ou do trabalho de tradução, envie um e-mail para [email protected] explicando suas habilidades e interesses.
Uma ferramenta de varredura de coleta de informações para dispositivos móveis (Android, iOS, WEB, H5, sites estáticos) voltada para cenários como operações de Red Team / pentest / equipes de teste de penetração. Ela ajuda engenheiros de teste de penetração, membros de equipes de ataque e membros de Red Team a coletar rapidamente informações críticas de ativos de aplicativos móveis ou sites estáticos, fornecendo saída básica de informações como: Título, Domínio, CDN, impressões digitais, status, etc.
Não utilize a tecnologia ou o código deste projeto para fins ilegais, como criação de malware, roubo de direitos autorais/propriedade intelectual de software ou obtenção de lucros indevidos. A implementação das ações acima ou o uso deste projeto para interceptar dados de programas que não são de sua propriedade pode violar as leis da República Popular da China, incluindo os Artigos 217 e 286 do Código Penal, a Lei de Segurança Cibernética e os Regulamentos de Proteção de Software. As técnicas mencionadas neste projeto são apenas para fins de aprendizado privado e testes legítimos. Qualquer responsabilidade criminal ou civil decorrente do uso inadequado desta técnica não é de responsabilidade do autor do projeto.

AppInfoScanner
|-- libs Código principal do programa
|-- core
|-- __init__.py Informações de configuração global
|-- parses.py Para analisar informações estáticas em arquivos
|-- download.py Para baixar automaticamente APPs ou páginas H5
|-- net.py Para realizar sniffing de rede e obter informações básicas
|-- task
|-- __init__.py Arquivo de inicialização do diretório
|-- base_task.py Centro de agendamento de tarefas unificado
|-- android_task.py Para lidar com tarefas relacionadas ao Android
|-- download_task.py Para lidar com tarefas de download automático de APPs ou H5
|-- ios_task.py Para lidar com tarefas relacionadas ao iOS
|-- net_task.py Para lidar com tarefas relacionadas ao sniffing de rede
|-- web_task.py Para lidar com tarefas relacionadas à Web, como código fonte de páginas web, informações H5 estáticas
|-- tools Ferramentas necessárias ao programa
|-- apktool.jar Para descompilar arquivos APK; pode ser necessário trocar dependendo da plataforma
|-- baksmali.jar Para descompilar arquivos DEX; pode ser necessário trocar dependendo da plataforma
|-- strings.exe Para obter informações de string de iPA no Windows 32
|-- strings64.exe Para obter informações de string de iPA no Windows 64
|-- __init__.py Arquivo de inicialização do diretório
|-- app.py Programa principal
|-- config.py Arquivo de configuração do programa
|-- README.md Instruções de uso do programa
|-- requirements.txt Bibliotecas de dependência necessárias ao programa
|-- update.md Informações de versões anteriores do programa
git clone https://github.com/kelvinBen/AppInfoScanner.git
Ou copie o link abaixo para o navegador para baixar a versão estável mais recente
https://github.com/kelvinBen/AppInfoScanner/releases/latest
Canal de download rápido na China:
git clone https://gitee.com/kelvin_ben/AppInfoScanner.git
cd AppInfoScanner
python -m pip install -r requirements.txt
python app.py android -i <Seu arquivo APK ou DEX ou URL de download do APK ou diretório de arquivos>
python app.py ios -i <Seu arquivo IPA ou Mach-o ou URL de download do IPA ou diretório de arquivos>
python app.py web -i <Seu arquivo Web ou diretório salvo do Web ou URL de cache da Web>
python app.py [TIPO] [OPÇÕES] <URL ou diretório a escanear>
<> representa o arquivo, diretório ou URL a ser escaneado
| relação OU, escolha apenas um
[] representa os parâmetros a serem inseridos
Este tipo de parâmetro corresponde a [TIPO] no formato básico de comando. Atualmente, suporta apenas três tipos: [android/ios/web]. Um dos três tipos deve ser especificado.
android: para escanear o conteúdo de arquivos relacionados a aplicativos Android
ios: para escanear o conteúdo de arquivos relacionados a aplicativos iOS
web: para escanear o conteúdo de sites Web ou páginas H5
Suporta correção automática com base na extensão do nome do arquivo. Mesmo que você digite ios, se o parâmetro -i for um arquivo com nome XXX.apk, será executada a varredura relacionada ao Android.
Este tipo de parâmetro corresponde a [OPTIONS] no formato básico de comando. Vários parâmetros podem ser usados juntos.
-i ou --inputs: Insira o arquivo, diretório ou URL do arquivo para download automático a ser escaneado. Se o caminho for muito longo, coloque entre aspas. Este parâmetro é obrigatório.
-r ou --rules: Insira regras temporárias de varredura para o conteúdo do arquivo a ser escaneado.
-s ou --sniffer: Ativa a função de sniffing de rede. O padrão é ativado.
-n ou --no-resource: Ignora todos os arquivos de recurso, incluindo os do sniffing de rede (é necessário configurar as regras relacionadas a `sniffer_filter` no config.py primeiro). O padrão é não ignorar recursos.
-a ou --all: Exibe todos os resultados que correspondem às regras de varredura. O padrão é ativado.
-t ou --threads: Define o número de threads simultâneas. O padrão são 10 threads.
-o ou --output: Especifica o diretório de saída para os resultados da varredura e arquivos temporários gerados durante o processo. O padrão é o diretório onde o script está localizado.
-p ou --package: Especifica o nome do pacote JAVA a ser escaneado em arquivos APK ou DEX do Android. Este parâmetro só pode ser usado no tipo android.
python app.py android -i <Seu arquivo APK>
Exemplo:
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk
python app.py android -i <Seu arquivo DEX>
Exemplo:
python app.py android -i C:\Users\Administrator\Desktop\Demo.dex
python app.py android -i <URL de download do APK>
Exemplo:
python app.py android -i "https://127.0.0.1/Demo.apk"
Observe que, se a URL for muito longa, ela deve ser envolvida por aspas duplas (").
python app.py ios -i <Seu arquivo IPA>
Exemplo:
python app.py ios -i "C:\Users\Administrator\Desktop\Demo.ipa"
python app.py ios -i <Seu arquivo Mach-o>
Exemplo:
python app.py ios -i "C:\Users\Administrator\Desktop\Demo\Payload\Demo.app\Demo"
python app.py ios -i <URL de download do IPA>
Exemplo:
python app.py ios -i "https://127.0.0.1/Demo.ipa"
Observe que, se a URL for muito longa, ela deve ser envolvida por aspas duplas ("). Atualmente, não há suporte para escanear arquivos IPA da Apple Store.
python app.py web -i <Seu arquivo web>
Exemplo:
python app.py web -i "C:\Users\Administrator\Desktop\Demo.html"
python app.py web -i <URL de download do Web>
Exemplo:
python app.py web -i "https://127.0.0.1/Demo.html"
Os exemplos a seguir usam o tipo android:
python app.py android -i <Seu diretório>
Exemplo:
python app.py android -i C:\Users\Administrator\Desktop\Demo
python app.py android -i <Seu apk> -r <a palavra-chave | as regras>
Exemplo:
Adicionar varredura para domínios Baidu
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -r ".*baidu.com.*"
python app.py android -i <Seu apk> -s
Exemplo:
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -s
python app.py android -i <Seu apk> -n
Exemplo:
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -n
python app.py android -i <Seu apk> -a
Exemplo:
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -a
python app.py android -i <Seu apk> -t 20
Exemplo:
Definir 20 threads simultâneas
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -t 20
python app.py android -i <Seu apk> -o <caminho de saída>
Exemplo:
Por exemplo, salvar no diretório Temp da área de trabalho
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -o C:\Users\Administrator\Desktop\Temp
python app.py android -i <Seu apk> -p <Nome do pacote Java>
Exemplo:
Para filtrar conteúdo sob o nome de pacote com.baidu
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -p "com.baidu"
O programa neste projeto serve apenas como uma estrutura básica, com algumas regras incorporadas. Nem toda entrada pode concluir a varredura adequadamente. Portanto, você pode configurar regras de acordo com suas necessidades. Configurações excelentes podem trazer resultados de qualidade.
filter_components: Usado para configurar o conteúdo de componentes relacionados, incluindo componentes JSON ou XML, etc.
filter_strs: Usado para configurar o conteúdo do arquivo que precisa ser escaneado. Por exemplo, para escanear números de porta, configure: "r'.*://([\d{1,3}\.]{3}\d{1,3}).*'"
filter_no: Usado para ignorar conteúdo indesejado nos arquivos escaneados.
shell_list: Usado para configurar características de shells relacionados ao Android.
web_file_suffix: Configura as extensões de arquivo WEB a serem escaneadas.
sniffer_filter: Configura as extensões de arquivo a serem ignoradas durante o sniffing de rede.
headers: Usado para configurar as informações de cabeçalho de requisição necessárias durante o download automático.
data: Usado para configurar o corpo da requisição necessário durante o download automático.
method: Usado para configurar o método de requisição necessário durante o download automático.
Método 1: Ajuste as regras no config.py de acordo com a situação real.
Método 2: Ignore os arquivos de recurso.
Isso indica que o aplicativo a ser escaneado possui um shell. É necessário remover o shell antes de escanear. Atualmente, você pode usar as seguintes ferramentas para remover o shell:
Android:
Módulo xposed: dexdump
Módulo frida: FRIDA-DEXDump
Sem root: blackdex
iOS:
Módulo firda:
Sistema Windows: frida-ipa-dump
Sistema MacOS: frida-ios-dump
Falha no download do arquivo.
1) Verifique se a URL inserida está correta.
2) Verifique se há problema de rede ou configure as informações de cabeçalho (headers), corpo da requisição (data) e método (method) no arquivo de configuração config.py e tente novamente.
Falha na descompilação do arquivo.
Envie a captura de tela do erro e o arquivo APK correspondente para https://github.com/kelvinBen/AppInfoScanner/issues. O autor revisará e tratará o mais rápido possível.
Caminho para envio de regras personalizadas:
Clique para adicionar regras personalizadas
Formato de envio:
1. Adicionar componente personalizado do APP
Exemplo: regra para fastjson:
Componente do APP: fastjson com.alibaba.fastjson
2. String para pesquisa
Exemplo: regra para AK da Alibaba:
String:
Ali Cloud AK .*accessKeyId.*".*"
3. Extensões de arquivo WEB para pesquisa
Exemplo: regra para arquivos jsp:
Site: linguagem Java jsp
4. Regras de shell Android
Exemplo: regra de shell de uma empresa numérica:
Shell: empresa numérica com.stub.StubApp
WeChat: bromomo (Ao adicionar amigo, por favor mencione: GitHub)
Grupo WeChat:

Se não puder entrar, adicione o WeChat e depois entre no grupo.
E-mail: [email protected]
Para enviar requisitos, relatar bugs, troca técnica ou cooperação comercial, sinta-se à vontade para adicionar o autor.

AppInfoScanner faz parte do StarLink Project 2.0 da 404Team. Se você tiver dúvidas sobre o AppInfoScanner ou quiser encontrar colegas para trocar ideias, consulte a forma de ingresso no grupo do StarLink Project.