관리 메뉴

Information Security

패킹 본문

포렌식/윈도우 포렌식

패킹

HackingPractice 2020. 12. 27. 11:24

패커?

  • 실행 파일 압축기

사용목적

  • PE 파일의 크기를 줄이고자 하는 목적
  • PE 파일 내부 코드와 리소스(string, API)를 감추기 위한 목적

프로텍터?

  • 패킹 기술
  • 리버싱을 막기 위한 다양한 기법 추가
  • 원본 파일보다 크기가 커질 수 있음

 

그림 1-1 메모리 내 파일 패킹 구조

  • 패킹을 하기 전에는 Original excutable before packing의 상태로 실행파일이 존재한다.
    text seciton에는 어셈블리언어가 실행될 수 있는 코드가 들어가 있는 부분으로 일반적으로 text section에 EP가 지정된다.

  • 패킹을 하면 해당 형태는 사라지고 Packed original code, Unpacking stub의 형태로 변하게 된다. Unpacking stub는 프로그램이 실행될 때 Packed original code의 압축을 풀게 된다. 따라서 EP의 위치는 Unpacking stub로 변경된다.

  • 실행파일을 실행하기 위해서 메모리에 로드하면 Unpacking stub에 의해서 Packed original code의 압축이 풀리게 되어 Unpacked executable Load in Memory의 형태로 변하게 된다. 하지만 EP는 여전히 Unpacking stub를 가리키고 있고, 이 단계에서 Imports는 구성되지 않았다.

  • Unpacked executable 의 상태는 완전히 언패킹 된 실행파일이다. Unpacking stub에 의해서 Imports를 새로 구성하였고, EP는 text section을 가리키도록 변경되었다. 일반적으로 Unpacking stub을 완료하고 OEP로 실행 단계를 이동하게 되는데 이 명령어를 tail 점프라고 한다.

upx.exe 프로그램의 사용할 수 있는 옵션을 확인했다.

그림 1-2 upx.exe

notepad.exe 프로그램을 패킹했다.

그림 1-3 패킹

notepad.exe와 packing된 notepad.exe 크기를 보면 차이가 나는 것을 알 수 있다.

그림 1-4 size

-d 옵션을 주면 언 패킹되는 것을 알 수 있다.

그림 1-15 unpacked

size가 동일한 것을 알 수 있다.

그림 1-16 size

Stud_PE 프로그램을 이용해 Sections 항목을 보면 패킹된 것을 알 수 있다.

그림 1-17 Sections

Stud_PE 프로그램을 이용해 Sections 항목을 보면 패킹 되지 않은 것을 알 수 있다.

그림 1-18 Sections

Stud_PE 프로그램을 이용해 Signature 항목을 보면 UPX 패킹된 것을 알 수 있다.

그림 1-19 UPX

Stud_PE 프로그램을 이용해 Signature 항목을 보면 Micorsoft Visual C++ 패킹되지 않은 것을 알 수 있다.

그림 1-20 Micorsoft Visual

 

'포렌식 > 윈도우 포렌식' 카테고리의 다른 글

루트킷  (0) 2020.12.27
후킹  (0) 2020.12.27
인증번호 탈취  (0) 2020.12.25
NTFS MFT  (0) 2020.12.22
파일시스템  (0) 2020.12.21