티스토리 뷰

반응형

[Malware analysis] Visual Basic 악성코드


VB 전용 엔진을 사용해 Visual Basic으로 제작되었다. 스팸 메일 외 다수 유포되는 국내외 Visual Basic 악성코드는 일반적으로 빌더를 이용하여 만들어지기 때문에 파일의 코드 외형 특징과 동작 방식이 단기적으로 같은 특징이 있는 경우도 있다고 한다.

또한, 인터넷 주소로 접속을 시도해 다른 악성코드들을 다운로드 및 실행하게 만들며 암호 유출용 악성코드의 전파와 실행을 보조하기도 한다


Visual Basic으로 작성된 걸 확인할 수 있다.


1. Visual Basic Main

살펴보면 난독화 된 코드를 확인할 수 있다. 진행하며 살펴보겠다.


살펴보게 되면 이전 할당 받은 공간에 [EAX+EDX] 주소부터 데이터를 입력하는 것을 확인할 수 있다. 이후 해당 루틴을 완료하면 아래와 같이 메모리에 Shell 코드가 입력되는 것을 알 수 있다.

VirtualAlloc()와 루틴을 통해 Shell코드를 할당된 메모리에 입력하는 것을 알 수 있었다. 



프로그램 경로를 얻은 후 환경을 확인하는 것을 알 수 있다. 이후 현재 프로세스가 부모 프로세스인지 자식 프로세스 인지 메모리에 저장된 Path와 “3A”, “5C” 비교를 통해 확인한 후 자식 프로세스일 경우 값 1을 주는 것을 확인할 수 있으며, 이후 해당 값에 따라 분기가 달라지는 것을 알 수 있다.



2. DLL의 EAT 이용해 API 얻기

 > https://jeongzzang.com/121


3. Process Hollowing 

진행 시 아래와 같이 함수를 호출하는 부분을 볼 수 있다. CreateProcess()의 내부 함수를 이용하여 대상 프로세스의 초기 스레드가 SUSPENDED 상태로 생성하는 걸 확인할 수 있다.

Process Hollowing 기법을 사용하는 것으로 예상할 수 있다.


SUSPENDED 상태인 프로세스의 메모리 Unmap을 하는 걸 확인할 수 있으며, 이후 진행 시 openfile(), ZwCreateSection(), ZwMapViewOfSection()가 진행되는 걸 알 수 있다.

살펴보면 자식프로세스에 쉘코드를 할당하는 것을 확인할 수 있다.

GetThreadContext(), SetThreadContext()을 통해 Entry Point를 수정한 후 Resume Thread()을 이용하여 실행한다.



4. 자식 프로세스 attach 후 진행

0x1639C5을 진행 후 EAX 값이 1 설정되었다. 이전 그림을 살펴보면 “3A”, “5C” 비교했으며 그림에서는 “3A”, “5C”와 일치하여 EAX는 1이 설정되고 비교문을 통해 0x160323으로 넘어가는 것을 확인할 수 있다.