
Una strumento di scansione per la raccolta di informazioni su dispositivi mobili (Android, iOS, WEB, H5, siti statici) pensato per scenari di operazioni HW, squadre rosse e team di penetration testing. Aiuta ingegneri di penetration testing, membri di squadre d'attacco e squadre rosse a raccogliere rapidamente risorse informative critiche da siti mobili o statici, fornendo output di base come: Titolo, Dominio, CDN, impronte digitali, stato, ecc.
Questo progetto attualmente rappresenta solo una piccola parte del progetto pianificato. Se sei interessato a questo progetto o vuoi partecipare allo sviluppo o alla traduzione delle funzionalità successive, invia un'email a [email protected] specificando le tue competenze e richieste.
Uno strumento di scansione per la raccolta di informazioni su dispositivi mobili (Android, iOS, WEB, H5, siti statici) pensato per scenari come operazioni di Red Team, penetration testing e team di attacco. Aiuta gli ingegneri di penetration test, i membri dei team di attacco e i Red Team a raccogliere rapidamente informazioni chiave sugli asset da applicazioni mobili o siti WEB statici, fornendo output di base come: Titolo, Dominio, CDN, impronte digitali, stato, ecc.
Non utilizzare la tecnologia o il codice di questo progetto per scopi illegali come la creazione di malware, furto di proprietà intellettuale/diritti d'autore del software o profitto illecito. Implementare tali azioni o utilizzare questo progetto per intercettare dati di programmi di cui non si possiede il copyright potrebbe violare gli articoli 217 e 286 del Codice Penale della Repubblica Popolare Cinese, la Legge sulla Sicurezza Informatica della Repubblica Popolare Cinese e il Regolamento sulla Protezione del Software Informatico della Repubblica Popolare Cinese. La tecnologia menzionata in questo progetto può essere utilizzata solo per scopi legittimi come l'apprendimento privato o i test. Qualsiasi uso improprio di questa tecnologia che comporti responsabilità penali o civili non è di responsabilità dell'autore del progetto.

AppInfoScanner
|-- libs Codice principale del programma
|-- core
|-- __init__.py Configurazione globale
|-- parses.py Per analizzare informazioni statiche nei file
|-- download.py Per il download automatico di APP o pagine H5
|-- net.py Per lo sniffing di rete e l'ottenimento di informazioni di base
|-- task
|-- __init__.py File di inizializzazione della directory
|-- base_task.py Centro di pianificazione delle attività unificato
|-- android_task.py Per gestire le attività relative ad Android
|-- download_task.py Per gestire il download automatico di APP o H5
|-- ios_task.py Per gestire le attività relative a iOS
|-- net_task.py Per gestire le attività relative allo sniffing di rete
|-- web_task.py Per gestire le attività relative al Web, come il codice sorgente delle pagine web, informazioni statiche H5
|-- tools Strumenti necessari per il programma
|-- apktool.jar Per decompilare file apk, potrebbe essere necessario cambiarlo per piattaforme diverse
|-- baksmali.jar Per decompilare file dex, potrebbe essere necessario cambiarlo per piattaforme diverse
|-- strings.exe Per ottenere informazioni sulle stringhe IPA su Windows 32
|-- strings64.exe Per ottenere informazioni sulle stringhe IPA su Windows 64
|-- __init__.py File di inizializzazione della directory
|-- app.py Programma principale
|-- config.py File di configurazione dell'intero programma
|-- README.md Istruzioni per l'uso del programma
|-- requirements.txt Dipendenze da installare per il programma
|-- update.md Informazioni sulle versioni storiche del programma
git clone https://github.com/kelvinBen/AppInfoScanner.git
Oppure copia il seguente link nel browser per scaricare l'ultima versione stabile
https://github.com/kelvinBen/AppInfoScanner/releases/latest
Canale di download rapido nazionale:
git clone https://gitee.com/kelvin_ben/AppInfoScanner.git
cd AppInfoScanner
python -m pip install -r requirements.txt
python app.py android -i <Il tuo file APK o DEX o URL di download APK o Directory di file da scansionare>
python app.py ios -i <Il tuo file IPA o Mach-o o URL di download IPA o Directory di file da scansionare>
python app.py web -i <Il tuo file Web o Directory Web o URL di cache Web>
python app.py [TIPO] [OPZIONI] <URL o directory da scansionare>
<> Rappresenta il file, la directory o l'URL da scansionare
| Oppure, scegliere solo uno
[] Rappresenta i parametri da inserire
Questo tipo di parametro corrisponde a [TIPO] nel formato base del comando. Attualmente supporta solo tre tipi: [android/ios/web]. Uno di questi tre tipi deve essere specificato.
android: Per scansionare il contenuto di file relativi ad applicazioni Android
ios: Per scansionare il contenuto di file relativi ad applicazioni iOS
web: Per scansionare il contenuto di file relativi a siti WEB o pagine H5
Supporta la correzione automatica in base all'estensione del file: anche se si specifica ios, se il parametro -i è un file con nome XXX.apk, verrà eseguita la scansione relativa ad Android.
Questo tipo di parametro corrisponde a [OPZIONI] nel formato base del comando. Supporta l'uso di più parametri insieme.
-i o --inputs: Inserire il file, la directory o l'URL del file da scaricare automaticamente da scansionare. Se il percorso è lungo, racchiuderlo tra "". Questo parametro è obbligatorio.
-r o --rules: Inserire una regola temporanea per la scansione del contenuto del file.
-s o --sniffer: Attivare la funzione di sniffing di rete. Default: attivato.
-n o --no-resource: Ignorare tutti i file di risorse, compresi quelli della funzione di sniffing di rete (è necessario prima configurare le regole sniffer_filter in config.py). Default: non ignorare le risorse.
-a o --all: Output di tutti i risultati che soddisfano le regole di scansione. Default: attivato.
-t o --threads: Impostare il numero di thread concorrenti. Default: 10 thread.
-o o --output: Specificare la directory di output per i risultati della scansione e i file temporanei generati durante il processo. Default: la directory dello script.
-p o --package: Specificare il nome del pacchetto JAVA per la scansione di file APK o DEX Android. Questo parametro può essere utilizzato solo con il tipo android.
python app.py android -i <Il tuo file apk>
Esempio:
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk
python app.py android -i <Il tuo file DEX>
Esempio:
python app.py android -i C:\Users\Administrator\Desktop\Demo.dex
python app.py android -i <URL di download APK>
Esempio:
python app.py android -i "https://127.0.0.1/Demo.apk"
Nota: se l'URL è lungo, racchiuderlo tra virgolette doppie (").
python app.py ios -i <Il tuo file ipa>
Esempio:
python app.py ios -i "C:\Users\Administrator\Desktop\Demo.ipa"
python app.py ios -i <Il tuo file Mach-o>
Esempio:
python app.py ios -i "C:\Users\Administrator\Desktop\Demo\Payload\Demo.app\Demo"
python app.py ios -i <URL di download IPA>
Esempio:
python app.py ios -i "https://127.0.0.1/Demo.ipa"
Nota: se l'URL è lungo, racchiuderlo tra virgolette doppie ("). Al momento non è supportata la scansione di file IPA da Apple Store.
python app.py web -i <Il tuo file web>
Esempio:
python app.py web -i "C:\Users\Administrator\Desktop\Demo.html"
python app.py web -i <URL di download Web>
Esempio:
python app.py web -i "https://127.0.0.1/Demo.html"
Le seguenti operazioni prendono come esempio il tipo android:
python app.py android -i <Tua Directory>
Esempio:
python app.py android -i C:\Users\Administrator\Desktop\Demo
python app.py android -i <Tuo apk> -r <parola chiave | regola>
Esempio:
Aggiunta della scansione dei domini Baidu
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -r ".*baidu.com.*"
python app.py android -i <Tuo apk> -s
Esempio:
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -s
python app.py android -i <Tuo apk> -n
Esempio:
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -n
python app.py android -i <Tuo apk> -a
Esempio:
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -a
python app.py android -i <Tuo apk> -t 20
Esempio:
Imposta 20 thread concorrenti
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -t 20
python app.py android -i <Tuo apk> -o <percorso di output>
Esempio:
Per esempio, output nella directory Temp del desktop
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -o C:\Users\Administrator\Desktop\Temp
python app.py android -i <Tuo apk> -p <nome pacchetto Java>
Esempio:
Per filtrare il contenuto del pacchetto com.baidu
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -p "com.baidu"
Il programma di questo progetto funge solo da struttura base, con alcune regole integrate. Non tutti gli input possono completare la scansione desiderata. Pertanto, è possibile configurare le regole in base alle proprie esigenze; configurazioni ottimali possono portare a risultati notevoli.
filter_components: Questa opzione viene utilizzata per configurare i componenti correlati, come componenti JSON o XML, ecc.
filter_strs: Utilizzata per configurare il contenuto dei file da scansionare, ad esempio se si desidera scansionare i numeri di porta, configurare: "r'.*://([\d{1,3}\.]{3}\d{1,3}).*'"
filter_no: Utilizzata per ignorare il contenuto indesiderato nei file scansionati.
shell_list: Utilizzata per configurare le caratteristiche dei packer Android.
web_file_suffix: Qui si configurano le estensioni dei file WEB da scansionare.
sniffer_filter: Qui si configurano le estensioni dei file da ignorare durante lo sniffing di rete.
headers: Utilizzata per configurare le intestazioni della richiesta necessarie durante il download automatico.
data: Utilizzata per configurare il corpo della richiesta necessario durante il download automatico.
method: Utilizzata per configurare il metodo di richiesta necessario durante il download automatico.
Metodo 1: Regolare le regole in config.py in base alla situazione reale
Metodo 2: Ignorare i file di risorse
Indica che l'applicazione da scansionare ha un packer. È necessario rimuovere il packer prima di poter eseguire la scansione. Attualmente è possibile utilizzare i seguenti strumenti per rimuovere il packer:
Android:
Modulo xposed: dexdump
Modulo frida: FRIDA-DEXDump
Senza root: blackdex
iOS:
Modulo firda:
Sistema Windows: frida-ipa-dump
Sistema MacOS: frida-ios-dump
Download del file fallito.
1) Verificare che l'URL inserito sia corretto
2) Verificare se ci sono problemi di rete o configurare le intestazioni della richiesta (headers), il corpo della richiesta (data) e il metodo di richiesta (method) nel file di configurazione config.py, salvare e riprovare.
Decompilazione del file fallita.
Caricare lo screenshot dell'errore e il file APK corrispondente su https://github.com/kelvinBen/AppInfoScanner/issues. L'autore lo gestirà tempestivamente dopo averlo visto.
Percorso per sottomettere regole personalizzate:
[Clicca per aggiungere regole personalizzate](https://github.com/kelvinBen/AppInfoScanner/issues/7)
Formato di sottomissione:
1. Aggiunta di componenti personalizzati per APP
Esempio: regola per fastjson come segue:
Componente APP: fastjson com.alibaba.fastjson
2. Stringhe da cercare
Esempio: regola per cercare AK di Alibaba come segue:
Stringa:
AK Alibaba .*accessKeyId.*".*"
3. Estensioni di file web da cercare
Esempio: regola per file jsp come segue:
Sito web: linguaggio Java jsp
4. Regole per packer Android
Esempio: regola per packer di una certa azienda numerica come segue:
Packer: azienda numerica com.stub.StubApp
WeChat:bromomo (aggiungi amico con nota: GitHub)
Gruppo WeChat:

Se non riesci a entrare, aggiungi l'amico su WeChat e poi entra nel gruppo.
Email:[email protected]
Invia richieste, segnalazioni di bug, scambi tecnici, collaborazioni commerciali aggiungendo l'autore come amico.

AppInfoScanner fa parte di 404Team StarLink 2.0. Se hai domande su AppInfoScanner o vuoi scambiare idee con altri, consulta il metodo di iscrizione al gruppo di StarLink.