악성코드분석/실전 악성코드와 멀웨어 분석

실전 악성코드와 멀웨어 분석 실습 11-1

111-000-111 2022. 10. 26. 16:04

Lab11-01.exe에 있는 악성코드를 분석하자.

 

 

 

 

 

1. 악성코드는 무엇을 디스크에 다운로드 하는가?

 

 

ResourceHacker로 Lab11-01.exe를 확인한 결과이다.

TGAD라는 이름의 Resource 영역이 존재하는 것을 알 수 있고, 해당 영역은 MZ 헤더로 시작하는 PE파일임을 알 수 있다.

파일 내에 DisableThreadLibraryCalls라는 문자열이 존재하는 것으로 미루어 보아 해당 파일은 dll임을 추측할 수 있다.

 

Lab11-01.exe를 IDA로 확인해보았다.

Lab11-01.exe의 main함수
서브루틴 401080

 

Lab11-01.exe의 서브루틴 401080에서는 위에서 확인한 리소스를 msgina32.dll 라는 파일명으로 추출한다.

 

 

 

 

 

 

2. 악성코드는 어떻게 지속성(persistence)을 유지하는가?

서브루틴 401000

 

HKML\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\GinaDLL에 리소스인 msgina32.dll 경로를 등록한다.

따라서 시스템 시작과 더불어 Winlogon에서 msgina32.dll을 로드하게 만든다.

 

 

 

 

 

 

3. 악성코드는 어떻게 사용자의 인증정보를 훔치는가?

 

다음은 msgina32.dll을 분석한 것이다.

msginal32.dll의 DllMain
msginal32.dll의 DllMain

 

동일한 msgina32.dll의 DllMain 부분을 위에선 디컴파일러로 확인하고 아래에서는 디스어셈블러로 확인하였다.

GetSystemDirectoryW로 시스템 경로를 불러오고, lstrcatw함수를 이용하여 MSGina 문자열을 합쳐 LoadLibraryW로 불러오는 것을 확인할 수 있다.

 

 

아래는 msgina32.dll의 export 함수 목록이다.

 

Wlx로 시작하는 함수 이름이 상당히 많은 것을 확인 할 수 있는데, 이로 미루어 보아 GINA 가로채기 악성코드인 것을 추측할 수 있다.

 

 

GINA 가로채기란?

악성코드가 사용자 인증정보를 훔치기 위해 사용하는 기법이다.
GINA는 DLL(MSGina.dll)로 구현돼 있으며, 로그인 과정에서 Winlogon 실행 파일이 GINA를 로딩한다.
Winlogon과 MSGina.dll 사이에서 악성코드는 시스템에 전달되는 사용자의 인증정보를 캡쳐할 수 있다.
악성코드는 시스템이 정상적으로 동작하기 위해서 MSGina.dll에 인증정보를 전달해야 하므로, GINA에서 필요로 하는 함수를 모두 익스포트 해야 한다. 따라서, Wlx로 시작하는 함수를 많이 익스포트 하고 있는 DLL을 분석할 때 GINA 가로채기를 염두하고 분석해야 한다.

 

 

 

 

 

4. 악성코드는 훔친 인증정보를 가지고 무엇을 하는가?

 

위에서 확인했듯이, msgina32.dll은 Wlx로 시작하는 많은 함수를 익스포트 하고 있다.

그 중에서, WlxLoggedOutSAS 함수를 IDA로 살펴볼 것이다.

 

WlxLoggedOutSAS
서브루틴 10001570을 호출하는 부분

 

악성코드는 여러 인자를 서브루틴 10001570으로 넘겨주는 것을 확인하였다.

 

 

서브루틴 10001570

 

msutil32.sys파일에 위에서 넘겨받은 문자열로 채워주는 것을 확인할 수 있다. 해당 파일은 시스템 폴더에 생성되는데, 이는 Winlogon이 존재하는 곳이다. msgina32.dll이 Winlogon 프로세스 내에서 동작하기 때문이다.

 

fprintf함수로 날짜와 시간 정보를 msutil32.sys에 저장하는 것을 알 수 있다.

즉, msutil32.sys에는 날짜와 사용자 계정 정보를 저장한다.

 

 

 

 

 

5. 테스트 환경에서 사용자 인증정보를 얻기 위해 악성코드를 어떻게 사용했는가?

 

악성코드는 WlxLoggedOutSAS 함수를 통해 계정 정보를 탈취하고 있으므로, 사용자 로그아웃 시에만 계정을 로깅한다.

악성코드는 Lab11-01.exe를 실행시키면, msgina32.dll을 드롭하고 로그아웃시에 GINA 가로채기를 수행한다.

로깅한 정보를 얻기 위해서 로그아웃해야 하므로 시스템을 다시시작하여 확인하려 했으나, 악성코드 제작 환경이 xp이고 현재 실험 환경이 윈도우 10이므로 확인할 수 없었다.