데이터 압축
어떤 형태의 파일이라도 내부는 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 |