실행 압축 & UPX 패킹

데이터 압축

어떤 형태의 파일이라도 내부는 0과 1의 바이너리로 구성

이를 이용하여 적절한 알고리즘을 사용하면 크기를 줄일 수 있음

  • 복원이 가능한 압축 → 비손실 압축
  • 원래대로 복원 불가능한 압축 → 손실 압축

#1 비손실 압축

보관 및 이동에 용이하도록 파일 크기를 줄이는 데 사용

파일 사용을 위해서는 데이터의 무결성을 보장하여 해당 압축을 해제

대표적인 비손실 알고리즘 : Run-Length, Lempel-Ziv, Huffman

→ ZIP, RAR도 해당 알고리즘을 기반으로 압축을 적용한것

#2 손실 압축

압축률을 높이기 위해 파일에 의도적인 손상을 주는 압축

주로 멀티미디어 파일에서 사용하며 특성상 원본으로 되돌릴 수 없음

사람은 알아차리지 못하는 수준의 데이터 손상을 입힘

원본과는 분명히 차이가 있으나 그 차이를 구분하지 못하는 불필요하는 데이터를 제거하는 압축

실행 압축

실행 파일을 대상으로 파일 내부에 압축해제 코드를 포함하여 실행 시 메모리에서 압축을 해제한 후 실행시키는 기술

실행 압축된 파일도 PE파일이며 내부에 원본 PE 파일과 decoding 루틴이 존재

일반 압축 실행 압축

대상 파일 모든 파일 PE 파일
압축 결과물 압축( zip, rar ) 파일 PE 파일
압축 해제 방식 전용 압축 해제 프로그램 사용 내부의 decoding 루틴
압축 파일 실행 여부 자체 실행 불가 자체 실행 가능
장점 모든 파일에 대해 높은 압축률로 압축 가능 별도의 해제 프로그램 없이 바로 실행 가능
단점 전용 압축 프로그램이 없으면 해당 압축 파일을 사용 불가 실행 시마다 decoding 루틴을 호출해 실행시간이 미세하게 느려짐

일반 PE 파일을 실행 압축 파일로 만들어 주는 유틸리티를 패커라고 부름

Anti-Reversing에 특화된 패커는 프로텍터라고 부름

1) 패커

  • 실행 압축기를 말하며 Run-time 패커로 PE 파일 전문 압축기

#1 사용 목적

  • PE 파일 크기를 줄이는 목적 ( 네트워크로 전송 및 보관 용이 )
  • PE 파일 내부 코드와 리소스를 감추기 위한 목적 ( 압축된 데이터는 알아보기 힘든 형태의 바이너리로 저장 )

#2 사용 현황

실행 압축의 개념은 DOS 시절부터 존재 → PC 속도가 느려 실행 압축을 해제하는 과정이 큰 오버헤드로 작용하여 많이 쓰이지 않음

현재에는 실행 압축 파일과 원본 파일의 차이를 느낄 수 없을 정도의 성능으로 유틸리티, 패치 파일 등 널리 사용

#3 패커 종류

평범한 PE 파일을 만들어내는 패커와 원본 파일을 크게 변형하고 PE 헤더를 심하게 훼손 시키는 불순한 의도의 패커로 분류 가능

불순한 의도의 패커는 악성 프로그램에서 사용

2) 프로텍터

  • PE 파일을 Reverse Code Engineering으로부터 보호하기 위한 유틸리티
  • 일반적인 패커와 다르게 리버싱을 막기 위한 다양한 기법 추가
  • 따라서 원본 PE 파일보다 용량이 커지는 경향이 있으며 디버깅도 어려움

#1 사용 목적

  • 크래킹 방지 : 자신의 프로그램이 불법적으로 사용되는 것을 막기 위해
  • 코드 및 리소스 보호 : PE 파일을 보호하며 자신의 코드와 리소스를 보호

#2 사용 현황

크래킹에 민감한 보안 프로그램이 많이 사용 (ex. 개임 해킹 툴을 실행을 방지하는 게임 보안 프로그램)

#3 프로텍터의 종류

  • 상용 프로텍터와 공개용 프로텍터 존재

→ 리버싱에서는 패커와 프로텍터는 매우 중요

→ 원본 파일의 OEP까지 도달해야 분석을 시작할 수 있음

→ 패커와 프로텍터에 존재하는 안티 디버깅 기법의 수준이 높으므로 OS와 CPU에 대한 깊은 지식 요구


실행 압축 테스트

  • UPX패커를 이용하여 메모장 실행 압축

  • UPX패커 다운로드 후 압축을 풀어준뒤 해당 주소창에서 cmd . 입력

  • 해당 주소를 cmd에서 확인할 수 있음
  • 메모장을 패커 폴더에 복사한 후 패킹 진행

  • upx 명령어
    upx -o notepad_upx.exe notepad.exe
    upx [옵션] [패킹 후 저장할 파일 이름] [패킹할 파일 이름]

  • 압축 실행 시 파일 크기가 줄어든 것을 확인 할 수 있음

#1 notepad.exe와 notepad_upx.exe 비교

→ windows10 환경에서 windows defender가 upx 패킹 파일을 바이러스가 탐지된 파일로 인식

→ windows defender 끄고 진행 가능

  • PEview를 통해 notepad.exe와 notepad_upx.exe의 차이 비교
  • 이미지 섹션 헤더에 text, data가 UPX0, UPX1로 대체되어있음
  • 섹션 또한 헤더에 맞춰 UPX0, UPX1으로 변경

  • UPX0의 virtualSize는 10000이며, RawData는 0으로 세팅

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

리버싱 / 악성코드 분석을 위한 Windows 10 Defender 비활성화  (0) 2023.07.11
PE File Format Advance  (1) 2023.07.08
Calling Convention (함수 호출 규약)  (0) 2023.07.06
스택프레임  (0) 2023.07.05
PE파일  (1) 2023.07.03