ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 14 실행 압축
    리버싱 엔지니어링/리버싱 핵심 원리 2022. 3. 25. 00:00

     데이터 압축 

    • 파일(또는 데이터)는 내부가 바이너리(0 또는 1)로 되어있어 이를 적절한 압축 알고리즘을 사용해 크기를 줄일 수 있다.

     

     비손실 압축 

    : 비손실 압축(Lossless Data), 압축된 파일을 100% 원래대로 복원할 수 있음

     

    • 파일(데이터) 크기를 줄여서 보관 및 이동에 용이하도록 하려는 목적으로 사용됨.
      • 파일 사용 시 해당 압축을 해제하여 사용
      • 데이터의 무결성이 보장되어야함
        • 데이터의 무결성 : 데이터의 정확성, 일관성, 유효성이 유지되는 것 → 데이터가 변하지 않고 유지되어야한다.
    • ex) 7-zip, 빵집 과 같은 압축 프로그램
    • 대표적인 비손실 압축 알고리즘 : Run-Length, Lempel-Ziv, Huffman (추가 조사 필요)
      • ZIP, RAR 등의 압축 파일 포맷의 근본 압축 개념 (추가로 자신들만의 노하우를 적용)

     

     손실 압축 

    : 손실 압축(Loss Data), 원래대로 복원할 수 없음

    • 의도적인 손상을 주어서 그 댓가로 압축률을 높이는 목적
    • ex) 멀티미디어 파일(jpg, mp3, mp4)
      • 사람의 눈과 귀가 거의 알아차리지 못하는 수준에서 데이터에 손상을 입힘
      • mp3의 핵심 알고리즘 : 사람의 가청 주파수 범위(20~20,000Hz)를 벗어나는 영역을 의도적으로 제거

     

     

     

     실행 압축 

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

     

    일반 압축과 실행 압축 비교

    항목 일반 압축 실행 압축
    대상 파일 모든 파일 PE 파일(exe, dll, sys)
    압축 결과물  압축(zip, rar) 파일 PE 파일(exe, dll, sys)
    압축해제 방식 전용 압축해제 프로그램 사용 내부의 decoding 루틴
    파일 실행 여부 자체 실행 불가 자체 실행 가능
    장점 모든 파일에 대해 높은 압축률로 압축 가능 별도의 해제 프로그램 없이 바로 실행 가능
    • 실행 압축은 자체 실행이 가능한 것이 특징
    • 일반 PE 파일을 실행 압축 파일로 만들어주는 유틸리티 → 패커

     

     패커(Packer) 

    : 실행 파일 압축기, 정확한 명칭은 Run-Time 패커로 PE 파일 전문 압축기

     

    ① 사용목적

    • PE 파일의 크기를 줄이는 목적
    • PE 파일의 내부 코드와 리소스를 감추기 위한 목적
      • 압축된 데이터는 알아 보기 힘든 형태의 바이너리로 저장되기 때문에 내부 코드와 리소스(문자열, API name string)를 감춰주는 효과

    ② 사용 현황

    • 패치파일, 일반 프로그램 등에 널리 사용됨

    ③ 패커 종류

    • 평범한 PE 파일을 만들어 내는 패커와 원본 파일을 크게 변형하고, PE 헤더를 심하게 훼손시키는 불순한 의도의 패커로 나눌 수 있음
    • 불순한 의도의 패커는 악성프로그램에서 사용됨
      • ex) Virus, Trojan, Worm 등

     

     프로텍터 

    : PE 파일을 리버싱으로 부터 보호하기 위한 유틸리티

     

    • 일반적인 패커처럼 실행 압축을 해주는 것만이 아니라 리버싱을 막기위한 다양한 기법이 추가됨
      • 기법 : Anti-Debugging, Anti-Emulating, Code Obfuscating, Polymorphic Code, Garbage Code, Debugger Detection 등
    • 원본 PE 파일보다 커지는 경향이 있음
    • 디버깅하기 매우 어려움

     

    ① 사용목적

     

    • 크래킹 방지
    • 코드 및 리소스 보호
      • 프로텍터는 파일이 실행되었을 때 프로세스 메모리를 보호하여 덤프를 뜨지 못하게 함

     

    ② 사용 현황

     

    • 보안 프로그램
      • 게임 보안 프로그램 → 게임 해킹툴
        • 프로텍터를 지속적으로 바꾼다면 더 효과적

     

    ③ 프로텍터 종류

     

    • 공개용 프로그램 : UltraProtect, Morphine 등
    • 상용 프로그램 : ASProtect, Themida, SVKP 등
    • 또는 전문적으로 악성 코드에서만 사용되는 프로그램도 존재

     

     

     

     실행 압축 테스트  

    : PE 파일이 메모리에 로딩되었을 때 각 섹션에서 메모리의 주소(RVA)와 파일 옵셋을 매핑

     

    ① cmd 창에서 upx 실행

    • 작업 폴더로 이동 후 upx 입력

     

    ② notepad.exe 파일 실행 압축

    • notepad.exe를 작업 폴더에 복사한 후 진행
    • 명령어 upx -o notepad_upx.exe notepad.exe

     

    ③ 압축 확인 (64KB -> 48KB)

     

    ④ 일반 압축과 비교

    • 일반적인 ZIP 압축보다 압축률이 떨어짐→ PE 파일이기 때문에 PE 헤더 및 압축해제 코드를 추가해야하기 때문 

    댓글

Designed by Tistory.