pile·
보안·NC소프트 DANBINC소프트 DANBI·

PC의 시스템 로그를 활용하여 위협 행위 탐지하기

엔씨소프트 단비 팀이 PC 시스템 이벤트 로그로 사용자의 '정상 상태' 를 정의하고, 거기서 벗어난 행위를 위협 후보로 탐지하는 방법을 실험한 기록이다. Doc2Vec 으로 로그 시퀀스를 벡터화하고, 그 벡터가 사용자 행동을 담고 있는지를 분류 모델로 검증한다.

핵심 포인트
  • 가설은 단순하다. 사용자마다 작업·생활 패턴에 따른 정상 상태가 있고, 악성 코드에 감염되면 그 범위를 벗어난 로그가 발생할 가능성이 높다.
  • Doc2Vec 은 구성 단어 분포가 비슷한 문서를 비슷한 벡터로 만든다. 로그 시퀀스를 문서로 보면 같은 사용자의 로그는 비슷한 벡터가 될 것이라는 발상이다.
  • 데이터는 14명이 쓰는 15대 PC 에서 100일간(2019-07-03 ~ 10-10) 수집했고, Carbon Black 엔드포인트 솔루션 센서의 json/LEEF key-value 로그를 썼다.
  • 전반기 10일은 시간 단위로, 후반기 50일은 일 단위로 로그 시퀀스를 잘라 30차원 벡터로 변환했다.
  • 분류 성능은 Macro F1 기준 전반기 0.83, 후반기 Logistic Regression 0.82·Random Forest 0.81 이었다.
상세 정리
  • 문제 배경으로 스피어피싱을 든다. 특정 개인·조직을 노려 위장 메일로 악성코드를 심으므로 방화벽 같은 경계 보안으로는 사전 차단이 어렵다.
  • 그래서 탐지 지점이 네트워크 경계에서 엔드포인트로 확장됐고, EDR 은 원천 예방보다 빠른 탐지와 초기 조치를 중시한다.
  • 판단 기준의 예시가 직관적이다. 인사팀 A씨의 PC 에서 새벽 2시에 쉘 스크립트로 전사 계좌 정보에 접근한 로그는 본인 패턴에서도, 인사팀의 일반적 행동 범위에서도 벗어난다.
  • Word2Vec 을 먼저 설명한 뒤 Doc2Vec 으로 넘어간다. Doc2Vec 은 단어들로 된 문서와 문서 ID 에 해당하는 paragraph vector 를 함께 학습한다.
  • 분절 기준의 근거: 출근·오전 근무·점심·오후 근무·퇴근 같은 반복성이 있고 근무일과 휴일, 요일별 차이도 있어 시간 단위와 일 단위 두 방식을 각각 시도했다.
  • 검증 설계: 학습기간 벡터로 어느 PC 에서 나온 것인지 분류하도록 학습시키고, 평가기간 벡터의 PC 를 맞히는지 확인했다.
  • 시각화: 30차원을 t-SNE 로 2차원에 도시했더니 사용자별로 클러스터가 형성됐다. 일 단위는 포인트 수가 적어 클러스터 간 거리가 더 벌어졌다.
  • 오분류 추적이 이 글의 압권이다. 전반기에는 User 13, 후반기에는 User 12 의 로그만 대부분 틀렸다.
  • 인터뷰 결과 User 13 은 PC 두 대를 쓰는데 학습기간에는 보안 솔루션이 설치된 PC 를, 평가기간에는 설치되지 않은 PC 를 주로 썼다. User 12 도 9월 말부터 솔루션 미설치 PC 를 쓰는 업무로 바뀌었다.
  • 추정 검증: User 12 의 진술대로 학습기간을 9월 중순까지, 평가기간을 9월 하순으로 다시 잘랐더니 전체 성능이 Macro F1 0.93~0.95 로 올랐다.
  • 더 정확히는 9월 24~27일 나흘은 맞히고 28~30일 사흘은 틀렸는데, 이는 "9월 말에 업무 방식이 바뀌었다" 는 응답과 정확히 맞아떨어진다.
  • 한계 ①: 수집 대상이 한 실의 한정된 인원이라, 대상이 늘면 분류 범주가 늘어 성능 저하와 학습 시간·리소스 증가가 따른다.
  • 한계 ②: 벡터가 행동 변화에 매우 민감해 단순한 업무 패턴 변화도 위협으로 잡는 false positive 가 생긴다. 탐지 시스템이 '양치기 소년' 이 되면 담당자가 알람을 믿지 않게 된다.
  • 개선 방향: 개인 단위뿐 아니라 소속 조직·직무 단위의 정상 범위를 함께 두고, 조직 패턴에서 극단적으로 벗어날 때 탐지하면 오탐도 줄고 만들 모델 수도 줄어 관리 비용이 낮아진다.
왜 읽나룰 기반이 아닌 방식으로 내부 위협을 탐지하려는 보안·데이터 담당자에게 임베딩 기반 접근의 가능성과 오탐이라는 실제 벽을 함께 보여준다.
NC소프트 DANBI
NC소프트 DANBI 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 보안·gitlab-engGitLab Blog·

    Serena MCP 에이전트의 치명적 원격 코드 실행 취약점 분석

    GitLab 보안팀이 AI 코딩 에이전트 Serena(월 PyPI 다운로드 13.6만 건)에서 치명적 원격 코드 실행 취약점을 발견했다. Jinja2 비샌드박스 환경과 신뢰 모델의 미검사 경로가 결합해 개발자가 악의적 저장소를 열기만 해도 코드가 실행된다. serena-agent 1.7.0에서 SandboxedEnvironment 교체로 수정 완료됐다.

    요약 이어보기
    #mcp#security#rce+2