본문 바로가기

Malware Analysis

[CodeEngn] Malware Analysis L06

6번 문제이다. 코드 엔진에는 악성코드 분석에 대해 8문제가 있으니, 이 문제를 풀면 두 문제가 남는다.

이 문제에서는 악성코드 Flow의 일부를 제공해 주는데, pdf 파일로 제공된다.

이렇게 생겼는데, 화질이 좋지 않으니 직접 다운로드한 파일을 참고하자.

 

문제에서 구하라고 한 것은 Thread Mutex가 무엇인지이다.

그렇다면 먼저 Thread Mutex에 대해 알아야 할 것이다.

 

구글링 해보면 좋은 자료가 많다.

 

간략히 이해한대로 설명하면,

여러 개의 쓰레드가 사용되고, 공유 자원이 사용될 때 문제점이 발생한다.

두 개 이상의 쓰레드가 동시에 자원에 접근하게 될 때

하나 이상의 쓰레드의 작업이 제대로 적용되지 않는 문제점이다.

(너무 간략하게 설명했다. 뮤텍스에 대해 좋은 예를 들어 설명해주는 글들이 많으니 그런 글들을 참고하면 좋을 것 같다.)

 

이렇게 문제가 생기는 이유는 공유 자원을 동시에 접근하기 때문이다.

때문에 뮤텍스를 사용하여 이 자원에 lock을 걸어둠으로써 해결할 수 있다.

 

그럼 이 Flow Chart에서 Thread Mutex를 찾아보자.

첫번째 뮤텍스 생성
두번째 뮤텍스 생성

뮤텍스를 생성하는 부분은 위 두 부분이다.

 

CreateMutexA 함수를 사용하고 있는데, 이 함수에 대해 살펴보자.

https://learn.microsoft.com/ko-kr/windows/win32/api/synchapi/nf-synchapi-createmutexa

 

CreateMutexA 함수(synchapi.h) - Win32 apps

명명되거나 명명되지 않은 뮤텍스 개체를 만들거나 엽니다. (ANSI)

learn.microsoft.com

 

HANDLE CreateMutexA(
  [in, optional] LPSECURITY_ATTRIBUTES lpMutexAttributes,
  [in]           BOOL                  bInitialOwner,
  [in, optional] LPCSTR                lpName
);

 

세 번째 인자인 lpName이 뮤텍스 개체의 이름이다.

 

그럼 위에 Flow Chart에서 생성된 두 개의 뮤텍스 개체의 이름을 알 수 있다.

 

두 번째 뮤텍스 생성하는 부분은, 바로 위에서 쓰레드를 생성하고 있다.

두 번째 뮤텍스가 Thread Mutex 인가보다.

'Malware Analysis' 카테고리의 다른 글

[CodeEngn] Malware Analysis L08  (0) 2023.08.06
[CodeEngn] Malware Analysis L07  (0) 2023.08.06
[CodeEngn] Malware Analysis L05  (0) 2023.08.06
[CodeEngn] Malware Analysis L04  (0) 2023.08.06
[CodeEngn] Malware Analysis L03  (0) 2023.08.06