'후킹'에 해당되는 글 2건

  1. 2012.10.05 ZeroAccess로도 알려진 Smiscer 변형
  2. 2012.07.25 구글 코드를 악용한 악성코드 유포

제로엑세스(ZeroAccess)로도 알려진 스미서(Smiscer) 변형은 얼마 전 국내 언론의 "악성코드 ‘제로액세스’, 전 세계 900만대 감염시켜" 기사를 통해 전 세계적으로 많은 감염 피해를 유발하고 있다.


ASEC에서는 9월 초에 발견된 스미서의 변형에 대해 상세한 분석을 통해 이 번에 발견된 스미서 변형이 어떠한 방식으로 동작하는지 파악하였다.


우선 스미서 변형의 감염 기법을 이해하기 위해서는 EA(Extended Attributes)에 대한 이해가 선행되어야 한다. 


EA(Extended Attributes)는 원래 HPFS(High Performance File System)에 있는 기능을 NTFS에서 구현 해 놓은 것을 말하며, 쉽게 설명하면 파일의 추가적인 속성을 "Name=Value" 처럼 환경 변수 형태로 파일에 붙이는 것을 이야기 한다.

 

윈도우 시스템에서는 ZwSetEaFile과 ZwQueryEaFile 두 개의 API로 해당 값들을 Set 혹은 Query 할 수 있게 제공하고 있으며 FILE_FULL_EA_INFORMATION이라는 구조체의 링크드 리스트(Linked List)로서 EA를 구현해 놓았다. 물론 EaValueLength가 2 Byte 변수이므로 최대 64K 바이트(Byte)까지 값을 쓸수 있다.



위 이미지와 같은 구조체가 아래 이미지와 같은 형태로 파일마다 확장 속성으로 부여 될 수 있다. 예전에 ADS(Alternate Data Steam)에 데이터(Data)를 숨겼 놓았 던 것처럼 여기에도 악성코드의 코드 혹은 데이터를 저장 할 수 있는 익스플로잇(Exploit)이 존재하며 이 번에 발견된 시미서 제작자 역시 이를 이용하였다. 



이 번에 발견된 스미서 변형은 다음과 같은 기능들을 가지고 동작하게 된다.
 
1. 윈도우(Windows) 보안 프로세스들의 스레드(Thread) 중지
 
스미서 변형에 감염이 되면 스미서 변형은 자신의 작업을 위하여 아래 이미지와 같은 윈도우 시스템의 보안 프로세스의 스레드(Thread)들을 중지 시켜 놓는다.


2. Explorer.exe에 코드 삽입

 

윈도우 시스템에 존재하는 정상 시스템 파일 중 하나인 Explorer.exe에 0x430 Byte의 코드를 삽입하고 이를 실행 시킨다. 여기서 스레드(Thread)를 새로 생성하지 않고 Explorer.exe의 스레드(Thread) 중에서 WaitReason이 DelayExecution인 스레드(Thread)를 찾아 이 스레드(Thread)가 삽입된 코드를 수행하게끔 Context에서 EIP를 변조하게 된다. 그리고 삽입된 코드는 Explorer.exe 프로세스에 로드된 ActionCenter와 Wscntfy 모듈을 언로드 시키는 기능을 수행하게 된다. 

 

3. 페이로드(Payload)에 의한 DLL 파일 생성

 

윈도우 시스템의 아래 경로에 접근하게 된다.


\??\C:\Documents and Settings\<User Name>\Local Settings\Applicatuin Data\{043A.....}\ 


해당 경로에는 다음과 같은 파일과 디렉토리를 생성하게 되는데, 그 중 "@"은 데이터 파일로 시간 정보를 포함한 특정 정보를 포함하고 있다. 그리고 "n"은 PE 파일로 제작자의 명령에 따라 동작하는 악의적인 봇(Bot) 기능을 수행하게 된다.


U : 디렉토리(Directory)

L : 디렉토리(Directory)

@ : 데이터(Data) 파일

n : PE 파일

  

4. 윈도우(Windows) 보안 무력화를 위한 스레드(Thread) 생성

 

스미서는 스레드(Thread)를 하나 생성하게 되는데, 윈도우에 포함되어 있는 보안 기능들을 무력화 시키는데 사용된다.


1) 특정 서비스들 제거

MsMpSvc, windefend, SharedAccess, iphlpSvc, wscsvc, mpssvc, bfe


2) 특정 프로세스 강제 종료

wscntfy.exe, MSASUci.exe, MpCmdRun.exe, NisSrv.exe, msseces.exe

  

5. CMD 프로세스를 생성하여 코드를 삽입

 

스미서는 CMD 프로세스를 생성하여, 해당 프로세스의 스택(Stack)에 데이터를 삽입하게 된다. 아래와 같은 특정 API들의 파라미터를 차례로 스택(Stack)에 넣어 코드 없이 API 만으로 스미서 자신의 프로세스가 종료 된 이후에는 Cmd가 자신 파일을 삭제 할수 있게끔 조작하게 된다.

 

ZwClose -> ZwDelayExecution -> ZwSetInformation -> ZwClose

 

 6. 외부 네트워크에 존재하는 시스템으로 접속 시도

 

스미서는 감염 된 시스템에서 외부 네트워크에 존재하는 promos.fling.com 도메인을 가진 시스템에 역 접속을 시도하여 성공하게 되면, 감염 시스템에서 운영체제 정보 및 스미서 의 동작 진행 상황들을 전송 하게 된다..

  

7. 자신의 복제본 및 허위 InstallFlashPlayer 생성

 

스미서는 자신의 복제본을 DLL 파일의 속성만 부여한 후에 msimg32.dll 파일 명으로 생성 한 이후에  Explorer.exe 프로세스에 의해 로드하게 된다. 그리고 허위 InstallFlashPlayer 를 생성히게 된다. 

 

9. ExitProcess의 후킹(Hooknig)

 

스미서 자신이 필요로 하는 감염된 시스템의 정보들을 수집하여, 제작자에게 전송 하기 전에 프로세스가 강제로 종료 되는 것을 막기 위해 ExitProcess를 후킹하게 된다.

  

9. Services.exe를 감염

 

스미서에 의해 EA(Extended Attributes)가 이용 되는 부분은 Services.exe를 감염 시킬 때로  Services.exe의 중간에 0x300 바이트(Byte)를 자신의 코드로 덮어 쓰게 된다. 여기서 덮어 쓰여진 코드는 자신 파일(Services.exe)에서 스미서 드로퍼(Dropper)가 생성해 놓은 EA(Extended Attributes) 데이터를 읽는 역할을 수행하게 된다.


이 EA(Extended Attributes) 데이터에는 페이로드(Payload)를 수행하는 코드와 패치(Patch)한 0x300 바이트(Byte)의 원본 코드를 포함하고 있다. 


그래서 정확한 치료를 위해서는 EA(Extended Attributes)를 읽어 이 0x300 바이트(Byte)를 찾아 원래 위치로 복구 해주어야 하며 이 부분의 동작을 간략하게 도식화 하게 되면 아래 이미지와 동일하다.



앞서 언급한 바와 같이 제로엑세스(ZeroAccess)로도 알려진 스미서(Smiscer) 변형은 윈도우 시스템에 존재하는 정상 파일인 Services.exe를 감염시킴으로서 외부 네트워크에 존재하는 시스템에 접속하여 제작자에 의해 내려지는 악의적인 명령들을 수행하게 된다.


그리고 EA(Extended Attributes)를 이용함으로서 윈도우 시스템에서 치료를 더욱 어렵도록 제작되어 있다. ASEC에서는 스미서 변형에 대한 정확한 진단 및 치료를 위해 아래와 같이 별도의 전용 백신을 제작하여 배포 중에 있다.


Win-Trojan/Smiscer 전용 백신


* 주의 사항

전용백신 실행 전 작업중인 데이타는 반드시 저장하시고, 전용백신 이외에 다른 응용 프로그램은 반드시 종료하시기 바랍니다. 또한 전용백신의 동작중 다른 응용 프로그램의 실행은 가급적 권장 하지 않습니다.

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

검색 엔진을 개발하는 구글(Google)에서는 사용자들의 편의성을 위해 지메일(Gmail), 구글 리더(Google Reader)와 구글 닥스(Google Docs) 등 여러가지 서비스를 제공해주고 있다.


구글에서 제공하는 서비스들은 인터넷만 연결되어 있다면 언제든지 메일과 웹 사이트 그리고 문서 등을 읽거나 작업할 수 있는 공간을 제공 해주고 있으며, 개발자들의 경우에는 구글 코드(Google Code)라고 하여 프로그램 개발과 관련한 소스코드와 파일등을 개발자들 사이에서 공유 할 수 있는 공간을 제공하고 있다.


이러한 서비스들 모두 24시간 중단되지 않는 가용성을 제공하고 있으며, 구글에서 운영을 하고 있음으로 안정성까지 제공 받을 수 있다는 점을 악용하여 구글 코드에 악성코드를 업로드하여 유포에 악용하는 사례가 7월 23일 발견되었다.


구글 코드를 악성코드 유포에 악용하였던 사례는 이번이 처음은 아니며 7월 18일 발견되었던 개인 금융 정보 탈취 목적의 Banki 트로이목마 역시 구글 코드를 악용하였다.


이 번에 발견된 구글 코드를 악용해 유포되고 있는 악성코드들은 아래 이미지와 같이 총 2개의 파일이며 server.exe (58,368 바이트)와 1.exe (37,772 바이트)이다.



해당 악성코드들의 상관 관계에 대해 ASD(AhnLab Smart Defense)의 데이터베이스를 통해 분석 결과 1.exe (37,772 바이트)는 최초 7월 22일 17시경 유포되었다.


해당 1.exe (37,772 바이트) 파일이 실행되면 윈도우 시스템 폴더에 다음과 같이 자신의 복사본으로 생성하게 된다.


C:\WINDOWS\system32\WinHelp32.exe


그리고 "Windows Help Systemg" 라는 서비스명으로 다음의 레지스트리 키를 생성하여 시스템 재부팅시 자동 실행하도록 구성하였다.


HKLM\SYSTEM\ControlSet001\Services\WinHelp32t\ImagePath

"C:\WINDOWS\system32\WinHelp32.exe"


그리고 중국에 위치한 특정 시스템으로 접속을 시도하게 되나 분석 당시에는 정상적인 접속이 이루어지지 않았다. 그러나 ASD의 데이터베이스를 통해 네트워크 접속 로그를 확인한 결과 7월 22일 23시경에는 다음 파일을 다운로드 하는 명령을 수행하고 있었다.


http://*********.googlecode.com/files/server.exe


1.exe (37,772 바이트)는 별도의 드라이버 파일(.SYS) 파일을 통해 보안 소프트웨어에 의해 후킹(Hooking)되어 있는 SSDT(System Service Dispatch Table)를 강제로 복구하는 기능을 수행하여, 자신이 보안 제품에 의해 탐지 되지 않도록 한다.


그 외에 공격자 의도에 따라 다음의 악의적인 기능들을 수행하게 된다.


파일 다운로드 및 실행

운영 체제 및 하드웨어 정보 수집

DoS(Denial of Service) 공격


1.exe (37,772 바이트)에 의해 다운로드 되는 server.exe (58,368 바이트)가 실행면 윈도우 시스템 폴더에 다음 파일을 생성하게 된다.


C:\WINDOWS\system32\(6자리 임의의 문자).exe   


그리고 "Remote Command Service"라는 서비스명으로 레지스트리 키를 생성하여 시스템 재부팅시 자동 실행하도록 구성하였다.


HKLM\SYSTEM\ControlSet001\Services\rcmdsvc\ImagePath

"C:\WINDOWS\system32\(6자리 임의의 문자).exe"


이와 함께 레지스트리 특정 키값을 수정하여 윈도우 시스템에 내장된 방화벽을 우회 할 수 있도록 설정하게 된다.


server.exe (58,368 바이트) 역시 7월 23일 20시 경에는 중국에 위치한 시스템에 접속을 시도하였으나 분석 당시에는 정상적인 접속이 이루어지지 않았다.


해당 파일 역시 공격자 의도에 따라 다음과 같이 일반적인 백도어(Backdoor)와 유사한 다양한 악의적인 기능들을 수행하게 된다.


파일 다운로드 및 실행

운영 체제 및 하드웨어 정보 수집

키보드 입력 후킹

DoS(Denial of Service) 공격

원격 제어


이 번 구글 코드를 통해 유포된 해당 악성코드들은 V3 제품군에서 다음과 같이 진단한다.


Win-Trojan/Agent.70144.KG

Backdoor/Win32.Yoddos


ASD 데이터베이스의 데이터를 통해 1.exe (37,772 바이트)와 server.exe (58,368 바이트)의 정보들을 분석하는 과정에서 1.exe (37,772 바이트)가 다수의 국내 웹 사이트들에 대한 분산 서비스 거부(Distributed Denial-of-Service) 공격을 수행하였던 데이터들을 확인하였다.


해당 분산 서비스 거부 공격의 대상이 되었던 웹 사이트들은 웹 하드 서비스 업체 웹 사이트와 소규모 의류 쇼핑몰이 주를 이루고 있었다.


이러한 정황들을 미루어 공격자는 중국 언더그라운드에서 공유되는 악성코드 생성기를 통해 생성한 악성코드들을 구글 코드에 업로드 한 후 취약한 웹 사이트 또는 포털 웹 사이트의 카페 등을 통해 유포한 것으로 추정된다.

저작자 표시
신고
Creative Commons License
Creative Commons License
Posted by 비회원