c로 컴파일된 악성 코드 1 - 기초 정적 분석 (api 위주)

악성코드 및 포렌식|2021. 3. 11. 20:25

 

 

window 와 프로그램의 통신하기위한 도구가 필요하게되는데

 

이통신하는 이것들을 dll 파일로 보통정의하고 있다

 

dll 내부에 api가 들어가있다.

 

 

 

 

import address Table에서 알수있다.

 

굉장히 빠르게 판단을 할 수있다.

 

 

 

kernel32.dll  은 대부분의 프로그램에서 사용한다.

 

createMutexA

 

중복 실행 방지이름이 있거나 이름이없는 뮤텍스 오브젝트 하나를 만든다

그걸 만드는 이유는 동기화를 위한 것.

다른 프로그램이 침범할 수 없게끔 한다.

 

releaseMutex 

 

 

 

 

 

CreateThread

 

쓰레드를 생성한다

프로세스를 만들게 되면 일종의 작업공간이 프로세스인데

프로세스를 만들면 쓰레드가 만들어지는데 애가 메인 쓰레드라고하고

메인쓰레드가 프로세스 내부에서 일을한다 이쓰레드는 동작을하면서 다른 쓰레드를 만들수있는데

이럴떄 사용하는것이 부가적인 쓰레드를 만들떄 쓰는 createThread이다.

부가적인것을 만들기위해서는동기화를 위해서 sleep 잠자기, WaitForSingleObject 이벤트 기반의 어떤것을 사용해서 쓰레드의 동작을 확인할수 있도록 제공한다 

 

 

 

 

closeHandle

 

굉장히 많은 쓰레드 같은 오브젝트들이있는데 CloseHandle을 쓰게되있다

뮤텍스도 오브젝트 같은것들이다

쓰고나면 핸들을 반환해야하는데

그것을 closehandle로 마무리 짓는다고생각하면된다

 

 

 

GetCurrentThreadid

 

지금동작하는 쓰레드의 id를 반환한다

 

 

 

 

 

GetStartupinfoA

 

스타드 인포라는 구조체를 만들어주는데 startinfo라는 것은 create process (프로세스 만들때)할때

이 구조체가 필요하다

 

 

 

 

TerminateProcess

 

createprocess 가 끝나면 TerminateProcess가 있다 이건 프로세스를 종료

 

 

 

 

GetCurrentProcess

 

현재 이프로세스의 핸들을 얻게되는 함수

 

 

GetCurrentThreadid   -> Tid

 

GetCurrentProcessid -> pid 

 

이 두개는

프로세스나 쓰레드를 먼가 동작을 원할떄 원하는 id

 

 

 

 

 

GetExitCodeProcess

 

프로세스가 종료됬을 경우에 종료 선택값을 반환한다. 종료됬는지 확인

 

 

 

 

CreatePip

 

pip는 프로세스 끼리의 통신을 위해서 정의를 해놓는 객체 비슷한것

프로세스간의 통신을 하는데 프로세스에서 pip에다가 데이터를 씁니다

다른 프로세스는 이 데이터를 확인하고 꺼내간다

물론 충돌이 날수도있기때매 따로 줄수도있다.

하나는 입력으로만들고 하나는 출력으로 만들수도있다.

 

pip를 만들었다는 것 자체가 프로세스 간의 통신이 있을꺼라고 예측할 수 있다.

 

 

 

 

 

ReadFile

WriteFile

 

이거는 파이프를 약간 파일의 개념으로 보는 것이다. 오브젝트에 데이터를 쓴다생각하자.

백도어에 pip가 사용이되는데 읽거나 쓸때

ReadFile

WriteFile 을 사용하게됩니다.

 

 

 

 

GetTickCount

QueryPerformanceCounter

 

시간관련

 

 

 

 

 

 

UnhandleExceptionFilter

SetuphandledExceptionFileter

 

예외처리기 프로그램에서 세팅하는 것이아니고 컴파일 당시에 컴파일러가 세팅을 해준거라 의미가 없습니다.

 

 

 

여기까지 kernel32.dll 과관련된것을 봤다

 

 

 

 

 

=========================

 

USER32.dll

 

주로 유저 인터페이스, 버튼,스크롤 사용자행위제어 할때 사용 사용자가 클릭할때반응할라고

 

gui처럼 담당하는 애다 애같은 경우는 ShowWindow를 호출하고 있는데 윈도우 상의 상태를 지정할 수 있다.

창을 없앨수있는것 즉 창의 상태를 안보이게끔

이걸 하면 도스 창도 안뜬다.. 사람에게 보여지는게 없다 showwindow를 사용하면서 감춘것이다 바탕화면에안보이도록

 

 

 

WSOCK32.dll

 

주로 소켓프로그래밍에 많이쓰인다. 

일단은 소켓통신을 하는 구나 라고 생각하자.

 

 

=====================================

 

 

 

 

 

 

 

exeinfo를 통해 파일 내부를 보자

 

 

 

SubSystem 은

 

Win Console 즉 cmd창을 켯을떄 그것처럼 생긴것들 

backdoor를 키면 이런창이 showwindow때문에 보이지가않는다 

visual studio 2008을 사용했고

visual c++ 9.0 이걸 사용해서 컴파일 했다 

패킹이 되지않았다는 것을 알수 있었다.

 

 

 

 

 

 

 

#with 보안 프로젝트

 

 

 

 

 

댓글()