
Un fantastico scanner di vulnerabilità.
Flan Scan è uno scanner di vulnerabilità di rete leggero. Con Flan Scan puoi facilmente trovare porte aperte sulla tua rete, identificare servizi e loro versioni, e ottenere un elenco di CVE pertinenti che interessano la tua rete.
Flan Scan è un wrapper di Nmap e dello script vulners che trasforma Nmap in un scanner di vulnerabilità di rete completo. Flan Scan semplifica la distribuzione locale di Nmap all'interno di un container, l'invio dei risultati nel cloud e la distribuzione dello scanner su Kubernetes.
Clona questo repository
Assicurati di avere docker configurato:
$ docker --version
Aggiungi l'elenco degli indirizzi IP o CIDR che desideri scansionare in shared/ips.txt.
Costruisci il container:
$ make build
$ make start
Per impostazione predefinita, flan crea report Latex, per ottenere altri formati esegui:
$ make html
I formati aggiuntivi supportati sono md (markdown), html e json.
Al termine della scansione troverai i report che riassumono la scansione in shared/reports. Puoi anche vedere l'output XML grezzo di Nmap in shared/xml_files.
Per impostazione predefinita, Flan Scan esegue il seguente comando Nmap:
$ nmap -sV -oX /shared/xml_files -oN - -v1 $@ --script=vulners/vulners.nse <ip-address>
Il flag -oX aggiunge una versione XML dei risultati della scansione alla directory /shared/xml_files e il flag -oN - restituisce i risultati "normali" di Nmap nella console. Il flag -v1 aumenta la verbosità a 1 e il flag -sV esegue una scansione di rilevamento dei servizi (oltre alla scansione predefinita delle porte e SYN di Nmap). Lo script --script=vulners/vulners.nse è lo script che associa i servizi rilevati ai CVE pertinenti.
Nmap permette anche di eseguire scansioni UDP e di scansionare indirizzi IPv6. Per aggiungere questi e altri flag al comando Nmap di Flan Scan dopo aver eseguito make build, esegui il container e passa i tuoi flag Nmap in questo modo:
$ docker run -v $(CURDIR)/shared:/shared flan_scan <Nmap-flags>
Flan Scan supporta attualmente l'invio di report Latex e file di output XML grezzi di Nmap a un GCS Bucket o a un AWS S3 Bucket. Flan Scan richiede 2 variabili d'ambiente per inviare i risultati nel cloud. La prima è upload che assume uno dei due valori gcp o aws. La seconda è bucket e il valore è il nome del S3 o GCS Bucket su cui caricare i risultati. Per impostare le variabili d'ambiente, dopo aver eseguito make build, esegui il container impostando le variabili d'ambiente in questo modo:
$ docker run --name <container-name> \
-v $(CURDIR)/shared:/shared \
-e upload=<gcp or aws> \
-e bucket=<bucket-name> \
-e format=<optional, one of: md, html or json> \
flan_scan
Di seguito sono riportati alcuni esempi per aggiungere le necessarie chiavi di autenticazione AWS o GCP come variabili d'ambiente nel container. Tuttavia, questo può essere fatto anche con un secret in Kubernetes che espone le variabili d'ambiente necessarie o con altri strumenti di gestione dei segreti.
Copia la tua chiave privata GCS per un account di servizio nel file /shared
$ cp <path-to-local-gcs-key>/key.json shared/
Esegui il container impostando la variabile d'ambiente GOOGLE_APPLICATION_CREDENTIALS come percorso della chiave GCS
$ docker run --name <container-name> \
-v $(CURDIR)/shared:/shared \
-e upload=gcp \
-e bucket=<bucket-name> \
-e GOOGLE_APPLICATION_CREDENTIALS=/shared/key.json
-e format=<optional, one of: md, html or json> \
flan_scan
Imposta le variabili d'ambiente AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY sui valori corrispondenti per il tuo account di servizio S3.
docker run --name <container-name> \
-v $(CURDIR)/shared:/shared \
-e upload=aws \
-e bucket=<s3-bucket-name> \
-e AWS_ACCESS_KEY_ID=<your-aws-access-key-id> \
-e AWS_SECRET_ACCESS_KEY=<your-aws-secret-access-key> \
-e format=<optional, one of: md, html or json> \
flan_scan
Quando si distribuisce Flan Scan in un sistema di orchestrazione di container, come Kubernetes, bisogna assicurarsi che il container abbia accesso a un file chiamato ips.txt nella directory /. In Kubernetes, questo può essere fatto con un ConfigMap che monterà un file dal tuo filesystem locale come volume accessibile dal container una volta distribuito. Il file kustomization.yaml contiene un esempio di come creare un ConfigMap chiamato shared-files. Questo ConfigMap viene poi montato come volume nel file deployment.yaml.
Ecco alcuni semplici passaggi per distribuire Flan Scan su Kubernetes:
ips.txt in kustomization.yaml e poi esegui kubectl apply -k ..kubectl get configmap per assicurarti che il ConfigMap sia stato creato correttamente.deployment.yaml.kubectl apply -f deployment.yaml per avviare un deployment che esegua Flan Scan.Flan Scan dovrebbe essere in esecuzione su Kubernetes con successo!