슬라이드 1

Similar documents
지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

슬라이드 1

Microsoft PowerPoint - 02-Development-Environment-1.ppt

슬라이드 제목 없음

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft PowerPoint - 03-Development-Environment-2.ppt

Mango220 Android How to compile and Transfer image to Target

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

DE1-SoC Board

Tizen

망고 M 카메라 포팅 가이드

Adobe Flash 취약점 분석 (CVE )

PowerPoint 프레젠테이션

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터

휠세미나3 ver0.4

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]

망고100 보드로 놀아보자-4

Chap 10 안드로이드커널 (Kernel)

LXR 설치 및 사용법.doc

PowerPoint 프레젠테이션

(Microsoft PowerPoint - AndroG3\306\367\306\303\(ICB\).pptx)

PCServerMgmt7

Embedded 시스템 실전 해킹

Chapter. 5 Embedded System I Bootloader, Kernel, Ramdisk Professor. Jaeheung, Lee

6주차.key

Microsoft PowerPoint - em8-리눅스설치.ppt

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

ISP and CodeVisionAVR C Compiler.hwp

네이버블로그 :: 포스트내용 Print VMw are 에서 Linux 설치하기 (Centos 6.3, 리눅스 ) Linux 2013/02/23 22:52 /carrena/ VMware 에서 l


Remote UI Guide

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

소프트웨어설치 1. 소프트웨어설치및제거 ( 소스코드 ) 소스코드컴파일을이용한 S/W 설치 1. 소스코드다운로드 - 예 ) httpd tar.gz - 압축해제 : #tar xzvf httpd tar.gz - INSTALL 또는 README파일참조

벤처연구사업(전동휠체어) 평가

PowerPoint 프레젠테이션

Copyright 2004 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A..,,. Sun. Sun. Berkeley BSD. UNIX X/Open Company, Ltd.. Sun, Su

교육지원 IT시스템 선진화

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

untitled

PowerPoint 프레젠테이션

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

YUM(Yellowdog Updater,Modified) : RPM 패키지가저장된서버 ( 저장소 ) 로부터원하는패키지를자동으로설치한다. : YUM 도구는 RPM 의패키지의존성문제를해결

Microsoft Word - 21_반도체.doc

1. efolder 시스템구성 A. DB B. apache - mod-perl - PHP C. SphinxSearch ( 검색서비스 ) D. File Storage 2. efolder 설치순서 A. DB (MySQL) B. efolder Service - efolder

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

Microsoft Word ARM_ver2_0a.docx

무시하고진행합니다. $ sudo rootstock -d precise --seed ubuntu-standard -x en_us.utf-8 -f ubuntu -l ubuntu -p ubuntu -i 2G I: Running on a x86_64 machine I: Cre

Chap 2 임베디드시스템 개발환경구성

SBR-100S User Manual

Mango24R2 Auto Write

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

Microsoft PowerPoint APUE(Intro).ppt

PowerPoint 프레젠테이션

APOGEE Insight_KR_Base_3P11

초보자를 위한 C++

Code Generation in Rapid

PowerPoint 프레젠테이션

Microsoft PowerPoint - 06-CompSys-11-System.ppt

C# Programming Guide - Types

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - 김창수 v2.pptx

Microsoft PowerPoint - e7.pptx

1 Live CD(USB) 란? 1.1 Live CD(USB) 란? LiveCD(USB) 란 CD( 또는 USB) 를하드디스크로인식하여해당매체를기반으로동작하는운영체제를말한다. 즉 CD에설치된운영체제이다. 이는자신의 PC의하드디스크에설치된내용은 CD에그대로복사하였다고생각

Copyright 2012, Oracle and/or its affiliates. All rights reserved.,.,,,,,,,,,,,,.,...,. U.S. GOVERNMENT END USERS. Oracle programs, including any oper

다음 사항을 꼭 확인하세요! 도움말 안내 - 본 도움말에는 iodd2511 조작방법 및 활용법이 적혀 있습니다. - 본 제품 사용 전에 안전을 위한 주의사항 을 반드시 숙지하십시오. - 문제가 발생하면 문제해결 을 참조하십시오. 중요한 Data 는 항상 백업 하십시오.

RedHat Linux Fedora Core 4 + APM 소스컴파일설치 김희균 [ 사전준비 : 리눅스시디, 리눅스설치공간준비와컴퓨터의 IP 주소와넷마스크, 게이트웨이주소기록 1. Linux 시디로부팅을한다. 2. Gra

PowerPoint 프레젠테이션

<31332DB9E9C6AEB7A2C7D8C5B72D3131C0E528BACEB7CF292E687770>

CD-RW_Advanced.PDF

Chap 5 루트파일시스템 (Root F/S)

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API

슬라이드 1

Microsoft PowerPoint - AME_InstallRoutine_ver8.ppt

Clover 부트로더를 이용한 해킨토시 설치방법

(72) 발명자 이동희 서울 동작구 여의대방로44길 10, 101동 802호 (대 방동, 대림아파트) 노삼혁 서울 중구 정동길 21-31, B동 404호 (정동, 정동상 림원) 이 발명을 지원한 국가연구개발사업 과제고유번호 부처명 교육과학기술부

Gentoo linux 설치기록

망고100 보드로 놀아보자 -10

리눅스 취약점대응방안권고 / KISA 취약점점검팀 영향받는플랫폼 OS, FAQ 추가 개요 미국보안회사 에의해 시스템의 라이브러리 의특정함수에서임의코드를실행할수있는취약점이공개 해당취약점은 CVE 지정, 도메인네임을

서현수

untitled

<목 차 > 제 1장 일반사항 4 I.사업의 개요 4 1.사업명 4 2.사업의 목적 4 3.입찰 방식 4 4.입찰 참가 자격 4 5.사업 및 계약 기간 5 6.추진 일정 6 7.사업 범위 및 내용 6 II.사업시행 주요 요건 8 1.사업시행 조건 8 2.계약보증 9 3

PowerPoint 프레젠테이션

USB 케이블만을이용한리눅스 NFS 개발환경 (VirtualBox) 최초작성 : 2010 년 10 월 21 일 작성자 : 김정현 수정내용 최초작성 by 김정현 스크립트추가, 설명보충 by 유형목 1. VritualBox

RaspberryPi 개발환경구축 II 1 제 03 강 개발환경구축 II 가상머신환경구축 (VMware Player, VM(Ubuntu), VMTools, 폴더공유 ) 필수패키지설치 Tool Chain( 크로스컴파일러 ) 설치크로스컴파일및호스트컴파일 NFS 서비스한글사

PowerPoint 프레젠테이션

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

±èÇö¿í Ãâ·Â

<BDBAB8B6C6AEC6F95FBDC3C0E55FC8AEB4EB5FC0CCC1D6BFCF5F E687770>

untitled

Transcription:

Smart Phone Hacking! 정구홍 @BoB 2013-08-20

강의일정 1 차 : Inside of Smart Phone Composition of Smart Phone Building Linux & Android 2 차 : Remote Attack Remote Attack Vectors Case study : Flash Vulnerability 3 차 : Local Attack Local Attack Vectors Case study : Device Driver Vulnerabililty

오늘배워볼것들 스마트폰의구성이해하기 하드웨어구성 소프트웨어구성 리눅스운영체제빌드해보기 크로스컴파일 커널컴파일 루트파일시스템컴파일 부트로더이해하기 안드로이드운영체제빌드 ( 구경 ) 해보기

진행하면서동시에.. 필요한프로그램들을설치해주세효 apt-get update apt-get install openssh-server apt-get install xinit apt-get install qemu apt-get install libncurses5-dev VM 비밀번호 notroot / thoughtpolice sudo I (thoughtpolice)

연구용스마트폰구매하기 다음의글들을참고해주세용 http://www.hackerschool.org/sub_html/hs_p osting/?uid=17 http://www.hackerschool.org/sub_html/hs_p osting/?uid=18

스마트폰하드웨어의구성 ( 갤럭시 S 예제 ) => 정정 4G OneNand + 3G DDR + 1G DRAM

CPU S5PC111 삼성제작 Core : Cortex A8 (ARM) CPU + OneNand Flash + DDR RAM + DRAM

Flash Memory 비휘발성메모리장치 커널, 운영체제파일들, 사용자데이터등을저장

NOR vs NAND NOR 각메모리셀이병렬형태로이루어짐 Read 속도가빠름 Write 속도는느림 코드영역으로적합 (ex. 펌웨어 ) NAND 셀이직렬형태로이루어짐 Read 는느리고, Write 는빠름 데이터영역으로적합 (ex. 이동식장치 )

NOR vs NAND NOR (Code) 각메모리셀이병렬형태로이루어짐 Read 속도가빠름 Write 속도는느림 코드영역으로적합 (ex. 펌웨어 ) NAND (Data) 셀이직렬형태로이루어짐 Read 는느리고, Write 는빠름 데이터영역으로적합 (ex. 이동식장치 )

OneNand 란? 삼성전자개발 NOR Flash와 NAND Flash의장점을합함 읽기 / 쓰기모두빠름 퓨전메모리형태 즉, 코드실행까지가능한 NAND 최대 10배의속도

MoviNand? 삼성전자개발 모바일폰전용대용량 Nand Flash Nand Flash + Controller => 원칩화 OneNand보다느림

갤럭시 S 의저장장치구성 onenand 여러개의파티션으로분할 /system/ (300 메가 ) /dbdata/ (100 메가 ) /cache/ (30 메가 ) movinand 2 개의파티션으로분할 내장 SD 카드 (14 기가 ) /data/ (2 기가 ) /dev/block/mmcxxx

그외의칩들 MSM6290 퀄컴제작 통신전용칩셋 WCDMA, HSDPA 오디오코텍 오디오데이터처리

갤럭시 S vs 아이폰 4 비슷비슷..

스마트폰의소프트웨어이해하기 ARM 바이너리만들기실습 ARM 커널만들기실습 부트로더, 리눅스커널 안드로이드운영체제

ARM 바이너리만들기실습

Cross Compile 란? 다른아키텍쳐의코드를생성하는컴파일 예 x86에서 x86코드컴파일 => Not Cross Compiler x86에서 ARM코드컴파일 => Cross Compiler! ARM에서 x86코드컴파일 => Cross Compiler! Cross Compiler 설치필요

Cross Compile 환경구축하기 OS 우분투 13.04 ( 다른버전도상관없음 ) http://sourceforge.net/projects/thoughtpolicevm/files/ubuntu/ ubuntu-server-13.04/ubuntu-server-13.04-i386.zip/download Cross Compiler 다운로드 CodeSourcery

Cross Compiler 설치 CodeSourcery Cross Compiler 설치 http://sourcery.mentor.com/public/gnu_toolc hain/arm-none-linux-gnueabi/ 최신버전으로 down! arm-2013.05-24-arm-none-linux-gnueabi.bin 설치 now chmod +x 파일명./ 파일명 기본쉘변경후다시실행 ( 중요 ) root@ubuntu:~/crosscompiler# rm -rf /bin/sh root@ubuntu:~/crosscompiler# ln -s /bin/bash /bin/sh

Cross Compiler 설치 CodeSourcery Cross Compiler 설치 엔터엔터와이와이 ~

Cross Compiler 설치 대표적인 ARM 용 Cross Compiler 들 CodeSourcery 에서배포 http://sourcery.mentor.com/public/gnu_toolchain/armnone-linux-gnueabi/ Android 에서배포 http://developer.android.com/tools/sdk/ndk/index.html uclibc 에서배포 http://www.uclibc.org/downloads/binaries/ Kegel 에서배포 http://kegel.com/crosstool/

설치완료 root@ubuntu:~# cd /root/codesourcery/sourcery_codebench_lite_for_arm_gnu_linux root@ubuntu:~/codesourcery/sourcery_codebench_lite_for_arm_gnu_linux# cd bin root@ubuntu:~/codesourcery/sourcery_codebench_lite_for_arm_gnu_linux/bin# root@ubuntu:~/codesourcery/sourcery_codebench_lite_for_arm_gnu_linux/bin# root@ubuntu:~/codesourcery/sourcery_codebench_lite_for_arm_gnu_linux/bin#./armnone-linux-gnueabi-gcc arm-none-linux-gnueabi-gcc: fatal error: no input files compilation terminated. root@ubuntu:~/codesourcery/sourcery_codebench_lite_for_arm_gnu_linux/bin# root@ubuntu:~/codesourcery/sourcery_codebench_lite_for_arm_gnu_linux/bin#

helloworld.c 를 ARM 용으로 ~ # cd /root/codesourcery/sourcery_codebench_lite_for_arm_gnu_linux # vi hello.c void main() { printf("hello world\n"); } # #./arm-none-linux-gnueabi-gcc -o hello hello.c hello.c: In function 'main': hello.c:3:2: warning: incompatible implicit declaration of built-in function 'printf' [enabled by default] # # file hello hello: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped # * Static 컴파일하기 #./arm-none-linux-gnueabi-gcc -o hello hello.c -static hello.c: In function 'main': hello.c:3:2: warning: incompatible implicit declaration of built-in function 'printf' [enabled #

EABI 란? ABI(Application Binary Interface) 어플리케이션과 OS 사이혹은어플리케이션과라이브러리사이에서사용되는 Low-Level 인터페이스 API 와의차이점 API : 소스코드레벨에서의관점 ABI : 바이너리레벨에서의관점 즉, 컴파일되어나온 Object 파일들과의연결방식

EABI 란? EABI(Embedded Application Binary Interface) 임베디드소프트웨어의자료형, 레지스터사용등에대한표준정의 다른 Compiler 를사용해만들어진 Object 들과의연동에필요 None EABI 어떤 OS 에특화된 EABI 가아니다 라는뜻 즉, 특정 OS 하나를위한바이너리가아니다 출처 http://blog.naver.com/dong880510/140156760753

정적컴파일하기 필요한라이브러리가대상 OS 안에없을수있음 있더라도경로가달라서로딩하지못할수있음 로딩했더라도호환되지않을수있음 #./arm-none-linux-gnueabi-gcc -o hello hello.c -static

내폰에올려서실행해보잡 아이폰 (ios) 갤럭시 ( 안드로이드 )

리눅스커널컴파일하기 커널소스코드다운로드 https://www.kernel.org root@ubuntu:~/linux_build# xz -d linux-3.10.6.tar.xz root@ubuntu:~/linux_build# root@ubuntu:~/linux_build# ls linux-3.10.6.tar root@ubuntu:~/linux_build# tar xvf linux-3.10.6.tar

리눅스커널컴파일하기 # make ARCH=arm versatile_defconfig # make ARCH=arm menuconfig # make ARCH=arm CROSS_COMPILE= /root/codesourcery/sourcery_codebench_lite_for_arm_gnu_linu x/bin/arm-none-linux-gnueabi- all # find. -name zimage./arch/arm/boot/zimage #

Config 변경 (menuconfig) kernel Features --> Memory split (3G/1G user/kernel split) ---> [ ] Preemptible Kernel (EXPERIMENTAL) [*] Use the ARM EABI to compile the kernel [*] Allow old ABI binaries to run with this kernel (EXPERIMENTAL) [ ] High Memory Support (EXPERIMENTAL) Memory model (Flat Memory) ---> [ ] Add LRU list to track non-evictable pages (4096) Low address space to protect from user allocation

Versatile? The Versatile one is the most interesting as it includes a hard disk SCSI controller, an Ethernet card and a graphical display

zimage 의구조 출처 : http://bmfrog.tistory.com/m/post/view/id/101

zimage 의구조 vmlinux : 실제커널 piggy.gz : vmlinux를압축한파일 misc.c : 압축해제수행 head.s : 압축해제된코드로 jump

자, 이제이커널을어디서? 어디서실행할것인가? 후보 1 : 내스마트폰? -_- 후보 2 : 개발용보드 후보 3 : QEMU # apt-get install qemu Qemu 가지원하는아키텍쳐들 qemu-system qemu-system-arm qemu-systemcommon qemu-system-mips qemu-system-misc qemu-system-ppc qemu-system-sparc qemu-system-x86 qemu-user qemu-utils seabios sharutils vgabios

QEMU 가지원하는보드목록 root@ubuntu:~/linux_build/linux-3.10.6# qemu-system-arm -M xxx Supported machines are: none empty machine beagle Beagle board (OMAP3530) beaglexm Beagle board XM (OMAP3630) collie Collie PDA (SA-1110) nuri Samsung NURI board (Exynos4210) smdkc210 Samsung SMDKC210 board (Exynos4210) connex Gumstix Connex (PXA255) verdex Gumstix Verdex (PXA270) highbank Calxeda Highbank (ECX-1000) integratorcp ARM Integrator/CP (ARM926EJ-S) (default) kzm ARM KZM Emulation Baseboard (ARM1136) mainstone Mainstone II (PXA27x) musicpal Marvell 88w8618 / MusicPal (ARM926EJ-S) n800 Nokia N800 tablet aka. RX-34 (OMAP2420) n810 Nokia N810 tablet aka. RX-44 (OMAP2420)

커널부팅성공 ~ qemu-system-arm -M versatilepb -m 128M -kernel zimage

Root File System 루트파일시스템이란? 커널부팅완료후만나게되는파일들 OS 인터페이스 Shell X-Windows 기본프로그램들 Login, passwd, ls, id, ps, netstat 등등.. 라이브러리들 Glibc 등

BusyBox 소개 다양한유틸리티, 프로그램들을하나로통합한패키지프로그램 중복되는부분을제거함으로써용량최소화 스마트폰에없는프로그램들제공 임베디드운영체제에서많이사용됨 다운로드 http://busybox.net/downloads/busybox- 1.21.1.tar.bz2

Busybox 컴파일 make ARCH=arm CROSS_COMPILE=/root/xxx defconfig make ARCH=arm CROSS_COMPILE=/root/xxx menuconfig 컴파일전에옵션변경 Static binary 체크 make ARCH=arm CROSS_COMPILE=/root/xxx install

Busybox 컴파일

기본파일시스템생성 # cd _install/ l# mkdir proc sys dev etc etc/init.d # # cd etc # cd init.d # vi rcs #!/bin/sh mount -t proc none /proc mount -t sysfs none /sys /sbin/mdev -s # chmod +x rcs # cd.. # cd.. # find. cpio -o --format=newc >../rootfs.img 3994 blocks #

OS 부팅 qemu-system-arm -M versatilepb -m 128M - kernel zimage -initrd rootfs.img.gz -append "root=/dev/ram rdinit=/sbin/init"

와우쉘이떴다!

리눅스배포본이란? 기본리눅스커널을기반위에어떤 Root File System 및 Interface 를구성하느냐에따라다른배포본이된다. Ubuntu Linux Fedora Linux Android Linux

실제장비에넣기 http://www.arm.com/products/tools/developmentboards/versatile/platform-baseboards.php

실제장비에넣기 ROM Writer Writing 전용장비 Flash memory 에 writing JTAG 하드웨어디버깅장비 Flash memory 에 writing

부트로더란? 초기 OS 개발시엄청난시행착오를겪으며 OS 를새로업로드해야한다. 매번장비를사용하기너무귀찮다!! 네트워크로전송할수는없을까? 부트로더안에펌웨어업데이트기능을넣어서진행

Custom Rom 만들기 커스톰롬 소스코드를기반으로수정하여제작 Ex> 카메라사운드함수삭제 쿠킹롬 기존의파일들을추출한후수정하여제작 Ex> 카메라사운드파일삭제

Custom Rom 만들기 장점 스마트폰을느리게하는불필요한프로그램들삭제 Ex> SK 마켓 바탕화면, 시작화면테마변경 성능향상 Ex> 스케쥴링개선 여유를가지고천천히개발하다보니오히려순정롬보다좋은품질이 ~ 반면개발자들을 due 에쫓김

Flashing KIES 삼성개발 공식펌웨어업그레이드소프트웨어 CWM - by clockwork mod - http://caleb1783.tistory.com/236 ODIN - by 삼성 (leaked) DNW 삼성개발 Usb 기반펌웨어업로드툴 HEIMDALL - by AdamOutler FASTBOOT 안드로이드제작 - fastboot flash bootloader <location/name_of_bootloader_file.img> - http://rootzwiki.com/topic/28544-guide-nexus-7-bootloadersrecoveriesrootback-tostock/#entry764328 - 리눅스커맨드기반 - 예제 http://techshek4u.blogspot.co.uk/2012/01/applying-card-emulation-patch-to_03.html

Flashing KIES 삼성개발 공식펌웨어업그레이드소프트웨어 DNW 삼성개발 개발자들사이에사용되는펌웨어업그레이드소프트웨어 ODIN - 삼성개발 (leaked)

Flashing FastBoot 안드로이드개발 펌웨어업그레이드툴 리눅스커맨드기반 CWM 유명한커스톰롬개발그룹에서제작 Heimdall 개인 (AdamOutler) 이개발하여배포

안드로이드전용커널소스 스마트폰및타블렛에특화된커널 불필요한기능제거 필요한기능추가 리눅스커널소스를기반으로만들어짐 http://source.android.com/source/downlo ading.html

안드로이드전용 Root File System # mkdir ~/bin # curl http://android.git.kernel.org/repo >~/bin/repo # chmod 755 ~/bin/repo # cp ~/bin/repo /bin # mkdir ~/mydroid # cd ~/mydroid # repo init -u git://android.git.kernel.org/platform/manifest.git # cd ~/mydroid # repo sync

안드로이드전용 Root File System 출처 : http://forum.falinux.com/zbxe/?mid=lecture_tip&page=2&document_srl=517788

QEMU 에 android 올리기 http://www.kandroid.org/board/board.php?board=andr oidsource&command=body&no=24

실제장비에 android 올리기 ODROID-X http://hardkernel.com/renewal_2011/shop/good_list.ph p?lang=en

참고자료 QEMU+ARM http://mmmyddd.freeshell.net/wiki/embed/linuxonar monqemu.html QEMU+ANDROID http://www.kandroid.org/board/board.php?board=a ndroidsource&command=body&no=24 ODROID-X http://dev.odroid.com/projects/ics/

Q/A

감사합니다.