neo4j

agnusdei·2025년 7월 6일
0

CTF

목록 보기
33/154

🧠 Neo4j란?

**Neo4j는 그래프 데이터베이스(Graph Database)**입니다.

보통의 DB (MySQL, PostgreSQL 등)는 **행(Row)/열(Column)**로 구성된 **표 형태의 관계형 데이터베이스(RDBMS)**입니다.
하지만 **Neo4j는 노드(Node)와 관계(Relationship)**로 구성된 그래프 구조를 저장하고 분석합니다.


📊 그래프 구조란?

  • 노드(Node): 사람, 컴퓨터, 그룹 등 어떤 "객체"
  • 관계(Relationship): 객체 사이의 연결 (예: A 사용자가 B 서버에 관리자 권한 있음)

이런 식의 연결 기반 데이터를 저장하고 쿼리하기에 최적화된 DB가 Neo4j입니다.


🕸️ 왜 BloodHound에서 Neo4j를 쓰는가?

Active Directory(AD) 환경은 다음과 같은 관계가 많습니다:

  • 사용자 → 그룹 → 권한 → 컴퓨터
  • A 사용자는 B 그룹에 속하고, B 그룹은 C 서버에 관리자 권한이 있음

이런 복잡한 권한 관계그래프 형태로 표현하면 매우 직관적이고 강력하게 분석할 수 있습니다.

BloodHound는 AD 내 권한 관계를 그래프로 표현하고, 그걸 Neo4j DB에 저장해서 시각화합니다.


🔧 BloodHound 실행 흐름

  1. 공격자가 bloodhound-python으로 AD 정보를 수집 → .json 결과물 생성
  2. GUI에서 이 데이터를 Neo4j에 업로드
  3. Neo4j는 이 데이터를 그래프 구조로 저장
  4. BloodHound GUI가 Neo4j에 연결하여 시각화하고 분석

🔍 예시 이미지 (개념적)

[사용자A] --- 관리자권한 ---> [PC1]
     \
      멤버
        \
       [그룹B] --- DACL ---> [서버C]

이런 연결이 Neo4j에 의해 정점(노드)과 선(관계)으로 저장됩니다.


🧪 참고 명령어 요약

# 네오4j 설치
apt install neo4j

# 서비스 시작
systemctl start neo4j

# 웹 로그인
http://localhost:7474  (기본 neo4j/neo4j)

처음 로그인하면 비밀번호 반드시 바꿔야 BloodHound GUI에서 접속됩니다.


✅ 요약

항목설명
Neo4j그래프 DB, BloodHound가 내부적으로 사용
용도AD 권한 관계 분석에 최적
역할수집한 JSON 데이터를 그래프로 저장 및 쿼리
접속 방법localhost:7474 웹 UI 통해 로그인

profile
DevSecOps ⚙️ + CTF🚩

0개의 댓글