UPX 란?
U P X
Ultimate Packer for eXecutables
2022.08.10
UPX란?
upx는 Ultimate Packer for eXecutables을 줄여서 UPX라고 부르는데
여러 운영체제에서 수많은 포맷을 지원하는 오픈 소스 실행 파일 압축 프로그램이다.
upx는 UCL이라는 이름의 데이터 압축 알고리즘을 사용하며 이 구현은 사유 NRV 알고리즘의 일부인 오픈 소스로 되어있다.
upx는 두 개의 메커니즘을 지원한다.
1. 인 플레이스(in-place) 테크닉
2. 임시 파일로의 해제
또한 여러운영체제에서 동작하는 것과 더불어 압축률이 60%까지 압축해주는 기능을 가지고 있는 가장 기본적인
압축 프로그램인 것이다.
여러 방법 중 리버싱 핵심원리와 악성코드에서도 많이 사용되고 있는데
악성코드에서 많이 사용되는 이유는 데이터를 압축 및 열어볼 수 없게 바꾸어 백신을 우회하는 등의 기법을 사용하고
기존의 우리가 아는 압축파일은 단순히 용량을 줄이는것을 떠나 압축을 하면 파일을 실행 할 수 없는데
upx는 압축을 하더라도 파일을 정상적으로 실행 할 수 있다는 점이 있다.
그래서 위에서 말한 백신을 우회할 수 있다는 점과 파일의 데이터를 숨길 수 있다.
오늘은 upx명령어와 사용하는 방법에 대해서 공부해 보았다.
사실 사용법은 아는데.. 그동안 대학교 과제부터 여러 시험과 교육까지 겹치다보니 악성코드 강의를 다 못듣게 되었는데
기억도 되세길 겸 다시 필요한 부분은 기록으로 남겨 다음에 공부하면서 참고하기로 했다.
준비물
1. upx.exe
2. notepad.exe
압축을 하기전에 압축 대상의 파일 크기를 먼저 확인해 보았다.
압축 전 원본파일의 notepad.exe는 파일 크기가 66.0KB로 확인되었다.
그 다음 cmd를 관리자권한으로 실행 후 upx와 orinotepad.exe가 같이 있는 경로로 이동했다.
같은 경로에 있어야 하기때문에 upx파일을 해당 경로로 옮겨서 확인한다.
나는 바탕화면으로 옮겨놨다.
cd desktop
dir
upx를 이용해서 해당 파일을 패킹해본다.
명령어는 아래와 같다.
upx.exe ori_notepad.exe
위 명령어를 입력하면 파일사이즈 67584 에서 48128으로 Ratio 71.21%만큼 줄어들었다는것을 확인 할 수 있다.
upx로 패킹된 파일의 사이즈를 확인해 보았다.
위에서 upx command 창에서도 확인할 수 있지만 47.0kb로 그 크기가 줄어든것을 확인 할 수 있다.
upx로 언패킹을 하는 명령어이다.
이러면 기존의 파일사이즈를 다시 복원되는 것을 확인 할 수 있다.
upx.exe -d ori_notepad.exe
언패킹 후에는 파일 사이즈도 다시 돌아왔다.
다음 명령어를 이용하여 다른 방법으로 패킹을 하였다.
해당 -o 옵션을 주면 패킹하는 원본을 두고 새로이 패킹한 파일로 새로 생성한다.
네모박스 안을 보면 ori_notepad_upx.exe로 출력을 하니 바탕화면에 동일한 파일로 패킹된 파일이 있는것을 확인했다.
upx.exe ori_notepad.exe -o ori_notepad_upx.exe
PEView에서 패킹된 파일과 아닌 파일을 올려보았다.
text, data,rsrc 섹션이 upx로 압축되어진것을 확인 할 수 있었다.
해당 섹션을 누르면 패킹된 곳은 해당 데이터의 시작점(메모리주소)만 알 수 있고 값들은 나오지 않는다.
upx 사용법은 알고 있었지만
조금 더 찾아보니 upx가 꼭 악성코드에만 사용하는게 아니라는것을 알았다.
복습을 통해 여러가지를 이해할 수 있다는게 신기했다.
'Malicious Code > Review' 카테고리의 다른 글
악성코드 환경 준비 끝내기 (0) | 2022.02.09 |
---|---|
[2] OllyDbg 단축키 알아보기 (0) | 2021.11.08 |
[1] 어셈블리 명령어 한 눈에 보기 (0) | 2021.11.08 |
댓글
이 글 공유하기
다른 글
-
악성코드 환경 준비 끝내기
악성코드 환경 준비 끝내기
2022.02.09 -
[2] OllyDbg 단축키 알아보기
[2] OllyDbg 단축키 알아보기
2021.11.08 -
[1] 어셈블리 명령어 한 눈에 보기
[1] 어셈블리 명령어 한 눈에 보기
2021.11.08