inter-recon
Script per eseguire una ricognizione automatica iniziale web e delle vulnerabilità.
Dispone di alcuni controlli in caso di errori.
È possibile saltare alcuni controlli, riavviarli e/o continuare dall'ultimo punto in cui ci si è fermati. (Questo perché a volte si verificano problemi di rete come il limite di tempo sulla VPN).
Ricorda: se copi o colleghi lo script inter-recon al percorso bin (es: /usr/bin/), puoi eseguire lo script da dove vuoi. Creerà l'output nella directory in cui ti trovi.
IMPORTANTE: VEDERE IL PROBLEMA DI WFUZZ E LA SOLUZIONE ALTERNATIVA ALLA FINE DEL README (sezione Informazioni aggiuntive)
Per utilizzare più domini/IP noti, ad esempio:
- Crea un file domains.txt con tutti i domini o IP diversi
- Esegui: inter-recon -T $(pwd)/domains.txt -d $(pwd)/known-domains -w /home/kali/Desktop/tools/inter-recon/dictionaries/without-slash/dict-small-without-slash.txt -s all -a true
Per utilizzare su rete/IP, ad esempio:
- Esegui: inter-recon -t 10.11.1.1/24 -w /home/kali/Desktop/tools/inter-recon/dictionaries/without-slash/dict-small-without-slash.txt -s all -a true
Come usare:
inter-recon.sh [OPZIONI]
-t {RETE O IP}
-T {PERCORSO TARGET}
-d {PERCORSO DIZIONARIO}
-w {PERCORSO DIZIONARIO}
-s {tipo di scansione}
-a opzionale per una scansione superautomatica che salta tutto e non chiede nulla durante il processo wfuzz alla prima esecuzione
Tipi di scansione
- tutto
- scansione porte
- nmap TCP -> porte complete controllando se l'host è attivo con una delle seguenti porte aperte (1025,1028,1029,10443,111,135,139,1521,161,1917,21,22,23,25,2869,3306,3389,443,445,49000,497,5000,515,53,548,5985,5986,6000,79,80,8080,8081,8090,9001,9002,9100,993,995)
- nmap UDP -> top 100 porte con il processo standard di host attivo
- scansione vulnerabilità
- analizza le scansioni nmap UDP e TCP in file
- analizza le scansioni nmap UDP e TCP nella cartella services per servizio
- nmap UDP e TCP per porte aperte eseguendo script relativi a porta/versione
- esecuzione smbmap guest -> per verificare se senza utente possiamo scrivere/leggere qualcosa
- esecuzione enum4linux guest -> per verificare le informazioni recuperate da samba
- esecuzione smbversion -> per recuperare la versione di samba (A volte nei server Linux è l'unico modo per vedere la versione di samba)
- scansione web
- discovery HTTP con httpx dall'esecuzione di nmap
- fuzzing degli URL scoperti con wfuzz
- screenshot degli URL con stato 200 dal fuzzing con aquatone
- tecniche di bypass 403 con byp4xx
- passaggi successivi -> breve spiegazione delle cose da fare dopo l'esecuzione dello script
- cartella documentazione e struttura template -> crea una cartella per aggiungere evidenze e aggiungi file .md con informazioni relative alle scansioni
- vulnerabilità
- scansione porte (Uguale a sopra)
- scansione vulnerabilità (Uguale a sopra)
- passaggi successivi (Uguale a sopra)
- cartella documentazione e struttura template
- web
- scansione porte (Uguale a sopra)
- scansione web (Uguale a sopra)
- passaggi successivi (Uguale a sopra)
- cartella documentazione e struttura template
Struttura:
- Prima scansione porte TCP e UDP con versione (nmap, richiede sudo)
- Scansione ricognizione vulnerabilità (comandi per analizzare le porte in un file con formato IP,porta,servizio,versione, analizzare nei file dei servizi, eseguire nmap con script completi relativi a porta/versione)
- Scansione ricognizione web fuzzing se httpx trova una porta HTTP (httpx, wfuzz, aquatone, byp4xx file 403 <- se esistono stato 403)
Applicazioni utilizzate:
- nmap (versione normale e con script nmap-vulners, entrambi richiedono sudo, usa TCP (porte complete se l'host è UP usando -PS con alcune porte) e UDP (solo top 100 porte))
- httxp (Per ottenere le porte HTTP dall'esecuzione di nmap)
- aquatone (Per fare screenshot delle risposte con stato 200 trovate nel discovery HTTP)
- wfuzz (Per fare fuzzing sulle porte HTTP)
- byp4xx (Per provare a bypassare gli URL 403 con metodi diversi)
- smbmap (Per ottenere i privilegi guest relativi alle cartelle condivise di rete)
- enum4linux (Per ottenere informazioni smb con privilegi guest)
- smbversion (Per ottenere la versione reale di smb)
- dnsrecon (Per provare a fare un zone transfer ai server DNS)
- crackmapexec (Per ottenere i nomi relativi al server)
- host (Ottiene l'hostname del server DNS)
- dig (Ottiene l'hostname del server DNS usando il server come ns "@")
Struttura della cartella di output: (esempio)
- 192.168.122.1-24/ -> cartella iniziale
- nmap/ -> cartella con nmap TCP e UDP in output xml e grepable con versione
- nmap-tcp-target.xml -> output nmap da importare in alcuni strumenti
- nmap-udp-target.xml -> output nmap da importare in alcuni strumenti
- nmap-tcp-target.xml -> nmap grepable per analizzare e rendere le informazioni più leggibili
- nmap-udp-target.xml -> nmap grepable per analizzare e rendere le informazioni più leggibili
- aux/ -> cartella per controllare l'esecuzione precedente e gli URL wfuzz saltati
- nmap/ -> qui abbiamo tutti i nmap per httpx, rimuoveremo i file nmap elaborati nel processo httpx, nel caso ci sia un errore, continua con quel file nmap.
- full-initial-files.txt -> qui rimuoveremo gli URL per cui l'esecuzione è stata corretta
- wfuzz-skipped-urls.txt -> qui aggiungeremo gli URL che abbiamo saltato perché c'era un errore ((Richiesta totale + 1) - Richiesta elaborata != 0)
- debug/ -> cartella per il debug delle esecuzioni
- nmap-tcp-output.txt -> output esecuzione nmap (solo versione)
- nmap-tcp-cve-output.txt -> nmap con opzione -A per eseguire tutti gli script correlati
- nmap-udp-output.txt -> output esecuzione nmap (solo versione)
- nmap-udp-output.txt -> output esecuzione nmap con opzione -A
- wfuzz-output.txt -> output esecuzione wfuzz
- screenshot-output.txt -> output esecuzione aquatone
- fuzzing/ -> cartella con le esecuzioni wfuzz (Importante rivedere gli stati 50* e 40*)
- *.txt -> file output wfuzz
- services/ -> cartella con tutti i servizi analizzati da nmap
- {NOME-SERVIZIO}-services.txt -> esecuzione servizi con output IP,PORTA,Informazioni-servizio-extra
- cve/ -> cartella con le vulnerabilità per host trovate dallo script nmap-vulners
- {IP}.txt -> output dello script nmap-vulners
- http-discover/ -> cartella per salvare e controllare l'esecuzione di httpx
- httpx_aux.txt -> file con tutti i domini+porte per eseguire httpx
- screenshots/ -> cartella con screenshot degli URL con stato 200 trovati da wfuzz
- screens -> cartella con tutti gli screenshot
- report.html -> report con informazioni strutturate
- {ALTRO} -> altri elementi per report.html
- full-initial-files.txt -> file con gli URL iniziali trovati da httpx per fare fuzzing con wfuzz
- urls-status-{200,401,403,etc}.txt -> URL con stato finale trovati da wfuzz; cambia a seconda della variabile $status che è lo stato degli URL trovati
Da fare:
- Aggiungere i file degli stati degli URL da wfuzz direttamente nella documentazione (200, 401, 403, 503 per non dimenticare di controllare nulla)
- Includere nella scansione di vulnerabilità la "scansione OPENVAS"
- Includere nella scansione web gli URL e domini catturati dagli URL HTTP trovati da wfuzz
- Includere un nuovo tipo di scansione OSINT, che possa eseguire alcune informazioni dal web o da esecuzioni di script diversi.
URL degli strumenti per l'installazione:
- La scansione nmap UDP è solo per le prime 100 porte, se hai tempo, esegui un nmap aggiuntivo con tutte le porte UDP in background.
- La scansione nmap TCP controlla alcune porte per sapere se l'host è UP e lo scansiona se è UP, se hai tempo, esegui un nmap aggiuntivo con tutte le porte TCP con -Pn in background.
- Ho notato alcune volte che wfuzz blocca lo script, ho visto che wfuzz ha un problema con un deadlock quando si verifica un errore sugli URL. Una soluzione alternativa nel frattempo che risolvono il problema è commentare th.join() e aggiungere un pass nel file /usr/local/lib/python3.9/dist-packages/wfuzz/myhttp.py nella funzione "Cleanup"