
StaCoAn é uma ferramenta multiplataforma que auxilia desenvolvedores, caçadores de bugbounty e hackers éticos a realizar análise estática de código em aplicativos móveis.

StaCoAn é uma ferramenta multiplataforma que auxilia desenvolvedores, caçadores de recompensas de bugs e hackers éticos a realizar análise estática de código em aplicativos móveis*.
Esta ferramenta irá procurar linhas interessantes no código que podem conter:
Esta ferramenta foi criada com grande foco em usabilidade e orientação gráfica na interface do usuário.
Para os impacientes, baixe o download na página de versões.
*: note que atualmente apenas arquivos apk são suportados, mas arquivos ipa serão adicionados em breve.
Um relatório de exemplo pode ser encontrado aqui.
O conceito é que você arrasta e solta seu arquivo de aplicativo móvel (um arquivo .apk ou .ipa) no aplicativo StaCoAn e ele gerará um relatório visual e portátil para você. Você pode ajustar as configurações e listas de palavras para obter uma experiência personalizada.
Os relatórios contêm um prático visualizador em árvore para que você possa navegar facilmente pelo seu aplicativo descompilado.

A Função Saque permite que você 'saque' (~marque) as descobertas que são valiosas para você e na página de saque você terá uma visão geral do seu 'ataque de saque'.
O relatório final pode ser exportado para um arquivo zip e compartilhado com outras pessoas.
O aplicativo usa listas de palavras para encontrar linhas interessantes no código. As listas de palavras estão no seguinte formato:
API_KEY|||80||| This contains an API key reference
(https|http):\/\/.*api.*|||60||| This regex matches any URL containing 'api'
Observe que essas listas de palavras suportam entradas regex.
No exclusion_list.txt você pode definir exclusões (se por algum motivo você tiver muitas descobertas):
(https|http):\/\/.*api.*|||"res","layout"||| Like previously, note that "res","layout" resembles the path
(https|http):\/\/.*api.*|||||| To exclude everywhere
Qualquer arquivo fonte será processado. Isso inclui arquivos '.java', '.js', '.html', '.xml',....
Arquivos de banco de dados também são pesquisados por palavras-chave. O banco de dados também possui um visualizador de tabelas.

Os relatórios são feitos para caber em todas as telas.


Esta ferramenta terá problemas com código ofuscado. Se você é desenvolvedor, tente compilar sem ofuscação ativada antes de executar esta ferramenta. Se você está no lado ofensivo, boa sorte, cara.
Se você quiser começar o mais rápido possível, vá para a página de versões e baixe o executável ou arquivo correspondente ao seu sistema operacional.
Se você baixou o arquivo zip da versão, extraia-o.
No Windows, você pode apenas clicar duas vezes no executável. Ele abrirá no modo servidor e você pode arrastar e soltar seus aplicativos móveis na interface web.

No Mac e Linux, você pode executá-lo no terminal sem argumentos para o modo servidor.
./stacoan
Arraste e solte este arquivo no executável.
Ou você pode especificar um arquivo apk para executá-lo sem o modo servidor:
./stacoan -p test-apk.apk
O relatório será colocado dentro de uma pasta com um nome correspondente ao apk.
cd docker
docker build . -t stacoan
Certifique-se de que seu aplicativo esteja no local /yourappsfolder.
docker run -e JAVA_OPTS="-Xms2048m -Xmx2048m" -p 8888:8888 -p 7777:7777 -i -t stacoan
Arraste e solte seu aplicativo via: http://127.0.0.1:7777.
git clone https://github.com/vincentcox/StaCoAn/
cd StaCoAn/src
Certifique-se de ter o pip3 instalado:
sudo apt-get install python3-pip
Instale os pacotes python necessários:
pip3 install -r requirements.txt
Execute o StaCoAn via linha de comando:
python3 stacoan.py -p yourApp.apk
Ou se preferir usar a interface de arrastar e soltar:
python3 stacoan.py
Certifique-se de estar na pasta src.
cd src
Instale o PyInstaller:
pip3 install pyinstaller
PyInstaller não consegue lidar com subpastas com código, portanto, precisamos colocar o código em uma única pasta.
sed -i 's/from helpers./from /g' helpers/*
sed -i 's/from helpers./from /g' stacoan.py
sed -i 's/os.path.join(parentdir, "config.ini")/"config.ini"/g' helpers/logger.py
cp helpers/* ./ || :;
Compile o stacoan:
python3 -m PyInstaller stacoan.py --onefile --icon icon.ico --name stacoan --clean
PyInstaller não consegue lidar com subpastas com código, portanto, precisamos colocar o código em uma única pasta.
# Note the ''-> this is because sed syntax is different on mac.
sed -i '' 's/from helpers./from /g' helpers/*
sed -i '' 's/from helpers./from /g' stacoan.py
sed -i '' 's/os.path.join(parentdir, "config.ini")/"config.ini"/g' helpers/logger.py
cp helpers/* ./ || :;
Compile o stacoan:
python3 -m PyInstaller stacoan.py --onefile --icon icon.ico --name stacoan --clean
PyInstaller não consegue lidar com subpastas com código, portanto, precisamos colocar o código em uma única pasta.
sed -i 's/from helpers./from /g' helpers/*
sed -i 's/from helpers./from /g' stacoan.py
sed -i 's/os.path.join(parentdir, "config.ini")/"config.ini"/g' helpers/logger.py
cp helpers/* ./ || :;
Compile o stacoan:
python3 -m PyInstaller stacoan.py --onefile --icon icon.ico --name stacoan --clean
Todo o valor deste programa depende das listas de palavras que ele está usando. No final, o resultado final é o que importa. É fácil construir uma lista de palavras (em comparação com escrever código real), mas tem o maior impacto no resultado final. Você pode ajudar a comunidade mais com a criação de listas de palavras.
Se você quiser uma maneira fácil de postar suas ideias, vá para: http://www.tricider.com/brainstorming/2pdrT7ONVrB. A partir daí, você pode adicionar ideias para entradas na lista de palavras.
Melhorar o código também é muito apreciado.
Se a contribuição for alta o suficiente, você será mencionado na seção authors.
http em res/layout e em geral http://schemas.android.com/apk/res/androidOs seguintes projetos foram usados neste projeto:
Todos esses projetos possuem suas respectivas licenças. Por favor, respeite-as ao modificar e redistribuir este projeto.
*: o binário está incluído neste projeto. Se os desenvolvedores do JADX não se sentirem confortáveis com isso, sinta-se à vontade para me contatar para encontrarmos uma solução.
Muitos outros deveriam ser listados aqui, mas não posso listar todos.
| Criador do Projeto |
|---|
|
|