1. 안드로이드 악성코드의 철학적 연구
Philosophical study of Android malware
kino@PAraDOx CONference
2014 PAraDOx CONference, 2nd Session
2. 부제 악성코드의 발전은 끝이 없고 같은 안티를 반복한다.
Subtitle
Malware GoGo
Same anti GoGo
kino@PAraDOx CONference
2014 PAraDOx CONference, 2nd Session
3. 발표전에..
•저는 철학자도 심리학자도 아닙니다.
•그래도 이 발표를 위해 최대한 정보를 찾아 올바른 내용만 삽입하기 위해 노력하였습니다.
•가볍게 들어주시길 .
4. 발표자 소개
성명 : 조효재제 (27세), 정글러
닉네임 : Kino, Peterpan
소속 : Padocon, 보안회사+ 근무
관심분야 : 시즌4티어, 봇 갱, 역갱
간략한 자기소개
저는 1989년 2월 대구에서 1남 1녀중 장남으로 태어나 엄하신 아버지와 온화한 어머니 아래에서 “거짓말을 하지 말자” 라는 가훈에 따라 자라왔습니다.
12. Part 2. 평행이론(parallel life)
•Before Talking
–PC 기반의 악성코드의 종류
•행위적 측면
•목적적 측면
–안드로이드 악성코드
13. Part 2. 평행이론(parallel life)
•행위적 측면에서 바라본 악성코드의 발전
–시스템 파괴
•Brain virus, Jerusalem, 미켈란젤로,CIH 바이러스
–웜
•Morris Worm, Melissa Worm, Nimda, SQL Slammer, Blaster Worm
–Ransom Ware
•Hdd 암호화 Trojan 등장
–봇넷
•Mariposa, Zeus
–And so on……
14. Part 2. 평행이론(parallel life)
•목적적 측면에서 바라본 악성코드의 발전
–단순장난 및 자기과시형
•Elk Cloner, (50번째 부트 시 메세지 출력)
–잘못된 만남형
• Morris Worm, (인터넷 크기 측정을 위해 제작)
–금전갈취형
•Ransomware, 정보유출형 악성코드,
15. Part 2. 평행이론(parallel life)
•안드로이드 환경에서의 악성코드
–단순장난형
•배터리/데이터 소모형악성코드
–시스템 파괴 & 봇넷
•oldboot
–웜과 비슷한 형태
•sms를 통한 apk 설치링크 전송 악성코드
–금전갈취형
•스미싱, 공인인증서 유출
–And so on……
16. Part3. 안드로이드 악성코드
•Android Malware
–PC에서 일련의 악의적인 행위를 하는 프로그램
•왜 안드로이드인가?
–안드로이드의 특징
•높은 점유율 (80% 이상, 국내기준)
•다양한 개발방법을 가짐
•손쉬운 악성코드 배포 및 설치
•높은 자율성
스마트폰
앱
17. Part3. 안드로이드 악성코드
•스마트폰 악성코드 종류와 흐름
–고조선 시절 ( 배터리/데이터 소모형 )
•이 때 까지는 스마트폰 운영체제가 비교적 다양하여 크게 부각되지 않음.
–초 중기 안드로이드 악성코드
•루팅을 이용한 최고관리자 권한탈취
•최고권한으로 무엇이든 수행할 수 있게되며 이를 금전갈취에 활용
–현재의 악성코드
•간단한 트릭을 이용한 금전갈취
–스미싱
•공인인증서, 주소록 등의 정보유출을 통한 금전 갈취
•스마트폰 정보를 이용한 사기용 악성코드 등
18. Part3. 안드로이드 악성코드
•분석 시 사용된 도구
–Jadx, dex2jar
•자바 디컴파일을 통한 코드 분석 도구
–IDA, GDB
•so (shared object) 파일 분석 도구
–Droidbox, OnlineSandbox
•안드로이드 앱 동적분석 도구
19.
20. Part4. 악성코드 사기 기법 분석
•몸캠이란?
–웹캠 등의 도구를 통해 채팅 등에서 서로의 몸을 보여주며 스스로의 욕구를 해소하는 (自慰 : 스스로를 위로하는 행위 및 일련의 행동) 캠의 방식
•불타는 욕정을 이용한 몸캠사기
–몸캠을 미끼로 악성 S/W를 설치해 타겟 스마트폰의 연락처 및 문자 등을 유출함
•일종의 온라인 꽃뱀
21. Part4. 악성코드 사기 기법 분석
1. 몸캠을 위한 skype ID 전송
skypeID를 게재한 음란 메시지 기재
Chat App
Hacker
2. Skype ID 획득후 연락 시도
다양한 경로를 통해 음란메시지 획득
Chat App
Victim
22. Part4. 악성코드 사기 기법 분석
3. 채팅과정에서 악성 APP 설치 유도
음란채팅 시도
음성인식을 핑계로 악성 APP 설치요구
Lure
Victim
4. 정보 전송
카톡, 연락처, SMS 정보 등을 전송
Lure
음란채팅 과정을 동영상으로 녹화
Server
MalApp
Victim
34. Part 5. 실험적 경험론
경험은 생물이 환경에 따라 변화하는 과정이며 수동적, 감각적인 것에 그치지 않고 모든 세계를 실험하여 나가는 능동적, 행위적인 것이라는 이론
35. Part 5. 실험적 경험론
•진화하는 악성코드
–악성코드 분석 시스템의 발전
•다양한 동적분석 sandbox 툴의 개발
•수많은 악성코드 분석방법의 공유
–자가보호를 시작
•간단한 난독화 (안드로이드 개발툴킷에서 기본 제공)
•zip파일 헤더 변조를 통한 자가보호
•dex 디컴파일로 부터 자가 보호
•ndk를 이용한 개발 및 자가 보호
36. Part 5. 실험적 경험론
•아직 숨겨진 트릭들이 많다
–내가 악성코드 제작자라면??
•Malware File Dropping (Encryption, Use Network)
–윈도우의 드롭퍼처럼 파일을 드랍해 악성 행위를 수행
–Bypass Dynamic Analysis
•Droidbox, Online Sandbox 등을 탐지해 정상적인 동작을 수행하지 않음
–disturb Static Analysis
•정적분석 시 코드를 보기 어렵도록 만듬
37. Part 5. 실험적 경험론
•Malware File Dropping (Encryption, Use Network)
–일반 악성코드에 Dropper가 있다면 안드로이드에서도…?
•암호화된 파일을 복호화
•네트워크를 통한 다운로드
–이미 실제 악성코드에 적용되어 있음
38. Part 5. 실험적 경험론
•Bypass Dynamic Analysis
•목표
–Droidbox, Online Sandbox 등을 탐지해 정상적인 동작을 수행하지 않음
•타겟 시스템
–http://anubis.iseclab.org
–안드로이드 가상 머신 (AVD, Android Virtual Device, Droidbox )
–실제 기기
39. Part 5. 실험적 경험론
•Real Machine과 Virtual Machine의 구분
–리얼과 가상이므로 실질적인 차이가 존재할 것으로 판단
•Real Machine
–ARM Process를 기반으로 동작, 별도의 컨트롤이 필요하지 않음
•Virtual Machine
–AVD 등에서 ARM Process를 기반으로 하고 있지만 Host 머신은 x86이므로 가상화에 필요한 무언가가 있을것으로 판단
–비교 분석 대상
•실행중인 프로세스와 파일을 통한 비교
40. Part 5. 실험적 경험론
•동적분석 우회
–QEMU
•VMWare, Virtualbox와 같은 가상화 소프트웨어
•타 가상화 소프트웨어와 달리 다양한 플랫폼을 지원함.
–x86 기반 시스템에서 ARM 에뮬레이팅이 가능
–ARM 이외에도 MIPS등의 CPU 에뮬레이팅 가능
41. Part 5. 실험적 경험론
•탐지방법
–실행중인 프로세스 목록중 qemud의 동작여부 확인
–/system/bin/qemud, /system/bin/qemu-props 존재여부 확인
43. Part 5. 실험적 경험론
•동적분석 우회 테스트
–Anubis 테스트
https://anubis.iseclab.org/?action=result&task_id=1ecd971eb2ddc36d4117752853f30dd24&format=html
44. Part 5. 실험적 경험론
•JAVA Self Modifying Code
–시도해보지 않았으나 사긴이 오래 걸릴것 같아 Pass
•Arm Self Modifying Code
–NDK로 개발해 자기자신의 코드를 암호화 하여 배포,
–IDA등으로 분석 시도 할 경우 암호화된 데이터를 볼 수 있음.
50. Part 5. 실험적 경험론
•NDK Anti Debugging Code 삽입
–JNI_Onload 함수 내에 안티 디버깅 코드 삽입으로 디버깅 여부 탐지 가능
–JNI_Onload
•NDK 파일을 Load.library로 로드하게 될 때 호출 여부와 관계없이 가장 먼저 실행하게 되는 함수
•코드패치를 하지 않을 경우 라이브러리 로드 단계에서 프로세스가 종료됨
52. Part 6. 영겁회귀
•Countermeasure
새로운 플랫폼의 출연
악성코드 등장
방어 기술의 진화
악성코드의 진화
53. Part 6. 영겁회귀
•Countermeasure
–우리는 같은 싸움을 반복해 왔다.
•환경만 변했을 뿐이다.
•이후 IoT와 같은 새로운 영역에서 같은 문제가 발생할 수 있다.
–오늘본 코드들, 분명 곧 악성코드에서 다시 만나게 될 것이다.
•그 이상의 발전된 기술로 우리를 놀래킬 것이다.
–어느것도 완벽히 막을 수는 없다.
•그렇기 때문에 우리는 대비해야 한다.
54. Part7. Reference
•악성코드의 역사 , 윤주환, 2013.02.23, http://www.slideshare.net/btakeya/ss-17061173
•안드로이드 앱 보호를 위한 네이티브 코드 암호화 연구, 조효제, 2014. 02, 순천향대학교
•위키피디아 철학, http://ko.wikipedia.org/wiki/%EC%B2%A0%ED%95%99
•다음 백과사전 철학, 다음, http://100.daum.net/encyclopedia/view.do?docid=b20c2369b