Bluetooth hacking mongii@grayhash
Bluetooth Hacking 목차 Bluetooth 기초 Bluetooth Module 사용실습 Bluetooth Packet 분석 Bluetooth Profile이란? 카오디오장비와 Bluetooth 카오디오 Bluetooth의공격벡터들 Bluetooth Packet 변조
Bluetooth 기초 무선데이터송수신프로토콜 1994 년스웨덴의에릭슨 (Ericsson) 사에서개발 10 세기노르웨이와덴마크를통일한바이킹헤럴드블루투스 (Harald Bluetooth;910~985) 국왕의이름에서유래 저가, 저전력 휴대폰, 노트북, 헤드셋, 차량등에서사용 통신거리 : 약 10m UART Serial 프로토콜의무선버전
Master/Slave and Piconet 하나의 Master 에최대 7 개의 Slaves 연결가능 Master : 블루투스통신의주체 ex> 휴대폰 Slave : 블루투스기반의장치 ex> 키보드, 스피커 Piconet : 하나의 Master 를중심으로한 Network
Bluetooth Module 사용실습
Bluetooth Module 소개 모델명 : HC-05 Bluetooth V2.0+EDR (Enhanced Data Rate) Master/Slave 겸용 AT command를이용하여제어
Bluetooth Module 연결 아두이노 2 번핀 블루투스 TXD 핀 아두이노 3 번핀 블루투스 RXD 핀 그외 GND, 3.3V
Bluetooth 장치이름변경 아래코드의빨강색부분을원하는대로변경해주세요. 변경하지않을시기본이름 : HC-05 #include <SoftwareSerial.h> int ch; SoftwareSerial BluetoothSerial(2, 3); // RX, TX void setup() { Serial.begin(9600); Serial.println("start"); BluetoothSerial.begin(9600); BluetoothSerial.write("AT+NAME=GOOHONG\r\n"); } void loop() { if(bluetoothserial.available()){ ch = BluetoothSerial.read(); Serial.write(ch); } }
Bluetooth 장치이름변경 아래버튼을눌러 AT 커맨드수신모드로진입 동시에아두이노 -> 툴 -> 시리얼모니터실행
Bluetooth 장치이름변경 아래와같이 OK 가나오면성공
Bluetooth 장치의이름확인
장치연결 (PIN : 1234)
Bluetooth Serial 앱다운로드
Bluetooth 데이터송신테스트
Bluetooth Packet 분석
Bluetooth Packet Sniffing
Bluetooth Packet Sniffing
평상시의 Bluetooth 패킷들 자신을알리는 (Advertising) 다수의기기들
주변장치 Scanning
자신의정보를보내는부분
Bluetooth Paring
Bluetooth Paring
Bluetooth Profile
Bluetooth Profile 이란? 통신데이터의종류를나타내는규격 오디오데이터, 전화통화데이터, 전화번호부등 서로다른제조사의제품들에대한호환성확보를위함 장치가연결되었을때어떻게동작할지를결정 특정프로파일에데이터를실어보낼수있음 블루투스통신주체들이해당프로파일에대한정보를가지고있고, 해석할수있어야함
주요 Bluetooth Profiles SPP (Serial Port Profile) 시리얼통신프로파일 (RX, TX) HID (Human Interface Device) 사용자입력장치프로파일 ( 키보드, 마우스등 ) Hands-Free Profile (HFP) / Headset Profile (HSP) 전화통화를하기위한프로파일 A2DP (Advanced Audio Distribution Profile) 오디오전송프로파일 (SBC, MPEG-1, MPEG-2, AAC 등지원 ) AVRCP (Audio/Video Remote Control Profile) 장치무선제어 ( 리모컨 ) 프로파일 PBAP (Phone Book Access Profile) 전화번호부전송프로파일 OPP (Object Push Profile) / OBEX (Object Exchange) / FTP 기기간 Data Object 및파일전송프로파일 PAN (Personal Area Networking Profile) 인터넷연결에사용되는프로파일
Profile 이표현된 Stack 구조
Bluetooth Profile Scanning
차량장비의 Profiles A2DP AVRCP HFP SPP
A2DP AVRCP FTP HFP HSP MAP OPP PBAP PAN 스마트폰의 Profiles
Bluetooth Packet 변조예시 - 카오디오장비와 Bluetooth -
Bluetooth 등록
Bluetooth 관련기능들 연락처목록수신 최근통화목록수신 전화통화 문자확인 음악재생
Bluetooth Packet Sniffing 휴대폰과연결시의패킷들
수신 AT Command 목록 AT+CIND=? AT+CMER=3, 0, 0, 1 AT+CHLD=? AT+CLIP=1 AT+CCWA=1 AT+NREC=0 AT+VGS=15 AT+VGM=10 AT+CGMI=? AT+BSRF=39
수신 AT Command 목록 AT+CIND=? AT+CMER=3, 0, 0, 1 AT+CHLD=? AT+CLIP=1 AT+CCWA=1 AT+NREC=0 AT+VGS=15 AT+VGM=10 AT+CGMI=? AT+BSRF=39 응답으로 Evil Packet 전송시도가능
PhoneBook 요청 Packet x-bt/phonebook!telecom/pb.vcf
vcard( 연락처 ) 의 Format BEGIN:VCARD VERSION:2.1 FN;CHARSET=UTF-8: 홍길동 N;CHARSET=UTF-8: 홍길동 TEL;TYPE=CELL:01012341234 X-IRMC-CALL-DATETIME;TYPE=RECEIVED:20170710T151235 END:VCARD
최근통화목록요청 x-bt/phonebook!telecom/cch.vcf
음원 Meta-data 전송
음원 Meta-data 제목 아티스트 앨범 제작년도 작곡가 트랙 장르 설명 Mp3tag.exe
차량 Bluetooth 공격벡터들 AT 커맨드에대한응답 AT+CNUM, AT+CIND, AT+COPS 등 최근통화목록, 연락처 이름, 전화번호, 시간정보등 음원 Meta-data 곡명, 작곡가, 발매년도등 휴대폰이름
Bluetooth Packet 변조 스마트폰을이용한 Bluetooth Packet 변조 방법 1 : 스마트폰앱코드변조 - repackaging 작업에긴시간소요 방법 2 : 스마트폰앱함수 Hooking - 동적으로 Packet 변조가능
FRIDA 를이용한 BT Packet 변조
FRIDA 설치 Python 설치 https://www.python.org/ftp/python/2.7.13/pytho n-2.7.13.amd64.msi
FRIDA 의작동구조 frida (client) USB TCP/IP fridaserver
Frida-server 다운로드 https://github.com/frida/frida/releases http://grayhash.com/training/frida-server.zip
adb 설치및실행 google : adb download http://adbshell.com/downloads
Frida-server 실행 http://grayhash.com/training/frida-server.zip 휴대폰에업로드후 root 로실행 adb push frida-server /data/local/tmp C:\...\adb\ adb shell $ su # cd /data/local/tmp # chmod 777 frida-server #./frida-server
Frida 사용법
Hooking 구간파악 - com.android.bluetooth Reversing
AT 커맨드변조대상
최근통화목록변조대상
음원 meta-data 변조대상
휴대폰이름변조대상
최근통화목록변조예제 Java.perform(function(){ var cls = Java.use("com.android.bluetooth.pbap.BluetoothPbapCallLogComposer"); cls.createoneentry.implementation = function(arg){ pbcall = this.createoneentry.call(this, arg); console.log("createoneentry called"); }); pbcall = pbcall.replace(/112/gi, "HACKED!!"); return pbcall; }; [hook_test.js] Scripts\frida -U -l hook_test.js com.android.bluetooth -U : USB 디바이스연결 -l : 스크립트실행 com.android.bluetooth : 후킹대상프로세스
최근통화목록변조예시
Bluetooth Hacking 결론 최신장비들은블루투스통신을이용하여다양한정보들을주고받을수있음 스마트폰이장비로송신하는 Bluetooth Packet 을변조하여취약점유발가능 Bluetooth 는공격자에게굉장히좋은 Remote Attack Surface 가될수있음
Q/A
감사합니다.