SimpkeBackdoor 실행파일

분석 시작!

 

 

1. 기초 정적 분석 

Virustotal 사이트에 올린 결과

악성코드인지 정상적 코드인지 판단이 잘 안서나보다.

각각의 비율이 거의 비슷하다

 

PEView

PEView에서 확인한 결과, 컴파일 시간은 2017년 6월 17일 09:04:08 이다.

 

 

IAT (Import Address Table)

: Import하는 프로그램이 어떤 API가 필요한지에 대한 정보를 담고 있음

: 여기에 등록을 해놔야 프로그램에서 API 사용이 가능함

 

Kernel32.dll 

: 대부분의 프로그램에서 사용되는 dll. 파일/하드웨어/메모리 접근 및 조작이 가능하기 때문에 주의해야 한다.

 

CreateMutex, ReleaseMutex 등

: Mutex? 중복 실행 방지를 위해 사용

이름이 있거나 없는 Mutex 오브젝트 하나를 만듬(동기화/원자성을 위해)

 

CreateThread, CloseHandle, GetCurrentThreadId, Sleep, WaitForSingleObject 등

: 윈도우는 스레드 기반으로 동작함. 프로세스는 작업 공간이며 스레드가 작업을 수행한다. 

메인 스레드는 동작을 하며 부가적 다른 스레드를 만들 수 있고(CreateThread)

현재 스레드 Id 를 확인도 한다.(GetGurrentThreadId)

동기화를 위해 Sleep, WaitForSingleObject 등 이벤트 기반의 함수를 사용하여 스레드의 동작을 확인한다.

스레드 뿐만 아니라 다른 오브젝트(예:Mutex)를 닫을 때도 CloseHandle을 사용하여 반납한다.

 

GetStartupInfo, CreateProcess, TerminateProcess, GetCurrentProcess, GetProcessId, GetExitCodeProcess

: StartupInfo라는 구조체를 생성하고(GetStartupInfo) 이는 CreateProcess 시 필요함

TerminateProcess는 프로세스 종료 함수이며, GetCurrentProcess로 현재 프로세스의 Handle을 얻을 수 있다.

GetExitCodeProcess는 프로세스 종료 시 반환값을 리턴한다.

 

CreatePipe, PeekNamedPipe, ReadFile, WriteFile 등

: Pipe? 프로세스끼리의 통신을 위한 것

파이프를 생성하여(CreatePipe) 파이프로부터 데이터를 읽고(PeekNamedPipe)

ReadFile, WriteFIle을 통해 오브젝트(파일, 파이프 등)에 데이터를 쓰고 읽는다. 

 

GetTickCount, QueryPerformanceCounter 등

: 시간 관련 함수

 

 

USER32.dll

또 중요한 dll 중 하나, USER32.dll을 살펴보자

USER32.dll = user의 인터페이스(버튼, 스크롤바, 사용자 행위 제어 등)를 제어하는 라이브러리. GUI 기반

 

ShowWindow

: Window 창의 상태를 지정 --> BackDoor는 이를 통해 자신의 창을 감출 것임을 예상

 

 

Exeinfo

SubSystem : Win Console(CMD창)을 통해 동작하고 있다는 것을 알 수 있다.

하지만 ShowWindow를 통해 안보이게 감춰서 실행하겠지

 

패킹은 되어있지 않으며, Visual C++ 9.0 버전으로 컴파일 된 실행 파일이라는 것을 알 수 있다.

 


2. 기초 동적 분석

connect_backdoor.py

소켓 프로그래밍을 하는 파이썬 코드

 

 

SysAnalyzer에 SimpltBackdoor.exe 실행파일 올리고 분석 시작

30초 동안 Dump(기록)한다고 설정해놨으니,, 30초 안에 해당 기능을 실행해보겠다

Start 누른 후 Python 실행

 

dir
netstat -ano

30초가 지나면 Dump가 떠지면서  Backdoor의 실행이 끝난다.

 

Running Process 탭

파이썬을 실행했기 때문에 pythonw.exe 프로세스가 동작했음을 알 수 있고

cmd.exe가 실행된 것도 알 수 있다.

SimpleBackdoor.exe의 PID와 cmd.exe의 PPID가 겹치는 것으로 보아 SimpleBackdoor가 cmd를 실행한 것임을 알 수 있다.

 

 

Api Log

정적 분석에서 봤던 API 함수들이 보인다.

 

socket 관련 함수들도 보인다.

bind : 1337번 포트로 연결하고 listen 한다.

accept : 클라이언트와 통신을 시작하는 지점

CreateRemoteThread : 스레드를 만들어 클라이언트와 통신한 것임

 

 

Pipe

SimpleBackdoor.exe는 Pipe 2개(Read, Write를 위한 것이라고 추측)와 Socket을 하나 만들었음을 확인할 수 있다.

 

+ Recent posts