본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 05. 17. 06:38

AI를 활용해 Red Teamer가 되기 위해 RAG 시스템을 구축한 방법 — Evolve 프로젝트

요약

이 글은 개인의 사이버 보안 지식을 인덱싱하고 자연어 질의가 가능한 RAG(Retrieval-Augmented Generation) 시스템을 구축한 과정을 설명합니다. 이 시스템은 석사 과정에서 얻은 방대한 양의 강의 자료, 노트, 실습 과제 등을 활용하여 사용자가 필요한 정보를 문맥과 함께 정확하게 찾아낼 수 있도록 설계되었습니다. 특히 비디오 콘텐츠를 전사하고 청크(Chunking)하며 벡터화하는 복잡한 과정을 거쳤으며, 이를 통해 단순 키워드 검색을 넘어 '수업 내용 기반의 비교 분석' 같은 복합적인 질문에도 일관되고 깊이 있는 답변을 제공합니다.

핵심 포인트

  • 개인용 RAG 시스템 구축: 사이버 보안 지식을 자연어 질의가 가능한 형태로 통합함.
  • 비디오 콘텐츠 처리 파이프라인: MP4 파일에서 오디오를 추출하고 Whisper로 전사한 후, 문맥 유지를 위한 청크 분할 및 벡터화 과정을 거침.
  • RAG 엔진 구성 요소: ChromaDB에 임베딩된 데이터를 저장하고, Claude API를 활용하여 검색된 조각을 기반으로 답변을 생성함.
  • 복합 질의 처리 능력 입증: 단순 키워드 매칭이 아닌 문맥 이해를 통해 여러 세션 정보를 교차 참조하는 고도화된 정보 검색 능력을 보여줌.
  • 성능 개선 노력: Whisper의 기술 용어 오류를 줄이기 위해 수정 사전(Dictionary of corrections)을 활용한 후처리 단계를 추가함.

저는 실질적인 필요성에서 시작하여 Red Team의 세계로 진입하기 위한 제 전략의 기반이 된 프로젝트를 몇 달 동안 작업해 왔습니다. 바로 저의 모든 사이버 보안 지식을 인덱싱하고 자연어로 질의할 수 있게 만드는 개인용 RAG (Retrieval-Augmented Generation) 시스템입니다.

해결하고 싶었던 문제
석사 과정 세션에서는 녹화된 강의, 연습 문제, 노트, 도구, 프레임워크 등 엄청난 양의 자료가 생성됩니다. 이 모든 것이 흩어져 있어 정작 필요한 순간에 찾아내기가 매우 어렵습니다. CTF (Capture The Flag)를 수행 중이거나 공격 벡터 (Attack Vector)를 분석하는 도중에는 폴더를 뒤지며 20분 동안 시간을 허비할 여유가 없습니다. 저는 내부 분석가처럼 작동하는 시스템을 원했습니다. 예를 들어, "Amass로 서브도메인 열거 (Enumeration)를 어떻게 하나요?"라고 물으면, 해당 내용이 설명된 강의의 정확한 구간과 관련 문맥을 함께 돌려주는 시스템 말입니다.

환경 및 데이터
주요 소스는 Evolve의 사이버 보안 석사 과정 세션입니다. MP4 형식의 녹화된 22개 세션, PDF 노트, 그리고 실습 과제들로 구성됩니다. 가장 큰 도전 과제는 비디오였습니다. 각 개념의 문맥을 잃지 않으면서 전사(Transcription)하고, 분할(Chunking)하며, 벡터화(Vectorization)해야 하는 밀도 높은 기술 오디오가 수 시간 분량이었기 때문입니다.

시스템 현재 상태:

  • ChromaDB에 인덱싱된 4,146개의 조각 (Chunks)
  • 처리된 22개의 강의 세션
  • 분류된 1,169개의 OSINT 도구
  • 33개의 공격 기술 카테고리

프로세스

  1. 비디오 인제스션 (Ingestion)
    각 MP4 파일은 ffmpeg를 통해 오디오를 추출한 후, Whisper (OpenAI)를 통해 전사됩니다. 생성된 텍스트는 조각 사이의 문맥을 잃지 않도록 중첩(Overlap)을 포함한 청크 (Chunks) 단위로 나뉩니다.

  2. 임베딩 (Embeddings) 및 벡터 데이터베이스
    청크들은 sentence-transformers를 사용하여 벡터화되며 ChromaDB에 저장됩니다. 각 조각은 출처, 타임스탬프, 주제 카테고리와 같은 메타데이터를 유지합니다.

  3. RAG 엔진
    사용자의 질문이 벡터화되면 가장 유사한 K개의 조각을 검색합니다. Claude API (Anthropic)가 이 조각들을 문맥으로 전달받아 실제 강의 자료에 기반한 답변을 생성합니다.

인터페이스

저는 세 가지 서로 다른 유스케이스(Use Case)를 위해 인터페이스를 구축했습니다:

  • 웹 채팅 (Streamlit): 자연어 질의
  • OSINT Lab: 카탈로그화된 1,169개 도구에 대한 의미론적 검색 (Semantic Search)
  • Framework Tracker: 공격 단계별 기술 추적

결과

시스템은 모호하거나 구어체적인 질의에도 높은 정확도로 올바른 조각(Chunk)을 검색합니다. 키워드 검색과의 차이점은 매우 뚜렷합니다. RAG는 단순한 단어가 아닌 문맥(Context)을 이해합니다. 가장 가치 있는 점은 "수업에서 배운 내용을 바탕으로 수동적 열거(Passive Enumeration)와 능동적 열거(Active Enumeration)의 차이점은 무엇이며, 교수는 각 단계에 어떤 도구를 추천하나요?"와 같은 복합적인 질문을 던졌을 때, 시스템이 여러 세션의 정보를 교차 참조하여 일관된 답변을 제공한다는 것입니다.

배운 점

청킹 (Chunking)은 생각보다 훨씬 더 중요합니다. 청크가 너무 짧으면 문맥을 잃고, 너무 길면 관련성이 희석됩니다. Whisper는 특정 기술 용어(도구 이름, 커맨드 플래그 등)에서 오류를 범합니다. 이를 해결하기 위해 수정 사전(Dictionary of corrections)을 활용한 후처리 (Post-processing) 단계를 추가했습니다. 임베딩 모델 (Embedding Model)의 선택은 전문화된 기술 도메인에서의 검색 품질에 큰 영향을 미칩니다. 다음 단계는 제가 정의한 Red Team 로드맵을 완성하기 위해 시스템을 침투 (Exploitation) 및 침투 후 (Post-exploitation) 단계로 확장하는 것입니다.

저장소

모든 코드와 문서는 GitHub에서 확인할 수 있습니다: Proyecto-Master-Ciberseguridad-Evolve-AlejandroCongil
인터랙티브 시각적 포트폴리오: alexc-projects.github.io/Proyecto-Master-Ciberseguridad-Evolve-AlejandroCongil
Evolve 사이버 보안 마스터 과정 중에 개발된 프로젝트입니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0