[논문 리뷰] Generic Unpacking of Self-modifying, Aggressive, Packed Binary Programs
이 논문은 Windows XP에서 자기 수정 기능을 갖춘 공격적인 압축된 악성 바이너리 파일을 해제하기 위한 일반적이고 사용자 모드(dynamic binary instrumentation, DBI) 프레임워크인 MmmBop을 제시한다. 이 프레임워크는 역분석 기법을 회피하고 코드 캐시 및 기본 블록 전달를 모니터링하여 원래의 진입점을 탐지함으로써, PESpin 및 tElock와 같은 대부분의 압축기에서 5초 이내로 해제를 달성한다.
Nowadays most of the malware applications are either packed or protected. This techniques are applied especially to evade signature based detectors and also to complicate the job of reverse engineers or security analysts. The time one must spend on unpacking or decrypting malware layers is often very long and in fact remains the most complicated task in the overall process of malware analysis. In this report author proposes MmmBop as a relatively new concept of using dynamic binary instrumentation techniques for unpacking and bypassing detection by self-modifying and highly aggressive packed binary code. MmmBop is able to deal with most of the known and unknown packing algorithms and it is also suitable to successfully bypass most of currently used anti-reversing tricks. This framework does not depend on any other 3rd party software and it is developed entirely in user mode (ring3). MmmBop supports the IA-32 architecture and it is targeted for Microsoft Windows XP, some of the further deliberations will be referring directly to this operating system.
연구 동기 및 목표
- 기존 역분석 기법과 시그니처 기반 탐지 방식을 회피하는 자기 수정 기능을 갖춘 공격적인 압축기를 해제하는 데 도전하는 것.
- 제3자 프레임워크나 디버깅 API에 의존하지 않고도 알려진 및 알려지지 않은 압축 알고리즘에 모두 적용 가능한 일반적인 해제 솔루션을 개발하는 것.
- 현대 악성 코드에서 흔히 사용되는 체크섬, 디버거 감지, 코드 오브스큐레이션과 같은 역분석 방지 기법을 회피하는 것.
- 가상 머신, 에뮬레이션, 운영체제 수준의 수정 없이도 사용자 모드(ring3)에서 투명하고 안정적인 해제를 가능하게 하는 것.
- 복잡한 제어 흐름과 코드 변형에도 불구하고 원래의 진입점(OEP)을 높은 정확도로 탐지하는 데 성능을 극대화하는 것.
제안 방법
- 실시간으로 실행 흐름을 추적하고 코드 캐시 동작을 모니터링하기 위해 동적 바이너리 인스트루멘테이션 기반의 고유한 DBI 엔진을 사용한다.
- 원본 파일을 수정하지 않고도 대상 프로세스 공간에 DBI 엔진을 로드하기 위해 위치에 독립적인 인젝터 스텁을 구현한다.
- 기본 블록 전달를 모니터링하고, 인스트루멘테이션 또는 Adler-32 체크섬을 사용하여 코드 수정을 탐지함으로써 로더 스텁이 페이로드를 해제할 때를 식별한다.
- 과도한 최적화(예: 간접 브랜치 연결)를 피하기 위해 코드 캐시에 한 번에 하나의 코드 블록만 저장한다.
- 에뮬레이션 대신 네이티브 코드 실행을 활용하여 해제 중 성능 저하를 최소화한다.
- 로더 스텁이 완료된 후에 해제된 코드가 실행되기 시작할 때를 식별하여 원래의 진입점을 탐지한다.
실험 결과
연구 질문
- RQ1외부 프레임워크에 의존하지 않고도 일반적이고 사용자 모드의 동적 바이너리 인스트루멘테이션 프레임워크가 자기 수정 기능을 갖춘 공격적인 압축기를 효과적으로 해제할 수 있는가?
- RQ2디버거 감지 및 코드 오브스큐레이션 기법이 존재하는 환경에서 MmmBop은 어떻게 원래의 진입점을 탐지하는가?
- RQ3특히 높은 제어 전달 빈도를 갖는 바이너리의 경우, MmmBop은 다양한 종류의 압축 바이너리 해제 시 어떤 성능 오버헤드를 유발하는가?
- RQ4Pin과 Saffron과 같은 기존 프레임워크는 왜 tElock 및 PESpin과 같은 공격적인 압축기를 해제하지 못하는가?
- RQ5MmmBop은 알려지지 않은 또는 이전에 본 적이 없는 압축 알고리즘을 어느 정도 처리할 수 있는가?
주요 결과
- MmmBop은 Adler-32 체크섬 방법을 사용하여 PESpin(4.6084초), tElock(1.2804초), yC(0.7611초)와 같은 공격적인 압축기로 보호된 바이너리를 성공적으로 해제하였다.
- 인스트루멘테이션 기반 접근법과 Adler-32 체크섬 방법은 코드 수정 탐지에서 유사한 성능을 보였으며, 성능 차이가 미미했다.
- PESpin은 기본 블록 전달 수가 2,364,189회에 달해 가장 해제 시간이 길었으며, 이는 제어 흐름 복잡도와 실행 시간 사이에 강한 상관관계가 있음을 시사한다.
- MmmBop은 UPX(0.0759초)를 포함한 모든 테스트된 압축기에서 5초 이내 성능을 보이며 실제 악성 코드 분석에 높은 효율성을 입증하였다.
- 특히 Pin의 제한에 걸리는 공격적인 압축기에서, MmmBop은 Pin 기반 솔루션인 Saffron과 Renovo보다 자기 수정 코드 처리에서 뛰어난 성능을 보였다.
- MmmBop은 메모리 인젝션을 확인하는 압축기의 탐지로부터 벗어나며, 사용자 모드에서만 작동하고 시스템 안정성에 영향을 주지 않기 때문에 탐지되지 않는다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.