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

[정리] "AI가 범인이라는데, 진짜일까?" 🤔 AI 분석의 오탐(False Positive)과 인간의 역할

by gasbugs 2025. 12. 14.

안녕하세요, 밤늦게까지 연구에 매진하는 보안 분석가 여러분! 🌙

오늘 하루, 정말 숨 가쁘게 달려왔습니다. 난독화된 코드를 자르고(Chunking), 청소하고(Cleaning), 펼치고(Deobfuscation), 미래까지 예측(Prediction)했죠. AI라는 강력한 무기 덕분에 예전 같으면 3일은 걸렸을 일을 단 3시간 만에 해치운 기분입니다. ⚡️

하지만, 1일차 과정을 마무리하기 전에 우리는 가장 중요한 '토론'을 해야 합니다.

"과연 AI의 분석 결과를 100% 믿어도 될까요?"

오늘은 AI가 저지를 수 있는 치명적인 실수, 오탐(False Positive)의 가능성을 냉정하게 짚어보고, 우리가 오늘 배운 기술들을 총정리하는 시간을 갖겠습니다. ☕️


1. 오탐(False Positive)이란? : 양치기 소년의 경고 🚨

보안 관제나 분석 업무에서 가장 골치 아픈 것이 바로 오탐입니다.

  • 정탐 (True Positive): 도둑이 들어와서 경보가 울림. (Good) ✅
  • 오탐 (False Positive): 택배 기사님이 왔는데 도둑이라고 경보가 울림. (Bad) ❌

AI는 기본적으로 '패턴 매칭''확률'에 기반합니다. 악성코드와 비슷한 패턴이 보이면 일단 "위험해!"라고 소리치고 보는 경향이 있죠.

위 다이어그램처럼, 보안 시스템(또는 AI)은 실제로는 무해한(Benign) 파일이지만 악성(Malicious)으로 잘못 판단하는 영역이 반드시 존재합니다. 이를 걸러내는 것이 인간 분석가의 핵심 역량입니다.


2. AI가 자주 범하는 오탐 사례 3가지 🤦‍♂️

우리가 오늘 실습한 내용 중에서도 AI가 실수할 뻔한 순간들이 있었습니다. 어떤 경우에 AI가 헛다리를 짚을까요?

① 관리 도구 vs 악성 도구 (Context의 부재)

  • 상황: PsExec나 PowerShell 원격 명령어를 사용하는 코드.
  • AI의 판단: "원격 제어를 시도하니 악성코드(Backdoor)입니다!" 🚨
  • 진실: 알고 보니 사내 IT 팀이 PC 점검을 위해 배포한 정상적인 관리 스크립트였습니다.
  • 이유: AI는 코드의 '기능'은 알지만, 그 코드가 실행되는 '맥락(Context: 누가, 왜 썼는가)'은 모릅니다.

② 패킹(Packing)과 보호 기법

  • 상황: 상용 소프트웨어가 저작권 보호를 위해 코드를 암호화(Themida 등) 해놓음.
  • AI의 판단: "내부를 볼 수 없게 꽁꽁 숨겨놨네요? 이건 무조건 랜섬웨어입니다." 🚨
  • 진실: 그냥 정품 게임 실행 파일이었습니다.
  • 이유: 악성코드도, 정품 소프트웨어도 '분석 방해' 기술을 쓰기 때문에 AI가 혼동하기 쉽습니다.

③ 할루시네이션 (Hallucination)

  • 상황: 아주 드문 어셈블리 명령어나 난해한 난독화 기법 등장.
  • AI의 판단: (모르겠으니까 그럴듯하게) "이건 최신 APT 공격 그룹인 Lazarus의 시그니처와 일치합니다." 🚨
  • 진실: 그냥 개발자가 실수로 넣은 더미 코드였습니다.
  • 이유: 생성형 AI는 '모른다'고 하기보다 '그럴듯한 거짓말'을 지어내는 습성이 있습니다.

3. 오탐을 검증하는 '휴먼 인 더 루프(Human in the Loop)' 🛡️

AI가 "이거 악성이에요(99%)"라고 보고서를 올렸을 때, 우리는 어떻게 검증해야 할까요?

  1. 크로스 체크 (Cross-Check):
    • AI가 지목한 파일 해시(Hash)를 VirusTotal이나 AlienVault 같은 위협 인텔리전스(TI)에 검색해 봅니다. 다른 백신들도 탐지하나요?
  2. 디지털 서명 확인:
    • Microsoft, Adobe 같은 신뢰할 수 있는 기관의 디지털 서명(Digital Signature)이 유효한가요? 서명이 깨지지 않았다면 정상일 확률이 높습니다.
  3. 동적 분석 병행:
    • AI의 예측(정적 분석)만 믿지 말고, 안전한 샌드박스에서 실제로 실행해 봅니다. AI는 "파일 삭제"라고 했지만, 실제로는 "임시 파일 청소"일 수도 있습니다.

4. [1일차 총정리] 우리가 오늘 확보한 기술들 🎒

오늘 우리는 거대한 악성코드라는 산을 넘기 위해 다음과 같은 베이스캠프들을 구축했습니다.

  • Step 1. [이론] 적을 알기: 악성 스크립트가 숨는 법(난독화, 인코딩)과 C언어-어셈블리 매핑 구조를 이해했습니다.
  • Step 2. [전처리] 먹기 좋게 자르기: AI가 소화불량에 걸리지 않도록 코드를 청크(Chunk)로 나누는 법을 익혔습니다.
  • Step 3. [정제] 쓰레기 치우기: 분석을 방해하는 더미 코드(Junk Code)를 제거하고, 암호 같은 변수명을 예쁘게 바꿨습니다(Renaming).
  • Step 4. [해독] 꼬인 줄 풀기: 스파게티처럼 꼬인 제어 흐름(Control Flow Flattening)을 AI를 통해 평문으로 폈습니다.
  • Step 5. [예측] 미래 보기: 코드를 실행하지 않고도 결과를 시뮬레이션(Emulation)하여 C2 주소를 알아냈습니다.
  • Step 6. [검증] 의심하기: (지금 하는 것) AI의 결과를 맹신하지 않고 오탐 가능성을 검토하는 비판적 사고를 장착했습니다.

🚀 다음 내용 예고: 분석의 완성, 보고서 작성 📄

이제 분석은 끝났습니다. 내 손엔 해독된 코드와 AI의 분석 결과, 그리고 나의 검증 소견이 들려있습니다.

하지만 "보고하지 않은 분석은 분석하지 않은 것과 같다"는 말이 있죠. 내일 2일차 과정에서는 이 모든 데이터를 통합하여 경영진과 기술팀 모두를 만족시키는 "완벽한 악성코드 침해 사고 분석 보고서"를 AI로 자동 생성하는 마법을 부려보겠습니다.

오늘 하루 정말 고생 많으셨습니다! 머리 식히시고 내일 뵙겠습니다! 👋✨