속성 자동자를 활용한 악성코드 행동 탐지

속성 자동자를 활용한 악성코드 행동 탐지

초록

본 논문은 악성코드 행동 탐지를 위해 두 단계 구조를 제안한다. 첫 번째 단계는 플랫폼·언어에 특화된 추상화 레이어로, 시스템 호출·API·인자를 분석해 객체와 동작을 악성코드 라이프사이클에 맞게 분류한다. 두 번째 단계는 추상화된 정보를 입력으로 받아 속성‑문법(attribute‑grammar) 기반의 병렬 자동화 파서를 이용해 탐지를 수행한다. 구현은 네이티브 시스템 호출 트레이스와 VBScript 스크립트 두 가지 추상화 모듈을 만들었으며, 실험 결과 스크립트 파일에서 89%의 탐지율(거짓 양성 거의 없음), 프로세스 트레이스에서는 51%의 탐지율을 기록했다.

상세 분석

이 논문은 악성코드 행동 기반 탐지 분야에서 “추상화‑탐지” 이중 구조를 제시함으로써 기존의 플랫폼·언어 종속적 탐지기의 한계를 극복하려는 시도를 보인다. 첫 번째 추상화 레이어는 실제 실행 환경에서 수집된 저수준 데이터를 고수준 의미론적 요소로 변환한다. 여기서는 시스템 호출, API 이름, 인자값 등을 “객체”(파일, 레지스트리, 네트워크 등)와 “동작”(읽기, 쓰기, 실행, 전송 등)으로 매핑하고, 악성코드 라이프사이클 단계(감염, 은폐, 전파, 명령·제어 등)와 연계한다. 이 과정에서 연구진은 “목적 기반 분류”라는 개념을 도입해 동일한 API라도 사용 맥락에 따라 다른 의미를 부여한다는 점이 눈에 띈다. 예를 들어, CreateFile 호출이 임시 파일을 생성하는 경우와 시스템 파일을 덮어쓰는 경우를 구분해 각각 “임시 파일 생성”과 “시스템 파일 변조”라는 객체 유형으로 라벨링한다.

두 번째 탐지 레이어는 속성‑문법(attribute‑grammar)과 병렬 자동화(parallel automata) 파서를 결합한다. 속성‑문법은 전통적인 문법 규칙에 의미적 속성을 추가해, 파싱 과정에서 객체 타입과 데이터 흐름(바인딩)을 동적으로 추론한다. 논문에서는 이 속성을 “객체 타입 규칙”과 “데이터 흐름 규칙”으로 구분하고, 파서가 규칙을 만족할 때마다 탐지 트리거를 발생시킨다. 병렬 자동화는 여러 자동화 기계가 동시에 동작하도록 설계돼, 복잡한 행동 시퀀스(예: 파일 생성 → 레지스트리 수정 → 네트워크 전송)를 실시간에 가까운 속도로 분석한다. 이 구조는 추상화 레이어가 제공하는 고수준 시퀀스를 그대로 활용하면서도, 새로운 언어나 플랫폼에 대한 추가 추상화 모듈만 구현하면 기존 탐지 로직을 재사용할 수 있다는 장점을 가진다.

실험에서는 두 가지 추상화 모듈을 구현하였다. 첫 번째는 네이티브 코드의 시스템 호출 트레이스를 수집·분석하는 모듈이며, 두 번째는 VBScript 인터프리터가 실행하는 스크립트 명령을 캡처하는 모듈이다. 스크립트 모듈은 특히 동적 코드 생성·평가(evaluation)와 같은 스크립트 특유의 은폐 기법을 효과적으로 포착했다. 실험 결과, 스크립트 파일에 대해 89%의 탐지율을 달성했으며, 거짓 양성은 거의 없었다. 반면, 프로세스 트레이스에서는 51%의 탐지율에 그쳤는데, 이는 수집 도구의 제한(예: 커널 레벨에서의 완전한 트레이스 미포함)과 일부 고급 은폐 기법(루프 인젝션, API 혼용) 때문으로 해석된다.

핵심 인사이트는 다음과 같다. 첫째, 행동을 “목적 기반”으로 재구성하면 동일 API라도 악성·정상 구분이 명확해진다. 둘째, 속성‑문법을 활용한 파싱은 정형화된 규칙 기반 탐지와 동적 데이터 흐름 추적을 동시에 수행할 수 있어, 복합적인 악성 행위 패턴을 높은 정확도로 탐지한다. 셋째, 이중 구조는 새로운 언어나 플랫폼에 대한 확장성을 보장한다; 추상화 레이어만 교체하면 기존 탐지 엔진을 그대로 재사용할 수 있다. 마지막으로, 현재 구현은 아직 초기 단계이며, 더 정교한 트레이스 수집 및 고급 자동화 기법(예: 상태 기반 자동화, 머신러닝 기반 속성 가중치)과 결합하면 탐지율을 크게 향상시킬 여지가 있다.