'난독화'에 해당되는 글 2건

  1. 2014.03.20 [Threat Analysis] 'GongDa'의 무차별 웹 공격이 시작됐다
  2. 2010.09.28 Malzilla를 이용한 악성코드 분석 방법
2014. 3. 20. 18:36

[Threat Analysis] 'GongDa'의 무차별 웹 공격이 시작됐다

 최근 국내 사이트를 통해 악성코드에 감염되는 사례들 가운데 중국에서 제작된 것으로 추정되는 웹 익스플로잇 툴킷(일명 공다팩, Gongda Pack)의 흔적들이 발견되고 있다. 해당 툴킷의 가장 큰 특징은 ‘Dadong’이라는 독특한 스크립트 난독화 방식을 사용한다는 점이다. 특히, 이 툴킷에는 가장 최신의 MS 제품 관련 취약점뿐만 아니라 상대적으로 보안 업데이트에 소홀할 수 있는 서드파티 애플리케이션 취약점에 대한 공격 코드가 포함되어 있어 그 피해 규모가 더욱 클 것으로 예상된다. 따라서, 사용자 및 보안 담당자들의 각별한 주의가 필요하다.


 

공다팩(GongDa Pack)

 

일반적으로 웹 익스플로잇 툴킷들은 내부적으로 사용되는 특징적인 도메인이나 변수들의 이름을 따서 명명된다. 공다팩(gongda pack)도 툴킷 내부 공격 코드에서 중국어로 ‘공격’을 의미하는 ‘공다(gong da)’라는 변수명 ‘gondad’가 상당 부분 사용되는 점을 특징으로 이름이 지어졌다.

 

 

스크립트 구조


공다팩 스크립트의 일반적인 구조를 요약하면 다음과 같고, 아래 스크립트를 참고하여 세부 내용을 확인할 수 있다.

 

1. 상단에 플래시 플레이어 관련 함수들이 있는 swfobject.js와 자바 실행 관련 jpg.js 스크립트가 삽입되어 있다.
2. 쿠키로부터 dadong, bot, spider, linux 등이 있는지 확인하여 해당 문자열이 쿠키에 없는 경우 쿠키 값 ‘dadong=Yes’를 설정한다.
3. 사용자 시스템의 브라우저 종류 및 취약점이 있는 애플리케이션의 버전에 따라 공격 코드가 달라진다.
4. 외부 사이트에 페이지 접속 로그를 남긴다.

 

그리고 다양한 취약점 공격이 가능하도록 새로운 스크립트가 추가되기도 한다. 기본 스크립트 구조에서 IE 브라우저를 사용하는지를 확인한다. 이 외에 추가되는 부분은 취약점이 존재하는 애플리케이션의 세부 버전까지 확인하여 여러 공격이 가능하도록 한다. 우선, 조건부의 다양한 취약점 스크립트 삽입 구조를 살펴보자.

 

[그림 1] 일반적인 공다팩 스크립트 구조(index.html)

 

기본 스크립트 구조 외에 다음과 같은 스크립트가 추가적으로 포함되는 경우가 있다.

 

[그림 2] 공다팩 조건부 다양한 취약점 삽입 구조(index.html)

 

위의 코드를 간단히 도식화하면 [그림 3]과 같다. 플래시 플레이어 버전이 10.3.183보다 작으면 f2.html(2011.05.13에 발표된 CVE-2011-2140 플래시 MP4 취약점)이 삽입된다. 그리고 플래시 플레이어 버전이 10.3.183.15, 11.1.102.62보다 작은 경우 ff.html(2012.01.18에 나온 CVE-2012-0754 플래시 MP4 취약점)이 삽입된다.
 


[그림 3] 공다팩 취약점 삽입 구조의 도식화

 

 

스크립트 상세

 

# swfobject.js


정상적인 SWFObject 자바 스크립트는 내장된 플래시 콘텐츠를 사용하기 위한 것으로 주 웹 브라우저가 사용하는 플래시 플러그인(Plugin)을 감지한다. 공다팩에서 이용하는 swfobject.js 파일은 정상인 것처럼 보이나 플래시 플레이어 취약점 버전을 세부적으로 확인하기 위해 커스터마이징 되었다.


플래시 플레이어 버전을 체크하기 위해 ‘deconcept.SWFObjectUtil.getPlayerVersion’과 같은 함수를 이용한다. 이 때 major,minor,rev 외에 gondad라는 변수를 정의하여 4번째 버전 값도 확인한다.

 

  
[그림 4] swfobject.js 일부

 

 

#jpg.js


정상적인 deployJava.js는 JRE 자동 설치 및 애플릿 배치(applet deploy)를 위한 것이다. JRE 자동 설치는 인터넷 익스플로러와 파이어폭스 브라우저에서만 가능하다. 이 외의 다른 브라우저는 JRE 다운로드 페이지로 리다이렉트된다. 공다팩 스크립트 기본 구조에서 IE를 사용하는지 여부를 점검하는 것도 이와 관련이 있는 것으로 보인다.


정상적인 deployjava가 JRE 7 이상 버전을 확인하는 것과 달리, 공다팩에서 이용하는 jpg.js 파일은 취약점이 있는 자바 1.6.0.18 버전을 기준으로 확인한다는 점 이외에 특이사항은 없다.

 


[그림 5] jpg.js 일부


 

# ff.html : 플래시 MP4 취약점, CVE-2012-0754

[그림 6]은 플래시 MP4 취약점과 관련하여 하단에 Gendad.swf가 삽입되며, 이 플래시 파일은 ee.jpg MP4 파일을 재생하여 취약점을 발생시킨다.

 


[그림 6] ff.html 일부

 


[그림 7] Gondad.swf 파일 내용 일부

 

 

# f2.html : 플래시 MP4 취약점, CVE-2011-2140

[그림 8]은 플래시 MP4 취약점으로 하단에 bb.swf 파일이 삽입되는데, 이 플래시 파일은 ea.jpg MP4 파일을 재생하여 취약점을 발생시킨다.
 


[그림 8] f2.html 일부

 

[그림 9] bb.swf 파일 내용 일부

 

 

# i.html : 윈도우 미디어 취약점, CVE-2012-0003


윈도우 미디어 취약점으로, exp.mid 파일이 로드되어 취약점이 발생한다.

 


[그림 10] i.html 일부

 

 

주요 취약점


공다팩을 비롯한 웹 익스플로잇 툴킷들은 패치가 되지 않은 제로데이 취약점을 비롯하여 패치되었으나 상대적으로 보안 업데이트가 잘 이루어지지 않은 가장 최신 취약점을 빠르게 반영한다. 최근 공다팩에서 이용하고 있는 주요 취약점들은 [표 1]과 같다.

 

[표 1] 최근 공다팩에서 이용하고 있는 주요 취약점

 

 

난독화


2010년부터 현재까지 취약점을 이용한 공격 사례 가운데 ‘Dadong’ 스크립트를 사용하는 경우가 빈번하게 발견되고 있다. 최신 버전은 Dadong 0.41 버전으로 공다팩에서도 /*Encrypt By 도메인's JSXX 0.41 VIP*/이라는 주석을 통하여 난독화되어 있는 것을 확인할 수 있다.


아래 코드는 index.html에서 난독화되어 있는 부분이다. 난독화되어 있기 때문에 어떤 취약점인지 한눈에 파악할 수 없는 어려움이 있다.

 


[그림 11] 공다팩 Dadong 난독화 해제 전 코드(index.html)

 

난독화를 해제하면 아래와 같은 코드가 나오고, 대다수 변수 이름이 ‘gondad’로 이루어져 있는 것을 볼 수 있다. 난독화가 해제된 코드는 Gondad.jpg(실제 jar 파일)라는 악성 자바 애플릿이 실행된다. 이를 통해 .exe 악성코드가 사용자 시스템에 다운로드된다.

 


[그림 12] 공다팩 Dadong 난독화 해제 후 코드(index.html)

 

유포되는 주요 악성코드
- 정상 소프트웨어 위장
  - ws2help.dll 파일 변조
  - AV 프로세스 KILL
  - 게임 사용자의 정보 탈취(온라인 게임핵)

 

최근 국내에서 발견되는 주요 악성코드는 위와 같은 주요 악성 행위들을 수행하며, 외국 사례에서는 커널 루트킷 배포도 보고되고 있다.  

취약점을 통해 다운로드되는 악성코드 gondad.exe의 등록정보를 보면 정상 소프트웨어를 위장하고 있는 것을 확인할 수 있다. 정상 소프트웨어의 등록정보를 보면 파일 버전/설명/저작권 등 상세 정보가 실제와 다른 것을 알 수 있다.

 

  
[그림 13] 악성코드 gondad.exe의 등록 정보(좌) / 정상 소프트웨어 등록 정보(우)

 

gondad.exe는 시그니처 기반 파일 탐지를 회피하기 위해 UPX로 패킹되어 있고, %windir%\wxp2.temp라는 파일을 생성하여 %windir%\system32\ws2.help.dll로 변경하려 한다. 이 과정에서 실패하면 정상 ws2help.dll을 ws2help.dll.[랜덤].tmp로 변경하고 ws2help.dll 악성 파일을 새로 생성한다.

 

 

또한 다음과 같이 국내 백신 프로세스를 확인하여 KILL하는 기능이 있다.

 

push gondad.004060A0          ; /Arg1 = 004060A0 ASCII "V3LSvc.exe"
call gondad.004018C0          ; \gondad.004018C0
push gondad .00406078          ; /Arg1 = 00406078 ASCII "AYAgent.aye"
call gondad.004018C0          ; \gondad.004018C0

 

마지막으로, [그림 14]와 같은 문자열이 들어있는 악성 파일에 온라인 게임과 관련된 계정을 탈취하는 기능이 포함되어 있음을 확인할 수 있다.

 

 
[그림 14] 악성코드 내 문자열 일부

 

 

웹 트래픽


공다팩과 관련해 대표적인 웹 트래픽의 특징은 다음 URL 특징과 쿠키 정보에서 살펴볼 수 있다.

 

# URL 특징


다음은 공다팩 관련 URL 요청에 대한 페이지 정보, 설명, 변경 상황에 관해 정리한 내용이다. 내부적으로 사용되는 일부 라이브러리 파일과 페이지 접근 정보 관련 정보들은 대부분 고정적(Static)이나 취약점과 관련된 페이지 정보는 유동적(Dynamic)으로 변경될 수 있다.

 

[표 2] 공다팩 관련 URL 요청에 대한 정보 변경 상황

 

 

# 쿠키 정보


index.html 파일에 아래와 같이 dadong=Yes; 라고 쿠키를 설정하는 부분이 있다.

 


[그림 15] index.html 파일의 쿠키 검사/설정 스크립트 부분


위 코드가 실행되고 나면 웹 트래픽에서는 [그림 16]과 같이 쿠키 값이 설정된다. 
 


[그림 16] 실제 요청 헤더의 쿠키 정보


 

공다팩 추적


공다팩으로 인한 침해 흔적을 추적하는 방법은 서버, 사용자 시스템 혹은 어떤 관점에서 추적하는지에 따라 다양하다. 예를 들어 사이트 운영자라면 서버가 침해당했는지 확인하기 위해, [웹 트래픽]의 URL 특징에서 URI 정보를 기준으로 웹 서버의 홈페이지 파일을 저장하고 있는 디렉터리에서 해당 파일이 존재하는지 확인해 볼 수 있을 것이다. [네트워크상에서 탐지 및 보안 대책]에서와 같이 네트워크 보안 시그니처가 있다면 네트워크 보안 장비에서 조사해 볼 수도 있을 것이다.


이때, 공다팩을 포함한 웹 익스플로잇 툴킷과 같이 웹 침해 사고를 조사할 때는 브라우저가 제공하는 [표 3]의 정보들은 침해 흔적을 추적하는 데 도움이 된다.

 

히스토리와 캐시 데이터를 참고하여 [웹 트래픽]에서 특징적으로 나타나는 URL 정보가 존재하는지 검사할 수 있다. 또한 [스크립트 구조]에서 특징적으로 나타나는 악성 스크립트 패턴들을 임시 저장된 Cache 파일에서 키워드 검색을 통해 추적해 볼 수 있다. 의심 요소가 발견되면 데이터 시간 정보를 참고하여 TimeLine 분석을 수행할 수 있다.

 

[표 3] 브라우저가 제공하는 캐시, 쿠키, 히스토리 정보

 

각 브라우저가 제공해주는 캐시, 쿠키, 히스토리에는 index.dat 파일이 존재한다. index.dat는 인터넷 웹 브라우저가 사용하는 데이터베이스 파일이며, 이를 자동으로 분석해주는 도구(index.dat Analyzer)들을 이용하여 좀더 쉽게 분석할 수 있다. 단, 이러한 분석 도구는 파일의 내용을 검색할 수 없다는 한계가 있으므로 URL 요청에 한해서 참고할 수 있다.

 


[그림 17] 브라우저 정보(index.dat)를 자동으로 분석해주는 도구의 예

 

 

침해 사례


최근 발견된 공다팩 관련 침해 사례를 통해 크게 두 가지로 나누어 생각해 볼 수 있다.


첫째는 공격자가 상대적으로 보안이 허술한 광고 서버를 해킹하여 공격 코드를 업로드하는 사례이다. 이렇게 삽입된 공격 코드(Exploit)들은 뉴스 사이트에 접속하는 사용자 브라우저를 통해 광고 페이지와 함께 로딩된다. 공격이 성공하면 사용자는 공격자의 서버로부터 악성 실행 파일을 다운로드하고 이 파일이 실행되면 2차 악성코드에 감염된다.
둘째는 한 공격자가 다수의 악성 도메인을 운영하는 예이다. 경유지 서버 및 공격에 이용되는 공격자 서버가 의심스러운 한 사람의 정보로 등록되어 있는 경우가 있다. 또한 단일 IP에 대해 다수의 도메인이 등록되어 있기도 했다. 이 때, 도메인 차단 정책보다는 IP 차단 정책이 더 효율적일 수 있다.

 


[그림 18] 공다팩 침해 사례 예시

 

 

사용자 시스템상에서 보안 업데이트

 
사용자 시스템에서는 주기적으로 업데이트할 수 있도록 마이크로소프트 및 서드파티(Adobe, java) 제품 관련 자동 업데이트를 설정하는 것이 중요하다.

 

[표 4] 주요 응용 프로그램 취약점 업데이트

 

취약점별 버전 확인 및 업데이트 정보를 확인하는 방법은 다음과 같다.

 

# Oracle Java 
  - Java 버전 확인 방법 : cmd > java -version 
  - 보안 업데이트: http://www.oracle.com/technetwork/topics/security/javacpuoct2011-443431.html#PatchTable

 

 

#Adobe Flash Player
  - Adobe Flash Player 버전 확인 방법 :
   + 사이트 접속 : http://get.adobe.com/kr/flashplayer/
   + 윈도우 7 기준 : 제어판 → 프로그램 및 기능
  - 보안 업데이트 : http://get.adobe.com/kr/flashplayer/

 

 

 

# Microsoft Windows Media & IE Explorer
  - 업데이트 설치 확인 방법 : 
    윈도우 7 기준 제어판 → 프로그램 및 기능 → 설치된 업데이트 보기 
   (예, KB2631813이라면 아래와 같이 확인할 수 있으며 윈도우 버전마다 패치 번호는 다를 수 있기 때문에 아래 보안 업데이트 페이지 정보를 참고한다.) 
   * 윈도우 미디어의 취약점으로 인한 원격 코드 실행 문제점(2636391)
   * 인터넷 익스플로러 보안 업데이트(980182)
  - 보안 업데이트 : http://technet.microsoft.com/ko-kr/security/bulletin/ms12-004

 

 

 

* 참고

SWFObject: Javascript Flash Player detection and embed script
http://blog.deconcept.com/swfobject/

플래시 MP4 취약점 CVE-2011-2140, CVE-2012-0754
http://asec.ahnlab.com/786

인터넷 익스플로러 히스토리 파일 위치
http://www.forensicswiki.org/wiki/Internet_Explorer_History_File_Format

Emerging Threats(snort) 시그니처
http://rules.emergingthreats.net/open/snort-2.8.4/rules/emerging-current_events.rules

Chinese Pack Using Dadong’s JSXX VIP Script Posted on March 1, 2012 by darryl
http://www.kahusecurity.com/2012/chinese-pack-using-dadongs-jsxx-vip-script/



출처 : 안랩


Trackback 0 Comment 0
2010. 9. 28. 19:14

Malzilla를 이용한 악성코드 분석 방법

Malzilla라는 툴을 사용하여 간단하게 악성코드를 분석하는 방법에 대해 살펴보자. 이 과정을 통해 악성코드 유포지의 정보를 파악할 수 있다면, 추가 감염을 막기 위한 기본 정보 획득이 가능할 것이다


A사의 웹사이트에 삽입된 악성 코드를 살펴 보니 쉽게 파악하기 힘든 구조로 삽입 되어 있었다. 악성코드 제작자의 입장에서 악성 코드의 생명 주기는 매우 중요한 문제이다. 그들이 배포한 악성코드도 언젠가 분석가들에 의해 분석되고, 안티 바이러스 제품 또는 네트워크 기반 보안 장비에 의해 탐지될 것이라는 것을 안다. 악성코드 제작자는 최대한 분석을 어렵게 하기 위해, 여러 가지 기법을 사용할 수 있는 데 이번 사건에서는 넓은 의미에서의 사회 공학적 기법, 그리고 코드 난독화 기술들을 사용하였다.


A사는 매우 복잡한 메인 페이지를 가지고 있으며, 많은 협력업체 및 광고 페이지의 링크가 표시되고 있었다. 이 메인 페이지의 수 많은 페이지 중 한 파일을 변조하여 사업적으로 관계가 있는 B사의 그림 파일을 불러들이도록 변조한 것이다.


우선 최초 삽입 위치는 A사의 http://a.a.a.a/menu_js/displayobject.js로 이 파일의 하단에 B사의 그림파일 hxxp://b.b.b.b/gs3/pc_search_top.gif을 불러 들이도록 내용을 추가했다.
이 때, 분석가 입장에서는 A사와 B사가 협력사 관계가 있기 때문에 자연스럽게 지나치게 된다. 게다가, B사에 포함되어 있는 pc_search_top.gif 파일의 확장자가 GIF라는 점은 분석가에 의해 발각되지 않도록 노력한 흔적이 보인다.


이 pc_search_top.gif 파일을 다운로드 하여 내용을 살펴보면 다음과 같다.

정상적인 GIF 파일의 경우, 아래 그림과 같이 GIF89a라는 시그니처를 가지고 있다. 하지만 이 파일은 악성코드를 유포하도록 조작되어 있었다.

공격자는 이 악성코드 삽입 시 두 업체의 사회적 관계를 이용하여 악성코드가 아닌 것처럼 연결했다. 또 확장자를 GIF 파일로 작성하여 그림 파일인 것처럼 위장하는 기법을 사용하였다.


malzilla를 이용해 분석한 결과, pc_search_top.gif의 첫 줄에 삽입되어 있는 aad.jpg은 다음과 같은 내용을 가지고 있다.

공격자는 위 코드가 어떤 행위를 수행하는 지 한눈에 알아볼 수 없도록 변수명, 그리고 변수의 값 등을 난독화하였다. 이런 경우, 깔끔하게 정리되어 있는 코드를 보는 것 보다는 분석에 약간의 시간이 더 걸리도록 할 수 있다.


일반적으로 네트워크 보안 장비는 정규 표현식 또는 패턴 문자열을 기반으로 공격을 탐지한다. 이러한 악성코드가 전송되는 경우에는 위와 같이 난독화 된 형태로 피해자의 PC에 전송이 된 후, 웹 브라우저에서 실행할 때 실제 취약점을 공격하는 형태로 동작하게 되어 탐지가 매우 어렵다.


[그림 2]는 Malzilla 최초 실행 화면이다. 그림 하단에서 이 툴은 특정 URL에 있는 파일을 다운로드 받을 수 있는 기능을 제공한다. 대부분의 악성코드들은 웹 브라우저를 통해 접근하면 웹 브라우저 자체에 존재하는 취약점 때문에 공격자가 의도한 임의의 쉘(Shell) 코드가 실행되게 된다. 이 경우 악성 코드를 다운로드 받고 자동 실행이 되기 때문에, 분석 시에는 이런 “Malzilla”와 같은 툴을 사용하는 것을 추천한다.

[그림 2] Malzilla 최초 실행 화면

 

[그림 2]의 하단에서 URL 부분에 다운로드 받고자 하는 악성코드 URL을 입력하고 Get을 누른다. 그럼 [그림 3]과 같이 상단에 해당 파일에 대한 내용을 확인할 수 있다.

[그림 3] Malzilla의 URL 분석 화면


이 화면에서 파일의 내용이 표시되는 부분은 메모장 등의 애플리케이션과 마찬가지로 복사, 붙여 넣기 등의 기능을 지원한다. 이 중 파일의 내용 중 YTMTV라는 변수에 대해 디코딩하는 방법을 알아보겠다.

변수의 값을 살펴 보면 “%uxxxx” 형태로 반복되는 것을 알 수 있으며, 이 값은 인코딩된 값으로 “Malzilla”에서 제공하는 여러 디코딩 기능으로 풀어 볼 수 있다. 큰따옴표(“ “) 안의 내용을 복사하여 상단 탭 중 Misc Decoders로 이동한 후 붙여넣기를 한다. 이 Misc Decoders에서는 JS.encode, Base64 인코드 등 여러 형태의 인코딩에 대해서 디코딩 기능을 제공한다.


붙여넣기 한 후 [그림 4]와 같이 UCS2 To Hex 버튼을 선택한다.

[그림 4] Malzilla의 Misc Decoders 화면


디코딩하면 아래의 결과를 얻을 수 있다.

해당 값을 이제, 상단 메뉴 중 Hex View에 “Paste as hex” 항목을 선택하여 붙여넣기를 한다.

[그림 5] Malzilla의 Hex View 선택 화면

 

아래 그림과 같이 정상적으로 Hex 값이 들어 갔지만, 문자열을 확인할 수 없는 경우가 존재한다. 이 경우 XOR 연산 되어 있는 경우로 Malzilla에서는 XOR 키를 찾고, XOR 연산까지 해주는 기능을 제공한다.

이제, XOR 연산을 할 Key를 찾아야 하는 데 방법에 여러 가지가 있을 수 있겠지만, 여기서는 약간의 편법을 사용하겠다. 웹 브라우저에 존재하는 취약점을 이용하여 악성코드를 실행시키는 경우, HTTP를 이용하여 외부의 악성코드를 다운로드 받아 실행시키게 된다.


이 점에 착안하여, 우측에 스트링을 검색하는 기능을 이용하여 http를 검색한다. (Find 버튼 클릭) 검색이 완료되면 Finished라는 대화 상자와 함께 key 부분에 bd라는 값이 들어가 있음을 확인할 수 있다.

[그림 6] Malzilla의 Find XOR key 화면

 

이제 하단의 Apply XOR 버튼을 클릭하여 XOR 연산을 진행한다.

XOR 연산 적용 결과 악성 코드를 다운로드 받는 위치를 확인할 수 있다. 안철수연구소의 V3 제품군에서는 test0.exe 파일을 Trojan/Win32.OnlineGameHack으로 탐지하고 있다.


최근 웹을 통해서 유포되는 악성코드는 대부분 온라인게임핵(OnlineGameHack),  오토런(Autorun)계열의 악성코드이다. 온라인게임핵의 경우 계정 유출, 개인정보 유출 등에 사용되며, 오토런 계열은 사용자 PC를 이용하여 DDoS와 같은 공격을 수행할 때 사용될 수 있다.


출처 : http://www.ahnlab.com/


Trackback 0 Comment 0