본문 바로가기

리버싱/리버싱핵심원리

실행 압축

데이터 압축

비손실 압축과 손실 압축이 있다

 

비손실 압축

파일(데이터) 크기를 줄여서 보관 및 이동에 용이하도록 하려는 목적으로 사용된다. 파일을 사용하 때는 해당 압축을 해제해서 사용(이 과정에서 데이터의 무결성이 보장되어야 함)

대표적인 비손실 압축 알고리즘은 Run-Length, Lempel-Ziv, Huffman 등이 있다

 

손실 압축

파일(데이터)에 의도적인 손상을 주어 압축률을 높이는 목적으로 사용된다. 주로 멀티미디어 파일들(jpg, mp3, mp4)은 대부분 손실 압축기법을 사용한다 

 

실행 압축

- 실행 파일을 대상으로 파일 내부에 압축해제 코드를 포함하고 있어서 실행되는 순간에 메모리에서 압축을 해제시킨 후 실행시키는 기술이다

- 실행 압축된 파일 역시 PE 파일이며 내부에 원본 PE 파일과 decoding 루틴이 존재한다

- EP 코드에 decoding 루틴이 실행되면서 메모리에서 압축을 해제시킨 후 실행된다

 

패커

PE 파일 전문 압축기

 

#1. 사용 목적

- PE 파일의 크기를 줄이고자 하는 목적

- PE 파일의 내부 코드와 리소스를 감추기 위한 목적 : PE 파일 내부의 코드와 리소스(문자열, API name string) 등을 알아보기 힘든 형태의 바이너리로 저장되어 감출 수 있기 때문

 

#2. 사용현황

유틸리티, 패치 파일, 일반 프로그램 등에 널리 사용되고 있다

 

#3. 패커 종류

- 순수한 의도의 패커(VirusTotal에서 진단 안 됨) : UPX, ASPack 등

- 불순한 의도의 패커(VirusTotal에서 진단 됨) : UPack, PESpin, NSAnti 등

 

파일의 패킹 여부 확인하는 법

- 프로그램이 제공하는 기능에 비해 import 항목 개수가 현저히 적은 경우

- import 하는 함수가 LoadLibrary와 GetProcAddress 밖에 없는 경우

- 디버거 또는 디스어셈블러에서 파일을 로드할 때 자동 분석으로 코드 식별이 어려운 경우

- 섹션 이름이 특정 패커를 나타내고 있는 경우

- 실행 파일이 비정상적인 섹션 크기를 가진 경우

 

프로텍터

- PE 파일을 리버스엔지니어링으로부터 보호하기 위한 유틸리티

- 리버싱을 막기 위한 다양한 기법이 추가되서 프로텍터들로 압축된 PE 파일들의 크기는 원본 PE 파일보다 커지는 경향이 있다

 

#1. 사용 목적

- 크래킹 방지

- 코드 및 리소스 보호

 

#2. 사용 현황

- 크래킹에 민감한 보안 프로그램들이 프로텍터를 많이 사용한다

- 일반적인 악성코드(Trojan, worm)에서 많이 사용

 

#3. 프로텍터 종류

- 상용 프로텍터 : ASProtect, Themida, SVKP 등

- 공개용 프로텍터 : UltraProtect, Morphine 등

 

참고) 원본 PE 파일의 OEP까지 가야 분석을 시작할 수 있기 때문에 패커와 프로텍터들에 대해 잘 알고 있어야 한다