Secure Programming Lecture1 : Introduction

Similar documents
[Smali 코드배우기 ] 작성 : 테스트를위해안드로이드앱을리패키징할일이있는데, 이때 smali에대한지식이필요하다. 그래서웹상에있는정보들을모아정리했다. Understanding the dalvik bytecode with the dedexer t

1

02 C h a p t e r Java

Interstage5 SOAP서비스 설정 가이드

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

12-file.key

MasoJava4_Dongbin.PDF

Microsoft PowerPoint - 김창수 v2.pptx

Android Master Key Vulnerability

PowerPoint 프레젠테이션

비긴쿡-자바 00앞부속

09-interface.key

01-OOPConcepts(2).PDF

DocsPin_Korean.pages

Çмú´ëȸ¿Ï¼º

2012³â8¿ùÈ£˙ȸš

Secure Programming Lecture1 : Introduction

교육자료

PowerPoint 프레젠테이션

Contents Contents 2 1 Abstract 3 2 Infer Checkers Eradicate Infer....

4S 1차년도 평가 발표자료

ilist.add(new Integer(1))과 같이 사용하지 않고 ilist.add(1)과 같이 사용한 것은 자바 5.0에 추가된 기본 자료형과 해당 객체 자료 형과의 오토박싱/언박싱 기능을 사용한 것으로 오토박싱이란 자바 컴파일러가 객체를 요구하는 곳에 기본 자료형

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

11 템플릿적용 - Java Program Performance Tuning (김명호기술이사)

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Ⅰ. 스마트폰에대한보안위협현황 1. 국내스마트폰이용현황 2009 년 11월 28일아이폰의국내정식출시를시작으로스마트폰의보급과그이용이빠르게늘어나기시작하여 2012 년 8월에이르러서는국내스마트폰이용자가 3,000 만명을넘어서게되었다. 방송통신위원회의무선통신서비스현황자료 (

PowerPoint 프레젠테이션

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot)

PowerPoint Presentation


COVER.HWP

이슈분석 2000 Vol.1

가볍게읽는-내지-1-2

한눈에-아세안 내지-1

kbs_thesis.hwp


untitled

untitled

05-class.key

신림프로그래머_클린코드.key

Inside Android Applications

Microsoft PowerPoint App Fundamentals[Part1].pptx

JMF2_심빈구.PDF

( )부록

슬라이드 1

C# Programming Guide - Types

자바 프로그래밍

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

양정규 라온시큐리티

rosaec_workshop_talk

Chapter 1

Microsoft PowerPoint App Fundamentals[Part1](1.0h).pptx

untitled

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

교육2 ? 그림

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

JUNIT 실습및발표

1

Chap12

강의10

UML

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Modern Javascript

K&R2 Reference Manual 번역본

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

1 Nov-03 CST MICROWAVE STUDIO Microstrip Parameter sweeping Tutorial Computer Simulation Technology

초보자를 위한 C# 21일 완성

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

rmi_박준용_final.PDF

1부

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

PowerPoint 프레젠테이션

5장.key

07 자바의 다양한 클래스.key

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

28 THE ASIAN JOURNAL OF TEX [2] ko.tex [5]

블로그_별책부록

NoSQL

Facebook API

PRO1_02E [읽기 전용]

Contents I. 취약점점검소개 II. III. IV. 점검프로세스분석 취약점점검방법 기타

슬라이드 1

DE1-SoC Board

초보자를 위한 C++

ch09

본책- 부속물

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

본 강의에 들어가기 전

00829A_SHR-6164-KOR.indb

Java

chap10.PDF

untitled

PowerPoint 프레젠테이션


쉽게 풀어쓴 C 프로그래밍

......_A4

Microsoft PowerPoint - 04-UDP Programming.ppt

No Slide Title

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

Transcription:

Malware and Vulnerability Analysis Lecture3-2 Malware Analysis #3-2

Agenda 안드로이드악성코드분석

악성코드분석 안드로이드악성코드정적분석

APK 추출 #1 adb 명령 안드로이드에설치된패키지리스트추출 adb shell pm list packages v0nui-macbook-pro-2:lecture3 v0n$ adb shell pm usage: pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [FILTER] You will get full package list on your device pm list permission-groups pm list permissions [-g] [-f] [-d] [-u] [GROUP] pm list instrumentation [-f] [TARGET-PACKAGE] pm list features pm list libraries pm path PACKAGE You will get a path of package pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f] [--algo <algorithm name> --key <key-in-hex> --iv <IV-in-hex>] PATH pm uninstall [-k] PACKAGE

APK 추출 #1 adb 명령 안드로이드에설치된패키지리스트추출 adb shell pm list packages adb shell pm list packages -f

APK 추출 #1 adb 명령 adb shell pm list packages -f

APK 추출 #1 adb 명령 adb pull

APK 추출 #2 File 관리앱

APK 추출 #2 File 관리앱

APK 추출 #2 File 관리앱 /sdcard/backup_apps/[filename].apk

APK 정적분석 Unzip APK APK 는 ZIP 으로압축한파일이므로내용확인을위해 Unzip AndroidManifest.xml Encoding 되어있으므로 Decoding 이필요 classes.dex DEX JAR(JD-GUI) libxxxxxx.so IDAPro

APK 정적분석 : AndroidManifest.xml

APK 정적분석 : AndroidManifest.xml

APK 정적분석 : AndroidManifest.xml

안드로이드앱을개발할때, java class/jar dex clases.dex 를분석할때 (from dex to jar), dex jar java

JAR 는 Class 파일 Archive Class 파일의 Decompile 을통해 Java 코드를구할수있음 Java Decompile jd-gui : http://jd.benow.ca jad : http://varaneckas.com/jad/

jd-gui 를사용한 Decomplie

jd-gui 의문제점 : // ERROR //(Decompile 오류로인해 Java 코드볼수없음 )

Decompile 오류로코드를읽을수없는경우대처방안 jad smali(apktool) : http://ibotpeaches.github.io/apktool/ dex smali code

jad 사용법 class java(jad) jad -o -r -sjava **/*.class jad -o -sjava [name].class

jad 사용법 class java(jad) jad -o -r -sjava **/*.class jad -o -sjava [name].class

jad 사용법 class java(jad)

apktool 사용법 apktool d[ecode] [OPTS] <file.apk> [<dir>] apktool b[uild] [OPTS] [<app_path>] [<out_file>]

apktool 사용법 apktool d 를사용하여 Decompile 할때, Resource Error 가발생할경우 apktool 을 update 하거나 r 옵션사용

apktool 은 Decompile 한결과코드를 smali 디렉토리에저장

smali 디렉토리는 classes 구조그대로디렉토리구조로저장

apktool : smali/baksmli assembler/disassembler dex smali baksmali smali code

smali code 분석 http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html

smali code 분석 #1.method public constructor <init>()v.locals 1.prologue.line 64 invoke-direct {p0}, Lcom/kt/android/showtouch/base/BaseActivity;-><init>()V.line 66 const-string v0, "MOCA_Wallet UserJoinActivity iput-object v0, p0, Lcom/kt/android/showtouch/activity/main/UserJoinActivity;->TAG:Ljava/lang/String;.line 77 const/4 v0, 0x0 iput-boolean v0, p0, Lcom/kt/android/showtouch/activity/main/UserJoinActivity;->isKeyboard:Z.line 121 new-instance v0, Lcom/kt/android/showtouch/activity/main/UserJoinActivity$1; invoke-direct {v0, p0}, Lcom/kt/android/showtouch/activity/main/UserJoinActivity$1;-><init>(Lcom/kt/android/showtouch/activity/main/UserJoinActivity;)V iput-object v0, p0, Lcom/kt/android/showtouch/activity/main/UserJoinActivity;->getHeightThread:Ljava/lang/Thread;.line 64 return-void.end method # virtual methods.method public d(ljava/lang/string;)i.locals 2.parameter "msg".prologue.line 59 iget v0, p0, Lcom/skt/wifiauth/SimpleLogger;->mLogLevel:I

smali code 분석 #2.line 155 :try_start_0 const-string v3, "/moca/newsetkmcsms.php" invoke-virtual {v0, v3}, Lcom/kt/android/showtouch/manager/ApiManager;->setApiUri(Ljava/lang/String;)Lcom/kt/android/showtouch/manager/ApiManager; move-result-object v3 invoke-virtual {v3}, Lcom/kt/android/showtouch/manager/ApiManager;->clearParams()Lcom/kt/android/showtouch/manager/ApiManager; move-result-object v3 iget-object v4, p0, Lcom/kt/android/showtouch/activity/main/UserJoinActivity;->userRegParamList:Ljava/util/ArrayList; invoke-virtual {v3, v4}, Lcom/kt/android/showtouch/manager/ApiManager;->appendParamList(Ljava/util/List;)Lcom/kt/android/showtouch/manager/ApiManager; move-result-object v3

smali code 분석 #3 invoke-virtual {v3}, Lcom/kt/android/showtouch/manager/ApiManager;->read()Z :try_end_0.catch Ljava/lang/Exception; {:try_start_0.. :try_end_0} :catch_0.line 161 :goto_0 invoke-direct {p0}, Lcom/kt/android/showtouch/activity/main/UserJoinActivity;->setSmsReceiverHandler()V.line 162 return-void.line 156 :catch_0 move-exception v1.line 157.local v1, e:ljava/lang/exception; const-string v3, "MOCA_Wallet UserJoinActivity" new-instance v4, Ljava/lang/StringBuilder; invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V

smali code 분석 #4 new-instance v6, Ljava/lang/StringBuilder; invoke-static {p2}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String; move-result-object v7 invoke-direct {v6, v7}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V const-string v7, "(" invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v6 array-length v7, p3 invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v6 const-string v7, ")" invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v6 invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v6 invoke-virtual {p0, v6}, Lcom/skt/wifiauth/SimpleLogger;->i(Ljava/lang/String;)I

APK 정적분석 : libxxxxxx.so

APK 정적분석 : Decompile classes.dex jar(dex2jar) classes.dex smali(apktool) class java( jad)

Q&A