후보 08 | 췟췟
ChatGPT 기반 보안 위협 분석 자동화
“ChatGPT를 활용하여 클라우드 보안 로그에서 숨겨진 위협을 찾아내다.”

  • 활용 배경 / 목적
    Chat GPT 활용 배경/계기 또는 목적, 사용방식

클라우드 보안 환경에서 가장 큰 과제 중 하나는 방대한 IAM(Identity and Access Management) 로그 데이터를 분석해 권한 오용, 권한 상승 공격 등의 보안 위협을 신속하고 정확하게 탐지하는 것입니다. 기존의 룰 기반 보안 시스템은 로그 간의 문맥적 관계를 이해하지 못해 복잡한 이벤트 흐름에서 발생하는 잠재적인 보안 위협을 놓치는 경우가 많았습니다. 이 문제를 해결하기 위해 본 프로젝트에서는 Elasticsearch에 실시간으로 축적되는 대규모의 보안 로그를 ChatGPT를 이용하여 효과적으로 분석하고 잠재 위협을 모니터링하며, 관련 내용을 보고서로 자동 생성하는 방법을 제안했습니다.

본 프로젝트의 주요 목적은 기존 보안 분석 과정에서의 비효율성을 극복하고, 복잡한 로그 분석 작업을 보다 효율적이고 체계적으로 수행할 수 있도록 돕는 것이었습니다. 기존 방식은 보안 엔지니어가 복잡한 쿼리를 작성하거나 방대한 로그 데이터를 수작업으로 분석해야 했기 때문에 시간이 많이 소요되고 인적 오류 가능성이 컸습니다.

ChatGPT는 사용자 질문을 검색 쿼리로 변환, 탐지된 데이터 요약, 자동 보고서 생성이라는 세 가지 주요 단계에서 활용되었습니다. 먼저, 사용자는 자연어로 직관적인 질문을 입력하여 보안 로그 데이터를 탐색할 수 있었습니다. 예를 들어, "어제 하루 동안 비활성화된 IAM 계정 목록을 알려줘"와 같은 질문을 입력하면 ChatGPT는 이를 Elasticsearch DSL 쿼리로 변환합니다. 이 과정에서 “eventTime 필드를 기준으로 특정 시간대를 설정하고, term 필터링을 사용해 조건에 맞는 이벤트를 검색” 같은 구체적인 조건이 포함된 프롬프트가 설계되었습니다. 이를 통해 사용자의 자연어 입력이 정확하고 효율적인 쿼리로 변환되어 복잡한 로그 데이터에서 필요한 정보를 빠르게 추출할 수 있었습니다 .

다음으로, 경량화된 BERT 기반 모델이 Elasticsearch 로그에서 실시간으로 탐지한 보안 위협 데이터를 ChatGPT를 이용하여 사용자에게 요약된 자연어 형태로 제공했습니다. 예를 들어, "지난 30일간 EC2 관련 고위험 API 호출 빈도를 집계해줘"라는 질문에 대해 ChatGPT는 탐지된 데이터를 분석해 위험도가 높은 이벤트를 시각적으로 변환하고 그 맥락과 의미를 사용자에게 전달했습니다. 이를 통해 보안 엔지니어가 데이터를 보다 쉽게 이해하고 효율적으로 의사결정을 내릴 수 있도록 지원했습니다.

마지막으로, 탐지된 위협 데이터를 바탕으로 Markdown 형식의 보안 보고서를 자동 생성했습니다. 보고서에는 탐지된 공격 유형, 공격 시간, 권고 사항 등이 포함되며, 사용자는 보고서 템플릿을 커스터마이징하여 자신의 요구에 맞는 결과를 얻을 수 있었습니다. 이러한 자동화된 보고서 작성은 엔지니어의 작업 시간을 대폭 단축시켰으며, 팀 간 협업에도 유용하게 활용될 수 있었습니다.

ChatGPT는 단순히 사용자 질문에 응답하는 역할을 넘어, Elasticsearch 로그 데이터를 기반으로 쿼리 생성, 탐지 결과 요약, 보고서 자동화와 같은 보안 분석의 전반적인 프로세스를 지원했습니다. 특히, 프롬프트 엔지니어링을 통해 사용자 요구를 정확히 반영하고 기술적 쿼리 생성 및 결과 요약의 정확도를 높임으로써 클라우드 보안 로그 분석의 효율성과 정확성을 크게 향상시킬 수 있었습니다.

  • 사용 프롬프트
    프롬프트 구성, 활용방식, 입력값, 출력값

프롬프트 구성

ChatGPT는 보안 로그(AWS CloudTrail) 분석 전문가로서의 역할을 중심으로 설계되었습니다. 작업 상황에 따라 필요한 전문성을 발휘하도록 여러 페르소나를 세분화했으며, 각 역할에 따라 동작 범위를 명확히 정의했습니다. 먼저, 추천 질문 생성 프롬프트는 보안 위협 분류에 이용되는 표준 프레임워크인 MITRE ATT&CK(https://attack.mitre/org/)프레임워크를 기반으로 설계되었으며, ChatGPT는 “AI 보안 분석가”로 설정되었습니다. 이 프롬프트는 공격 유형, 전술(Tactic), 기법(Technique)을 중심으로 사용자가 분석 방향성을 명확히 할 수 있도록 질문을 생성합니다. 예를 들어, "특정 시간대에 동일한 IP로 비정상적인 API 호출이 있었는가?"라는 질문을 통해 방대한 로그 데이터에서 주요 이벤트를 탐지하도록 돕습니다.

Elasticsearch 쿼리 작성 프롬프트는 “AWS CloudTrail 로그와 Elasticsearch DSL 쿼리를 생성하는 전문가” 역할로 설계되었습니다. 이 프롬프트는 정확한 로그 데이터를 필터링할 수 있도록 데이터 스키마의 제약 조건을 명시적으로 포함했습니다. 예를 들어, keyword 타입 필드는 반드시 term 쿼리를, text 타입 필드는 match 쿼리를 사용해야 한다는 규칙을 설정했으며, 논리 연산자(“or”는 should, “and”는 must) 변환 규칙을 통해 쿼리의 정확성을 높였습니다.

보고서 작성 프롬프트는 탐지된 로그 데이터를 Markdown 형식으로 작성하는 "공격 탐지 보고서를 작성하는 보안 리포트 전문가"로 설정되었습니다. 보고서 작성 프롬프트는 탐지된 로그 데이터를 Markdown 형식으로 작성하는 "공격 탐지 보고서를 작성하는 보안 리포트 전문가"로 설정되었습니다. 보고서에는 탐지 시간, 공격 유형, 탐지 근거, MITRE ATT&CK 기반의 전술과 기법 설명이 포함되어 사용자가 탐지된 위협을 이해하고 빠르게 대응할 수 있도록 도왔습니다. 마지막으로, 공격 흐름 시각화 프롬프트는 "자산 간 연결 관계를 분석하는 데이터 시각화 전문가" 역할로 설정되어 탐지된 로그 데이터를 기반으로 노드-링크 그래프를 생성했습니다. 이를 통해 자산 간의 연결 관계와 공격 경로를 직관적으로 이해할 수 있는 시각적 자료를 제공했습니다.


활용 방식

ChatGPT는 보안 로그 데이터를 분석하고 보안 위협을 탐지하는 체계적인 과정을 지원했습니다. 먼저, 추천 질문 생성 단계에서는 사용자가 로그 데이터를 분석할 방향성을 설정할 수 있도록 질문을 생성했습니다. 예를 들어, "지난 24시간 동안 동일한 IP에서 비정상적인 API 호출이 발생했는가?"라는 질문을 통해 사용자가 방대한 로그 데이터에서 중요한 이벤트를 선별할 수 있도록 도움을 주었습니다.

추천 질문에서 도출된 조건은 Elasticsearch DSL 쿼리 작성 단계로 이어졌습니다. ChatGPT는 사용자의 자연어 요청을 기반으로 특정 시간대, 이벤트 유형, 사용자 정보 등을 포함한 정교한 Elasticsearch DSL 쿼리를 생성했습니다. 이를 통해 사용자는 기술적 문법을 학습할 필요 없이 필요한 데이터를 정확하게 검색할 수 있었습니다.

필터링된 로그 데이터는 공격 탐지 보고서를 작성하는 데 활용되었습니다. ChatGPT는 탐지된 데이터를 Markdown 형식의 보고서로 작성하며, 보고서에는 공격 유형, 탐지 시간, 탐지 근거, 전술 및 기법 설명이 포함되었습니다. 이러한 구조화된 보고서를 통해 사용자는 상황을 빠르게 이해하고 대응 방안을 수립할 수 있었습니다.

마지막으로, ChatGPT는 탐지된 로그 데이터를 기반으로 노드-링크 그래프를 생성하여 공격 흐름 시각화를 구현했습니다. 이 시각화는 자산 간 연결 관계와 공격 경로를 직관적으로 표현하며, 복잡한 데이터를 단순화하여 사용자가 쉽게 이해할 수 있도록 도움을 주었습니다.


입력값

추천 질문 생성 단계:
AWS CloudTrail 로그 데이터와 MITRE ATT&CK Cloud Matrix의 Detection 내용이 입력값으로 사용되었습니다. 이 데이터를 기반으로 분석 범위와 조건을 정의하고 의심 정황에 대한 구체적인 질문을 생성했습니다. CloudTrail 로그의 주요 필드(eventTime, eventSource, eventName 등)가 활용되었습니다.

Elasticsearch 쿼리 작성 단계:
추천 질문에서 도출된 조건과 사용자가 이용하는 Elasticsearch에서 설계된 데이터 스키마가 입력값으로 제공되었습니다. 사용자의 시스템에 적합한 쿼리를 반환하도록 프롬프트를 작성하여 실제로 동작이 가능한 쿼리가 생성되도록 하였으며, 이를 통해 특정 시간대, 이벤트 유형, 사용자 정보 등 상세 조건을 반영한 쿼리를 생성할 수 있었습니다.

보고서 작성 단계:
필터링된 로그 데이터와 탐지된 공격 유형, 탐지 시간이 입력값으로 사용되었습니다. 이 데이터는 탐지된 위협을 구조화된 보고서 형식으로 작성하는 데 활용되었습니다.

공격 흐름 시각화 단계:
탐지된 로그 데이터와 자산 간 연결 정보가 입력값으로 활용되었습니다. 이를 기반으로 자산 연결 관계와 공격 경로를 분석한 시각화 자료를 생성했습니다.


출력값

추천 질문 생성 단계:
사용자가 로그 분석 방향을 설정할 수 있도록 구체적이고 의미 있는 자연어 질문이 출력되었습니다.
예: "지난 30일 동안 비활성 IAM 계정 목록을 확인해줘."

<추천 질문 3가지>
2024년 9월 21일에 발생한 Execution 및 Cammand and Scripting Interpreter 공격 관련하여
1. 'StopInstances' 이벤트의 요청이 실패한 이유에 대한 구체적인 로그 데이터를 보여주세요.
2. 로그에서 발견된 'DescibeInstances' 이벤트가 빈번하게 수행된 날짜와 시간, 그리고 해당 요청 당시의 인스턴스 상태 정보를 제시해 주세요.
3. 공격자가 사용한 IAM 사용자 계정 (attack_user_03)에 대해 최근 90일 간의 특정 API 호출 내역을 분석하여, 해당 계정이 사용하는 권한 목록을 정리해주세요.

Elasticsearch 쿼리 작성 단계:
입력된 조건을 반영한 Elasticsearch DSL 쿼리가 출력되었습니다. 예: 특정 시간대와 API 호출 조건을 필터링하는 쿼리

보고서 작성 단계:
Markdown 형식의 구조화된 공격 탐지 보고서가 출력되었습니다. 보고서에는 탐지 시간, 공격 유형, 탐지 근거, MITRE ATT&CK 기반 전술과 기법 설명이 포함되었습니다.

공격 흐름 시각화 단계:
자산 간 연결 관계와 공격 경로를 표현한 JavaScript 객체 기반의 노드-링크 그래프가 출력되었습니다.

  • 시행착오와 해결 방안
    원하는 결과를 도출하기까지 겪은 시행착오, 보완/개선 방법

ChatGPT를 활용하여 추천 질문 생성, Elasticsearch 쿼리 작성, 공격 보고서 작성, 공격 흐름 시각화 등의 작업을 수행하는 과정에서 여러 시행착오를 겪었습니다. 이러한 문제를 해결하기 위해 다양한 보완 및 개선 방법을 적용했으며, 결과적으로 효율성과 결과물의 품질을 크게 향상시킬 수 있었습니다.

먼저, 추천 질문 생성 과정에서는 초기 설계 단계에서 방향성을 설정하는 데 어려움이 있었습니다. 보안 로그 분석 경험이 부족해 어떤 질문이 유의미한 데이터를 도출할지 판단하기 어려웠습니다. 이를 해결하기 위해 MITRE ATT&CK Cloud 프레임워크를 참조하여 ChatGPT가 공격 전술(Tactic), 기법(Technique), Detection 내용을 분석하도록 설계했습니다. 프레임워크를 기반으로 세부 조건과 질문 형식을 명확히 정의한 결과, ChatGPT가 생성하는 질문이 로그 분석의 방향성을 명확히 제시할 수 있게 되었습니다. 이 개선으로 추천 질문 생성 속도가 기존 수작업 대비 약 60% 단축되었으며, 생성된 질문의 정확도도 크게 향상되었습니다.

Elasticsearch 쿼리 작성 과정에서는 ChatGPT가 Elasticsearch 문법을 처리하는 데 어려움을 겪었습니다. 특히, prefix, term, keyword와 같은 문법을 잘못 적용하거나 논리 연산자 처리에서 오류가 발생했습니다. 이를 해결하기 위해 프롬프트에 Elasticsearch 스키마 제약 조건을 명시적으로 포함했습니다. 예를 들어, keyword 타입 필드는 반드시 term을, text 타입 필드는 match를 사용해야 한다는 규칙을 설정했습니다. 추가적으로, 커스텀 스키마 데이터를 ChatGPT에 제공하여 실제 데이터 구조를 기반으로 쿼리를 생성하도록 개선했습니다. 이 결과로 쿼리 작성 속도가 기존보다 70% 단축되었고, 문법 오류 발생률은 90% 이상 감소했습니다.
입력값으로 대량의 로그 데이터를 제공하는 과정에서는 토큰 한계 문제가 발생했습니다. ChatGPT는 대량 데이터를 처리하는 데 한계가 있어 일부 로그가 손실되는 문제가 있었습니다. 이를 해결하기 위해 로그 데이터를 여러 조각으로 나누어 입력하고, 각 조각에서 필요한 필드를 명시적으로 지정한 뒤 요약 결과를 통합하는 방식을 도입했습니다. 이를 통해 대규모 로그 데이터 처리 속도가 기존 대비 약 50% 향상되었고, 분석 결과의 신뢰성 또한 강화되었습니다.

공격 흐름 시각화 작업에서는 ChatGPT가 생성하는 노드(nodes)와 링크(links)의 값이 정확하지 않다는 문제가 있었습니다. 이를 해결하기 위해 노드와 링크의 정의와 예시를 프롬프트에 추가했습니다. 예를 들어, 노드의 label은 IAM UserName 또는 EC2 instanceID에서 추출되며, 링크의 source와 target 값은 자산 간 연결 관계를 반영해야 한다는 조건을 명시했습니다. 이러한 개선을 통해 시각화 데이터의 정확도가 약 80% 향상되었으며, 데이터 시각화 작업에 소요되는 시간도 대폭 단축되었습니다.
결론적으로, 각 작업 단계에 맞는 정확한 페르소나와 역할을 지정하고, 작업별로 필요한 세부 조건과 제약 사항을 포함한 세밀한 프롬프트 엔지니어링을 수행했습니다. 이로 인해 ChatGPT는 추천 질문 생성, 데이터 처리, 보고서 작성, 시각화 등 모든 작업에서 높은 수준의 결과를 도출할 수 있었습니다. 특히, 작업 효율성과 정확성을 크게 향상시켜 수작업 방식 대비 약 60~80%의 시간 절약 효과를 거두었으며, 결과물의 품질 또한 크게 향상될 수 있었습니다.

  • 생산성 향상 정도
    생산성 개선정도 Before/After

ChatGPT를 확용하기 전과 후를 비교하면 추천 질문 생성, Elasticsearch 쿼리 작성, 보고서 작성, 공격 흐름 그래프 작성에서 생산성이 크게 개선되었습니다. 각 단계별로 Before와 After를 구체적으로 살펴보면 다음과 같습니다.

1. 추천 질문 생성

Before
로그 분석 초기 단계에서 어떤 데이터를 우선적으로 분석해야 할지 결정하는 데 시간이 많이 소요되었습니다. 사용자는 MITRE ATT&CK Cloud Matrix를 참조하며 로그 데이터를 수동으로 대조해야 했고, 반복적인 자료 검색과 조건 확인 작업이 필요했습니다. 이러한 과정에서 중요한 로그 패턴을 놓치는 경우도 빈번히 발생했습니다.
After
프롬프트를 최적화한 결과, ChatGPT는 로그 데이터를 빠르게 분석하고 MITRE ATT&CK Cloud Matrix를 참조해 자동으로 구체적인 질문을 생성했습니다. 예를 들어, "특정 시간대에 동일한 IP에서 비정상적인 API 호출이 있었는가?"와 같은 질문을 통해 분석 방향을 명확히 제시할 수 있었습니다. 이를 통해 질문 설계 시간이 10분 이내로 단축되었으며, 생성된 질문의 정확도도 대폭 향상되었습니다.

2. Elasticsearch 쿼리 작성

Before
Elasticsearch 쿼리 작성은 숙련된 기술이 요구되는 작업으로, 조건이 복잡할수록 문법 오류가 자주 발생했습니다. 예를 들어, "특정 시간대의 IAM 사용자 비정상 로그를 조회"하는 요청도 스키마와 문법 오류로 인해 작업이 중단되는 경우가 많았습니다. 특히, 쿼리 디버깅에 많은 시간이 소요되어 효율성이 크게 저하되었습니다. 또한 보안 로그에 대한 이해와 Elasticsearch 쿼리 문법에 대한 숙련도 차이에 따라 숙련자와 비숙련자간 작업 속도가 적게는 수시간, 많게는 수일까지 차이가 났습니다.
After
ChatGPT는 자연어로 입력된 요청을 정확한 Elasticsearch DSL 쿼리로 변환했습니다. 사용자는 "지난 30일 동안 특정 사용자와 관련된 이상 로그를 찾아줘"라는 자연어 입력만으로 복잡한 쿼리를 생성할 수 있었습니다. 쿼리 작성 시간은 70% 이상 단축되었으며, 문법 오류 발생률이 90% 이상 감소했습니다.

3. 보고서 작성

Before
보고서를 작성하기 위해 데이터를 정리하고, 보고서 구조를 설계하며, 전문 용어를 다듬는 데 많은 시간이 필요했습니다. 비전문가는 기술적 지식 부족으로 보고서 품질이 낮아지거나 완성 시간이 길어지는 경우가 많았습니다.
After
Markdown 형식의 자동 보고서 생성 기능을 활용한 결과, 공격 유형, 탐지 근거, 권고 사항 등이 포함된 전문적이고 구조화된 보고서를 신속하게 작성할 수 있었습니다. ChatGPT는 탐지된 데이터를 기반으로 일관성과 전문성을 갖춘 보고서를 자동 생성하며, 비전문가도 쉽게 고품질의 보고서를 작성할 수 있었습니다. 보고서 작성 시간은 약 60% 단축되었고, 결과물의 품질과 일관성도 크게 향상되었습니다.

4. 공격 흐름 그래프 작성

Before
로그 데이터를 분석하여 노드와 링크 관계를 정의하고, 시각화 데이터를 직접 작성해야 했습니다. 방대한 데이터를 처리하는 데 있어 잘못된 연결 관계가 생성되거나 데이터가 누락되는 문제가 자주 발생하곤 했습니다. 이는 작업 시간이 길어지고 결과물의 품질도 낮아지는 주 원인으로 이어졌습니다.
After
ChatGPT는 탐지된 로그 데이터를 기반으로 노드와 링크 관계를 자동 생성했습니다. 자산 간 연결 관계와 공격 경로를 시각적으로 표현하는 그래프를 신속하게 생성하며, 특히 EC2 인스턴스와 S3 버킷 간의 연결을 시각화해 공격 경로를 직관적으로 표현할 수 있었습니다. 시각적 자료의 정확성 뿐만이 아니라 품질도 크게 향상되었음을 알 수 있었습니다. ChatGPT 도입으로 추천 질문 생성, 쿼리 작성, 보고서 작성, 그래프 작성 등 모든 작업 과정에서 효율성과 정확도가 크게 향상되었습니다. 평균적으로 작업 시간은 60~80% 단축되었으며, 수작업으로는 달성하기 어려운 수준의 데이터 정확성과 품질을 확보할 수 있었습니다. ChatGPT는 복잡한 작업을 단순화하고, 비전문가도 고품질 결과물을 도출할 수 있도록 지원하며, 보안 로그 분석의 주요 도구로 자리 잡을 수 있었습니다.
  • 시연/구동 영상
    실제 구동 영상

  • 나만의 활용 노하우
    공모작과 관련한 재미있는 에피소드

프로젝트를 진행하면서 ChatGPT를 활용한 로그 분석 과정에서 예상치 못한 재미있는 순간들이 많았습니다. 그중에서도 가장 기억에 남는 에피소드는 초기 단계에서 ChatGPT가 로그 데이터를 분석하며 예상 밖의 통찰을 제공했던 경험입니다. 처음 로그 데이터를 입력하고, "이 데이터를 기반으로 의심스러운 활동을 탐지해 줄 수 있을까?"라는 질문을 던졌을 때, ChatGPT는 우리가 의도한 것 이상으로 데이터를 해석하며 흥미로운 결과를 보여주었습니다.

예를 들어, "동일한 이벤트를 1시간 동안 50번 이상 호출한 로그를 찾아줘"라는 엉뚱한 조건을 제시했을 때, 단순히 조건에 부합하는 데이터를 반환하는 것을 넘어서 해당 이벤트가 발생한 이유를 유추하는 추가 정보까지 제공했습니다. 이 결과를 보며 ChatGPT가 단순한 데이터 처리 도구를 넘어 문제 해결의 동반자로 느껴지기도 했습니다. 이 순간은 팀원들 모두에게 놀라움과 흥미를 안겨준 특별한 경험이었습니다.

또한, Elasticsearch 쿼리 작성 단계에서 ChatGPT가 한 번 문법 오류를 낸 적이 있었습니다. 당시 오류를 발견하고, 조건을 명확히 지정해 문제를 다시 요청하자, ChatGPT는 빠르게 문제를 수정하며 올바른 쿼리를 생성했습니다. 이 과정을 통해 우리는 ChatGPT와의 소통 방식이 점점 정교해지고 있다는 것을 느꼈고, 효과적인 프롬프트를 설계하는 데 필요한 기술과 노하우를 쌓아갔습니다. 처음에는 단순히 명령을 실행하는 도구로 보였던 ChatGPT가, 이후에는 협력자로 느껴지기 시작한 계기였습니다.

이 프로젝트를 통해 가장 크게 배운 점은 "프롬프트의 품질이 결과물의 품질을 좌우한다" 는 사실이었습니다. 처음에는 ChatGPT의 결과물에만 의존했지만, 이후로는 "어떤 방식으로 질문을 구성해야 더 나은 결과를 얻을 수 있을까?"라는 관점에서 프롬프트를 설계하기 시작했습니다. 이러한 프롬프트 엔지니어링의 발전은 단순한 로그 분석을 넘어 데이터 시각화, 보고서 생성 같은 복잡한 작업도 효과적으로 수행할 수 있도록 했습니다.

ChatGPT를 단순히 명령을 실행하는 도구로 보는 것을 넘어서, 협력자로 활용하는 관점이 중요하다는 깨달음을 얻었습니다. 이러한 관점과 쌓아온 노하우 덕분에 팀은 이번 프로젝트를 더 높은 수준으로 완성할 수 있었고, 결과적으로 공모작의 완성도를 한 단계 끌어올리는 데 큰 역할을 했습니다.

이 공모작에 사용된 프로그램 #ChatGPT
ChatGPT 실력을 나도 키워보고 싶다면?