본문 바로가기
모의해킹 (WAPT)

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

by 날으는물고기 2010. 9. 28.

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/

728x90

댓글