온라인 게임에서 사용되는 개인 정보들을 탈취하기 위한 악성코드는 몇 년에 걸쳐서 한국에서 꾸준히 발견되고 있으며, 이제는 매주 주말마다 새로운 변형들을 다양한 웹 어플리케이션 취약점들과 연동하여 유포하고 있다. 이러한 온라인 게임 관련 악성코드에 대해서 ASEC에서는 그 변형들이 악용하는 유포 기법들을 지속적으로 공유하고 잇다.


2011년 10월 - ws2help.dll을 교체하는 온라인 게임 악성코드 분석


2012년 3월 - CVE-2012-0754 취약점을 이용해 전파되는 온라인 게임핵 악성코드


2012년 7월 - XML 코어 서비스 취약점 악용으로 온라인 게임 악성코드 유포


2012년 7월 - GongDa Pack의 스크립트 악성코드 증가


2012년 8월 - YSZZ 스크립트 악성코드의 지속 발견


2012년 10월 - 패치드(Patched) 형태의 악성코드 변천사


이러한 온라인 게임의 사용자 개인 정보 탈취를 목적으로하는 악성코드가 최근에서는 usp10.DLL 파일을 악용하여 보안 소프트웨어를 무력화 기능까지 포함된 악성코드가 발견되었다.


이 번에 발견된 온라인 게임 관련 악성코드는 크게 3가지 부분으로 구분 할 수 있으며, 각각 다음과 같은 기능들을 가지고 있다.


드로퍼(Dropper) - TeminateProcess를 호출하여 보안 소프트웨어 강제 종료 시도


usp10.DLL : 로드 후 자신의 부모 프로세스가 보안 소프트웨어 프로세스 중 하나라면 UnmapViewOfSection 또는 ExitProcess 호출


에브킬(AVKill) 루트킷 : NtOpenProcess와 NtTerminateProcess 후킹 해제하여 보안 프로그램 강제 종료 시도


해당 온라인 게임 관련 악성코드의 드로퍼는 다음 보안 소프트웨어와 시스템 모니터링 툴의 프로세스가 실행 중이라면 강제 종료를 시도하게 된다.



그리고 윈도우 레지스트리(Registry)를 편집하여 다음과 같은 기능을 활성하게 된다.


"숨김 파일 및 폴더를 표시 안함" 설정

세팅하여 "알려진 파일 형식의 파일 확장명 숨기기" 설정


이와 함께 2개의 스레드(Thread)를 생성하여 다음의 기능들을 수행하게 된다.


1) usp10.DLL 생성

드로퍼는 두 개의 PE 파일을 포함하고 있으며, 첫 번째 스레드는 악의적인 usp10.DLL을 C 드라이브를 제외한 모든 드라이브의 모든 폴더에 EXE 파일이 존재하는지 확인 후 해당 DLL 파일을 생성하게 된다. 


그 후 해당 EXE 파일들이 실행 될 경우, 윈도두 시스템 폴더(System32) 폴더에 존쟇는 정상 DLL 파일 대신에 해당 악의적인 usp10.DLL을 먼저 로드 하게 된다. 


2) 다른 악성코드 다운로드 및 정보 유출

두 번째 스레드는 미국에 위치한 특정 시스템에서 다른 악성코드를 다운로드 및 실행 하게 된다.그리고 미국에 위치한 또 다른 특정 시스템으로 감염된 시스템의 MAC 주소와 운영체제 정보를 전송하게 된다.


드로퍼에 의해 생성된 usp10.DLL은 윈도우 시스템 폴더(System32)에 존재하는 정상 usp10.DLL을 로드 한 뒤, 정상 usp10.DLL의 익스포트(Export) 함수들을 리다이렉트(Redirect) 시키게 된다. 그리고 다른 악성코드를 다운로드 및 실행을 시도하나 분석 당시에는 정상적으로 다운로드 되지 않았다. 이와 함께 UnmapViewOfSection이나 ExitProcess를 호출하여 보안 소프트웨어의 프로세스에 대한 강제 종료를 시도하게 된다.


이 번에 발견된 usp10.DLL 파일을 악용하여 보안 소프트웨어를 무력화 기능까지 포함된 온라인 게임 관련 악성코드는 V3 제품 군에서 다음과 같이 진단한다.


Dropper/Win32.OnlineGameHack

Trojan/Win32.OnlineGameHack

Dropper/Win32.OnlineGameHack


향후 출시 예정인 V3 인터넷 시큐리티(Internet Security) 9.0 에 포함 예정인 ASD 2.0의 MDP 엔진에서도 시그니처 없이 다음과 같이 탐지가 가능하다.


Suspicious/MDP.DropMalware

저작자 표시 비영리 변경 금지
신고
Creative Commons License
Creative Commons License
Posted by 비회원

ASEC에서는 그 동안 악성코드에 의해 정상 윈도우(Windows) 시스템 파일을 변조시켜 악의적인 기능을 수행하는 패치드(Patched) 형태의 악성코드에 대한 정보들을 공개하였다.


특히 다양한 온라인 게임의 사용자 정보들을 탈취하는 온라인 게임 관련 트로이목마(OnlineGameHack)에 의해 온라인 게임의 메인 실행 프로세스의 주소 공간에 악성코드인  DLL 파일을 안정적으로 실행시키기 위해 윈도우 시스템의 정상 DLL 파일들을 감염 시키는 형태가 자주 발견되고 있다.


이러한 형태의 악성코드들을 일반적으로 패치드(Patched) 형태의 악성코드라고 불리고 있으며, 현재까지 발견된 악성코드에 의해 사용되는 패치드 기법들을 다음과 같이 정리 할 수 있다.


1. DLL 파일에 악의적인 DLL 파일을 로드하는 코드 삽입 후 이 코드로 분기하도록 패치하는 형태


일반적으로 많이 알려진 패치드 형태로서, 과거 3년 전부터 발견되기 시작하였으며, 주로 패치의 대상이 되었던 윈도우 정상 DLL 파일들은 imm32.dll, olepro32.dll, dsound.dll과 같다. 


패치가 된 DLL 파일은 위 이미지와 같이 파일의 섹션 끝 부분에 쉘코드(Shellcode)가 삽입 되어 있다



엔트리포인트(EntryPoint) 변경 후에는 콜 패치(Call Patch) 등의 방법으로 삽입된 코드가 실행이 되면 아래 이미지와 같이 LoadLibraryA가 호출이 되어 악의적인 DLL 파일이 로드 된다.



2. 윈도우 정상 DLL 파일을 악의적인 DLL 파일로 교체 한 뒤, 정상의 Export 함수들을 리다이렉트(Redirect) 시키는 형태

직접적으로 윈도우 정상 DLL 파일을 악의적인 DLL 파일로 교체하는 형태를 이야기 한다. 

이렇게 윈도우 정상 DLL 파일을 감염 시켰을 경우 원래 정상 DLL 파일의 익스포트(Export) 함수들이 정상적으로 호출이 되어야 함으로 익스포트 네임 테이블(Export Name Table)에서 이 함수들로 리다이렉트(Redirect) 시켜 주게 된다.

일반적으로 대상이 되었던 윈도우 정상 DLL 파일들은 ws2help.dll이나 wshtcpip.dll 들이다.


3. AppInit_DLL 레지스트리를 이용한 악의적인 DLL 파일 로드


윈도우 정상 DLL 파일들을 직접적으로 감염 시키는 형태는 아니지만, 온라인 게임 프로세스에 악의적인 DLL을 로드하기 위해 AppInit_DLL 레지스트리를 이용하는 형태이다.


해당 레지스트리에 악의적인 DLL 파일의 파일명을 삽입하게 되면 프로세스가 생성이 될 때, 레지스트리에 있는 존재하는 악의적인 DLL 파일이 로드되는 형태 이다.


4. 온라인 게임 프로세스와 동일 경로에 윈도우 정상 DLL 파일들과 동일한 파일명의 악의적인 DLL 파일 생성


전통적인 DLL 인젝션(Injection) 기법 중 하나로 많이 알려진 형태이며, 2012년 상반기에 발견되기 시작하여 최근 자주 발견되고 있는 온라인 게임 관련 악성코드에서 사용하는 기법이다. 주 대상이 되고 있는 윈동 정상 DLL 파일은  Usp10.dll 을 들 수 있다.

 

온라인 게임 관련 트로이목마 드로퍼(Dropper)가 온라인 게임 프로세스와 같은 경로에 악의적인 usp10.dll 파일을 생성한다. 그 이후 온라인 게임 프로세스가 생성이 될 때 윈도우 시스템 폴더(system32)에 존재하는 정상 usp10.dll 파일 보다 우선 순위가 높은 CurrentPath에 존재하는 악의적인 usp10.dll을 먼저 로드 하게 된다. 그 후 악의적인 usp10.dll 파일이 악의적인 행위를 수행한 뒤에  정상 usp10.dll로 로드하여 정상적인 기능도 제공을 해주는 형태로 동작한다.


5. 리다이렉트(Redirect) 대신 LoadLibrary로 직접 정상 DLL 파일을 로드한 뒤, 해당 익스포트(Export) 함수를 호출하는 형태


각 익스포트(Export) 함수에서 직접 정상 DLL 파일을 로드한 후, GetProcAddress 함수를 이용해 정상 DLL 파일의 익스포트(Export) 함수 주소를 얻은 후 호출하여 정상적인 기능을 제공한다.

이러한 형태로 각각의 익스포트(Expor)t 함수들을 분석을 해보면 아래 이미지와 같이 쉽게 백업된 정상 DLL 파일의 파일명인 ws2helpxp.dll을 확인 할 수 있다.




6. 각각의 익스포트(Export) 함수가 널(Null)로 채워져 있거나, 인코딩(Encoding) 되어 있는 형태

 

정상 DLL 파일명을 확인하기 어려도록 하기 위한 목적으로 각 익스포트(Export) 함수가 아래 이미지와 같이 널(Null)로 채워져 있거나 인코딩(Encoding) 되어 있는 형태들이다.



최근에는 아래 이미지와 같이 문자열을 바로 보여지지 않으려는 시도까지 하고 있다.



앞서 우리는 윈도우 시스템 정상 DLL 파일들을 변조하는 패치드 형태의 악성코드들의 다양한 기법들을 살펴 보았다.


이러한 패치드 형태의 악성코드들이 자주 발견되고 있는 배경으로는 온라인 게임의 사용자 개인 정보를 탈취 하려는 목적과 연관이 되어 있으며, 최근에는 보안 소프트웨어를 무력화하기 위한 목적까지 포함되기 시작하였다.


특히 몇 년전부터 온라인 게임 관련 악성코드들은 유저모드(User Mode)와 커널 모드(Kernel Mode)에 걸쳐 다양한 기법들을 이용해 보안 소프트웨어를 무력화하고자 시도하고 있다. 최근에는 직접적으로 보안 소프트웨어를 공격하기 보다는 좀더 취약하고 방어하기 어려운 윈도우 정상 DLL 파일을 감염시켜 보안 소프트웨어를 무력화 시키고자 시도하고 있다.


이렇게 보안 소프트웨어의 발전과 함께 악성코드 역시 다양한 기법들을 동원하여 진단 및 치료를 어렵게 함과 동시에 직접적으로 보안 소프트웨어를 무력화하기 위한 다양한 기법들을 사용하고 있다. 그러므로 컴퓨터 시스템을 사용하는 개별 사용자가 시스템 관리와 보안에 대한 각별한 관심이 필요하다.

저작자 표시 비영리 변경 금지
신고
Creative Commons License
Creative Commons License
Posted by 비회원