
StaCoAn è uno strumento cross-platform che aiuta sviluppatori, cacciatori di bug bounty e hacker etici nell'effettuare analisi statica del codice su applicazioni mobili.

StaCoAn è uno strumento cross‑platform che aiuta sviluppatori, bug‑bounty hunters e hacker etici nell'esecuzione di analisi statica del codice su applicazioni mobili*.
Questo strumento cerca righe interessanti nel codice che possono contenere:
Lo strumento è stato creato con un forte focus sull'usabilità e sulla guida grafica nell'interfaccia utente.
Per gli impazienti, scarica il pacchetto dalla pagina delle release.
*: notare che al momento sono supportati solo file apk, ma i file ipa seguiranno molto presto.
Un report di esempio può essere trovato qui.
L'idea è che trascini il file della tua applicazione mobile (un file .apk o .ipa) sull'applicazione StaCoAn e questa genererà per te un report visivo e portabile. Puoi modificare le impostazioni e le wordlist per ottenere un'esperienza personalizzata.
I report contengono un comodo visualizzatore ad albero, in modo da poter navigare facilmente nell'applicazione decompilata.

La Loot Function ti permette di 'saccheggiare' (~segnalibro) i risultati che hanno valore per te; nella pagina del loot ottieni una panoramica della tua incursione.
Il report finale può essere esportato in un file zip e condiviso con altre persone.
L'applicazione utilizza wordlist per trovare righe interessanti nel codice. Le wordlist hanno il seguente formato:
API_KEY|||80||| This contains an API key reference
(https|http):\/\/.*api.*|||60||| This regex matches any URL containing 'api'
Nota che queste wordlist supportano voci con regex.
Nel file exclusion_list.txt puoi definire esclusioni (se per qualche motivo hai troppi risultati):
(https|http):\/\/.*api.*|||"res","layout"||| Come sopra, nota che "res","layout" corrisponde al percorso
(https|http):\/\/.*api.*|||||| Per escludere ovunque
Verrà elaborato qualsiasi file sorgente. Questo include file '.java', '.js', '.html', '.xml',....
Anche i file di database vengono cercati per parole chiave. Il database dispone inoltre di un visualizzatore di tabelle.

I report sono realizzati per adattarsi a tutti gli schermi.


Questo strumento avrà difficoltà con codice offuscato. Se sei uno sviluppatore, prova a compilare senza offuscamento abilitato prima di eseguire questo strumento. Se sei sul lato offensivo, buona fortuna.
Se vuoi iniziare il prima possibile, vai alla pagina delle release e scarica l'eseguibile o l'archivio corrispondente al tuo sistema operativo.
Se hai scaricato il file zip della release, estrailo.
Su Windows puoi semplicemente fare doppio clic sull'eseguibile. Si aprirà in modalità server e potrai trascinare e rilasciare le tue applicazioni mobili nell'interfaccia web.

Su Mac e Linux puoi semplicemente eseguirlo dal terminale senza argomenti per la modalità server.
./stacoan
Trascina e rilascia questo file sull'eseguibile.
Oppure puoi specificare un file apk per eseguirlo senza la modalità server:
./stacoan -p test-apk.apk
Il report verrà inserito in una cartella con un nome corrispondente all'apk.
cd docker
docker build . -t stacoan
Assicurati che la tua applicazione si trovi in /yourappsfolder.
docker run -e JAVA_OPTS="-Xms2048m -Xmx2048m" -p 8888:8888 -p 7777:7777 -i -t stacoan
Trascina e rilascia la tua applicazione via: http://127.0.0.1:7777.
git clone https://github.com/vincentcox/StaCoAn/
cd StaCoAn/src
Assicurati di aver installato pip3:
sudo apt-get install python3-pip
Installa i pacchetti Python richiesti:
pip3 install -r requirements.txt
Esegui StaCoAn dalla riga di comando:
python3 stacoan.py -p yourApp.apk
Oppure se preferisci usare l'interfaccia drag and drop:
python3 stacoan.py
Assicurati di essere nella cartella src.
cd src
Installa PyInstaller:
pip3 install pyinstaller
PyInstaller non gestisce sottocartelle con codice, quindi dobbiamo mettere il codice in un'unica cartella.
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/* ./ || :;
Compila stacoan:
python3 -m PyInstaller stacoan.py --onefile --icon icon.ico --name stacoan --clean
PyInstaller non gestisce sottocartelle con codice, quindi dobbiamo mettere il codice in un'unica cartella.
# Nota i '' -> questo perché la sintassi di sed è diversa su 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/* ./ || :;
Compila stacoan:
python3 -m PyInstaller stacoan.py --onefile --icon icon.ico --name stacoan --clean
PyInstaller non gestisce sottocartelle con codice, quindi dobbiamo mettere il codice in un'unica cartella.
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/* ./ || :;
Compila stacoan:
python3 -m PyInstaller stacoan.py --onefile --icon icon.ico --name stacoan --clean
L'intero valore di questo programma dipende dalle wordlist che utilizza. In definitiva, il risultato finale è ciò che conta. Creare una wordlist è facile (rispetto a scrivere codice vero), ma ha il maggiore impatto sul risultato finale. Puoi aiutare la comunità al massimo creando wordlist.
Se vuoi un modo semplice per condividere le tue idee, vai su: http://www.tricider.com/brainstorming/2pdrT7ONVrB. Da lì puoi aggiungere idee per voci nella wordlist.
Anche migliorare il codice è molto apprezzato.
Se il contributo è abbastanza significativo, verrai menzionato nella sezione authors.
http in res/layout e in generale http://schemas.android.com/apk/res/androidIn questo progetto sono stati utilizzati i seguenti progetti:
Tutti questi progetti hanno le rispettive licenze. Si prega di rispettarle durante la modifica e la ridistribuzione di questo progetto.
*: il binario è incluso in questo progetto. Se gli sviluppatori di JADX non sono a proprio agio con questo, contattatemi per trovare una soluzione.
Molti altri dovrebbero essere elencati qui, ma non posso elencarli tutti.
| Creatore del progetto |
|---|
|
|