
Herramienta para descubrir la superficie de ataque de red externa e interna.
ASF tiene como objetivo proteger a las organizaciones actuando como un vigía de la superficie de ataque. Proporcionando un "Objeto" que puede ser: un Dominio, dirección IP o CIDR (Interno o Externo), ASF descubrirá activos/subdominios, enumerará sus puertos y servicios, rastreará deltas y servirá como un marco de ataque y alerta continuo y flexible, aprovechando una capa adicional de soporte contra vulnerabilidades de día cero con POCs disponibles públicamente.
La falta de soporte y flexibilidad para automatizar el descubrimiento de activos dinámicos y sus vulnerabilidades asociadas mediante escaneo continuo o explotación en un solo panel de control fue la fuerza impulsora para la creación de ASF. Las soluciones actuales están restringidas por la tecnología o el programa para el que fueron construidas; queríamos una solución que fuera escalable y que también utilizara herramientas de seguridad de código abierto populares para manejar un ciclo de vida completo de vulnerabilidades.
ASF es una mezcla de proyectos de código abierto que aprovechan un poderoso arsenal de herramientas envueltas en un solo panel de control sobre una GUI. El diagrama arquitectónico de ASF se ilustra a continuación:

Última versión de Kali Linux (probado en 64 bits) - https://kali.org/get-kali/
Al menos 16 GB de RAM
1 TB de disco duro - se recomienda sistema de archivos XFS
Ejecute los siguientes pasos como usuario root para instalar y ejecutar Attack Surface Framework.
Clonar el repositorio
/opt/.git clone https://github.com/vmware-labs/attack-surface-framework.git /opt/asf
cd /opt/asf/
Configurar el archivo de entorno
Cree un archivo .env.prod en el directorio del proyecto. Esto es crucial para que setup.sh se ejecute correctamente.
Nota: Puede generar un archivo .env.prod o copiarlo desde backup.env.prod, realizando los cambios necesarios para adaptarlo a su entorno.
Estructura de ejemplo de .env.prod:
# Django settings, don't enable debug on production!
DEBUG=True
DJANGO_ADMIN_ENABLED=True
#LOGIN CONFIGURATIONS
LOGIN_FORM=True
SOCIAL_AUTH_GOOGLE_ENABLED=False
SOCIAL_AUTH_GITHUB_ENABLED=False
DJANGO_SAML2_ENABLED=False #Enable Social Authenticatio with 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
Nota: MongoDB es necesario para las funciones de alerta o informes de 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 los siguientes detalles:MONGO_USER=admin
MONGO_PASSWORD=
MONGO_URL=
MONGO_PORT=27017
Ejecute ./setup.sh
Para el entorno local de Kali Linux: Navegue a http://127.0.0.1:2021 en su navegador web para acceder a ASF.
ASF no está diseñado para exponerse públicamente. Suponiendo que lo instale en un proveedor de nube o incluso en una instancia local, recomendamos acceder a él mediante reenvío de puertos a través de SSH. Aquí hay un ejemplo:
ssh -i "key.pem" -L 2021:127.0.0.1:2021 user@yourhost - Para la GUI de ASF
Luego abra su navegador y vaya a:
http://127.0.0.1:2021 - Para ASF - usuario:youruser contraseña:yourpass (proporcionada en la configuración inicial)
Consejo de seguridad: Asegúrese de que cada componente, incluido MongoDB, esté configurado de manera segura, y que se acceda a ASF de forma segura, incluso internamente. Es crucial seguir las mejores prácticas de seguridad al implementar ASF en su estrategia de seguridad.
Adicionalmente, puede configurar el inicio de sesión social habilitando la función correspondiente en .env.prod
#LOGIN CONFIGURATIONS
LOGIN_FORM=True
SOCIAL_AUTH_GOOGLE_ENABLED=True (False)
SOCIAL_AUTH_GITHUB_ENABLED=True (False)
DJANGO_SAML2_ENABLED=True (False)
Navegue al panel de administración http://127.0.0.1:2021/admin para agregar la aplicación social.
Tenga en cuenta que si el inicio de sesión social está habilitado y no está configurado en el panel de administración, ASF no mostrará la página de inicio de sesión; para revertir, simplemente deshabilite el inicio de sesión social en .env.prod
Para habilitar la integración y el tiqueo con Jira, ASF admite establecer los siguientes valores en el archivo .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=
Para usar Wordpress Scan en los módulos de Red Team, inserte el token de API de WPScan en la línea #7 de redteam/wpscan/wpscan.sh
ASF tiene dos ámbitos:
A) Externo: Para sus activos expuestos públicamente.
B) Interno: Activos en su red corporativa.
Para el ámbito externo, el flujo pasa por cuatro pasos básicos:
A.1 Objetivos - Aquí es donde ingresa sus objetivos.

A.2 Descubrimiento - Módulo que ejecuta el proceso de Amass para descubrir activos expuestos públicamente. Siéntase libre de crear su archivo de configuración para configurar sus claves API https://github.com/OWASP/Amass/blob/master/examples/config.ini

A.3 Enumeración - Módulo que ejecuta el proceso de NMAP para enumerar puertos/servicios y crear filtros para el módulo de Red Team. La configuración predeterminada busca --top-ports 200, pero puede adaptarla a sus necesidades en /opt/asf/tools/nmap/*.sh

A.4 Red Team - Módulo que ejecuta submódulos ubicados en "/opt/asf/redteam"

Nota: Para el ámbito interno, el flujo pasa por A.1(Objetivos), A.3(Enumeración) y A.4(Red Team).
El equipo del proyecto attack-surface-framework agradece las contribuciones de la comunidad. Antes de comenzar a trabajar con attack-surface-framework, lea nuestro Certificado de origen del desarrollador. Todas las contribuciones a este repositorio deben estar firmadas como se describe en esa página. Su firma certifica que usted escribió el parche o tiene el derecho de pasarlo como un parche de código abierto. Para obtener información más detallada, consulte CONTRIBUTING.md.
Attack Surface Framework Copyright 2021 VMware, Inc.
La licencia BSD-2 (la "Licencia") que se establece a continuación se aplica a todas las partes del proyecto Attack Surface Framework. No puede usar este archivo excepto en cumplimiento de la Licencia.
Licencia BSD-2
La redistribución y el uso en formas de código fuente y binarias, con o sin modificaciones, están permitidos siempre que se cumplan las siguientes condiciones:
Las redistribuciones del código fuente deben conservar el aviso de copyright anterior, esta lista de condiciones y el siguiente descargo de responsabilidad.
Las redistribuciones en forma binaria deben reproducir el aviso de copyright anterior, esta lista de condiciones y el siguiente descargo de responsabilidad en la documentación y/u otros materiales proporcionados con la distribución.
ESTE SOFTWARE ES PROPORCIONADO POR LOS TITULARES DEL COPYRIGHT Y COLABORADORES "TAL CUAL" Y CUALQUIER GARANTÍA EXPRESA O IMPLÍCITA, INCLUYENDO, PERO NO LIMITADO A, LAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD Y ADECUACIÓN PARA UN PROPÓSITO PARTICULAR SON RECHAZADAS. EN NINGÚN CASO EL TITULAR DEL COPYRIGHT O LOS COLABORADORES SERÁN RESPONSABLES POR CUALQUIER DAÑO DIRECTO, INDIRECTO, INCIDENTAL, ESPECIAL, EJEMPLAR O CONSECUENTE (INCLUYENDO, PERO NO LIMITADO A, LA ADQUISICIÓN DE BIENES O SERVICIOS SUSTITUTOS; PÉRDIDA DE USO, DATOS O BENEFICIOS; O INTERRUPCIÓN DEL NEGOCIO) SIN IMPORTAR LA CAUSA Y SOBRE CUALQUIER TEORÍA DE RESPONSABILIDAD, YA SEA POR CONTRATO, RESPONSABILIDAD ESTRICTA O AGRAVIO (INCLUYENDO NEGLIGENCIA O DE OTRO MODO) QUE SURJA DE CUALQUIER MANERA DEL USO DE ESTE SOFTWARE, INCLUSO SI SE HA ADVERTIDO DE LA POSIBILIDAD DE DICHOS DAÑOS.
Attack Surface Framework Copyright 2021 VMware, Inc.
Este producto se le concede bajo la licencia BSD-2 (la "Licencia"). No puede usar este producto excepto en cumplimiento de la Licencia BSD-2.
Este producto puede incluir varios subcomponentes con avisos de copyright y términos de licencia separados. El uso de estos subcomponentes está sujeto a los términos y condiciones de la licencia del subcomponente, como se indica en el archivo LICENSE.