보안정보
전문화된 보안 관련 자료, 보안 트렌드를 엿볼 수 있는
차세대 통합보안관리 기업 이글루코퍼레이션 보안정보입니다.
CuckooDroid 기반의 안드로이드 악성코드 분석
2017.11.01
18,878
서비스사업본부 보안분석팀 김유성, 김인아
1. 개요
기하급수적으로 급증하고 있는 악성코드로 인하여 악성코드 분석에 많은 시간과 인력이 요구되고 있다. 특히 모바일 기기 사용이 증가함에 따라 안드로이드 악성코드 또한 꾸준히 증가하고 있다. 이러한 폭발적으로 증가하는 악성코드를 처리하기 위한 방법으로 자동화된 악성코드 분석이 중요시 되고 있다. 분석자는 안드로이드 환경에서 악성코드의 동적 분석을 위하여, PC형 악성코드 동적 분석 플랫폼인 Cuckoo Sandbox 시스템과 동일한 플랫폼으로 개발된 CuckooDroid 시스템을 사용할 수 있다.
CuckooDroid는 안드로이드 악성코드 분석용 플랫폼으로 2015년 블랙햇 아시아 컨퍼런스에 1.0 버전이 출시된 후 2017년 현재 2.0 버전 까지 지속적으로 개발되어 배포되고 있다.
이번 호에서는 CuckooDroid를 설명하기 앞서 Sandbox 개념, Cuckoo Sandbox 및 CuckooDroid 등을 소개하며 구축한 CuckooDroid 분석 환경에 실제 취득한 악성코드 샘플을 구동시켜 분석 결과를 확인하도록 한다.
[그림 1] 안드로이드 분석 플랫폼 CuckooDroid (출처 : Darknet)
2. 소개
1) Sandboxing
본래 Sandbox는 미국가정집에서 유래하였으며 모래상자를 만들어 아이들이 다른 곳에서 놀지 못하도록 별도의 공간을 마련해 준 곳을 의미한다. 컴퓨터 보안에서 Sandbox는 안전하게 놀 수 있는 곳이라는 용어와 의미를 그대로 사용하게 된다.
Wikipedia에 따르면, Sandboxing은 ‘실행중인 프로그램을 분리하는 기술로서 신뢰할 수 없는 프로그램을 실행하는데 사용된다.’라고 정의 하였다. 이 개념을 악성코드 분석에 적용한다면 격리된 환경에서 알려지지 않은 응용프로그램이나 파일을 실행하고 그 프로그램에 대한 정보를 얻는 것으로 정의할 수 있다.
Sandboxing은 악성코드가 네트워크 또는 프로그램에 어떻게 영향을 주는지 파악하는데 유용하게 사용될 수 있다. 따라서, 초기에 Sandboxing을 통해 정적 및 동적 분석을 수행하여 악성코드 행위 파악을 할 수 있다.
그러나, Sandboxing은 가상화 운영체제를 사용하므로 쉽게 추적할 수 있는 흔적을 가지고 있게 된다. 따라서 악성코드가 이를 탐지하여 악성코드가 정상적으로 수행하지 않거나, 종료되는 등과 같이 우회되어 분석이 원활하지 않을 수 있다.
[그림 2] Sandboxing 과정
2) What is Cuckoo?
Cuckoo는 악성코드 분석을 자동화하여 빠르게 분석하기 위해 시작된 프로젝트다. PC 악성코드를 분석하기 위해 2010년 Cuckoo Sandbox가 개발되었으며 2012년에는 안드로이드 악성코드 분석을 위한 Sandbox인 CuckooDroid가 개발되었다.
Cuckoo Sandbox는 PC 악성코드를 분석하기 위한 자동화 도구로서 동적 및 정적 분석이 가능하다. 동적인 분석에는 네트워킹을 통한 행위와 프로세스에 대한 변화 등의 기능을 제공하며 정적인 분석은 악성코드의 정보 및 API call 정보, 리소스 등의 기능을 제공한다. 그러나, Cuckoo Sandbox는 PC 기반 분석으로 안드로이드 악성코드 분석에 한계점이 존재한다. 따라서, Cuckoo Sandbox 플랫폼과 동일하게 안드로이드 전용인CuckooDroid 플랫폼을 제공하게 되었다. 아래에 [그림 3]과 같이 Cuckoo Sandbox에서 분석 과정을 가지게 되며 이와 동일하게 CuckooDroid도 [그림 4]와 같이 분석 과정을 거치게 된다.
[그림 3] Cuckoo Sandbox 악성코드 분석 수행 절차
CuckooDroid는 이러한 Cuckoo Sandbox의 분석과정과 동일하게 Android 앱 실행 및 분석 기능을 제공한다.
CuckooDroid만의 Guest OS인 Android 에뮬레이터 등을 통해 행위를 확인할 수 있으며 Cuckoo SandBox와 유사한 과정을 거친다. 악성 앱을 통해 암호화 키 추출, SSL 검사, API Call Trace, 시그니처 등 여러 행위에 대해 탐지할 수 있다. 분석결과로 인하여 악성 앱에 대한 악의적인 행동을 파악할 수 있다. 악성 앱 유입 시 초기대응에 있어서 빠르게 악성 행위 정보를 파악할 수 있으므로 CuckooDroid가 안드로이드 초기 분석에 있어서 중요한 역할을 담당하고 있다.
[그림 4] CuckooDroid 악성코드 분석 수행 절차
3) CuckooDroid 특징 및 기능
CuckooDroid는 다양한 가상화 매니저를 통한 분석을 지원하고 있다. Cuckoo Sandbox는 가상화 시스템을 위해 KVM, Xen, VirtualBox, VMware 등을 지원한다. CuckooDroid는 추가적으로 Android 에뮬레이터 지원을 위해서 AVD 가상화 관리자를 지원한다.
[그림 5] Android 에뮬레이터
CuckooDroid의 분석 기능은 방식에 따라 정적, 동적, 트래픽 분석으로 나뉜다. 분석 분류에 따라 각 기능에 맞추어 정보를 수집하게 된다. [표 1]에 분석 별 기능을 분류하였다.
분류 |
1.0 ver. |
2.0 ver. |
정적 |
•APK File Tree
•APK
Static info
•Certificate
|
•APK File Tree
•APK
Static info
•Certificate
•+
Manifest
|
동적 |
•Crypto
•Strings
•Reflection calls
•Files accessed
•Shell Commands
•SMS Messages
•Accounts
•Loaded Files
|
•Crypto
•Strings
•Reflection calls
•Files accessed
•Shell Commands
•SMS Messages
•Accounts
•Loaded Files
•+
Shared Preferences
|
트래픽 |
•TCP
•SMTP
•UDP
•HTTP
•SSL
•DNS
•IRC
|
•TCP
•SMTP
•UDP
•HTTP
•SSL
•DNS
•IRC
|
[표 1] CuckooDroid 기능 분류
정적 분석에는 파일의 구조를 통한 데이터 수집과 어플리케이션의 디 컴파일을 통한 정적 API Call에 대한 데이터를 제공해 준다. 또한 안드로이드 파일의 전반적인 정보를 제공하여 어플리케이션에 대한 Activity나 Service등에 대한 전반적인 컴포넌트를 제공한다.
동적 분석은 Droidmon 모듈을 통해 모니터링한 결과를 제공한다. Droidmon은 모니터링 모듈로서, 앱의 행동정보를 추출하기 위해 Dalvik API 호출을 연결하여 모니터링을 수행한다. 악성 행위를 하는 앱일 경우 실제적으로 출력되는 내용이나 접근한 파일의 경로 등을 출력한다. 또한 암호화된 내용이 있을 경우 암호화 키와 암호화된 내용을 평문으로 출력한다. 그 후 전체적인 앱의 움직임에 따른 screenshot을 제공하여 실제 디바이스에서 발생할 수 있는 행위 및 영향을 보여주게 된다.
이외에도 네트워크 트래픽에 대한 분석을 제공한다. 앱에 출력된 URL을 통해 통신 프로토콜을 파싱하여 프로토콜 별 정보를 출력하게 된다.
마지막으로 행위 분석을 통해 앞의 분석에 대한 결과를 관련된 string 별로 분류한다. Androguard를 기반으로 설정을 추출하거나 동적인 추출을 위해 실행중인 앱에서 수집한 정보를 사용하여 관련 시그니처 별로 분류하게 된다.
3. 악성 APK 분석 및 결과
1) 분석과정 및 결과
(1) 분석대상 선정
최근 사내 직원에게 스미싱 문자 메시지가 수신되었다. 해당 문자는 관심을 유도하기 위하여 택배 사를 사칭하였으며, 웹사이트 유추를 어렵게 하기 위하여 구글 단축 URL을 통하여 악성앱을 설치하도록 유도하였다. 해당 URL에 접근한 결과 악성 APK 파일로 추측되는 파일이 다운로드되며 이를 분석하기 위하여, CuckooDroid 분석 플랫폼을 기반으로 악성행위 분석을 진행해 보겠다.
(2) 분석 환경
HOST |
•Ubuntu
14.04 (64bit) On VMware 12
•4GB
Memory
•Quad-core
|
AVD (Android Virtual Device) |
•Nexus
One
•Android
4.1.2(API Level 16)
•512MB
Memory
•512MB
Disk Device
|
CuckooDroid |
•CuckooDroid 1.0 On Cuckoo Sandbox 1.2
|
[표 2] CuckooDroid 기반 분석 플랫폼 구현 환경
(3) 분석과정(1/5) - CuckooDroid 실행
악성 APK 파일 분석을 위하여 CuckooDroid를 실행시킨다. 정상적으로 실행이 완료된 경우 [그림 4-6]과 같이 에러 없이 AVD(Android Virtual Device) 머신을 로드하며 분석을 대기한다.
[그림 6] 악성 APK 분석을 위한 CuckooDroid 실행
(3) 분석과정(2/5) - Dashboard 실행
악성코드 분석 요청 및 분석 결과 확인 등을 위하여 [그림 4-7]와 같이 입력한 후 CuckooDroid Dashboard를 실행한다.
[그림 7] CuckooDroid Dashboard 실행
(3) 분석과정(3/5) - Dashboard 메인
CuckooDroid Dashboard 메인 페이지로서 대기, 진행, 완료된 작업 등의 상태를 카운트된 값으로 확인이 가능하다.
[그림 8] 악성 APK 분석을 위한 CuckooDroid 실행
(3) 분석과정(4/5) - 악성코드 분석 요청
[Submit] 메뉴를 통하여 악성코드 분석 요청이 가능하다. 분석 대상 파일을 업로드 후 aosx_1(안드로이드 OS) 머신을 선택하여 분석을 요청한다.
(3) 분석과정(5/5) - 분석 상태 확인
정상적으로 분석이 업로드 된 경우 “Submission complete!” 문자와 함께 분석 태스크에 추가되며, 분석 번호 클릭 시 작업 상태를 확인할 수 있다.
[그림 10] 악성 APK 파일 업로드 및 분석 상태 확인 가능
CuckooDroid가 실행중인 Host PC에서 실시간으로 분석중인 상태 로그 확인이 가능하다.
[그림 11] CuckooDroid 분석 로그 확인 가능
(3) 분석결과(1/8) - 분석 결과 리스트
[Recent] 메뉴를 통하여 [그림 4-12]와 같이 최근 수행한 악성 APK 분석 내역을 확인할 수 있다. 분석 결과에서 확인할 수 있는 상태는 “running(분석 중)”, “reported”(정상 분석), “failed_analysis(분석 실패)”로 간략히 확인이 가능하다. 또한 분석이 완료된 APK 파일의 MD5 해시 값의 링크 클릭 시 [그림 4-20]과 같이 분석 내역을 확인할 수 있다.
[그림 12] 최근 악성코드 분석 결과 리스트
[Quick Overview] 메뉴에서 전반적인 요약된 악성코드 정보를 확인할 수 있다.
[그림 13] 악성코드 Quick Overview 화면
(3) 분석결과(2/8) - [Quick Overview] 메뉴(1/4)
[Quick Overview] 메뉴를 통해서 [그림 14~17]와 같이 파일 기본 정보, 시그니처 정보, 네트워크 정보, 스크린샷 정보를 통해 악성코드 악성행위 확인이 가능하다.
[그림 14] 파일 기본 정보
(3) 분석결과(3/8) - [Quick Overview] 메뉴(2/4)
[그림 15] 시그니처 주요 정보
(3) 분석결과(4/8) - [Quick Overview] 메뉴(3/4)
[그림 4-16] 네트워크 주요 정보
(3) 분석결과(5/8) - [Quick Overview] 메뉴(4/4)
[그림 17] 스크린샷 주요 정보
(3) 분석결과(6/8) - [Static Analysis] 메뉴(1/2)
[Static Analysis] 메뉴를 통해서 [그림 4-18~22]와 같이 주요 분석 정보를 확인할 수 있다. [Static Analysis] 메뉴는 정적 분석(Android Static Analysis), 앱 서명(Certificate), 파일 내역(Files), 문자열(Strings), 백신 시그니처(Antivirus) 등의 정보를 확인할 수 있는 기능을 제공한다. CuckooDroid 버전은 API Call 분석(Android Static API Calls) 기능을 제공하지 않는다.
[그림 18] Static Analysis 메뉴 정보
(3) 분석결과(7/8) - [Static Analysis] 메뉴(2/2)
[그림 19] 앱 서명 정보
[그림 20] APK 디컴파일 정보
[그림 21] 문자열 정보
(3) 분석결과(8/8) - [Network Analysis] 메뉴
[Network Analysis] 메뉴를 통해서 [그림 4-29]와 같이 주요 분석 정보를 확인할 수 있다. [Network Analysis] 메뉴는 기본적으로 PCAP 패킷 파일을 제공 및 Hosts, DNS, TCP, UDP, HTTP, ICMP, IRC 프로토콜 정보를 확인할 수 있는 기능을 제공한다. 하드코딩된 유해 IP 주소는 현재 비활성화 되어 접속이 불가능하여 통신이 제한된다.
[그림 22] UDP 프로토콜 정보
4. 결론
최근에 배포된 CuckooDroid 2.0 버전의 분석 환경을 구축하여 실제 악성코드 분석을 진행하려 하였으나 현재 안정화 작업이 완료되지 않은 상태로 테스트에 한계가 있었다. 따라서 CuckooDroid 1.0 버전의 환경으로 테스트를 하여 분석을 완료하였다. 현재 배포된 2.0 버전에서도 다양한 기능이 추가되고 개선되었지만 메모리 덤프 등의 해결해야 할 점이 존재한다. 추후 지속적인 개선으로 완성도 있는 자동화 분석 시스템으로 자리잡게 된다면, 대량의 악성코드 악성행위 정보를 신속히 파악이 가능하고 분석의 업무 효율성을 극대화 할 수 있다. 또한 기존의 보안시스템과 연동하여 악성코드 위협 징후를 판단하여 선제 대응을 할 수 있다.
5. 참고자료
[1] CuckooDroid Document
http://cuckoo-droid.readthedocs.io/en/latest/
[2] Cuckoo SandBox
http://docs.cuckoosandbox.org/en/latest/
[3] CuckooDroid 1.0
https://github.com/idanr1986/cuckoo-droid/blob/master/CuckooDroid_Blackhat_Asia_2015.pdf
[4] CuckooDroid 2.0
https://github.com/idanr1986/cuckoodroid-2.0/blob/master/CuckooDroid-BH-2017.pptx
[5] Sandbox (computer security)
https://en.wikipedia.org/wiki/Sandbox_(computer_security)
[6] Darknet - The Darkside - Ethical Hacking, Penetration Testing , Computer Security
https://www.darknet.org.uk/2016/08/cuckoodroid-automated-android-malware-analysis/
[7] Security sandbox program: Defense-in-depth or layered vulnerabilities?