Skip to content

SDEV3-ENKI-TEAM/ClusteringWithVectorDB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

폴더 내 .env 파일 필요

OPENAI_API_KEY=
CHROMA_OPENAI_API_KEY=

DBSCAN

  • 밀접하게 밀집된 점(인근 이웃이 많은 점)을 그룹화하여 저밀도 지역의 점을 이상점으로 표시

  • 장점

    • 사전 클러스터 개수를 설정하지 않아도 됨
  • 단점

    • 고차원 데이터에서 잘 작동하지 않음 → “고차원의 저주”
  • 클러스터링 데이터: Infostealer, Ransomware, RAT, Trojan, Worm 5가지 유형의 공격을 실행한 trace log data (총 292개)

클러스터링 + 벡터 DB

  1. 각 트레이스 파일을 자연어로 요약 (gpt-4o 모델 사용)

  2. 임베딩 모델 paraphrase-multilingual-mpnet-base-v2(768차원) 사용

    1. 다국어 지원, 문맥 파악 능력이 뛰어난 모델
  3. UMAP 을 사용해 768 → 10 차원으로 축소

    1. 연산 속도가 빠르고 데이터의 전역적 구조 보존에 뛰어남
  4. DBSCAN 클러스터링
    스크린샷 2025-09-11 112345

    • 클러스터링 결과를 보면 동일 프로세스 이름끼리 묶임(github 내 clustering_result.txt 파일 참고)
    • 클러스터링 후 각 벡터가 어떤 그룹에 속하는지를 나타내는 레이블 리스트를 반환
    • 레이블은 어떤 공격인지를 나타내는 cluster_id로 벡터 DB 내 메타데이터로 함께 저장됨
    • behavior_type 으로 공격 행위 저장 스크린샷 2025-09-11 153630
  5. 새로운 로그 입력 시 벡터 DB 내 유사한 로그의 cluster_id를 찾아 공격 유형을 빠르게 파악하도록 하는 것

    1. 이 의도였으나.. 데이터셋 내 서로 다른 유형의 공격(ex. worm, trojan)에서 동일한 자연어 요약문장이 있는 것을 보아

      1. 공격 행위만을 담은 로그를 얻고(노이즈 없는)

      2. 정확한 공격 유형으로 라벨링하기

      가 필요할 듯함

    2. 이 단계에서 유사 로그가 없을 시 LLM에게 판단을 맡김

스크린샷 2025-09-11 145051

⇒ [로그 검색 결과]

추후 진행내용? 정해야 될 내용?

  1. 전원 로그 수집과 라벨링해서 벡터 DB에 저장하기
    1. 최소 100,000개 필요하다 치면
    2. 하루 100개씩 5명 → 1일 500개, 20일 해도 10,000개
  2. 기존처럼 클러스터링 없이 [LLM + 벡터 DB 유사도 검색] 성능 개선

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages