동양의 음양 이론과 문양을 봐도 알 수 있듯이 항상 밝음을 상징하는 양과 어둠을 상징하는 음은 항상 공존합니다. 이러한 면은 현대 기술 문명에서도 동일하며, 온라인 뱅킹이라는 편리한 기술과 함께 온라인 뱅킹 관련 개인 정보를 탈취하는 악성코드도 같이 공생합니다.
당시의 이러한 온라인 뱅킹 악성코드의 주류는 제우스(Zeus) 였으나, 후에 스파이아이(Spyeye)의 등장으로 양극화 현상을 띄면서 발전하게 됩니다. 그래서 2010년 11월 작성했던 원고가 안랩닷컴에 게시된 "스파이아이(SpyEye), 온라인 뱅킹 악성코드 제우스(ZeuS)의 천적일 뿐인가?" 입니다. 초안의 제목은 "스파이아이, 뱅킹 트로이목마 제우스 킬러"였는데, 원고 감수를 해주신 분의 마케팅적인 감각이 더해져서 해당 제목으로 변경되었습니다.
+-----------------
[온라인 뱅킹 악성코드 동향]
최근 해외 언론등을 통해 제우스(ZeuS)라는 온라인 뱅킹 정보를 탈취하는 악성코드의 유포자들을 체포했다는 기사들을 볼 수 있었다. 기사에 따르면 지난 4년간 제우스 악성코드를 유포하여 총 2억 달러를 탈취한 혐의로 92명을 검거했으며, 이와 함께 영국 정부에서도 20명을 체포한 것으로 알려졌다. 해당 악성코드로 인해 탈취된 현금의 규모도 놀랍지만 사건에 관계된 인물들이 92명에 달한다는 점에서도 놀라울 따름이다. 이처럼 일반적으로 사이버 범죄(Cyber Crime)에 사용되는 악성코드들의 형태를 일부 보안 업체들에서는 크라임웨어(Crimeware)라고 부르며, 제우스 악성코드 역시 이러한 크라임웨어의 범주에 포함된다고 볼 수 있다.
그런데 엄청난 현금을 탈취한 범죄에 이용된 제우스 악성코드를 잡는 악성코드가 등장해 관심을 끌고 있다. 과연 이 악성코드는 제우스를 잡는 천적인가, 아니면 또 다른, 더욱 엄청난 위협일 뿐인가?
전 세계 인터넷 뱅킹의 공포, 제우스(ZeuS)
제우스(Zeus) 악성코드는 웹 서버를 기반으로 한 C&C(Command and Control) 서버와 제우스 악성코드를 생성하는 제우스 빌더(Zeus Builder)로 구성 된 하나의 패키지 형태다.
그림 1. 제우스 악성코드 생성도구인 제우스 빌더
일반적으로 제우스 유포자는 블랙 마켓(Black Market)을 통해 제우스 제작자에게 현금을 지불하고 제우스 패키지를 구매한다. 그리고는 별도의 시스템, 또는 해킹한 시스템에 제우스 악성코드를 조정할 수 있는 웹 서버를 구축한 후, 제우스 빌더를 이용해 생성한 제우스 악성코드를 메일의 첨부 파일 형태나 악의적인 웹 사이트를 통해 다운로드하는 기법 등으로 유포하는 것이다.
그림 2. 제우스 악성코드가 첨부된 메일
앞서 언급한 것처럼 제우스가 유포되면서 대량의 온라인 뱅킹 정보들을 탈취하여 현금을 가로채는 수법이 성공하자 동유럽을 중심으로 형성된 블랙 마켓에서는 제우스와 유사한 형태의 또 다른 온라인 뱅킹(Banking) 트로이목마가 등장하게 되었다. 그 중 하나가 바로 스파이아이(SpyEye) 악성코드이다.
제우스 킬러, 스파이아이(SpyEye)의 탄생
스파이아이(SpyEye) 악성코드가 러시아를 포함한 동유럽 블랙 마켓 지역에서 거래되기 시작한 시기는 대략 2010년 1월경으로 추정된다. 이 악성코드가 블랙 마켓에서 주목 받게 되었던 가장 큰 이유 중 하나는 제우스에 감염된 시스템에서 제우스를 강제로 삭제하는 기능이 있었기 때문이다.
현재 언더그라운드(Underground)에 알려진 바에 따르면 스파이아이는 2명의 러시아인으로 구성된 팀이 제작했다. 팀 내에서도 역할을 분리하여 한 명은 직접적으로 스파이아이 악성코드 패키지를 제작하는 개발자이며, 다른 한 명은 제작된 스파이아이 악성코드 패키지의 홍보와 판매를 담당하고 있다. 이들은 스파이아이 악성코드 패키지를 블랙마켓에서 약 500 달러(한화 약 60만원) 정도에 판매 하고 있으며 추가 기능에 따라 약 1,000 달러(한화 약 120만원)에 판매하고 있다.
한편 스파이아이 제작팀 멤버 중 개발자는 러시아 소재의 대학에서 컴퓨터 공학을 전공하였으며 길지는 않으나 프로그램 개발 경력도 가지고 있는 것으로 알려졌다. 그러나 이후 금전적인 문제로 인해 전문적인 악성코드 제작을 시작하였으며, 스파이아이 악성코드 패키지를 제작 할 당시에는 악성코드 제작에만 하루 12시간에서 13시간 정도 몰두한 것으로 전해진다.
그림 3. 스파이아이 판매 가격과 판매자 연락처가 작성된 게시판
웹 기반의 C&C 서버를 이용한 스파이아이 컨트롤
스파이아이 역시 제우스와 마찬가지로 스파이아이를 생성할 수 있는 ‘스파이아이 빌더(SpyEye Builder)’와 생성한 악성코드를 조정하기 위한 웹 서버 기반의 ‘C&C 서버’가 하나의 패키지로 구성되어 있다.
웹 서버로 동작하는 C&C 서버는 PHP와 MySQL 데이터베이스로 동작하도록 설계되어 있다. 웹 기반으로 C&C 서버를 동작하게 되면 최초 메인 페이지 접속 시 로그인을 위한 관리자 암호를 요구한다. 정상적으로 로그인 하게 될 경우에는 그림 4와 같이 메인 웹 페이지에 접근할 수 있게 된다.
그림 4. 스파이아이 C&C 서버의 메인 웹 페이지
메인 웹 페이지의 설정을 클릭할 경우, 그림 5와 같이 실질적으로 스파이아이 악성코드를 조정하고 악성코드가 탈취한 금융 정보들의 데이터를 확인 할 수 있는 웹 페이지로 연결된다. 해당 웹 페이지를 통해 스파이아이 유포자는 현재 스파이아이에 감염된 시스템의 IP 정보를 토대로 지리적 위치, 운영체제 및 시스템 정보 통계 등을 실시간으로 확인 할 수 있다.
그림 5. 스파이아이 C&C 서버의 컨트롤 웹 페이지
또한 스파이아이에 감염되어 있는 시스템 전체에 실시간으로 새로운 버전의 스파이아이로 강제 업데이트하는 기능을 제공하고 있다. 즉, 현재 유포한 스파이아이가 안티 바이러스 소프트웨어(Anti-Virus Software)에 의해 탐지 될 경우 언제든지 변경 할 수 있는 것이다.
그림 6. 금전적 대가로 보안 제품 탐지 결과를 알려주는 웹 사이트
또한 비용을 지불하면 그림 6과 같이 최신 엔진이 적용된 총 40개의 안티 바이러스 소프트웨어들에서 악성코드 탐지 여부 결과를 제공해주는 웹 사이트와 연동하여 실시간으로 결과를 파악하고 탐지되었을 경우 즉시 변경 할 수 있도록 하고 있다.
빌더(Builder)를 이용한 스파이아이 생성
웹 기반의 C&C 서버와 함께 제공되는 스파이아이 빌더(Builder)는 현재 언더그라운드에 공개되어 있는 버전들은 1.0.7과 1.1.39, 그리고 1.2.50 및 1.2.60 등이 존재한다. 각 버전의 빌더 별로 조금씩 다른 기능들을 제공하고 있으며, 이러한 별도의 기능에 따라 판매되는 스파이아이 패키지의 가격은 500 달러에서 1,000 달러까지 다양하게 책정되어 있다. 또한 추가되는 플러그인(Plugin) 옵션에 따른 추가 금액도 별도로 책정되어 있다.
그림 7의 1.0.7 버전은 초기 버전에 가까운 것으로, 시스템에 감염된 스파이아이 악성코드가 역접속(Reverse Conection)으로 접속할 C&C 서버 주소와 지정한 C&C 서버로의 접속에 실패 할 경우 사용할 보조 C&C 서버 주소를 동시에 지정 할 수 있게 되어 있다.
그림 7. 스파이아이 봇 생성 도구와 제우스 봇 삭제를 위한 옵션
스파이아이와 관련된 기능 중 하나인 암호화 기능은 사용자가 지정한 암호화 키를 이용하여 스파이아이 악성코드 전체를 암호화하여 생성함으로써 안티 바이러스 소프트웨어의 탐지를 방해함과 동시에 보안 연구원들의 분석을 지연시킬 의도도 포함되어 있다. 이와 함께 빌더에는 실행 압축(Packer)을 기본 기능으로 추가 할 수 있어 추가적으로 안티 바이러스 소프트웨어의 탐지와 분석을 지연 시킬 수 있는 2중 구조로 되어 있다. 또한 스파이아이를 널리 알리는데 가장 큰 역할을 했던 제우스 삭제 기능 역시 기본 기능으로 추가 할 수 있도록 되어 있다.
그림 8. 1.1.39 버전의 스파이아이 봇 생성 도구
상위 버전인 1.1.39 버전부터는 1.0.7 버전이 가지고 있는 기능 외에도 웹 브라우저인 인터넷 익스플로러(Internet Explorer)와 파이어폭스(FireFox)의 쿠키(Cookie) 파일들을 삭제 할 수 있는 기능이 추가 되어 있다. 또한 제우스 빌더가 이용하는 사용자 계정과 암호를 가로챌 웹 사이트의 주소를 가지고 있는 설정 파일을 스파이아이 빌더에서도 그대로 사용 할 수 있도록 되어있다. 이 외에도 플러그인 형태의 DLL 파일을 이용하여 추가 기능들을 스파이아이 생성시에 추가 할 수 있도록 설정되어 있는 특징이 있다.
한 가지 재미있는 사항은 1.1.39 버전부터는 실행 시 스파이아이 빌더에서 가지고 있는 고유 키 값 검증을 통해 스파이아이 패키지를 정식으로 구매를 한 사용자가 맞는지를 검사하도록 되어 있어 무단으로 이를 사용하지 못하도록 하고 있다는 점이다.
가장 상위 버전인 1.2.50 버전과 1.2.60 버전은 외형적인 측면에서 UI는 동일하게 되어 있으며 기본적인 기능들도 하위 버전인 1.1.39 버전과 동일하다. 반면 새롭게 추가된 기능으로는 생성할 스파이아이의 파일명과 뮤텍스(Mutex) 명칭을 변경할 수 있는 기능이 있다.
이러한 기능을 가지고 있는 스파이아이 빌더 중 버전 1.0.7을 이용하여 스파이아이를 추가 기능 설정 없이 생성하게 될 경우, 기본적으로 125,952 바이트의 cleansweep.exe 가 생성된다. 또한 추가 기능 중에서 실행 압축 기능을 적용하여 생성할 경우, 동일한 파일명에 사이즈만 60,928 바이트로 절반 정도로 줄어들게 된다.
그림 9. 1.2.60 버전의 스파이아이 봇 생성 도구
이와 관련해 실행 압축 기능이 적용된 파일과 그렇지 않은 파일에 대해 파일 자체적인 조밀함을 측정하기 위해 플로팅 프리퀸시(Floating Frequency)를 측정해보았다. 이를 위해 전체 파일을 64 바이트 크기의 블록으로 나누어 해당 블록 내부에서 서로 다른 바이트들이 얼마나 발견되는지를 측정하여 해당 파일의 실행 압축 및 암호화 여부를 측정하는 방식을 사용했다.
그림 10. 기본 설정으로 생성된 스파이아이 악성코드의 플로팅 프리퀸시(Floating Frequency)
먼저 실행 압축 기능이 적용하지 않고 기본 설정으로 생성한 스파이아이는 그림 10과 같이 파일 전체에서 균일하게 측정되어 있으며 파일 하위 단으로 갈수록 측정 값이 떨어지는 것을 알 수 있다. 이러한 수치는 일반적으로 실행 압축, 또는 암호화를 하지 않은 순수하게 컴파일(Compile)된 파일들과 유사한 형태를 보이고 있다.
그림 11. 실행 압축 설정이 적용된 스파이아이 봇의 플로팅 프리퀸시(Floating Frequency)
반면 실행 압축 기능이 적용하여 생성한 스파이아이는 [그림 11]과 같이 하위로 갈수록 측정 값이 떨어지는 것은 동일하지만 64 바이트 블록 내부에서 측정된 다른 문자열이 60개에 근접하는 값이 파일 전체의 약 80% 정도를 차지하는 것을 알 수 있다. 이러한 측정 결과로 미루어 보았을 때 스파이아이 빌더에서는 내장된 실행 압축 알고리즘을 이용하여 스파이아이 악성코드를 압축하여 생성하는 것으로 이해할 수 있다.
생성된 스파이아이의 감염 동작
스파이아이 빌더에 의해 생성된 파일들은 공통적으로 cleansweep.exe 라는 파일명을 갖는다. 해당 파일이 시스템에서 실행되면 먼저 실행 중인 정상 프로세스인 explorer.exe의 특정 메모리 영역에 그림 12와 같이 자신의 코드를 삽입한다. 자신의 코드가 정상적으로 삽입 되면 시스템의 루트 디스크에 “cleansweep.exe”라는 폴더를 생성하고 자신의 복사본과 “cleansweep.exe”를 함께 설정 파일인 “config.bin” 이라는 파일을 생성하게 된다.
그림 12. 정상 explorer.exe 프로세스의 메모리 영역에 쓰여진 스파이아이 봇
또한 생성된 폴더와 파일들은 모두 윈도우 시스템의 사용자 모드(User Mode) 레벨에서 동작하는 은폐 기능을 수행하게 된다. 이러한 은폐 기능으로 인해 스파이아이가 생성한 폴더와 복사본을 모두 윈도우 탐색기 등으로는 볼 수 없게 한다.
그림 13. 은폐 기법을 사용하는 스파이아이 악성코드를 탐지한 트루파인드(TrueFind)
이 외에도 다음 윈도우 레지스트리 위치에 키 값을 생성하여 윈도우 시스템이 부팅 할 때마다 자신의 복사본이 자동 실행 되도록 설정한다.
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\
cleansweep.exe = "C:\cleansweep.exe\cleansweep.exe"
폴더와 악성코드 복사본이 생성이 완료되고 자동 실행을 위해 윈도우 레지스트리에 특정 키 값 생성이 완료 된 후에는 그림 14와 같이 최초 스파이아이 빌더에서 설정해두었던 C&C 서버의 주소로 역접속을 수행하기 위해 감염된 시스템에 설정되어 있는 DNS 서버로 해당 주소에 대한 쿼리(Query)를 발생한다.
그림 14. 스파이아이의 C&C 서버 접속을 위한 DNS 조회
또한 쿼리 발생 이후에 정상적으로 C&C 서버 주소로 접속이 이루어지지 않게 될 경우에는 빌더에서 지정하였던 보조 C&C 서버 주소로 재접속을 시도하게 된다.
그림 15. 웹 페이지 인젝션 수행 대상이 되는 은행 웹 페이지 리스트
또한 빌더를 이용해 스파이아이 악성코드를 생성할 때 사용하였던 제우스 악성코드와 유사한 형태를 자기고 있는 설정 파일들에 지정되어 있는 웹 사이트를 감염된 시스템의 사용자가 접속하게 될 경우, 해당 웹 페이지에 추가적으로 사용자 입력 폼(Form)을 생성하여 그곳에 입력되는 사용자 입력 키보드 값을 가로채는 “폼 그래빙(Form Grabbing)”, 또는 “웹 페이지 인젝션(Web Page Injection)” 기법을 통해 사용자 계정과 암호를 C&C 서버로 전송한다.
제우스를 삭제하는 스파이아이
앞서 스파이아이에는 제우스 악성코드를 삭제하는 기능이 포함되어 있는 것을 살펴 보았다. 실제 제우스에 감염되어 있는 시스템에서 스파이아이가 어떠한 방식으로 제우스를 삭제하는지 살펴보면 그림 16과 같은 순서로 수행하는 것을 알 수 있다.
그림 16. 제우스 봇을 삭제하는 스파이아이 봇
스파이아이가 실행 된 후 정상 프로세스인 explorer.exe의 메모리 영역에 자신의 코드를 삽입하고, 이후 자신의 복사본인 cleansweep.exe 파일을 생성하게 된다. 그 후 제우스가 생성한 복사본인 sdra64.exe 파일을 찾아 삭제하는 일련의 과정들이 발생한다. 그러나 이러한 일련의 과정은 제우스 악성코드가 생성한 복사본 sdra64.exe 파일만 찾아 삭제하며 정상 프로세스인 svchost.exe의 메모리 영역에 삽입되어 있는 코드를 삭제하지 않기 때문에 시스템을 재부팅하기 전까지는 제우스의 악의적인 코드는 메모리 상에 존재하며 여전히 동작하게 된다.
그림 17. 제우스 봇의 뮤텍스(Mutex)를 이용해 삭제하는 스파이아이 봇 코드 중 일부
이렇게 제우스의 파일을 찾아서 삭제하는 스파이아이의 기능을 분석해보면, 먼저 실행 중인 프로세스의 메모리 영역에서 뮤텍스를 “__SYSTEM__”, 또는 “_AVIRA_”를 사용하는 파일을 검사한 후 해당 파일의 경로를 찾아서 삭제하도록 되어 있다.
악성코드 제작으로 인한 금전적 이득 자체를 제거해야
앞서 우리는 크라임웨어의 일종으로 사이버 범죄에 악용되는 제우스 악성코드로 인해 얼마나 많은 금전적인 피해가 발생하는지 살펴보았다. 이와 함께 제우스와 유사한 형태인 또 다른 뱅킹 트로이목마인 스파이아이가 어떻게 생성되어 C&C 서버로 가로챈 사용자 금융 정보들을 전송하는지도 살펴보았다.
이러한 온라인 뱅킹 관련 트로이목마들이 지속적으로 등장할 뿐만 아니라 추가적인 버전들이 생성된다는 점에서 금융 정보 탈취를 목적으로 하는 악성코드들을 더욱 증가할 것으로 볼 수 있다. 또한 실질적으로 이러한 악성코드를 생성하는 조직에서 금전적인 이익을 획득하고 있다는 것도 간접적으로 알 수 있다.
한편 이러한 문제는 결국 컴퓨터 사용자의 시스템을 두고 악성코드를 서로 삭제하는 이른바 권리 싸움으로까지 이어진다는 점에서 심각한 사회 문제라고 볼 수 있다. 그러므로 컴퓨터 사용자가 자신이 사용하는 시스템에 대한 보안을 철저히 함으로써 근본적으로 이러한 악성코드 제작으로 인한 금전적인 이득이 발생하지 않는 환경을 만드는 것이 이러한 사이버 범죄를 근절할 수 있는 방법의 하나가 아닐까 생각해본다.
[참고 자료]
2) Wikipedia - Crimeware
9) Using Entropy Analysis to Find Encrypted and Packed Malware - ROBERT LYDA(Sparta) & JAMES HAMROCK(McDonald Bradley)
댓글 없음:
댓글 쓰기