UPX packing & unpacking

2024. 10. 10. 20:37·Hacking/Reversing
728x90
반응형

 

Binary Packing

Binary packing is the technique of compressing executable files to obscure their content, making it harder for security application to detect or analyze them.

실행 파일을 압축하여 그 내용을 숨기는 기술로, 보안 애플리케이션이 해당 파일을 분석하거나 탐지하게 어렵게 만든다.

바이너리 패킹은 실행 파일을 압축하고 암호화하여 그 구조를 숨기는 방식이다. 

실행될 때 패커라는 소프트웨어가 파일을 압축하고 실행 시점에서 이를 다시 압축 해제하여 정상적으로 작동하게 만든다

 

IDA로 UPX packing된 파일을 확인하면 프로그램의 로직적인 부분이 꼬여있는 것을 확인할 수 있다.

 

장점

  • 코드 난독화 : 바이너리 패킹은 코드를 암호화하고 압축하여 리버싱을 통한 공격을 어렵게 만든다
  • 무결성 보호 : 악성 공격자가 코드를 수정하거나 악성 코드를 삽입하는 것을 방지한다.
  • 실행 시 복호화 : 앱이 실행 중에만 코드가 복호화 된다 

단점

  • 성능 저하 : 실행 중 복호화 과정에서 성능 저하가 발생할 수 있음
  • 유지 보수 어려움 

 

UPX

https://github.com/upx/upx/releases

 

Releases · upx/upx

UPX - the Ultimate Packer for eXecutables. Contribute to upx/upx development by creating an account on GitHub.

github.com

 

Ultimate Packer for Executables의 약자로, 오픈소스로 제공되는 실행 프로그램 파일을 압축하는 도구이다.

UPX

UPX 패킹

upx -o " 생성될 패킹 파일 경로 " " 패킹에 사용할 파일 경로 "

 

UPX 언패킹

upx -d -o "생성될 언패킹 파일 경로" "언패킹에 사용할 파일 경로"

 

 

UPX 패킹된 파일인지 확인하기

UPX 패킹된 파일인지는 파일의 헤더를 보더라도 확인할 수 없다.

 

UPX 명령어로 확인

upx -t filename.exe

 

hex 값 확인

UPX 패킹되어있는 파일은 헤더에는 없지만, 어딘가에 UPX라는 문자열이 존재한다.

리눅스 / 맥의 경우에는 

hexdump -C filename.exe | grep UPX

 

Windows에서는 HxD같은 GUI로 UPX 문자열을 검색하여 확인할 수 있다.

 

동적 분석하기

바이너리 패킹은 원본이 복원되는 과정이 바이너리 파일에 담겨있기 때문에, 동적 분석을 하면 패킹이 풀리는 과정을 확인할 수 있을 것이다.

 

 

* 얼마전에 CTF 뛰었는데 UPX 패킹된 파일이 나왔다 ... 만약 IDA로 봤을 때 로직이 계속 끊겨 보인다면 바이너리 패킹되어있는지 확인하자 -> 이런 경우에는 언패킹 해서 봐야한다.

 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

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

[IDA Pro] 사용법 정리  (3) 2024.07.21
'Hacking/Reversing' 카테고리의 다른 글
  • [IDA Pro] 사용법 정리
min_zu
min_zu
  • min_zu
    민주제도
    min_zu
  • 전체
    오늘
    어제
    • ._. (176)
      • AI (2)
        • DeepLearning (2)
        • CS231n (0)
      • Web (2)
        • ReactJS (0)
      • CS (83)
        • OS (7)
        • Data Structure (23)
        • Computer Architecture (8)
        • Computer Network (20)
        • Algorithm (25)
      • Linux (3)
        • KaliLinux (0)
        • Docker (1)
      • Hacking (83)
        • Write Up (25)
        • Pwnable (13)
        • Reversing (2)
        • Cryptography (12)
        • Web Hacking (4)
        • Window (6)
        • Network (7)
        • Web3 (13)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    OS
    WinAFL
    Tree
    Graph
    ComputerArchitecture
    Search
    Mac
    DataStructure
    DeepLearning
    Web
    Sort
    UTM
    AI
    Linux
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
min_zu
UPX packing & unpacking
상단으로

티스토리툴바