본문 바로가기

공부/콤퓨타

Packing and UnPacking

728x90
반응형

공부자료 정리

 

Packing and UnPacking

Packing = 프로그램 보호 목적, 악성코드 악용

UnPacking = 프로그램 보호 해제, Find OEP

 

오늘 확인할 예제

 

대표적인 MUP = UPX, ASPack

맛보기 = VMProtect

 

 

 

 샘플 예제: sol.exe

EP = 00005F85

 

 

 

 

sol_upx.exe

EP = 00011DC0

 

* tip: Packing 특징

All intermodular calls 에서 API 정보가 없음

초기 코드 중 특정 API 가 안보임 kernel32.GetModuleHandleA

 

 

 

 

 

UPX 는 MUP 중에 가장 유명하니 외워 버리자 ;;

코드의 끝부분 파일명_upx.주소

 

 

 

 

OEP = 01005F85

(반가운 kernel32.GetModuleHandleA)

* 코드가 안보일 시 <ctrl + a>

 

 

 

 

덤프 저장

* OllyDump Plugin 필요

* 자매품 advancedolly.dll 추천 (안티 디버깅 방지 등등)

 

 

 

 

sol_asp.exe

EP = 00010001

 

 

 

 

PUSHAD 는 범용 레지스터들에 저장된 값들을 스택에 저장하는 명령어

PUSHAD -> 압축 해제 -> POPAD -> OEP

 

* tip : PUSHAD 레지스터 값을 스택에 저장 후 다시 스택에 저장된 레지스터 값에 접근

 

 

 

 

ESP 혹은 EDI 가 가르키는 주소에 BP (Hardware, on access - Dword)

 

* tip: Memory BreakPoint 와 Hardware BreakPoint 차이점

* Memory BreakPoint  : 지정한 코드 및 데이터에 INT 3(CC) 코드를 삽입하여 cpu가 실행할때 디버거에게 제어권을 넘김 (일반BP, F2)

* Hardware BreakPoint  : cpu 레지스터 중 하나인 디버그 레지스터를 이용하여 특정 메모리 주소 실행 시 디버거에게 제어권을 넘김 (최대 동시 4개까지 설정)

Debug Register (DR0 ~ DR7)
DR0 ~ DR3: breakpoint 기능 구현을 위한 주소 저장 공간

 

* tip: hardware on access, write, execution 차이점

hardware on access : 메모리 주소 접근 시 발동 (Dword 4 Byte)
hardware on write : 메모리 주소에 데이터 쓰기 시 발동
hardware on execution : 메모리 주소에 데이터 실행 시 발동

 

 

 

 

실행 후 BP 확인
JNZ 분기 발생 -> PUSH 구문 이용하여 특정 주소(01005F85)를 스택에 저장 -> RETN 구문 실행

 * 분기 위에 POPAD 확인

 

 

 

 

해당 주소 레지값 확인

PUSHAD 실행 전 레지스트리값(초기 ESP 0006FFC4)으로 복구 확인

OEP = 01005F85

(반가운 kernel32.GetModuleHandleA, All intermodular calls 에서 API 확인)

 

 

 

 

 

번외:

VMProtect 맛보기

 

* 작년부터 뱅커류에서 자주 보임

 

 

 

대부분 Nothing found * ㅠㅠ

EP Section = .vmp1 정보로 VMProtect 추정

 

 

 

 

VMProtect 는 함수 api 정보가 없음

 

 

 

 

Name in all moduals 이용

 

 

 

 

Export CopyFile 브포

(악성코드에 자주 이용되는 함수 예상해서 브포, 악성코드의 자세한 실행 흐름은 어려움 ㅠ)

 

 

 

 

실행 결과

tra.exe 가 C:\~\Tasks\conime.exe 으로 뭔가를 하는구나 확인 +_+

(API Wrapping ㅠㅠ)

 

 

 

 

GetModuleHandle 에 브포를 걸면 그나마 초기부터 분석하지 않을까..

확인결과, 쭉 내려오다 보니 CopyFile 보단 위로 확인됨 ㅋㅋ

 

 

 

 

그런데... 목적지 주소가 아직도 살아있다니;;

142.4.126.251:80 만 open 확인

미국인데 홍콩이라.. 냄새가 난다

 

 

 

 

- Packing 문서 정리하다가 -

 

 

728x90
반응형

'공부 > 콤퓨타' 카테고리의 다른 글

파밍 악성코드  (0) 2015.11.06
DLL 인젝션 개념  (0) 2015.10.30
malware(fping.exe)  (0) 2015.10.28
악성 도메인 구별법  (0) 2015.10.28
IDA + OllyDbg  (0) 2015.10.27