[Pack/UnPack]엔트로피 실행 압축 확인&해제 기법

|

 

최근의 봇이나 웜 등의 악성코드들은, 안티 바이러스 프로그램을 회피하기 위해서 실행 압축 등의 코드 혼란 기법을 사용하고 있다. 이러한 기술들은 악성코드를 분석하고자 하는 인원들에게는 매우 환영받기 어려운 것들로 ㅜㅜ  이러한 기술들을 통해 악성코드의 탐지 및 방어는 점점 더 어려워 지고 있다.

여기서는 이러한 실행압축 기술의 분석에 응용 가능한 엔트로피 분석을 이용한 범용적인 압축해제 기법에 대해 다룬다.

 

실행압축이란, 실행 파일을 압축하여 파일의 크기를 줄이고, 파일의 분석을 어렵게 하는 기술로 실행압축 파일은 크게 실행 압축 해제 부분과 실제로 실행되는 부분으로 나눌 수 있다.

여기서 나오는 알고 넘어가야할 개념이 OEP(Original Entry Point)인데, OEP란 실행 압축 파일이 스스로 실행 압축을 해제한 뒤 처음으로 실행하는 명령어의 주소를 일컫는 용어로, 원래의 EP(Entry Point)를 말한다. OEP가 중요한 이유는 실행압축된 파일의 분석을 위해서는 실제로 실행되는 부분을 찾아야 분석이 가능하기 때문이다.

 

현재까지 주로 사용되는 실행압축 해제 기법은,

디버거 및 분석도구들을 이용하여 수동으로 분석하는 방법( 매우 비효과적이다. 하지만 알려지지 않은 패커의 등장에는 이방법밖에 없음을 잊지 말자 )

특정 실행 압축 알고리즘의 특징을 기반으로 한 압축해제 방법 ( 언패킹도구 활용. 알려지지 않은 패커일 경우에는 활용할 수 없음 )

실행 압축 기법에 의존하지 않는 실행압축 해제 방법

PolyUnpack 방식: 실행 압축 파일의 실행 흐름은 원래의 실행 파일의 명령어에 도달할 수밖에 없다는 가정을 바탕으로하며, 실행 압축한 코드를 연속적으로 일부분 실행하며 부분분석을 수행하고, 이를 통해 악성코드 여부를 판단할 수 있다.

OmniUnpack 방식: 모든 실행코드를 분석하지 않고 메모리를 관찰하여 프로세스가 데이터를 쓴 메모리 영역으로 실행 흐름이 바뀌는 순간 그 영역을 분석하는 방법 ( PolyUnpack 방식에 비해 필요 없는 분석 시간을 줄일 수 있음 )

Renovo 방식: 가상머신을 사용하여 실행 압축된 파일을 해제하는 기법으로, 분석하는 동안 악성코드 분석도구가 원래의 시스템으로 부터 격리되어 감염의 위험성이 현저히 낮아지니다는 점과 기존의 기법들과 달리 프로세스의 관점이 아닌 전체 시스템 관점에서 악성코드 분석이 가능하다는 장점이 있다. 하지만, OEP를 찾는데는 어려움이 있다.

 

● 엔트로피를 이용한 실행압축 해제 기법

여기서 말하는 방법은, Shannon의 정보 엔트로피 개념을 통하여 정보의 양을 수치화하는 압축확률확인 방법으로 압축 알고리즘의 압축률을 평가할 때 유용하게 이용되는 방법을 역이용하는 것이다.

엔트로피가 높은 데이터일수록 나타날 수 있는 모든 비트들이 고루 나열되어 엔트로피가 높을수록 압축률이 높다고 추측할 수 있게된다.

이러한 엔트로피의 특성을 이용하면 실행 압축된 파일이 실제 실행파일보다 압축률이 높기 때문에 비교적 더 높은 엔트로피 값을 갖게된다는 가설이 성립되며 이를 통해 실행압축된 파일임을 확인할 수 있는 것이다.

또한, 실제 실행압축 프로그램을 이용해 압축된 실행파일을 실행하게되면, 실행압축되기 전의 코드 위치와 같은 메모리 주소에 압축해제가 되는 것을 확인할 수 있다.

 

아래에는 이와 같은 기법의 연구내용 보고서를 참조한다.

 

Entropy Unpacking.zip

 

또한, 이 아래에는 엔트로피 값을 이용해 파일을 분석할 때 사용 가능한 도구를 추가 첨부한다. 이 도구는 원래 IDA Plugin으로 사용되지만, 윈도우에서 독립실행도 가능하다.

 

ida-ent.zip

 

(이 두 첨부파일은 암호로 보호됩니다.)

And