본문 바로가기
일반IT/IT보안

[실습] "로그가 너무 많아 토할 것 같아요" 🤮 AI로 방대한 시스템 로그에서 '비정상 행위'만 쏙 뽑아내기! 📉

by gasbugs 2025. 12. 14.

안녕하세요, 효율성을 사랑하는 보안 분석가 여러분! 🕵️‍♂️

지난 시간에 샌드박스에서 악성코드를 실행하고 ProcMon으로 로그를 수집했었죠?

그런데 막상 수집된 로그 파일을 열어보면... 10만 줄, 20만 줄... 끝도 없는 텍스트의 향연에 압도되곤 합니다. 😱

"이 많은 걸 언제 다 읽고 앉아있어? 여기서 해커가 한 짓만 어떻게 찾지?"

사람의 눈으로 이 '모래사장'에서 '바늘'을 찾는 건 불가능에 가깝습니다. 하지만 우리의 AI 조수에게는 식은 죽 먹기죠! 🥣

오늘은 방대한 시스템 로그(Syslog, ProcMon, Firewall Log 등)를 AI에게 던져주고, "정상적인 건 무시하고, 이상한 놈만 골라내줘!"라고 시키는 로그 필터링 및 이상 징후 탐지 실습을 진행하겠습니다.

 

 


1. 🚧 현실적인 문제: "AI야, 이거 다 읽어봐" (Context Limit)

시작하기 전에 중요한 점이 있습니다. ChatGPT나 Claude 같은 AI 모델은 한 번에 읽을 수 있는 글자 수(Token Limit)에 제한이 있습니다. 1GB짜리 로그 파일을 통째로 붙여넣으면 "너무 길어요!" 하고 뱉어냅니다.

그래서 우리는 '현명한 전략'이 필요합니다.

  1. 전처리 (Preprocessing): Python 등으로 명백한 정상 행위(예: Windows 시스템 기본 동작)를 1차로 걸러내거나,
  2. 분할 입력 (Chunking): 로그를 100~200줄씩 잘라서 입력하거나,
  3. 핵심 구간 추출: 의심스러운 시간대(악성코드 실행 직후 1분)의 로그만 발췌해서 입력합니다.

오늘 실습은 '핵심 구간 로그(약 50~100줄)'를 AI에게 분석 요청하는 방식으로 진행하겠습니다.


2. 📝 [실습 데이터] 혼란스러운 로그 예시

여러분이 ProcMon에서 긁어온 로그가 아래와 같이 섞여 있다고 가정해 봅시다. 정상과 악성이 뒤섞여 있습니다.

[Log Sample (Simulation)]

Plaintext

[INFO] 14:00:01 svchost.exe (PID: 892) - Network Connect 52.1.1.1:443 (Microsoft Update)
[INFO] 14:00:02 chrome.exe (PID: 4120) - WriteFile C:\Users\User\AppData\Local\Google\Cache...
[WARN] 14:00:05 powershell.exe (PID: 5521) - Process Create -Command "powershell -W Hidden -Enc aW1wb3J0..."
[INFO] 14:00:06 explorer.exe (PID: 1204) - ReadFile C:\Windows\System32\shell32.dll
[CRIT] 14:00:08 malware.exe (PID: 5521) - RegSetValue HKCU\Software\Microsoft\Windows\CurrentVersion\Run\Evil
[INFO] 14:00:10 kakaotalk.exe (PID: 3002) - Network Receive 203.21.1.1:8080
[WARN] 14:00:12 cmd.exe (PID: 6601) - Process Create "vssadmin.exe Delete Shadows /All /Quiet"

자, 이 텍스트 덩어리를 AI에게 가져가 봅시다.


3. 🧠 [프롬프트] "정상은 무시하고 비정상만 찾아줘"

단순히 "분석해줘"라고 하면 AI는 모든 줄을 설명하려 들 겁니다. "필터링(Filtering)"을 강력하게 요구해야 합니다.

📋 로그 분석 전용 프롬프트

[역할]

당신은 보안 운영 센터(SOC)의 시니어 위협 헌터(Threat Hunter)입니다.

[작업]

아래 제공된 시스템 로그(Log Data)를 분석하여 '비정상적이고 위협적인 행위(Anomalies)'만 추출하세요.

[필터링 규칙 - 중요!]

  1. 화이트리스트: 웹 브라우저 캐시 쓰기, 윈도우 업데이트, 메신저 통신 등 일반적인 사용자/시스템 행위는 철저히 무시(Ignore)하고 결과에 포함하지 마세요.
  2. 탐지 대상:
    • 난독화된 스크립트 실행 (Encoded Command)
    • 레지스트리 자동 실행 등록 (Persistence)
    • 백업 삭제 및 시스템 복구 무력화 시도
    • 알려지지 않은 프로세스의 의심스러운 네트워크 연결

[출력 형식]

분석 결과를 아래 포맷의 표(Table)로 정리하세요.

| 시간 | 프로세스 | 행위 요약 | 위협 수준(상/중/하) | 판단 근거 |

[로그 데이터]

(위의 Log Sample을 여기에 붙여넣기)


4. 🕵️‍♂️ [결과] AI가 걸러낸 '진짜 위협'

AI는 우리의 지시대로 chrome.exe, explorer.exe, svchost.exe 같은 노이즈(Noise)를 싹 걷어내고, 알맹이만 남겨줍니다.

🤖 AI 분석 결과 (예시)

🚨 위협 탐지 보고서

일반적인 시스템 행위(Chrome 캐시, 윈도우 업데이트, 카카오톡 등)를 제외하고, 보안 위협으로 의심되는 3건의 로그를 식별했습니다.

시간 프로세스 행위 요약 위협 수준 판단 근거
14:00:05 powershell.exe 난독화된 명령 실행 상 (Critical) -W Hidden -Enc 옵션은 사용자의 눈을 피하고 악성 코드를 실행할 때 주로 사용됨.
14:00:08 malware.exe 시작 프로그램 등록 상 (Critical) HKCU\...\Run 키에 값을 쓰는 것은 재부팅 후에도 악성코드를 지속 실행하기 위한 전형적인 기법(Persistence)임.
14:00:12 cmd.exe 섀도우 복사본 삭제 상 (Critical) vssadmin Delete Shadows는 랜섬웨어가 파일 복구를 막기 위해 수행하는 가장 대표적인 사전 작업임.

💡 종합 의견

해당 시스템은 랜섬웨어 또는 백도어에 감염된 것으로 강력히 의심됩니다. 특히 vssadmin 실행은 즉각적인 격리가 필요함을 시사합니다.


5. 💡 꿀팁: 대용량 로그 처리를 위한 '파이프라인' 구축

만약 로그가 수십만 줄이라면 어떻게 해야 할까요?

이럴 땐 Python 스크립트와 AI API를 연동하는 하이브리드 방식이 필요합니다.

  1. Python (1차 필터): findstr이나 grep 같은 로직으로 "Known Good" 프로세스(예: System, MsMpEng.exe)를 먼저 제거합니다. 데이터 양을 90% 줄일 수 있습니다.
  2. AI (2차 정밀 분석): 남은 10%의 '애매한 로그'만 AI에게 보내서 "이거 악성일까?"라고 물어봅니다.

💬 프롬프트 팁:

"나는 Python을 사용할 줄 알아. ProcMon.csv 파일에서 마이크로소프트 서명이 있는 프로세스는 제외하고, 나머지 의심스러운 프로세스만 남기는 Python 전처리 스크립트를 짜줘."

 

이렇게 요청하면 AI가 전처리 도구까지 만들어 줍니다! 🛠️


🎉 마치며: 숲을 보지 말고, 썩은 나무를 봐라!

오늘 우리는 '로그의 홍수' 속에서 허우적대지 않고, AI라는 필터를 통해 '위협'만 건져 올리는 방법을 배웠습니다.

  • Before: 10,000줄의 로그를 눈으로 보며 "이게 정상인가?" 고민함. 😵
  • After: AI가 요약해 준 5줄의 핵심 위협만 보고 대응함. 😎

이것이 바로 보안 관제(SOC)의 자동화이자, 스마트한 분석가의 업무 방식입니다.

자, 이제 우리는 악성코드의 코드(정적), 행동(동적), 그리고 로그(흔적)까지 모두 분석했습니다. 모든 퍼즐 조각이 모였습니다.

다음 시간에는 이 모든 조각을 하나로 맞춰, [최종 실습] "전문가 수준의 악성코드 분석 보고서 자동 생성"으로 대단원의 막을 내리겠습니다. 기대해 주세요! 👋