
Ferramenta de Red Team para Azure que cria gráficos de objetos do Azure e do Azure Active Directory

O Stormspotter cria um "grafo de ataque" dos recursos em uma assinatura do Azure. Ele permite que equipes vermelhas e testadores de penetração visualizem a superfície de ataque e as oportunidades de pivô dentro de um inquilino, e potencializa seus defensores para orientar e priorizar rapidamente o trabalho de resposta a incidentes.
A maioria dos usuários pode achar mais fácil instalar o Stormspotter via Docker. Este é o método recomendado.
git clone https://github.com/Azure/Stormspotter
docker-compose up
O arquivo docker-compose criará três contêineres:
Por padrão, o contêiner Stormspotter exporá a UI na porta 9091. O contêiner neo4j exporá o neo4j nas portas 7474 (HTTP) e 7687 (Bolt). A configuração padrão do Neo4j não possui SSL habilitado, portanto você pode inicialmente interagir diretamente com a interface neo4j na porta 7474.
Nota: Atualmente, o Stormspotter só suporta a execução desses contêineres localmente. Tentar fazer upload para o frontend hospedado remotamente não terá sucesso, mas esse comportamento deve mudar no futuro.
As credenciais padrão para o neo4j são: neo4j/password. Você pode alterá-las no arquivo docker-compose através da variável de ambiente NEO4JAUTH.
Se optar por executar o Stormspotter sem Docker, você deve ter Python 3.8, NodeJS/npm e Neo4j instalados. Você também pode obter as versões mais recentes do Stormspotter aqui.
O backend que lida com a análise de dados para o Neo4j é construído com FastAPI. Se você não planeja enviar novo conteúdo para o banco de dados, talvez não precise executar o backend. O backend está configurado para executar na porta 9090. Você pode alterar isso mudando o número da porta na linha 5 do app.py. Se fizer isso, também deve alterar a porta no componente Q-Uploader no DatabaseView Component para que os uploads do frontend sejam enviados para a porta correta onde o backend reside.
cd backend
python3 ssbackend.pyz
O aplicativo web é desenvolvido usando Vue e o Quasar Framework. O aplicativo de página única (SPA) foi construído para você e reside em frontend/dist/spa. Para servir este diretório:
npm install -g @quasar/cli
cd frontend/dist/spa
quasar serve -p 9091 --history
Você pode então visitar http://localhost:9091 no seu navegador.
Stormcollector é a parte do Stormspotter que permite enumerar as assinaturas às quais as credenciais fornecidas têm acesso. A maneira RECOMENDADA de usar o Stormcollector é executar o pacote sscollector.pyz, encontrado em o arquivo de release para seu sistema operacional. Este PYZ foi criado com Shiv e já vem com todos os pacotes compactados! As dependências serão extraídas para uma pasta .shiv no diretório inicial do usuário.
cd stormcollector
python3 sscollector.pyz -h
Se por algum motivo você não quiser usar o pacote fornecido, pode instalar os pacotes necessários com pip ou pipenv. Com esta abordagem, é altamente recomendável instalar o Stormcollector em um ambiente virtual para evitar conflitos de pacotes. Se você tiver problemas para gerenciar seus ambientes virtuais, deve usar o método recomendado acima.
cd stormcollector
python3 -m pip install pipenv
pipenv install .
python3 ./sscollector.py
Tipos de login atualmente suportados:
az login primeiro)Você pode ver todas as opções que o Stormcollector oferece usando a opção -h conforme mostrado acima. Os usos mais básicos do Stormcollector são:
python3 sscollector.pyz cli
python3 sscollector.pyz spn -t <tenant> -c <clientID> -s <clientSecret>
Opções comuns para todos os tipos de autenticação
Enviando Resultados
Assim que você iniciar a UI, verá uma seção na aba de banco de dados chamada "Stormcollector Upload". Adicione seu arquivo a este uploader e o processamento começará. Conforme os resultados são processados, você pode verificar os logs do backend para acompanhar o progresso, e os resultados também devem ser refletidos na mesma aba Database View.
Visualizar Permissões em um KeyVault

Mostrar Membros de uma Função do Azure AD

Mostrar Relacionamentos de Entrada e Saída

Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um Contrato de Licença de Contribuidor (CLA) declarando que você tem o direito de, e de fato, nos concede os direitos de usar sua contribuição. Para mais detalhes, visite https://cla.opensource.microsoft.com.
Quando você enviar um pull request, um bot do CLA determinará automaticamente se você precisa fornecer um CLA e decorará o PR apropriadamente (por exemplo, verificação de status, comentário). Simplesmente siga as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios que usam nosso CLA.