[논문 리뷰] Similarity-based matching meets Malware Diversity
이 논문은 악성코드 바이너리의 코드와 데이터 양쪽을 무작위로 변경하여 유사도 기반 탐지 기법을 무력화시키는 악성코드 다양성 기법을 소개한다. LLVM 기반 다중컴파일러를 활용해 명령어 교체, 재정렬, 불필요 코드 삽입 및 데이터 인코딩을 적용함으로써, 저자들은 다각화된 악성코드 인스턴스가 근본적으로 공통 부분이나 구조적 특징을 거의 공유하지 않음을 입증하였으며, 이는 bindiff와 같은 고급 도구를 사용하더라도 서명 기반 및 유사도 기반 탐지를 회피할 수 있음을 보여준다.
Similarity metrics, e.g., signatures as used by anti-virus products, are the dominant technique to detect if a given binary is malware. The underlying assumption of this approach is that all instances of a malware (or even malware family) will be similar to each other. Software diversification is a probabilistic technique that uses code and data randomization and expressiveness in the target instruction set to generate large amounts of functionally equivalent but different binaries. Malware diversity builds on software diversity and ensures that any two diversified instances of the same malware have low similarity (according to a set of similarity metrics). An LLVM-based prototype implementation diversifies both code and data of binaries and our evaluation shows that signatures based on similarity only match one or few instances in a pool of diversified binaries generated from the same source code.
연구 동기 및 목표
- 진행 중인 악성코드 가족이 공통 소스 코드를 재사용함에 따라 유사도 기반 악성코드 탐지의 취약성을 해결하기 위해.
- 소프트웨어 다각화 기법이 악성코드 작성자에 의해 재사용되어 바이너리 유사도를 낮춤으로써 탐지를 회피할 수 있는지 조사하기 위해.
- 악성코드 다각화 엔진의 프로토타입이 악성코드 방어 및 분석에서 널리 쓰이는 공통 유사도 메트릭을 얼마나 효과적으로 무력화하는지 평가하기 위해.
- 체계적인 코드 및 데이터 무작위화를 통해 거의 무한한 수의 고유한 악성코드 인스턴스를 생성할 수 있는지의 가능성을 탐색하기 위해.
제안 방법
- LLVM 기반 다중컴파일러를 수정하여 바이너리의 코드 영역과 데이터 영역 양쪽에 악성코드 전용 다각화를 지원하도록 확장한다.
- 명령어 수준의 변환(교체, 재정렬, 불필요 코드 삽입)을 적용하여 바이너리 수준의 다양성을 증가시킨다.
- 기본 블록 재정렬 및 임의로 생성된 워핑 함수를 사용한 함수 호출 오브스컬피케이션을 통한 제어 흐름 다각화를 구현한다.
- 여러 가지 데이터 인코딩 기법을 사용하여 데이터 구조 및 상수를 다각화함으로써 데이터 기반 서명 매칭을 방지한다.
- 다양한 메트릭을 사용해 유사도를 평가한다: 공통 부분 수열 길이, bindiff를 통한 구조적 유사도, 바이트 수준의 유사도.
- 표준화 기법(예: 명령어 히스토GRAM, 제어 흐름 그래프 매칭)을 활용해 다각화된 바이너리가 공통 소스로 복원될 수 있는지 평가한다.
실험 결과
연구 질문
- RQ1기능적으로 동일한 악성코드 바이너리 간의 유사도가 일반적인 유사도 메트릭을 기준으로 얼마나 감소하는가?
- RQ2bindiff 및 ClamAV와 같은 기존 악성코드 탐지 도구는 다각화된 악성코드 인스턴스를 동일한 가족으로 여전히 식별할 수 있는가?
- RQ3구조적 유사도 메트릭(예: bindiff)은 다각화된 악성코드를 탐지하는 데 얼마나 효과적인가, 그리고 그 계산적 및 탐지 한계는 무엇인가?
- RQ4다각화된 바이너리의 표준화가 공통 표현으로 복원될 수 있는가, 그리고 이는 서명 기반 탐지의 신뢰성에 어떤 영향을 미치는가?
주요 결과
- 다각화된 악성코드 인스턴스 간의 최장 공통 부분 수열의 평균 길이가 10바이트 미만이었으며, 이는 서명 기반 탐지가 효과가 없음을 의미한다.
- bindiff는 다각화된 바이너리 간의 구조적 유사도를 매우 낮게 보고하였으며, 비다각화된 변종과 비교해 유사도 점수가 크게 떨어졌다.
- 시스템 라이브러리(예: libc) 호출은 잔류하는 구조적 유사도의 주요 원인이었으며, 향후 다각화의 핵심 대상임을 시사한다.
- 라이브러리 호출을 위한 워핑 함수 사용이 bindiff의 공통성 탐지 능력을 크게 감소시켰으며, 이는 다양성을 극대화하는 데 유망한 방향성을 보여준다.
- 명령어 히스토GRAM 및 제어 흐름 그래프 매칭을 통한 바이너리 표준화는 일부 변환(예: nop 삽입, 명령어 재정렬)에 대해서는 가능했지만, 유해하지 않은 코드에서 유래한 불필요 코드 삽입에는 적용되지 않았다.
- 악성코드 다양성은 컴파일러 수준의 자유도를 활용하여 유사도 기반 탐지를 효과적으로 회피하며, 거의 무한한 수의 고유한 악성코드 인스턴스 생성이 가능하다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.