
Ferramenta para descobrir a superfície de ataque de rede externa e interna
ASF visa proteger organizações atuando como um cão de guarda da superfície de ataque, fornecendo um “Objeto” que pode ser: um Domínio, endereço IP ou CIDR (Interno ou Externo). O ASF descobrirá ativos/subdomínios, enumerará suas portas e serviços, rastreará deltas e servirá como uma estrutura contínua e flexível de ataque e alerta, aproveitando uma camada adicional de suporte contra vulnerabilidades de dia zero com PoCs publicamente disponíveis.
A falta de suporte e flexibilidade para automatizar a descoberta de ativos dinâmicos e suas vulnerabilidades associadas por meio de varredura contínua ou exploração em um único painel foi a força motriz para a criação do ASF. As soluções atuais são restritas pela tecnologia ou pelo programa para o qual foram construídas. Queríamos uma solução que fosse escalável e também utilizasse ferramentas populares de segurança de código aberto para lidar com todo o ciclo de vida de vulnerabilidades.
ASF é uma linhagem de projetos de código aberto que aproveita um poderoso arsenal de ferramentas envolto em um único painel sobre uma GUI. O diagrama arquitetural do ASF está ilustrado abaixo:

Última versão do Kali Linux (testado em 64 bits) - https://kali.org/get-kali/
Pelo menos 16 GB de RAM
1 TB de HD - sistema de arquivos XFS recomendado
Execute os seguintes passos como usuário root para instalar e executar o Attack Surface Framework.
Clone o Repositório
/opt/.git clone https://github.com/vmware-labs/attack-surface-framework.git /opt/asf
cd /opt/asf/
Configure o Arquivo de Ambiente
Crie um arquivo .env.prod no diretório do projeto. Isso é crucial para que o setup.sh seja executado corretamente.
Nota: Você pode gerar um arquivo .env.prod ou copiar de backup.env.prod, fazendo as alterações necessárias para se adaptar ao seu ambiente.
Exemplo de estrutura do .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
Para Ambiente Kali Linux Local: Navegue até http://127.0.0.1:2021 no seu navegador web para acessar o ASF
O ASF não deve ser exposto publicamente. Supondo que você o instale em um provedor de nuvem ou mesmo em uma instância local, recomendamos acessá-lo usando encaminhamento de porta via SSH. Aqui está um exemplo:
ssh -i "key.pem" -L 2021:127.0.0.1:2021 user@yourhost - Para GUI do ASF
Então abra seu navegador e vá para:
http://127.0.0.1:2021 - Para ASF - user:seuusuario pass:suasenha (fornecido na configuração inicial)
Dica de Segurança: Certifique-se de que cada componente, incluindo MongoDB, esteja configurado com segurança e que o ASF seja acessado de forma segura, mesmo internamente. Seguir as práticas recomendadas de segurança é crucial ao implementar o ASF em sua estratégia de segurança.
Além disso, você pode configurar o login social ativando o recurso de login social apropriado no .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 até o painel de administração http://127.0.0.1:2021/admin para adicionar o aplicativo social.
Observe que se o login social estiver habilitado e não configurado no painel de administração, o ASF não exibirá a página de login - para reverter, basta desabilitar o Login Social no .env.prod
Para habilitar a integração e emissão de tickets no Jira, o ASF suporta a configuração dos seguintes valores no arquivo .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 o Wordpress Scan nos módulos Red team, insira o token da API WPScan na linha #7 do arquivo redteam/wpscan/wpscan.sh
O ASF possui dois escopos:
A) Externo: Para seus ativos publicamente expostos.
B) Interno: Ativos em sua rede corporativa.
Para o escopo Externo, o fluxo passa por quatro etapas básicas:
A.1 Alvos - Aqui é onde você insere seus alvos

A.2 Descoberta - Módulo que executa o processo Amass para descobrir ativos publicamente expostos. Fique à vontade para criar seu arquivo de configuração para configurar suas chaves de API https://github.com/OWASP/Amass/blob/master/examples/config.ini

A.3 Enumeração - Módulo que executa o processo NMAP para enumerar portas/serviços e criar filtros para o módulo Redteam. A configuração padrão é procurar por --top-ports 200, mas você pode adaptá-la às suas necessidades em /opt/asf/tools/nmap/*.sh

A.4 Redteam - Módulo que executa submódulos localizados em "/opt/asf/redteam"

Nota: Para o escopo Interno, o fluxo passa por A.1(Alvos), A.3(Enumeração) e A.4(Redteam).
A equipe do projeto attack-surface-framework recebe contribuições da comunidade. Antes de começar a trabalhar com o attack-surface-framework, leia nosso Developer Certificate of Origin. Todas as contribuições para este repositório devem ser assinadas conforme descrito nessa página. Sua assinatura certifica que você escreveu o patch ou tem o direito de repassá-lo como um patch de código aberto. Para informações mais detalhadas, consulte CONTRIBUTING.md.
Attack Surface Framework Copyright 2021 VMware, Inc.
A licença BSD-2 (a "Licença") estabelecida abaixo se aplica a todas as partes do projeto Attack Surface Framework. Você não pode usar este arquivo exceto em conformidade com a Licença.
Licença BSD-2
A redistribuição e uso em formas fonte e binárias, com ou sem modificação, são permitidos desde que as seguintes condições sejam atendidas:
Redistribuições do código fonte devem manter o aviso de direitos autorais acima, esta lista de condições e a seguinte isenção de responsabilidade.
Redistribuições em forma binária devem reproduzir o aviso de direitos autorais acima, esta lista de condições e a seguinte isenção de responsabilidade na documentação e/ou outros materiais fornecidos com a distribuição.
ESTE SOFTWARE É FORNECIDO PELOS DETENTORES DE DIREITOS AUTORAIS E COLABORADORES "COMO ESTÁ" E QUALQUER GARANTIA EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS IMPLÍCITAS DE COMERCIALIZAÇÃO E ADEQUAÇÃO A UM PROPÓSITO ESPECÍFICO SÃO REJEITADAS. EM NENHUM CASO O DETENTOR DE DIREITOS AUTORAIS OU COLABORADORES SERÃO RESPONSÁVEIS POR QUAISQUER DANOS DIRETOS, INDIRETOS, INCIDENTAIS, ESPECIAIS, EXEMPLARES OU CONSEQUENCIAIS (INCLUINDO, MAS NÃO SE LIMITANDO À OBTENÇÃO DE BENS OU SERVIÇOS SUBSTITUTOS; PERDA DE USO, DADOS OU LUCROS; OU INTERRUPÇÃO DE NEGÓCIOS) NO ENTANTO CAUSADOS E EM QUALQUER TEORIA DE RESPONSABILIDADE, SEJA EM CONTRATO, RESPONSABILIDADE OBJETIVA OU ATO ILÍCITO (INCLUINDO NEGLIGÊNCIA OU OUTRO) DECORRENTES DE QUALQUER FORMA DO USO DESTE SOFTWARE, MESMO SE AVISADO DA POSSIBILIDADE DE TAIS DANOS.
Attack Surface Framework Copyright 2021 VMware, Inc.
Este produto é licenciado para você sob a licença BSD-2 (a "Licença"). Você não pode usar este produto exceto em conformidade com a Licença BSD-2.
Este produto pode incluir vários subcomponentes com avisos de direitos autorais e termos de licença separados. Seu uso desses subcomponentes está sujeito aos termos e condições da licença do subcomponente, conforme observado no arquivo 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 é necessário para as funções de alerta ou relatórios do 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 com os seguintes detalhes:MONGO_USER=admin
MONGO_PASSWORD=
MONGO_URL=
MONGO_PORT=27017
Execute ./setup.sh