메타모픽 바이러스 인식을 위한 고유바이러스 기법
초록
본 논문은 메타모픽 바이러스가 코드 변형을 통해 기존 정적·동적 탐지 방식을 회피하는 문제를 다룬다. 변형 기법으로는 무의미 코드 삽입, 명령어 치환, 서브루틴 순서 변경, 레지스터 재명명 등이 소개된다. 기존 상용 안티바이러스와 학술적 탐지 방법을 조사한 뒤, 얼굴 인식에 널리 쓰이는 Eigenfaces 방식을 차용한 ‘Eigenvirus’ 모델을 제안한다. PCA 기반 특징 추출과 비지도 학습을 통해 바이러스 샘플을 고유벡터 공간에 매핑하고, 실험 결과를 주요 AV 엔진과 비교하여 제안 방법의 효율성을 입증한다. 향후 확장 가능성과 개선 방향도 논의한다.
상세 분석
메타모픽 바이러스는 코드 자체를 지속적으로 재구성함으로써 서명 기반 탐지와 행동 기반 에뮬레이션을 무력화한다. 논문은 먼저 변형 기법을 네 가지 범주로 정리한다. 첫째, 무의미 코드 삽입은 NOP, 무조건 점프, 무작위 데이터 삽입 등을 통해 바이러스 길이를 늘리면서 패턴을 흐린다. 둘째, 명령어 치환은 동일한 연산을 수행하는 여러 어셈블리 명령어 집합을 교체함으로써 opcode 시퀀스를 변형한다. 셋째, 서브루틴 순서 변경은 함수 호출 그래프를 재구성해 흐름을 뒤섞으며, 호출 주소를 동적으로 계산하도록 만든다. 넷째, 레지스터 재명명은 레지스터 할당을 무작위로 바꾸어 레지스터 사용 패턴을 파괴한다. 이러한 변형은 각각 독립적으로 혹은 복합적으로 적용돼 탐지 난이도를 급격히 상승시킨다.
기존 탐지 기술을 살펴보면, 정적 서명은 변형 전후의 바이트 시퀀스를 직접 매칭하므로 메타모픽에 취약하고, 동적 에뮬레이션은 실행 흐름을 추적하지만 변형된 코드가 실행 시점에만 나타나는 경우 회피가 가능하다. 상용 AV는 휴리스틱 엔진과 행동 기반 샌드박스를 결합해 일부 변형을 포착하지만, 높은 오탐률과 성능 비용이 문제다. 학술적 접근으로는 코드 그래프 매칭, 통계적 n-gram 분석, 머신러닝 기반 분류기 등이 제안됐지만, 대부분이 라벨이 있는 학습 데이터를 필요로 하며, 새로운 변형에 대한 일반화가 제한적이다.
본 논문이 제안하는 ‘Eigenvirus’는 얼굴 인식에서 사용되는 Eigenfaces 개념을 차용한다. 먼저 바이러스 샘플을 바이트 레벨 혹은 명령어 레벨로 정규화하고, 고정된 길이의 벡터로 변환한다. 이후 전체 샘플 집합에 대해 주성분 분석(PCA)을 수행해 주요 변동 방향을 나타내는 고유벡터(‘고유바이러스’)를 추출한다. 각 샘플은 이 고유벡터 공간에 투영되어 저차원 특징값을 얻으며, 이 특징값은 변형에 강인한 패턴을 내포한다. 비지도 학습 단계에서는 군집화(예: K-means) 혹은 거리 기반 임계값을 설정해 새로운 파일이 기존 군집에 속하는지 판단한다.
실험에서는 대표적인 메타모픽 바이러스인 Win32/MetaMorph와 Zmist 변형 샘플을 1,200개 수집하고, 정상 프로그램 1,500개를 대조군으로 사용했다. PCA 차원 축소 후 30개의 고유벡터를 선택했으며, 5‑fold 교차 검증을 통해 평균 검출률 94.3%, 오탐률 2.1%를 기록했다. 주요 상용 AV 엔진(예: Kaspersky, Symantec, Avast)과 비교했을 때, 일부 최신 변형에 대해 동일하거나 더 높은 검출률을 보였으며, 특히 코드 삽입 비율이 높은 샘플에서도 안정적인 성능을 유지했다.
제한점으로는 고유벡터 수와 샘플 크기에 따라 연산 비용이 급증할 수 있다는 점, 그리고 훈련 데이터에 포함되지 않은 완전 새로운 변형에 대한 일반화가 아직 충분히 검증되지 않았다는 점을 들었다. 향후 연구에서는 딥러닝 기반 자동 특징 추출, 온라인 업데이트 메커니즘, 그리고 다중 레이어 PCA를 통한 계층적 모델링을 도입해 실시간 탐지와 확장성을 개선할 계획이다.
댓글 및 학술 토론
Loading comments...
의견 남기기