Android Malicious Application Filtering System 세인트시큐리티김창수 kcs5287@stsc.com www.codeengn.com 2013 CodeEngn Conference 08
Contents Intro Android Malicious Application Malicious Application Analysis Automation System
Intro
01 Smartphone
02 Android VS ios
03 Android Architecture
Chapter 1 Android Malicious Application
01 Malware Trend
02 Infection Route
02 Infection Route 블랙마켓 크랙된어플리케이션으로사용자를유인 해커는자신의코드를어플리케이션에숨기고배포 인터넷카페및블로그 블랙마켓과비슷한수법 SMS 쿠폰및할인등의문자메시지로특정앱을다운받도록함 구글마켓 비교적허술한구글마켓의어플리케이션등록절차를이용 뒤늦게삭제조치되는경우가있으나, 그전에는피해가발생
03 Purpose 개인정보수집 금융정보탈취 소액결제를통한이득 봇넷 Just For Fun
04 Smishing SMS 를통해문자메시지를가로채는악성어플리케이션을다운로드받게한후, 소액결제를통한이득을획득하는방법
04 Smishing 소액결제업체 SMS 수집서버 배포서버 4. 8. 타겟인증번호기기의입력전화번호로소액결제요청 5. 인증번호전송 7. 인증번호확인 3. 악성앱다운로드및설치 6. 악성앱에의해인증번호가포함된 SMS 가서버에전송됨 2. URL 링크를통해악성앱배포서버에접근 1. URL 링크가포함된 SMS 전송 해커 타겟
Chapter 2 Malicious Application Analysis
01 Overview
02 AndroidManifest.xml 어플리케이션의큰틀을알수있음 패키지의이름, 권한정보, 액티비티및서비스의종류등을알아낼수있음 Apktool 을이용하여추출가능
02 AndroidManifest.xml
02 AndroidManifest.xml
03 Decompile APK 파일내의 dex 파일을 java 소스코드로변환 undx 와 dexdump, jd-gui 를이용 상세한분석이필요할때효과적 undx dexdump jd-gui dex jar java
04 ADB Android Debug Bridge 컴퓨터와안드로이드기기간의통신을도움 ADB
04 ADB shell : 안드로이드기기의 shell 에연결한다. install : 안드로이드기기에어플리케이션을설치한다. uninstall : 안드로이드기기에설치된어플리케이션을삭제한다. push : 안드로이드기기로파일을옮긴다. pull : 안드로이드기기에서파일을가져온다.
05 Logcat 단말에서발생하는로그를보여줌 어플리케이션개발시에디버깅툴로사용 로그의우선순위 Verbose < Debug < Info < Warning < Error < Fatal < Silent
05 Logcat
05 Logcat 어플리케이션로그이외에시스템이벤트를확인가능 adb logcat d events
06 TCP Dump ADB 를이용해 shell 로접속하여 TCP Dump 사용가능
07 Screenshot 내부의바이너리를이용하면다른조작없이스크린샷을찍을수있음 /system/bin/screencap
08 Kprintf 안드로이드커널소스를수정하거나커널함수를후킹하여커널메시지를출력토록함 adb shell cat /proc/kmsg
09 Kernel Modification 준비물 : Linux Machine, git-core, gnupg, sun-java6-jdk, flex, bison, gperf, libsdl-dev, libsd0- dev, libwxgtk2.6-dev, build-essential, zip, curl, libcurses5-dev, zlib1g-dev, x11proto-coredev, libreadline6-dev, libgl1-mesa-dev, tofrodos, libxml2-utils, xsltproc 기본적인안드로이드커널소스는 https://android.googlesource.com 에서받을수있음 휴대폰제조사별로각휴대폰에쓰인커널소스를공개 삼성전자 : http://opensource.samsung.com/ LG 전자 : http://www.lg.com/global/support/opensource/index HTC : http://htcdev.com/devcenter/downloads 팬택 : http://opensource.pantech.com/model/list.asp?category=mobile 모토로라 : http://sourceforge.net/motorola/
09 Kernel Modification Linux Machine 에소스코드다운로드 $ cd YOUR_DEV_DIRECTORY $ git clone https://android.googlesource.com/kernel/goldfish $ cd goldfish $ git branch -a $ git checkout t origin/android-goldfish-2.6.29 b goldfish 툴체인다운로드 $ cd YOUR_DEV_DIRECTORY $ git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6
09 Kernel Modification 컴파일 $ Make ARCH=arm CROSS_COMPILE={TOOL CHAIN DIRECTORY}/arm-eabi- distclean $ Make ARCH=arm CROSS_COMPILE={TOOL CHAIN DIRECTORY}/arm-eabi- goldfish-defconfig $ Make ARCH=arm CROSS_COMPILE={TOOL CHAIN DIRECTORY}/arm-eabi- zimage zimage 는 arch/arm/boot/zimage 에생성됨 emulator avd < 에뮬레이터이름 > -kernel < 빌드한 zimage>
10 Kernel Hooking Kprobes : 커널코드에원하는코드를동적으로추가할수있음 커널설정시 CONFIG_KPORBES 옵션을선택해야함 kprobe, jprobe, kretprobe 가포함됨
10 Kernel Hooking includes/linux/kprobes.h
10 Kernel Hooking kprobe_opcode_t *addr 커널함수의주소를직접입력하여후킹지점을설정 char *symbol_name 커널함수의이름을등록하여후킹지점을설정 kprobe_pre_handler_t pre_handler 후킹한함수가실행되기전에호출될함수를등록 kprobe_post_handler_t post_handler 후킹한함수가실행된후에호출될함수를등록
10 Kernel Hooking
10 Kernel Hooking Makefile 에소스추가후컴파일
10 Kernel Hooking Adb 를이용해모듈을기기로복사한후, insmod 명령을이용해커널모듈을설치 adb shell cat /proc/kmsg 를이용하면 printk 로출력되는내용을확인가능
10 Kernel Hooking jprobe 함수에전해지는파라미터를확인할수있음
10 Kernel Hooking kretprobe 함수의반환값을확인할수있음
Chapter 3 Automation System
01 Necessity 모든악성어플리케이션을일일이분석하기에는많은시간이필요함 24 시간감시가가능
02 System Component 정적분석 백신분석 행위분석
03 Procedure 1. 수집채널을통한샘플수집 2. 백신검사 3. 권한분석 4. API 추출 5. 행위분석
04 DEMO
Q & A
www.codeengn.com 2013 CodeEngn Conference 08 Thank You!