ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Dreamhack - [CodeEngn] Malware L06
    wargame/Dreamhack 2024. 8. 18. 19:39

    [LEVEL 1 - [CodeEngn] Malware L06 - reversing, misc]

     

     

     

    문제 파일을 다운로드 받으면 pdf 하나가 들어있다.

     

    위와 같이 악성코드의 전체 Flow가 그래프로 주어진 pdf이다.

     

     

     

     

    시작 부분을 보면 CreateMutexA()가 가장 눈에 띈다.

     

     

     

     

    구글링하면 msdn에 아래와 같이 친절하게 설명이 나온다.

    매개변수 중 lpMutexAttributes는 SECURITY_ATTRIBUTES 구조체에 대한 포인터이다. 이 매개변수가 NULL이면 자식 프로세스에서 핸들을 상속할 수 없다.

    bInitialOwner은 이 값이 TRUE 이고 호출자가 뮤텍스를 만든 경우 호출 스레드는 뮤텍스 개체의 초기 소유권을 얻는다. 그렇지 않으면 호출 스레드는 뮤텍스의 소유권을 얻지 못한다.

    lpName은 뮤텍스 개체의 이름이다. 이름은 MAX_PATH 문자로 제한된다. 이름 비교는 대/소문자를 구분한다. lpName이 기존 명명된 뮤텍스 개체의 이름과 일치하는 경우 이 함수는 MUTEX_ALL_ACCESS 액세스 권한을 요청한다. 이 경우 bInitialOwner 매개 변수는 만들기 프로세스에 의해 이미 설정되었기 때문에 무시된다. lpMutexAttributes 매개 변수가 NULL이 아닌 경우 핸들을 상속할 수 있는지 여부를 결정하지만 해당 보안 설명자 멤버는 무시된다. lpName이 NULL이면 이름 없이 뮤텍스 개체가 만들어진다.

     

     

     

     

    전체 Flow의 중간 부분을 확대하면 CreateThread()가 보이고, 이어서 CreateMutexA()가 보인다.

     

     

     

     

    CreateThread()로 호출 프로세스의 가상 주소 공간 내에서 실행할 스레드를 만들 수 있다.

     

     

     

     

    좀전에 CreateThread() 다음에 CreateMutexA()를 호출한 것을 보아, 이 부분에서 문제가 요구한 Thread Mutex가 무엇인지 알 수 있다. 여기서 CreateMutexA()를 호출할 때 lpName 매개변수의 값이 smtp_bagla_1000이므로 이게 답이다.

     

     

     

     

    플래그를 획득했다!

     

    'wargame > Dreamhack' 카테고리의 다른 글

    Dreamhack - [CodeEngn] Malware L08  (0) 2024.08.24
    Dreamhack - [CodeEngn] Malware L07  (0) 2024.08.18
    Dreamhack - Inject ME!!!  (0) 2024.08.05
    Dreamhack - Secure Mail  (0) 2024.08.04
    Dreamhack - rev-basic-8  (1) 2024.07.23
Designed by Tistory.