공부자료 정리
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 문서 정리하다가 -
'공부 > 콤퓨타' 카테고리의 다른 글
파밍 악성코드 (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 |