콘텐츠로 이동

For detailed installation instructions, refer to the official BloodHound documentation.

BloodHound 8.0와 OpenGraph 치트시트

개요

BloodHound 8.0은 널리 사용되는 오픈 소스 공격 경로 관리 도구의 주요 업데이트입니다. 가장 중요한 새로운 기능은 OpenGraph로, BloodHound의 기능을 Active Directory를 넘어 GitHub, Snowflake 등 다양한 시스템의 ID 공격 경로를 매핑할 수 있도록 확장했습니다.

BloodHound 8.0의 주요 기능

  • OpenGraph: Active Directory뿐만 아니라 모든 소스의 데이터를 수집하고 분석할 수 있는 새롭고 확장 가능한 그래프 모델.
  • 확장된 공격 경로: 여러 플랫폼과 서비스에 걸친 공격 경로 시각화 및 분석.
  • 개선된 사용성: 향상된 사용자 인터페이스로 정보에 더 빠르고 명확하게 접근.
  • 향상된 확장성: 새로운 데이터 소스와 공격 기본 요소를 더 쉽게 추가 가능.
  • 커뮤니티 주도: BloodHound 커뮤니티가 새로운 데이터 소스에 대한 맞춤형 수집기와 쿼리를 생성하고 공유할 수 있음.

OpenGraph 개념

  • 노드: 사용자, 그룹, 역할, 컴퓨터와 같은 객체를 나타냄.
  • 엣지: “MemberOf” 또는 “AdminTo”와 같은 노드 간 관계를 나타냄.
  • 공격 경로: 공격자가 권한 있는 접근을 얻는 데 사용할 수 있는 엣지의 연결.
  • 수집기: 대상 시스템에서 데이터를 수집하고 BloodHound용으로 포맷하는 스크립트.

설치 및 업그레이드

# For detailed installation instructions, refer to the official BloodHound documentation.
# Generally, you will need to download the latest release from the SpecterOps GitHub.

# Example of running the BloodHound GUI (replace with actual command)
./BloodHound-linux-x64

데이터 수집 (인제스터)

BloodHound는 데이터를 수집하기 위해 수집기(인제스터)를 사용합니다. BloodHound 8.0의 경우 OpenGraph 형식을 지원하는 업데이트된 수집기를 사용해야 합니다.

  • SharpHound: Active Directory용 공식 수집기.
  • AzureHound: Azure용 공식 수집기.
  • 커뮤니티 수집기: GitHub, AWS 등 다른 플랫폼용 커뮤니티에서 개발한 수집기를 찾아보세요.

일반적인 Cypher 쿼리

BloodHound는 Cypher 쿼리 언어를 사용합니다. 다음은 몇 가지 예시 쿼리입니다:

// Find all Domain Admins
MATCH (u:User)-[:MemberOf*1..]->(g:Group {name: "DOMAIN ADMINS@your.domain"}) RETURN u.name, g.name

// Find the shortest path to Domain Admin from a specific user
MATCH (u:User {name: "user@your.domain"}), (g:Group {name: "DOMAIN ADMINS@your.domain"}), p = shortestPath((u)-[*1..]->(g)) RETURN p

// Find all computers where a specific user is an admin
MATCH (u:User {name: "user@your.domain"})-[r:AdminTo]->(c:Computer) RETURN u.name, c.name

OpenGraph 사용하기

OpenGraph를 사용하면 이제 다양한 소스의 데이터를 수집하고 크로스 플랫폼 공격 경로를 찾는 맞춤형 쿼리를 생성할 수 있습니다.

예시 시나리오: 민감한 GitHub 저장소에 접근할 수 있는 컴퓨터의 관리자인 사용자 찾기.

// Example query (syntax may vary based on the collector)
MATCH (u:User)-[:AdminTo]->(c:Computer)-[:HasAccessTo]->(r:GitHubRepo {name: "sensitive-repo"}) RETURN u.name, c.name, r.name
```**데이터 수집**: SharpHound로 AD 데이터를 수집하고 커뮤니티 수집기로 GitHub 데이터 수집.https://specterops.io/blog/2025/07/29/bloodhound-v8-usability-extensibility-and-opengraph/ **맞춤형 쿼리**: AD 사용자를 컴퓨터에 연결하고 컴퓨터를 GitHub 저장소에 연결하는 Cypher 쿼리 작성.
https://github.com/SpecterOps/BloodHound
### 추가 리소스

-   [SpecterOps 블로그: BloodHound v8 발표](https://bloodhoundgang.herokuapp.com/)
-   [BloodHound GitHub 저장소](