
Azure 및 Azure Active Directory 개체를 그래프로 나타내는 Azure Red Team 도구

Stormspotter는 Azure 구독 내 리소스의 “공격 그래프”를 생성합니다. 이를 통해 레드 팀과 침투 테스터는 테넌트 내 공격 표면과 피벗 기회를 시각화할 수 있으며, 방어자가 신속하게 방향을 잡고 인시던트 대응 작업의 우선순위를 정할 수 있도록 지원합니다.
대부분의 사용자는 Docker를 통해 Stormspotter를 설치하는 것이 더 쉽다는 것을 알게 될 것입니다. 이 방법이 권장됩니다.
git clone https://github.com/Azure/Stormspotter
docker-compose up
docker-compose 파일은 세 개의 컨테이너를 생성합니다:
기본적으로 Stormspotter 컨테이너는 UI를 포트 9091에 노출합니다. neo4j 컨테이너는 neo4j를 포트 7474(HTTP) 및 7687(Bolt)에 노출합니다. Neo4j의 기본 구성에서는 SSL이 활성화되어 있지 않으므로 처음에는 포트 7474에서 neo4j 인터페이스와 직접 상호 작용할 수 있습니다.
참고: 현재 Stormspotter는 이러한 컨테이너를 로컬에서만 실행하는 것을 지원합니다. 원격 호스팅된 프론트엔드에 업로드를 시도하면 실패하지만, 이 동작은 향후 변경될 예정입니다.
neo4j의 기본 자격 증명은 neo4j/password입니다. docker-compose 파일에서 NEO4JAUTH 환경 변수를 통해 이를 변경할 수 있습니다.
Docker 없이 Stormspotter를 실행하려면 Python 3.8, NodeJS/npm, Neo4j가 설치되어 있어야 합니다. 최신 Stormspotter 릴리스는 여기에서 다운로드할 수 있습니다.
백엔드는 데이터를 Neo4j로 파싱하며 FastAPI로 구축되었습니다. 데이터베이스에 새 콘텐츠를 업로드할 계획이 없다면 백엔드를 실행할 필요가 없을 수도 있습니다. 백엔드는 포트 9090에서 실행되도록 구성되어 있습니다. app.py 5행의 포트 번호를 변경하여 변경할 수 있습니다. 변경한 경우, DatabaseView Component의 Q-Uploader 구성 요소에서 포트도 변경하여 프론트엔드의 업로드가 올바른 포트로 전송되도록 해야 합니다.
cd backend
python3 ssbackend.pyz
웹 앱은 Vue와 Quasar Framework를 사용하여 개발되었습니다. 단일 페이지 앱(SPA)이 이미 빌드되어 frontend/dist/spa에 위치합니다. 이 디렉토리를 제공하려면:
npm install -g @quasar/cli
cd frontend/dist/spa
quasar serve -p 9091 --history
그런 다음 브라우저에서 http://localhost:9091에 접속할 수 있습니다.
Stormcollector는 제공된 자격 증명이 액세스할 수 있는 구독을 열거할 수 있는 Stormspotter의 일부입니다. Stormcollector를 사용하는 권장 방법은 운영 체제에 맞는 릴리스 파일에서 찾을 수 있는 sscollector.pyz 패키지를 실행하는 것입니다. 이 PYZ는 Shiv로 생성되었으며 모든 패키지가 이미 압축되어 있습니다! 종속성은 사용자 홈 디렉토리의 .shiv 폴더에 자동으로 추출됩니다.
cd stormcollector
python3 sscollector.pyz -h
어떤 이유로 제공된 패키지를 사용하고 싶지 않다면 pip 또는 pipenv를 사용하여 필요한 패키지를 설치할 수 있습니다. 이 접근 방식에서는 패키지 충돌을 방지하기 위해 가상 환경에 Stormcollector를 설치하는 것이 _강력히 권장_됩니다. 가상 환경 관리에 문제가 있다면 위의 권장 방법을 사용해야 합니다.
cd stormcollector
python3 -m pip install pipenv
pipenv install .
python3 ./sscollector.py
지원되는 현재 로그인 유형:
az login을 사용해야 함)위에 표시된 대로 -h 스위치를 사용하여 Stormcollector가 제공하는 모든 옵션을 확인할 수 있습니다. Stormcollector의 가장 기본적인 사용법은 다음과 같습니다:
python3 sscollector.pyz cli
python3 sscollector.pyz spn -t <tenant> -c <clientID> -s <clientSecret>
모든 인증 유형에 공통된 옵션
결과 업로드
UI를 시작한 후 데이터베이스 탭에서 'Stormcollector Upload'라고 표시된 섹션을 볼 수 있습니다. 이 업로더에 파일을 추가하면 처리가 시작됩니다. 결과가 처리됨에 따라 백엔드 로그에서 진행 상황을 확인할 수 있으며, 결과는 동일한 데이터베이스 보기 탭에 반영되어야 합니다.
KeyVault 권한 보기

Azure AD 역할의 구성원 표시

수신 및 발신 관계 표시

이 프로젝트는 기여와 제안을 환영합니다. 대부분의 기여는 귀하가 기여를 사용할 권리가 있으며 실제로 그렇게 한다는 것을 선언하는 기여자 라이선스 계약(CLA)에 동의해야 합니다. 자세한 내용은 https://cla.opensource.microsoft.com을 방문하세요.
풀 리퀘스트를 제출하면 CLA 봇이 자동으로 CLA를 제공해야 하는지 여부를 결정하고 PR을 적절히 표시합니다(예: 상태 확인, 댓글). 봇이 제공하는 지침을 따르기만 하면 됩니다. CLA를 사용하는 모든 리포지토리에서 이 작업을 한 번만 수행하면 됩니다.
이 프로젝트는 Microsoft 오픈 소스 행동 강령을 채택했습니다. 자세한 내용은 행동 강령 FAQ를 참조하거나 추가 질문이나 의견이 있으면 [email protected]으로 문의하세요.