
Strumento per scoprire la superficie di attacco della rete esterna e interna
ASF mira a proteggere le organizzazioni agendo come un watchdog della superficie d'attacco, fornito un "Oggetto" che può essere: un Dominio, un indirizzo IP o un CIDR (Interno o Esterno), ASF scoprirà asset/sottodomini, enumera le loro porte e servizi, tiene traccia dei delta e funge da framework continuo e flessibile per attacchi e notifiche, sfruttando un ulteriore livello di supporto contro vulnerabilità zero-day con POC pubblicamente disponibili.
La mancanza di supporto e flessibilità per automatizzare la scoperta di asset dinamici e le relative vulnerabilità tramite scansione o sfruttamento continuo in un unico pannello di controllo è stata la forza trainante nella creazione di ASF; le soluzioni attuali sono limitate dalla tecnologia o dal programma per cui sono costruite. Volevamo una soluzione scalabile che utilizzasse anche popolari strumenti di sicurezza open source per gestire l'intero ciclo di vita delle vulnerabilità.
ASF è un tipo di progetto open source che sfrutta un potente arsenale di strumenti racchiuso in un unico pannello di controllo sopra una GUI. Il diagramma architetturale di ASF è illustrato qui sotto:

Ultima versione di Kali Linux (testata su 64 bit) - https://kali.org/get-kali/
Almeno 16 GB di RAM
1 TB di HD - si consiglia filesystem XFS
Esegui i seguenti passaggi come utente root per installare ed eseguire Attack Surface Framework.
Clona il Repository
/opt/.git clone https://github.com/vmware-labs/attack-surface-framework.git /opt/asf
cd /opt/asf/
Configura il file delle variabili d'ambiente
Crea un file .env.prod nella directory del progetto. Questo è fondamentale per il corretto funzionamento di setup.sh.
Nota: Puoi generare un file .env.prod o copiarlo da backup.env.prod, apportando le modifiche necessarie per adattarlo al tuo ambiente.
Esempio di struttura di .env.prod:
# Impostazioni Django, non abilitare il debug in produzione!
DEBUG=True
DJANGO_ADMIN_ENABLED=True
#CONFIGURAZIONI DI ACCESSO
LOGIN_FORM=True
SOCIAL_AUTH_GOOGLE_ENABLED=False
SOCIAL_AUTH_GITHUB_ENABLED=False
DJANGO_SAML2_ENABLED=False #Abilita l'autenticazione sociale con Google.
SAML2_SSO_URL=https://saml2.local
SAML2_ASF_URL=https://atttacksurfaceframework.local
ALLOWED_HOSTS=*,localhost, config('SERVER', default='127.0.0.1')
MONGO_USER=admin
MONGO_PASSWORD=
MONGO_URL=
MONGO_PORT=27017
JIRA_ENABLED=False
JIRA_TOKEN=
JIRA_URL=
JIRA_USER=
JIRA_SEVERITY={"info":"Lowest","low":"Low","medium":"Medium","high":"High","critical":"Highest"}
JIRA_PROJECT=""
WPScan_Default_Severity=medium
Per ambiente Kali Linux locale: Naviga su http://127.0.0.1:2021 nel tuo browser web per accedere a ASF
ASF non è destinato ad essere esposto pubblicamente; supponendo che lo installi su un provider cloud o anche su un'istanza locale, consigliamo di accedervi utilizzando il port forwarding tramite SSH, ecco un esempio:
ssh -i "key.pem" -L 2021:127.0.0.1:2021 user@yourhost - Per la GUI di ASF
Poi apri il browser e vai a:
http://127.0.0.1:2021 - Per ASF - utente:youruser password:yourpass (fornite durante la configurazione iniziale)
Suggerimento di sicurezza: Assicurati che ogni componente, incluso MongoDB, sia configurato in modo sicuro e che ASF sia accessibile in modo sicuro, anche internamente. Aderire alle migliori pratiche di sicurezza è fondamentale quando si implementa ASF nella propria strategia di sicurezza.
Inoltre puoi configurare l'accesso sociale abilitando la relativa funzionalità in .env.prod
#CONFIGURAZIONI DI ACCESSO
LOGIN_FORM=True
SOCIAL_AUTH_GOOGLE_ENABLED=True (False)
SOCIAL_AUTH_GITHUB_ENABLED=True (False)
DJANGO_SAML2_ENABLED=True (False)
Naviga al pannello di amministrazione http://127.0.0.1:2021/admin per aggiungere l'app sociale.
Nota che se l'accesso sociale è abilitato e non configurato nel pannello di amministrazione, ASF non mostrerà la pagina di accesso - per tornare indietro, disabilita semplicemente l'Accesso Social in .env.prod
Per abilitare l'integrazione e la creazione di ticket Jira, ASF supporta l'impostazione dei seguenti valori nel file .env.prod:
JIRA_ENABLED=True
JIRA_TOKEN=
JIRA_URL=
JIRA_USER=
JIRA_SEVERITY={"info":"Lowest","low":"Low","medium":"Medium","high":"High","critical":"Highest"}
JIRA_PROJECT=
Per utilizzare la scansione Wordpress nei moduli Red Team, inserisci il token API di WPScan nella riga #7 di redteam/wpscan/wpscan.sh
ASF ha due ambiti:
A) Esterno: Per i tuoi asset esposti pubblicamente.
B) Interno: Asset nella tua rete aziendale.
Per l'ambito esterno, il flusso attraversa quattro passaggi fondamentali:
A.1 Target - Qui è dove inserisci i tuoi target

A.2 Scoperta - Modulo che esegue il processo Amass per scoprire asset esposti pubblicamente; sentiti libero di creare il tuo file di configurazione per impostare le tue chiavi API https://github.com/OWASP/Amass/blob/master/examples/config.ini

A.3 Enumerazione - Modulo che esegue il processo NMAP per enumerare porte/servizi e creare filtri per il modulo Redteam. L'impostazione predefinita cerca --top-ports 200 ma puoi adattarla alle tue esigenze in /opt/asf/tools/nmap/*.sh

A.4 Redteam - Modulo che esegue sottomoduli situati in "/opt/asf/redteam"

Nota: Per l'ambito interno, il flusso passa attraverso A.1(Target), A.3(Enumerazione) e A.4(Redteam).
Il team del progetto attack-surface-framework accoglie con favore i contributi dalla comunità. Prima di iniziare a lavorare con attack-surface-framework, ti preghiamo di leggere il nostro Developer Certificate of Origin. Tutti i contributi a questo repository devono essere firmati come descritto in quella pagina. La tua firma certifica che hai scritto la patch o hai il diritto di passarla come patch open source. Per informazioni più dettagliate, consulta CONTRIBUTING.md.
Attack Surface Framework Copyright 2021 VMware, Inc.
La licenza BSD-2 (la "Licenza") di seguito si applica a tutte le parti del progetto Attack Surface Framework. Non puoi utilizzare questo file se non in conformità con la Licenza.
Licenza BSD-2
La redistribuzione e l'uso in forma sorgente e binaria, con o senza modifiche, sono consentiti a condizione che siano soddisfatte le seguenti condizioni:
Le redistribuzioni del codice sorgente devono mantenere l'avviso di copyright sopra riportato, questo elenco di condizioni e il seguente disclaimer.
Le redistribuzioni in forma binaria devono riprodurre l'avviso di copyright sopra riportato, questo elenco di condizioni e il seguente disclaimer nella documentazione e/o in altri materiali forniti con la distribuzione.
QUESTO SOFTWARE È FORNITO DAI TITOLARI DEL COPYRIGHT E DAI CONTRIBUTORI "COSÌ COM'È" E QUALSIASI GARANZIA ESPRESSA O IMPLICITA, INCLUSIVE, MA NON LIMITATE A, LE GARANZIE IMPLICITE DI COMMERCIABILITÀ E IDONEITÀ PER UNO SCOPO PARTICOLARE SONO DECLINATE. IN NESSUN CASO IL TITOLARE DEL COPYRIGHT O I CONTRIBUTORI SARANNO RESPONSABILI PER QUALSIASI DANNO DIRETTO, INDIRETTO, INCIDENTALE, SPECIALE, ESEMPLARE O CONSEQUENZIALE (INCLUSI, MA NON LIMITATI A, ACQUISTO DI BENI O SERVIZI SOSTITUTIVI; PERDITA DI UTILIZZO, DATI O PROFITTI; O INTERRUZIONE DELL'ATTIVITÀ) COMUNQUE CAUSATO E SU QUALSIASI TEORIA DI RESPONSABILITÀ, SIA IN CONTRATTO, RESPONSABILITÀ OGGETTIVA O ILLECITO (INCLUSA NEGLIGENZA O ALTRO) DERIVANTE IN QUALSIASI MODO DALL'USO DI QUESTO SOFTWARE, ANCHE SE AVVISATI DELLA POSSIBILITÀ DI TALI DANNI.
Attack Surface Framework Copyright 2021 VMware, Inc.
Questo prodotto ti è concesso in licenza secondo la licenza BSD-2 (la "Licenza"). Non puoi utilizzare questo prodotto se non in conformità con la Licenza BSD-2.
Questo prodotto può includere una serie di sottocomponenti con avvisi di copyright e termini di licenza separati. L'uso di questi sottocomponenti è soggetto ai termini e alle condizioni della licenza del sottocomponente, come indicato nel file LICENSE.
https://www.djangoproject.com/
https://github.com/creativetimofficial/material-dashboard-django
https://github.com/OWASP/Amass
https://github.com/lanjelot/patator
https://github.com/FortyNorthSecurity/EyeWitness
https://github.com/projectdiscovery/nuclei
https://www.graylog.org/products/open-source
https://github.com/wpscanteam/wpscan
https://github.com/vanhauser-thc/thc-hydra
https://nxlog.co/products/nxlog-community-edition
Nota: MongoDB è necessario per le funzioni di notifica o reporting di ASF.
docker run -dp 27017:27017 -v local-mongo:/data/db --name local-mongo --restart=always -e MONGO_INITDB_ROOT_USERNAME=<<>> -e MONGO_INITDB_ROOT_PASSWORD=<<>> mongo
.env.prod con i seguenti dettagli:MONGO_USER=admin
MONGO_PASSWORD=
MONGO_URL=
MONGO_PORT=27017
Esegui ./setup.sh