[논문 리뷰] Evading network-level emulation
이 논문은 악성 코드를 탐지하기 위해 제어된 환경에서 의심스러운 코드를 동적으로 실행하는 네트워크 수준의 에뮬레이션 기반 침입 탐지 시스템(IPS)에서의 회피 기법을 조사한다. 시간 기반 지연, FPU/SSE 명령어 오용, 메모리 조작 등의 실용적인 방법을 제시하며, 심지어 고도로 발전한 히ュ리스틱 기반 탐지 기술이라도 최소한의 코드 변경으로 회피될 수 있음을 입증한다.
Recently more and more attention has been paid to the intrusion detection systems (IDS) which don't rely on signature based detection approach. Such solutions try to increase their defense level by using heuristics detection methods like network-level emulation. This technique allows the intrusion detection systems to stop unknown threats, which normally couldn't be stopped by standard signature detection techniques. In this article author will describe general concepts of network-level emulation technique including its advantages and disadvantages (weak sides) together with providing potential countermeasures against this type of detection method.
연구 동기 및 목표
- 네트워크 수준의 에뮬레이션 기반 침입 탐지 시스템의 보안 가정과 한계를 분석하는 것.
- 에뮬레이션 기반 악성 코드 탐지 기술을 우회할 수 있는 실용적인 회피 기법을 식별하고 구현하는 것.
- 시간 공격, 명령어 수준의 조작, 간접적 코드 실행을 통한 에뮬레이션 우회 가능성 평가하는 것.
- 현재의 에뮬레이션 기반 IDS가 단순하고 저비용의 오버헤드를 가지는 오버클로저 기법에 얼마나 취약한지 부각하는 것.
- 향후 더 강력한 에뮬레이션에 강건한 탐지 시스템 개발을 위한 이론적 기반을 제공하는 것.
제안 방법
- 네트워크 데이터 버퍼의 모든 바이트를 잠재적 쉘코드 진입점으로 간주하여 실행 행동을 분석한다.
- RDTSC나 루프 명령어를 이용한 시간 기반 지연을 통해 에뮬레이터의 시간 예산을 고갈시키고 조기 종료를 유도한다.
- FPU 및 SSE 명령어의 완전하거나 잘못된 에뮬레이션을 악용하여 에뮬레이션 실패 또는 이격을 유도한다.
- 네이티브 OS API 호출(예: ZwWriteVirtualMemory)을 활용하여 에뮬레이터의 가시성에서 벗어나 메모리 쓰기를 수행한다.
- Prefetch Input Queue(PIQ)를 이용하여 자가 오버랩 명령어 처리 오류로 인해 에뮬레이터 상태가 손상되는 비정상 동작을 유도한다.
- 쉘코드 디코딩 논리를 여러 패킷에 분산시켜 단일 스트림에서의 전체 코드 재구성 방지를 통해 탐지 회피를 위한 스웜 공격 패턴을 적용한다.
실험 결과
연구 질문
- RQ1RDTSC나 루프 명령어를 이용한 시간 기반 지연이 네트워크 수준의 에뮬레이터의 시간 예산을 얼마나 효과적으로 고갈시키는가?
- RQ2FPU 및 SSE 명령어의 완전하거나 잘못된 에뮬레이션은 탐지 회피에 얼마나 기여하는가?
- RQ3네이티브 OS API 호출을 사용하여 에뮬레이터의 시각에서 벗어나 메모리 쓰기를 수행할 수 있는가?
- RQ4명령어 수준의 부작용(예: PIQ 손상)은 에뮬레이션 기반 분석의 신뢰성에 어떤 영향을 미치는가?
- RQ5스웜 공격을 통해 여러 패킷에 걸쳐 쉘코드를 분산 전송하면 네트워크 수준의 에뮬레이션 시스템에서 탐지를 회피할 수 있는가?
주요 결과
- RDTSC나 루프 명령어를 이용한 시간 기반 지연은 에뮬레이터의 시간 예산을 효과적으로 고갈시켜 전체 코드 분석 이전에 조기 종료를 유도할 수 있다.
- FPU 및 SSE 명령어의 완전하거나 잘못된 에뮬레이션은 특히 쉘코드가 그 결과에 의존할 경우 에뮬레이션 실패를 유도할 수 있다.
- ZwWriteVirtualMemory와 같은 네이티브 API 호출은 에뮬레이터에서 가시성이 없이 메모리 쓰기를 수행할 수 있어 코드 인젝션을 회피할 수 있다.
- Prefetch Input Queue(PIQ)는 자가 오버랩 명령어를 잘못 처리함으로써 에뮬레이터 상태를 손상시킬 수 있다.
- 쉘코드와 디코더 논리를 여러 패킷에 분산시켜 전송하는 스웜 공격은 단일 스트림에서의 전체 코드 재구성 방지를 통해 탐지를 회피할 수 있다.
- 히ュ리스틱 기반 탐지 기술이 적용된 경우에도 네트워크 수준의 에뮬레이션은 여전히 단순하고 저복잡도의 오버클로저 기법에 취약하며, 이는 에뮬레이터의 한계를 악용하는 것이다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.