본문 바로가기
악성코드 정보

ws2help.dll을 교체하는 온라인 게임 악성코드 분석

by 알 수 없는 사용자 2011. 10. 27.
2011년 들어 윈도우(Windows) 시스템에 존재하는 정상 시스템 파일을 패치(Patch)하거나 변경하는 악성코드이 지속적으로 증가하고 있으며, 최근에는 윈도우 시스템에 존재하는 정상 파일들 중 하나인 ws2help.dll 파일을 악성코드로 변경시키는 악성코드도 발견되었다.

특히 해당 악성코드는 제작 과정에서의 오류로 인해 감염된 시스템에서 블루스크린(BlueScreen, BSOD)을 발생시키는 치명적인 문제점도 발견되었다.

ASEC에서는 이번에 발견된 ws2help.dll 파일을 변경시키는 악성코드에 대한 상세한 분석을 진행하였고, 분석 과정에서 해당 악성코드의 어떠한 부분으로 인해 블루스크린이 발생하는지도 파악하였다.

해당 악성코드는 윈도우 시스템에 존재하는 ws2help.dll 파일을 악성코드에 생성된 ws3help.dll 파일로 교체한 후 ws2help.dll 파일을 호출하는 모든 프로세스에 인젝션되어 동작하도록 되어 있다. 그리고 시스템에 설치되어 있는 V3를 직접적으로 공격하는 기능과 함께 다양한 온라인 게임들의 사용자 정보를 탈취하는 기능을 수행하게 된다.

이와 함께 해당 악성코드는 30MB가 넘는 파일 크기를 가지고 있으나 코드의 대부분이 0x00로 사용되지 않는 코드들로 채워져 있어, 이는 보안 제품에 의한 탐지를 회피하기 위한 목적인 것으로 추정된다.

악성코드에 의해 변경되는 ws2help.dll 파일은 Windows Socket 2.0 Helper DLL로서 아래 이미지와 같은 네트워크 사용자 모드에서 ws2_32.dll 파일을 보조해 주며, 레지스트리 설정을 통해 사용을 하지 않을 수도 있다.


해당 악성코드는 드로퍼(Dropper) 형태이며  파일 자체는 Null Soft Install 프로그램으로 압축되어 있으며, 아래 이미지와 같이 해당 드로퍼에 의해 두 번재 드로퍼를 설치하게 된다.


생성된 또 다른 드로퍼에 의해 V3 관련 프로세스들을 강제 종료 시도를하게 되고, 윈도우 시스템에 존재하는 정상 파일인 ws2help.dll을 ws3help.dll로 파일명을 변경하여 백업을 수행하게 된다. 그리고 악성코드에 의해 변경된 ws2help.dll을 호출하는 모든 프로세스에 인젝션되어 동작하게 된다.

먼저 Null Soft Install 툴로 압축된 드로퍼에 의해 생성된 두 번째 드로퍼를 살펴보게 되면, 아래 이미지와 같이  리소스(Resource)에 GAME이라는 영역에 존재하는 데이터가 ws2help.dll 파일과 변경하게 될 다른 악성코드이다.


아래 이미지와 같이 이러한 리소스 영역의 데이터를 읽어 들어 파일로 생성하는 기법은 일반적인 드로퍼 형태의 악성코드에서 많이 사용하는 기법 중 하나이다.


그리고 아래 이미지와 같이 윈도우 시스템의 특정 레지스트리(Registry)에 TabProcGrowth 키를 생성한다.


이와 함께 윈도우 시스템에 의해 보호되는 ws2help.dll 파일을 악성코드와 변경하게 위해 WFP(Windows File Protection)을 무력화 시키게 된다. WFP의 무력화를 위해 아래 이미지와 같이 Sfc_os.dll 파일을 로드 후 Function #5를 호출하여 1분간 WFP를 무력화 시키게 된다.


WFP가 무력화가 되면 이후 두 번째 드로퍼에 의해 생성된 악성코드를 ws2help.dll 파일명으로 Dllcache와 SYSTEM32 디렉토리로 복사하게 된다.


두 번째 드로퍼에 의해 생성되어 정상 ws2help.dll 파일과 변경되는 악성코드는 엔트리 포인트(Entry Point)로 진입하게 되면 아래 이미지와 같이 인터럽터 3(Int 3) 안티 디버깅(Anti-Debugging)이 존재 한다.


해당 안티 디버깅 코드 이후 언패킹 루틴(Unpacking Routine)을 통과 하게 되면 아래 이미지와 같은 OEP가 나타나게 된다.


그리고 해당 악성코드는 감염된 시스템에서 실행 중인 프로세스 목록을 얻어 온 후 tskill.exe을 이용하여 V3와 관련된 프로세스 및 온라인 게임 관련 프로세스를 강제 종료하는 기능을 수행한다.


악성코드에 의해 강제 종료 되는 프로세스들은 다음과 같다.

Dnf.exe, MapleStory.exe, FF2Client.exe, lin.bin, lineage.exe, V3LSvc.exe, X2.exe, heroes.exe, Dragona.exe,
IEXPLORE.exe, PMCliente.exe, DnF.exe

그리고 악성코드에 의해 변경된 ws2help.dll 파일은 V3 관련 다음 프로세스 2개를 강제 종료하게 된다.

V3LSve.exe, V3Light.exe

악성코드에 의해 변경된 ws2help.dll 파일이 인젝션(Injection)되어 있는 프로세스가 위에서 언급된 두 개의 V3 관련 프로세스일 경우에는 강제 종료를 시도하게 된다.


위 이미지에서와 같이 GetModuleHandle() API를 이용하여 V3 관련 프로세스들의 이미지 베이스(Image Base) 주소를 얻어 올 수 있게 된다면, 해당 프로세스를 강제 종료하게 된다.

이와 함께 실행 중인 프로세스들을 확인하여 온라인 게임 관련 프로세스들일 경우에는용자의 계정과 암호 탈취 기능을 수행하는 스레드(Thread)를 생성하게 된다.


번에 발견된 해당 악성코드는 기존의 다른 온라인 게임의 사용자 정보를 탈취하는 악성코드와 다르게 내부적인 오류로 인해 블루 스크린을 유발하게 된다.

시스템 재부팅 시에 악성코드로 변경된 ws2help.dll 파일은 시스템 프로세스들에 인젝션하게 된다. 이때 안티 디버깅으로 익셉션(Exception)을 유발 시키게 되는데, 익셉션처리 과정에서 EIP 레지스터가 1 바이트씩밀려서 전혀 다른 명령를 수행하게 됨으로 메모리 참조 과정에서 블루 스크린이 발생하게 된다.


위의 이미지에서와 같이 XOR 명령어가 잘못된 메모리를 참조하게 됨으로 이부분에서 블루 스크린이 발생하게 된다. 그리고 발생한 블루 스크린은 아래 이미지와 같다.


최근 들어 지속적으로 증가하고 있는 윈도우 시스템 파일들을 변경하는 악성코드들 대부분이 인터넷 익스플로러(Internet Explorer) 어도비 플래쉬 플레이어(Adobe Flash Player)에 존재하는 취약점들로 인해 감염된다.

그러므로 해당 소프트웨어에 존재하는 보안 패치들을 설치하여야만 악성코드 감염을 원천적으로 예방할 수 있다.

댓글