본문 바로가기
Study/Reversing

[리버싱] 패킹

by graygreat 2017. 9. 18.
728x90
반응형


패킹이란?


패킹은 실행압축이라는 뜻을 가진다.


일반적으로 ZIP, RAR과 같은 압축은 그 압축을 해제 시켜야 해당 프로그램을 실행시킬 수 있다. 


하지만 패킹은 있는 그대로 일반 프로그램처럼 실행 가능하다.


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


다시 말하면 압축을 푸는 과정없이 바로 프로그램을 실행할 수 있는 것을 실행압축이라고 한다.



패킹을 하는 이유


- 데이터 압축(프로그램 크기 줄이기)


- 악성코드에서는 작은 용량으로 빠르게 많이 퍼지게 하며, 분석이 불가능하게 하기 위한 목적


- 데이터 보호 : anti-reversing, anti-disassembling, anti-dumping


- 취약하게 나타날 수 있는 중요정보를 포함한 어플레키에션에 대한 노출 최소화



비손실 압축 vs 손실 압축


비손실 압축


원본의 데이터를 조금도 훼손하지 않고 용량을 줄이는 것을 비손실(또는 무손실) 압축이라 한다.


파일(데이터)크기를 줄여서 보관 및 이동에 용이하도록 하려는 목적으로 사용된다.


파일을 사용할 때는 해당 압축을 해제해서 사용한다(이 과정에서 데이터의 무결성이 보장되어야 한다.)


손실 압축


파일(데이터)에 의도적으로 손상을 주어 압축률을 높이는 것을 손실 압축이라고 한다.


주로 멀티미디어 파일들에서 인간이 지각하기 힘든 범위의 데이터를 버리고 압축하는 방법을 사용한다. 


압축을 하는 과정에서 원본 데이터가 손실되기 때문에 원본으로 되돌릴 수 없다.


데이터 측면에서 볼 때 차이가 발생한다. 


하지만 사람이 보기에는 그 차이가 거의 구분할 수 없는 수준이기 때문에 많이 사용되는 압축 방법이다.




일반 압축 vs 실행 압축


일반 압축은 위에서 말한 것처럼 비손실 압축과 손실 압축으로 나뉘어진다.


따로 설명할 필요는 없을 것 같다.


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


출처 : 리버싱 핵심 원리



패커


PE 패커(Packer)란 실행 파일 압축기를 말한다.


정확한 명칭은 Run-Time 패커로, PE 파일 전문 압축기이다.


사용목적


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


- PE 파일의 내부 코드와 리소스를 감추기 위한 목적



패커 종류


패커는 크게 두가지 종류로 나눌 수 있다.


평범한 PE파일을 만들어 내는 순수한 의도의 패커와 원본 파일을 크게 변경하고, PE 헤더를 심하게 훼손시키는 약간 불순한 의도의 패커로 나눌 수 있다.


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


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



패킹된 파일의 특징


Section Name이 일반적이지 않거나 패커의 이름을 가지게 된다.


Code Section은 보통 첫번째 Section이지만, 패킹 시 첫째가 아닐 수 있다.


Code Section은 보통 EP를 가리키므로 MEM_Excute권한을 가지지만, 패킹 시 그렇지 않을 수 있다.


Unpacking 시, Packing된 데이터가 저장되어 있던 세션이 비어있거나 Raw Size와 Virtual Size의 차이가 지나치게 큰 세션이 존재한다.


반응형

'Study > Reversing' 카테고리의 다른 글

[리버싱] Stolen Byte  (0) 2017.09.19
[리버싱] 언패킹  (0) 2017.09.19
[리버싱] IAT&EAT  (0) 2017.09.17
[리버싱] 정적&동적 라이브러리  (0) 2017.09.16
[리버싱] PE파일  (0) 2017.09.14

댓글