악성코드 기초 정적분석 ( File packed UPX )

2018. 4. 19. 17:04악성코드 분석



[ 악성코드 기초 정적분석 ]


1> www.virustotal.com에 파일을 업로드하여 해시코드값 검색



2> 패킹 여부 확인 ( PEiD )

Microsoft 6.0++ 같이 컴파일 프로그램이름을 알 수가 없다

즉, 패킹되어있다



3> 프로그램 코드 분석 ( PEView )

UPX로 패킹되어 있는 실행파일임을 알 수 있다

또한, UPX0헤더에서 쓰기권한을 가지고 있어 0x4000크기의 가상메모리에 데이터를 작성할 것으로 보인다



4-1> 언패킹 실시 ( upx.exe ) - 자동화 방식

upx.exe 패킹(or언패킹)프로그램을 사용해서 UPX파일을 언패킹 시킨다


언패킹 된 결과

   &   



4-2> 언패킹 실시 - 프로그램 없이 수동으로

[4-2-1] 코드 분석  ( UPX Packing특징 : PUSHAD & POPAD )


스택에 원본코드의 레지스터들을 저장해두고 패킹 후 실행시에 꺼내어온다

PUSHAD명령 실행 후 해당 ESP에 브레이크를 걸어두고 프로세스가 접근하는 때를 확인하자

POPAD명령 실행 이후 프로세스는 원본코드의 레지스터가 저장되어 있는 스택지점에 접근했다

코드를 따라서 JMP명령을 실행하여 이동해보자



원본코드를 찾아냈다

Ollydump로 덤프한다


[4-2-2] Import REC를 통한 IAT복구

OEP수정 이후 "AutoSearch" => Size수정 => Get Import => Fix Dump ( 위에서 저장한 덤프파일 )


[4-2-3] 언패킹 결과


* 자동화 프로그램과 수동 언패킹시의 차이점은 크게 없다



5> 실행파일에서 사용하는 문자열 확인 ( Strings program )



디라이렉션으로 생성한 텍스트 파일 결과