슬라이드 1

Similar documents
PowerPoint 프레젠테이션

Mango220 Android How to compile and Transfer image to Target

1217 WebTrafMon II

(SW3704) Gingerbread Source Build & Working Guide

MAX+plus II Getting Started - 무작정따라하기

인켈(국문)pdf.pdf

K7VT2_QIG_v3

APOGEE Insight_KR_Base_3P11

bn2019_2

airDACManualOnline_Kor.key

SRC PLUS 제어기 MANUAL

PCServerMgmt7

LG전자 서비스 센터 안내 사용 중 문의/불편 사항은 서비스센터 방문 전에 전화로 문의하세요 , , (수신자 부담) 상담원과 원격으로 사용자 휴대전화를 진단 및 상담할 수 있는 LG전자 원격상담 서비스도 가능합니

ETL_project_best_practice1.ppt

Microsoft Word - JAVS_UDT-1_상세_메뉴얼.doc

s SINUMERIK 840C Service and User Manual DATA SAVING & LOADING & & /

(72) 발명자 서진교 경기 용인시 수지구 풍덕천2동 1167 진산마을 삼성5차아파트526동 1004호 조필제 경기 용인시 풍덕천동 유스빌 401호 - 2 -

manual pdfÃÖÁ¾

untitled

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

Orcad Capture 9.x

PowerPoint 프레젠테이션

6주차.key

서현수

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

SMB_ICMP_UDP(huichang).PDF

제20회_해킹방지워크샵_(이재석)

1.LAN의 특징과 각종 방식

vm-웨어-앞부속

歯이시홍).PDF

1. GigE Camera Interface를 위한 최소 PC 사양 CPU : Intel Core 2 Duo, 2.4GHz이상 RAM : 2GB 이상 LANcard : Intel PRO/1000xT 이상 VGA : PCI x 16, VRAM DDR2 RAM 256MB

untitled

CD-RW_Advanced.PDF

istay

User Guide

DocsPin_Korean.pages

Smart Power Scope Release Informations.pages

PowerPoint 프레젠테이션

슬라이드 1

컴퓨터과학과 교육목표 컴퓨터과학과의 컴퓨터과학 프로그램은 해당분야 에서 학문적 기술을 창의적으로 연구하고 산업적 기술을 주도적으로 개발하는 우수한 인력을 양성 함과 동시에 직업적 도덕적 책임의식을 갖는 IT인 육성을 교육목표로 한다. 1. 전공 기본 지식을 체계적으로

고객 카드 현대모비스 제품을 구입해 주셔서 대단히 감사합니다. A/S 마크란? 공업 진흥청이 애프터 서비스가 우수한 업체를 선정, 지정하는 마크로 애프터 서비스 센터 운영관리 등 8개 분야 45개 항목의 까다로운 심사로 결정됩니다. 주의 : 본 제품의 디자인 및 규격은

사용 전에 반드시 읽고 정확하게 사용해 주세요. 사용 중 문의사항은 , , (수신자 부담)로 문의하세요. 상세 사용 설명서의 화면과 그림은 실물과 다를 수 있습니다. 상세 사용 설명서의 내용은 소프트웨어 버전 또는

PowerPoint Presentation

PRO1_04E [읽기 전용]

DE1-SoC Board

슬라이드 제목 없음

T100MD+

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

PowerChute Personal Edition v3.1.0 에이전트 사용 설명서

chapter4

untitled

Microsoft PowerPoint - User Manual pptx

TTA Verified : HomeGateway :, : (NEtwork Testing Team)

歯DCS.PDF

¨ìÃÊÁ¡2

CPX-E-EC_BES_C_ _ k1

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

Microsoft PowerPoint - HS6000 Full HD Subtitle Generator Module Presentation

Assign an IP Address and Access the Video Stream - Installation Guide

일반적인 네트워크의 구성은 다음과 같다

H3050(aap)

TCP.IP.ppt

Integ

KDTÁ¾ÇÕ-1-07/03

슬라이드 1

Microsoft Word - HD-35 메뉴얼_0429_.doc

Microsoft Word - PEB08_USER_GUIDE.doc

歯CRM개괄_허순영.PDF

KDTÁ¾ÇÕ-2-07/03

Interstage5 SOAP서비스 설정 가이드

°í¼®ÁÖ Ãâ·Â

PowerPoint 프레젠테이션

안전을 위한 주의사항 제품을 올바르게 사용하여 위험이나 재산상의 피해를 미리 막기 위한 내용이므로 반드시 지켜 주시기 바랍니다. 2 경고 설치 관련 지시사항을 위반했을 때 심각한 상해가 발생하거나 사망에 이를 가능성이 있는 경우 설치하기 전에 반드시 본 기기의 전원을

LXR 설치 및 사용법.doc

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

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

CLX8380_KR.book

LCD Display

Sena Device Server Serial/IP TM Version

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O


목차 본 취급설명서의 사용법 본 사용설명서에서는 제품상에 표시된 채널명 및 버튼명, 소프트웨어의 메뉴명 등이 대괄호 ([ ]) 안에 표시됩니 (예: [MASTER] 채널, [ON/ OFF], [File] 메뉴) 시작하시기 전에 특징...3 부속품...4 시작하시기 전에

05Àå

untitled

Multi Channel Analysis. Multi Channel Analytics :!! - (Ad network ) Report! -! -!. Valuepotion Multi Channel Analytics! (1) Install! (2) 3 (4 ~ 6 Page

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

Microsoft Word doc

슬라이드 제목 없음

AVN2100Kor_Ç¥Áö110818F

untitled

The Self-Managing Database : Automatic Health Monitoring and Alerting

Network seminar.key

Microsoft Word - eClipse_사용자가이드_

Microsoft PowerPoint - eSlim SV [080116]

hlogin2

untitled

슬라이드 1

Index Process Specification Data Dictionary

기술 이력서 2.0

Transcription:

USB Hacking mongii@grayhash

Summary About USB protocol USB Packet Analysing USB Stack Fuzzing File System Fuzzing Multi-media File Fuzzing

USB(Universal Serial Bus) 기초

USB(Universal Serial Bus) 소개 Host Device architecture Host driven communication Half-Duplex (1.1, 2.0 기준 ) Speeds Low Speed: 1.5Mbits/s Full Speed: 12Mbits/s High Speed: 480Mbits/s Differential signaling (D+, D-) Up to 127 devices can be connected Power: 5V

USB 시스템의구조 Host USB 통신의중심 USB 네트워크에오직한개의호스트만가짐 루트허브를포함 Device USB Host 에연결되는장치 USB Hub 혹은 Function

USB bus topology USB Host Controller (Virtual Root Hub) Device Hub Device Upstream Device Hub Downstream Device Device

USB Packet 분석

USB Packet 분석

Beagle USB 480 USB Packet Analyzer 가격 : 약 $1,400 Software : Total Phase Data Center USBpcap 과의차이점 Low Level 의 USB 패킷들을볼수있음

USB Packet Capture

USB Packet Capture

USB Packet Capture

USB Packet Capture 대상 USB 장치연결 (ex> USB 키보드 )

USB Packet Capture

USB Packet 요약 Get Device Descriptor Set Address Get Device Descriptor Get Device Descriptor Set Configuration Get Report Descriptor Set Output Report Input Report Get Report Descriptor Set Output Report Input Report Get Report Descriptor 주요키워드 Device Descriptor Configuration Descriptor String Descriptor Report Descriptor

Get String Descriptor Get Device Descriptor Set Address Get Device Descriptor : Get Header : USB Keyboard Get Device Descriptor Set Configuration : Get Header : USB Keyboard : Get Header : USB Keyboard : Get Header : USB Keyboard Get Report Descriptor Set Output Report Input Report : Get Header : USB Keyboard Get Report Descriptor Set Output Report Input Report : Get Header : USB Keyboard Get Report Descriptor - 총여섯번반복 - 필요할때마다재요청하기때문 (USB 스택 & 드라이버의구현마다다름, 한번요청후정보를저장해놓는경우도있음 ) - 헤더를먼저요청후길이, 인코딩정보를파악 => 전체정보요청

Get String Descriptor Get Device Descriptor Set Address Get Device Descriptor : Get Header : USB Keyboard Get Device Descriptor Set Configuration : Get Header : USB Keyboard : Get Header : USB Keyboard : Get Header : USB Keyboard Get Report Descriptor Set Output Report Input Report : Get Header : USB Keyboard Get Report Descriptor Set Output Report Input Report : Get Header : USB Keyboard Get Report Descriptor Length : 0x1A(26) Type : 0x03 (string descriptor) 혹은문자열데이터

Descriptor Type 0x01 : DEVICE 0x02 : CONFIGURATION 0x03 : STRING 0x04 : INTERFACE 0x05 : ENDPONT

Device Descriptor Get Device Descriptor Set Address Get Device Descriptor Get Device Descriptor Set Configuration Get Report Descriptor Set Output Report Input Report Get Report Descriptor Set Output Report Input Report Get Report Descriptor - 셋모두동일 (string 과같은이유 ) - 장치에대한기본적인정보들제공 -Vendor, Product ID 정보제공 -Configuration 의개수정보제공

Get Device Descriptor Set Address Get Device Descriptor Get Device Descriptor Set Configuration Get Report Descriptor Set Output Report Input Report Get Report Descriptor Set Output Report Input Report Get Report Descriptor Device Descriptor

Device Descriptor Size 12 Type 01 Release num 10 01 Class Code 00 Sus-Class // 00 Protocol // 00 Packet Size 08 Vendor ID 2C 1A Product ID 2A 0B Release ver 10 01 String index 01 String index 02 String index 00 Config num 01

Vendor ID & Product ID 이값이무엇이냐에따라 OS 에인식되는장치명과사용되는 Device Driver 가달라짐 http://www.linux-usb.org/usb.ids buy a VID? You can buy the right to use a single VID from the usb.org. They charge $2000 for this, but this is a one-time fee. This gives you 65536 PID numbers, more than enough for the rest of your life. Check Getting a Vendor ID on the usb.org website for this option.

Vendor ID & Product ID http://www.the-sz.com/products/usbid/index.php?v=0x1a2c

Device Descriptor

Configuration Descriptor Get Device Descriptor Set Address Get Device Descriptor Get Device Descriptor Set Configuration Get Report Descriptor Set Output Report Input Report Get Report Descriptor Set Output Report Input Report Get Report Descriptor - 다섯모두동일 (string 과같은이유 ) - 인터페이스의개수정보제공 - 파워공급방법을기술함

Configuration Descriptor Get Device Descriptor Set Address Get Device Descriptor Get Device Descriptor Set Configuration Get Report Descriptor Set Output Report Input Report Get Report Descriptor Set Output Report Input Report Get Report Descriptor

Configuration Descriptor

그렇다면뒤쪽의데이터들은?

Interface Descriptor Class & SubClass 정보제공 해당장치가어떤역할을하는지나타냄 한장치안에여러개의 Interface 존재가능 스마트폰 : 이동식저장장치, adb 디버깅, 설치 CD 등

Class & SubClass Interface(0) Descriptor : 09 04 00 00 01 03 01 01 00 http://www.rennes.supelec.fr/ ren/fi/elec/docs/usb/hid1_11.p df 0x03 : HID 0x01 : Boot Interface http://www.usb.org/developers/defined_class/

Interface Descriptor Interface(0) Descriptor Interface(1) Descriptor

Endpoint Descriptor 실질적인데이터가오가는통로 Endpoint Descriptor 역시여러개가될수있음 Transfer Type 정보제공 Control, Interrupt, Bulk, Isochronous 파이프라고부르기도함

Transfer Type Interrupt Function 에서 Host 에주기적으로소량의데이터를입력하는경우에적합 키보드 / 마우스등 Contol 디바이스가설정정보등을호스트에전송할때사용 혹은호스트가디바이스로새로운설정정보전송 Bulk 대량의데이터고속전송 신뢰성이요구되는경우에적합 EX> USB 이동식저장장치

Transfer Type Isochronous 등시성전송 일정주기에일정량의데이터를전송하고자할때적합 다른전송모드에비해높은우선순위 데이터전송폭과전송시간을보장 실시간어플리케이션에적합 예 > CCTV 영상, 오디오스트리밍 데이터오류보장은 X 오류시재전송요청불가

Interface & Endpoint Descriptor Endpoint(1) Descriptor Endpoint(2) Descriptor * Endpoint(0) 은기본으로존재하는 Endpoint 로서, Control packet 들을처리하는역할을함

USB Descriptor Hierarchy Device Desriptor VID, PID 정보 Configuration 0 전원정보 Configuration 1 Interface 0 AS0 Interface 1 AS1 Class 정보 Interface 0 AS0 Interface0 AS1 Interface0 AS0 Endpoint 1 Endpoint 2 Endpoint 3 More Endpoint Descriptors 데이터전송방식정보

USB Descriptor Hierarchy Device Desriptor VID, PID 정보 Configuration 0 전원정보 Configuration 1 Interface 0 AS0 Interface 1 AS1 Class 정보 Interface 0 AS0 Interface0 AS1 Interface0 AS0 Endpoint 1 Endpoint 2 Endpoint 3 데이터전송방식정보 -VID : 0x1a2c (China Resource..) -PID : 0x0b2a (USB Keyboard) -전원 : Bus More Powered, Endpoint Descriptors 98mA -CLASS : HID keyboard - 전송방식 : Interrupt

USB Stack Fuzzing

USB Fuzzing 위한준비물 Fuzzing 대상 USB Host stack (OS kernel) File system parser (OS kernel) Hardware requirement : USB OTG port Software requirement : Customizable USB Device source code

Hardware : OrangePi series

Hardware : OrangePi series Support USB Host & Device port (OTG) Support UART port for debug console Support Linux and Android software Support WIFI ETC

Software : Linux USB Gadget USB Device function 들을구현해놓은커널모듈들 Supports USB Serial, USB Ethernet, USB Printer, USB Mass-storage and etc Kernel/drivers/usb/gadget/*

Fuzzing Target 디바이스가호스트로전송하는정보들 USB Descriptors Fuzzing Device descriptors Configuration descriptors Interface descriptors Endpoint descriptors Etc File System Fuzzing Using Mass-storage gadget Mutation variety file-system image

Descriptor Fuzzer 구현방법 Build kernel for orange-pi mini Modify Kernel-Level USB gadget source code for fuzzing Implement User-Level Fuzzer using python Make mutated image or descriptors for fuzzing Load Gadget module using modprobe command Wait for enumeration done Unload gadget module using modprobe r command Repeat these Mutation methods Evil payloads DB for fuzzing Using radamsa (mutation tool by google, need to cross-compile)

USB Fuzzer 의구성 USB descriptor Fuzzing descfuzz.py g_fuzz.ko usbfuzz.c File System Fuzzing fsfuzz_radamsa.py fsfuzz_fuzzdb.py g_mass_storage.ko

Implement : Descriptor Fuzzer Mutation 반복 Module Loading descfuzz.py

Implement : Descriptor Fuzzer g_fuzz.ko USB descriptor Fuzzing 을위한특수 gadget User level 의 descriptor 파일을 Parsing 하여 usb gadget 의 descriptor 데이터를생성 Usage: modprobe g_fuzz.ko descfile=<descriptor binary file> strdescfile=<string descriptor binary file>

Implement : Descriptor Fuzzer g_fuzz.ko user defined descriptor parsing

Implement : Descriptor Fuzzer g_fuzz.ko Load String Descriptors

Implement : Descriptor Fuzzer usbfuzz.c Make abnormal usb descriptors Storing random values to descriptor fields

File System Fuzzing

Implement : fsfuzz_radamsa.py

Implement : fsfuzz_fuzzdb.py

USB Fuzzer 실행방법 USB descriptor Fuzzer just run python descfuzz.py g_fuzz.ko : auto loading by descfuzz.py usbfuzz : auto running by descfuzz.py File System Fuzzer Radamsa ver : python fsfuzz_radamsa.py Fuzz DB ver : python fsfuzz_fuzzdb.py

Crash Detection Host 로부터의응답이살아있는지를체크 오류발생시 Kernel Panic 이발생하기때문 방법 1 : USB packet 응답을체크 Kernel level 에서구현 방법 2 : Host OS 에간단한 echo TCP Server 를가동한후, 응답이오는지를체크 User level 에서구현

Fuzzer 실행화면

Multi-Media File Fuzzing

Fuzzing 방법 Radamsa Mutation tool by google https://github.com/aoh/radamsa Dumb Fuzzing 무작위변조 Insert, Delete, Edit(Overwriting) Fuzz Payloads Format String Bug Buffer Overflow Command Injection ETC

Fuzzing 주요코드 Fuzzing 과정 샘플파일선택 샘플파일 mutation Radamsa Dumb Fuzzing Fuzz Payloads 파일재생 재생커멘드이용 Crash 발생확인 Crash 발생파일보관 Logging

Fuzzing 주요코드 Dumb Fuzzing Fuzz Payloads

Fuzzer 실행 python MediaFuzzRadamsa.py 1000

Crash 확인방법 Crash 발생 Crash 재생전후플레이어의 pid 확인

Fuzzing 결과 Target Formats aac, ac3, aiff, amr, au, flac, m4a, mid, mka, mp3, ogg, ra, voc, wav, wma Crash 발생 Formats flac, m4a, mka, ra, wma

결론 USB 포트를이용하여대상장비를장악하는것이가능함 USB 를공격하기위한방법은 USB Stack, File System, Multi-media file 등다양함 Fuzzing 을통해 USB 공격을자동화할수있음

QNA

감사합니다!

기타참고자료

HCI Packet Type - HCI Command : 0x01 명령전송 (from host) - HCI Event : 0x04 결과, 상태값전송 (to host) - ACL Data : 0x02 데이터전송 (both) * HCI : Host-Controller Interface

Bluetooth Stack Bluetooth Radio 무선주파수통신구간 LC (Link Control) 흐름제어, 확인응답 (ACK), 재전송요청 LMP (Link Manager Protocol) 장치간링크생성및해제 인증, 암호화 전원관리

Bluetooth Stack HCI : Host Controller Interface CPU와 Bluetooth IC 사이를연결 host stack (CPU, OS) the controller (Bluetooth 모듈 ) UART, USB 및 PCMCIA로연결

Bluetooth Stack L2CAP 논리적인연결생성 Multiplexing ( 다중화 ) 데이터의용도구분 Segmentation and reassembly 패킷조각화 / 복구 QoS management TCP 레이어의역할

Bluetooth Stack RFCOMM 시리얼프로토콜에뮬레이팅 Data stream 전달

Bluetooth Stack SDP Service discovery protocol 장치에서제공하는기능 ( 프로파일 ) 들에대한정보제공

Bluetooth Stack OBEX Object Exchange Data Object 교환 블루투스프로파일중하나

SDP Packet

Get String Descriptor Get Device Descriptor Set Address Get Device Descriptor : Get Header : USB Keyboard Get Device Descriptor Set Configuration : Get Header : USB Keyboard : Get Header : USB Keyboard : Get Header : USB Keyboard Get Report Descriptor Set Output Report Input Report : Get Header : USB Keyboard Get Report Descriptor Set Output Report Input Report : Get Header : USB Keyboard Get Report Descriptor The First Get String Descriptor Packet http://www.usb.org/developers/docs/usb_langids.pdf

기타 : Report Descriptor Get Device Descriptor Set Address Get Device Descriptor Get Device Descriptor Set Configuration Get Report Descriptor Set Output Report Input Report Get Report Descriptor Set Output Report Input Report Get Report Descriptor HID 관련정보제공자세한정보 : http://www.rennes.supelec.fr/ren /fi/elec/docs/usb/hid1_11.pdf