안철수연구소2010-09-17
매주 금요일 저녁, 기업의 보안 담당자가 퇴근하면 회사 웹사이트가 변조되는 사건이 발생하곤 한다. 공격자는 주말에 관리자가 대응하지 않는다는 것을 알고 웹 사이트를 변조하여 주말 내내 악성 코드 유포에 사용했다. 주말 동안 회사 보안 담당자를 괴롭히고 한 주의 상쾌한 출발을 방해하는 이 악성코드를 어떻게 하면 바로 탐지하고 대응할 수 있을까.
안철수연구소에서는 액티브허니팟(ActiveHoneypot)을 구축하여 악성 코드를 계속하여 수집 및 분석하고 사이트케어(SiteCare) 등의 웹 위•변조 방지서비스를 제공하고 있다. 이 글에서는 최근 발생한 악성코드 유포 사례를 통해 악성코드가 어떻게 탐지 되고 간단한 분석을 할 수 있는지 알아보겠다. 개인 사용자 입장과 기업의 보안 담당자 입장에서 악성코드 유포에 대한 대비책도 함께 알아보자.
ActiveHoneypot에 의한 악성코드 유포 행위 탐지
지난 8월 한 주를 마무리하는 금요일 늦은 오후, 안철수연구소에서 개발한 액티브허니팟(ActiveHoneypot)에서는 국내의 한 업체(이후 A사로 표기)에서 악성코드를 유포하고 있음을 CERT(침해사고대응센터) 관제센터로 알려왔다. 악성코드 유포에 사용되었던 사이트의 관리자로부터 웹 사이트 변조에 대한 침해 사고 조사를 의뢰 받아 포렌식을 진행하게 되었다.
침해사고 조사 결과 공격자는 웹쉘(Webshell)의 업로드를 통해 시스템의 권한을 획득하였으며 웹 페이지 소스 코드에 링크 한 줄을 추가해 악성 코드를 유포하도록 변조했다. 웹쉘이 업로드 되고 얼마 지나지 시점에 액티브허니팟에 의해 특정 업체에서 악성코드를 유포함을 알 수 있었다.
먼저 액티브허니팟에 대한 특징을 살펴보도록 하자.
액티브허니팟은 기존의 허니팟과 달리 악성코드 샘플 수집 방법이 능동적인 것이 가장 큰 특징이다. 기존의 허니팟은 취약한 서버를 운영하여 많은 악성 코드 유포자들이 허니팟 서버를 공격하여 악성코드를 업로드하도록 하는 방식이다. 이에 비해, 액티브허니팟은 취약한 서버가 여러 URL을 방문하여 해당 사이트에서 배포하는 악성코드를 다운로드 및 실행하며 악성코드 배포에 사용되는 URL을 저장하는 방식이다.
최근의 악성코드는 인터넷 익스플로러(Internet Explorer), PDF 뷰어(PDF Viewer), 플래쉬(Flash) 등의 애플리케이션에서 발생하는 취약점과 악성 코드, 침해 사고 사이트가 결합된 형식으로 유포되는 특징을 보이고 있다. 이러한 악성코드 유포의 특징을 고려해 볼 때 많은 샘플을 확보하기 위해서 여러 URL을 방문하는 것이 보다 효과적이다.
[그림 1]은 액티브허니팟의 개념도로 보안 패치가 되지 않은 가상 머신들이 URL 크롤링(Crawling)을 통해 악성코드 유포 사이트나 침해 사고 사이트를 접속하여, 해당 URL에 있는 링크를 다운로드 받는다. 그 중, 악성 코드가 삽입되어 있는 경우 이를 다운로드 받고 실행 시키며, 해당 URL 정보를 DB에 저장한다.
%5B스크랩%20-%20Case%20Study%5D%20실제%20사례를%20통해%20살펴본,%20악성코드%20분석부터%20대응방법까지%20files\Evernote%20(10)
[그림 1] 안철수연구소의 액티브허니팟(ActiveHoneypot) 개념도
이 악성코드 실행 과정에서 샘플 분류 시스템, 샘플 분석 시스템(파일 분석 및 네트워크 분석)을 통해 탐지 URL의 위험도를 판단하며, URL DB를 갱신하고, 이 정보들이 안철수연구소 V3의 시그니처 생성에 이용된다.
%5B스크랩%20-%20Case%20Study%5D%20실제%20사례를%20통해%20살펴본,%20악성코드%20분석부터%20대응방법까지%20files\Evernote%20(14)
%5B스크랩%20-%20Case%20Study%5D%20실제%20사례를%20통해%20살펴본,%20악성코드%20분석부터%20대응방법까지%20files\Evernote%20(12)
위 표의 내용은 액티브허니팟이 CERT 관제센터로 A사에서 악성코드를 유포하고 있음을 알려온 메일의 일부이다. 이 메일 중 ReferURL에서 URL 크롤링(crawling)에 의해 방문한 사이트를 확인할 수 있으며, 해당 사이트에서 다운로드 받고 실행되어 생성되는 다수의 파일 정보는 DropFile에서 확인이 가능하다. 이곳에 표시되는 MD5 해쉬 값을 사용하여 여러 악성코드 데이터베이스에 쿼리가 가능하여 파일의 악성 여부에 대해서도 바로 확인이 가능하다.
Malzilla를 이용한 악성코드 분석 방법
그럼 Malzilla라는 툴을 사용하여 간단하게 악성코드를 분석하는 방법에 대해 살펴보자. 이 과정을 통해 악성코드 유포지의 정보를 파악할 수 있다면, 추가 감염을 막기 위한 기본 정보 획득이 가능할 것이다
A사의 웹사이트에 삽입된 악성 코드를 살펴 보니 쉽게 파악하기 힘든 구조로 삽입 되어 있었다. 악성코드 제작자의 입장에서 악성 코드의 생명 주기는 매우 중요한 문제이다. 그들이 배포한 악성코드도 언젠가 분석가들에 의해 분석되고, 안티 바이러스 제품 또는 네트워크 기반 보안 장비에 의해 탐지될 것이라는 것을 안다. 악성코드 제작자는 최대한 분석을 어렵게 하기 위해, 여러 가지 기법을 사용할 수 있는 데 이번 사건에서는 넓은 의미에서의 사회 공학적 기법, 그리고 코드 난독화 기술들을 사용하였다.