스팀 무료 게임이 멀웨어!? Beyond The Dark에 숨겨진 UnityPlayer.dll 분석
게임 플랫폼으로 유명한 스팀(Steam)은 유료뿐만 아니라 무료 게임도 서비스한다. 만약 스팀의 보안 시스템의 탐지를 피해 악성 파일을 무료 게임으로 업로드만 할 수 있다면 수많은 게이머들을 감염시킬 수 있는 공격 수단으로 활용될 수 있을 것이다. 이런 대담한 시도는 실제로 번번히 이루어져 종종 스팀 게임 라이브러리에 악성 파일이 포함됐다는 소식을 들을 수 있다.
이번에는 최근 무료 게임으로 업로드된 Beyond The Dark 게임에 포함된 악성 파일에 대한 분석 글을 작성했다. 현재 시점에서 게임 페이지는 남아있으나, 이미 스팀 측에서 악성 여부를 인지해 다운로드가 불가능하게 만들었다.

1. File Info
다음은 Beyond The Dark 게임에 포함된 악성 파일에 대한 정보다. 절대 Host 환경에서 실행하지 않도록 주의해야 한다.
- MD5 : 4A7B088EC76C2513432901BC9616D675
- SHA256 : B37CEA499EFAD35FF5AF7E73F34F17840C2D14DD6CD21E3345D22A39140B4D45
- FileName : UnityPlayer.dll
- FileSize : 7,819,776 바이트
- FileType : DLL64(.NET)
- 통신 서버 : hxxps[:]//435123332155.com/api.php
2. 악성 행위 분석
공격은 사용자가 Beyond The Dark.exe 파일을 실행하면서 시작된다. 이 실행 파일을 실행하면 Crash 가 발생해 정상적인 게임이 불가능하지만 UnityPlayer.dll 파일을 로딩하는 DLL 의존성을 가진다.
공격자는 Unity 게임 엔진 파일로 위장한 악성 DLL UnityPlayer.dll 을 실행 파일과 같은 경로에 둠으로써 DLL Side Loading 을 유도한다.

UnityPlayer.dll 을 로딩하는 Beyond The Dark.exe로딩된 UnityPlayer.dll 은 .NET 언어로 빌드된 64bit DLL 파일이다. dnSpy 로 분석한 결과, DLL 은 실행 시 호스트 이름, MAC 정보를 수집하고 두 정보를 이용해 client id를 생성한다.

또한 Chromium, Firefox, Opera 와 같은 주요 브라우저의 설치 경로를 탐색하며 Extension 목록을 수집한다.


간단한 정보 수집 후 공격자 서버와 통신을 시작한다. 서버와 주고 받는 패킷 Action 은 다음과 같다.
| Action | 기능 |
|---|---|
| register | 호스트 이름, MAC 을 송신해 클라이언트 등록 |
| client_message | 브라우저 Extension 정보 송신 |
| heartbeat | 클라이언트, 서버가 살아있음을 전달 |
| ack | 서버 패킷에 응답 |
통신에 지정된 X-API-Key 헤더 값이 필요하다.

최초 통신 시 호스트 이름과 MAC 을 포함한 register 패킷을 송신해 클라이언트를 등록한다.

클라이언트 등록 후 client_message 패킷을 생성해 앞서 수집한 브라우저 Extension 정보를 공격자 서버로 송신한다.

공격자 서버로부터 channel 값이 1인 메시지를 전달받으면 ZIP 파일을 다운로드한다.

다운로드한 ZIP 파일을 압축 해제 후, 가장 먼저 발견되는 exe 파일을 실행한다.

이후의 악성 동작은 다운로드된 exe 파일을 분석해야 하지만 이미 서버가 사망해 통신이 불가능한 상태다. 아마 핵심 악성 행위는 다운로드되는 exe 파일에 있을 것으로 추정된다.