UPX

해킹/개념 정리 2015. 11. 24. 20:24

UPX(Ultimate Packer for eXecutables)는 여러 운영체제에서 수많은 파일 포맷을 지원하는 오픈 소스 실행 파일 압축 프로그램이다. GNU 일반 공중 사용 허가서를 통해 공개된 자유 소프트웨어이다. 압축, 압축 해제의 기능을 모두 담당한다.



UPX는 압축 해제를 위해 두 개의 메커니즘을 지원한다.

  1. 인 플레이스(in-place) 테크닉
  2. 임시 파일로의 해제

실행 파일을 메모리로 해제하는 인 플레이스 테크닉은 모든 플랫폼에서 이용이 가능한 것은 아니다. 나머지 플랫폼에서는 임시 파일로의 압축 해제를 사용한다. 이 과정에는 추가적인 오버헤드와 기타 단점들이 동반되지만, 어떠한 실행 파일 포맷도 압축이 가능하게 한다.

임시 파일로 해제는 방식은 몇 가지 단점이 존재한다:

  • suid와 같은 특수 권한이 무시된다.
  • argv[0]의 의미가 없어진다.
  • 여러 인스턴스로 실행 중인 실행 프로그램들은 공통된 세그먼트를 공유할 수 없다.

수정되지 않은 UPX 압축이 자주 발견되며 바이러스 검사 소프트웨어 스캐너를 통해 압축이 해제된다. UPX 또한 이미 압축된 미수정 실행 파일들의 압축을 해제할 수 있는 기능이 자체 내장되어 있다.



UPX로 압축된 바이너리가 실행되는 대략적인 원리는 실제 실행코드를 data영역에 압축해서 넣고 EP부분에 코드의 복구/실행을 하는 루틴을 넣는 것이라고 합니다. 


이러한 패킹 소프트웨어들은 대부분 패킹과정에서 디버깅을 감지하고 차단하는 기능을 추가한다고 합니다.

'해킹 > 개념 정리' 카테고리의 다른 글

ASLR의 개념  (0) 2016.01.13
함수의 프롤로그와 에필로그에 관한 고찰 + fake ebp(실패)  (0) 2016.01.13
다중 파이프 페이로드  (0) 2015.11.24
GOT overwrite  (0) 2015.11.24
file destriptor  (0) 2015.11.24
Tags
Social