오늘은 기존에 했던 메뉴얼 언패킹이 아닌 다소 쉬운 방법으로 tool을 사용한 언패킹(unpacking)을
해보도록 하겠습니다.
그전에 패커(Packer)에 대해 다시 한번 간단히 정리 해볼까요!
패킹(packing)은 실행파일 포장이라는 개념으로 쉽게 이해하시면 될 것 같습니다.
아래 그림은 파일이 패킹되어 메모리에 올라가는 일괄의 과정을 표현한 것으로서 패킹된 파일은 메모리 할당시 재배치(Relocation) 과정을 하지 않기 위해 target 프로그램과 동일한 위치에 .txt 섹션을 배치 합니다.
Uninitialized data section은 언패킹 후 메모리에 올릴 장소입니다.
언패킹을 하기 위해서는 먼저 Packer Detection(탐지)을 통해 패커를 확인하는 작업이 선행되어야 합니다.
패커를 확인하는 가장 손쉬운 방법은 잘 알려진 패커 탐지 tool을 이용하는 것이며 탐지 tool로는 PEID, DIE,
RDG, exeinfo PE 등 이 있습니다.
오늘 시연에 사용된 tool은 upx와 Exeinfo PE 이며 upx는 win32 콘솔 버젼으로 언패킹하려는 파일과
동일한 폴더에 존재하여야 합니다.
그럼 이제부터 초간단 언패킹의 세계로 빠져 볼까요?
패킹된 샘플 파일을 Exeinfo PE 를 이용하여 정보를 확인 해 보니 UPX로 패킹되어 있다는걸 손쉽게 확인 할 수 있습니다.
이제 이 정보를 가지고 upx tool을 사용하여 언패킹을 해보도록 하겠습니다!
순식간에 지나가니 정신 바짝 차리셔야 합니다~
사용된 upx tool의 기능에 대한 설명이 보이는 군요.
(언패킹 뿐만 아니라 패킹도 가능하다라는건 두말 하면 입 아프죠?)
패킹이 풀리면서 늘어난 파일 사이즈와 "Unpacked 1 file" 이라는 결과가 확인 되었습니다.
대상 파일을 Exeinfo PE tool로 다시 확인해 보면 최종적으로 언패킹 된 걸 확인 할 수 있습니다.
글을 마치며...
tool을 사용하는 방법은 언패킹 관련 기법중 아주 기초적인 내용입니다. 차근차근 기초부터 쌓아가다 보면 수작업으로 하는 고급 언패킹 기술도 그리 어렵지 않게 해결할수 있겠죠 ^^?
출처 : 안철수연구소 ASEC 대응팀 블로그
728x90
댓글