악성 VBA스크립트 간단분석

2021. 4. 26. 19:22프로젝트 ~

Private Declare PtrSafe Function CreateThread Lib "kernel32" (ByVal Rmqmuw As Long, ByVal Hoeplfj As Long, ByVal Oyhxkgmc As LongPtr, Vzaff As Long, ByVal Hrogiar As Long, Iqwgv As Long) As LongPtr

 

Private Declare PtrSafe Function VirtualAlloc Lib "kernel32" (ByVal Jljfbb As Long, ByVal Fiildogqh As Long, ByVal Vgy As Long, ByVal Kzzikqj As Long) As LongPtr

 

Private Declare PtrSafe Function RtlMoveMemory Lib "kernel32" (ByVal Dczoa As LongPtr, ByRef Hjo As Any, ByVal Yskzp As Long) As LongPtr

 

위의 함수 선언문은 Kenel32 dll의 함수에 대한 참조를 선언하고있다. Kernel32의 함수를 불러오기위함.

CreateThread, VirtualAlloc, RtLmoveMemory 등..

 

 

 

아래의 스크린샷은 각 각의 vba스크립트의 쉘코드에 해당하는 부분이고 바로 밑에 인코딩된 데이터를

디코딩한 결과를 붙여넣었다.

외부서버와의 접속, cmd, power쉘에서 실행할 코드를 숨기기위해 hex base64 등 인코딩한다.

 

 

 

마지막으로 쉘코드의 크기만큼 메모리를 할당받고, 할당받은 메모리에 쉘코드를 1바이트씩 복사하며

마지막으로 CreateThread를 이용하여 복사한 쉘코드를 자동실행한다. 

 

 

Ubound – 배열의 마지막 인덱스 번호

Lbound – 배열의 첫번째 인덱스 번호

Virtualalloc – 다른 프로세스의 주소공간에 메모리를 할당하기 위한 api함수/ 배열의 크기만큼 할당.

Rtlmovememory – 소스메모리의 블록을 대상 메모리블록에 복사 .할당받은 메모리에 소스를 복사한다.

Createthread – 호출 프로세스의 가상 주소 공간내에서 실행할 스레드를 만듬.쓰레드 생성. 5번째 필드값이 0 일경우 자동실행.