Bluetooth Tutorial 2008.1.21 본문서는 Dr GrEeN 님의 Blutooth Tutorial 을기반으로작성된문서임을밝힙니다. rich4rd rich4rd.lim@gmail.com - 1 -
목차. 1. 소개및역사 1.1 블루투스란? 1.2 블루투스역사 2. 준비물 3. 기본명령어및실습준비 4. 공격에쓰이는툴들 5. RAW 모드로변환하기 6. 마무리 - 2 -
1. 소개및역사 1.1 블루투스란? 블루투스 (Bluetooth) 는 1994년에릭슨이최초로개발한개인근거리무선통신 (PANs) 을위한산업표준이다. 나중에블루투스 SIG에의해정식화되었고, 1999년 5월 20일공식적으로발표되었다. 블루투스 SIG에는소니에릭슨, IBM, 노키아, 도시바가참여하였다. IEEE 802.15.1 규격을사용하는블루투스는 PANs(Personal Area Networks) 의산업표준이다. 블루투스는다양한기기들이안전하고저렴한비용으로전세계적으로이용할수있는라디오주파수를이용해서로통신할수있게한다. 블루투스라는이름은 10세기의덴마크왕헤럴드블루투스에서유래했는데, 대립국면에있는파벌들과협상하는데있어서특히유명했다. 다시말해, 다른장치들끼리통신할수있게하는이기술에적합한이름이다. 블루투스는 ISM 대역인 2.45GHz를사용한다. 버전 1.1과 1.2의경우속도가초당 723.1 킬로비트에달하며, 버전 2.0의경우 EDR(Enhanced Data Rate) 을특징으로하는데, 이를통해초당 2.1 메가비트의속도를낼수있다. 블루투스는유선 USB를대체하는개념이며, 와이파이 (Wi-Fi) 는이더넷 (Ethernet) 을대체하는개념이다. 암호화에는 SAFER(Secure And Fast Encryption Routine)+ 을사용한다. 장치끼리믿음직한연결을성립하려면키워드를이용한페어링 (pairng) 이이루어지는데, 이과정이없는경우도있다. 1.2 블루투스의역사 블루투스 1.0과 1.0B 1.0과 1.0B는많은문제점을가졌고다양한제조사들이그들제품끼리상호호환성을가지게하는데에큰어려움을겪었다. 1.0과 1.0B는또한핸드셰이킹과정에서블루투스하드웨어장치주소 (BD_ADDR) 를반드시전송해야하므로프로토콜수준에서의익명표현 (rendering anonymity) 을할수없었는데, 이는블루투스환경에서제공되기로계획된소비확대정책 (Consumerium) 같은서비스를제공하는데에큰결점이었다. 블루투스는 2.4Ghz의주파수를사용하고무선랜 802.11b/g 또한 2.4ghz대의주파수를사용한다. 같은주파수를사용하니만큼동시사용에따른충돌은피할수없는데양제품의초기보급시에는그것에대한우려의목소리가높았다. 하지만블루투스의버전업과, 연결특성상큰문제는발생하지않았다. 블루투스는해당주파수대역에서비어있는채널을찾아데이터를전송하기때문에간섭이일어난다하더라도금세다른빈곳으로전송하게된다. 음성기기의사용시아주잠깐의딜레이가발생하지만체감하기어렵다. 하지만두기기의거리가 1cm 이하로접근할경우간섭이발생할가능성이있다. 무선랜과블루투스두기능을동시에가지고있는기기의경우에는두장비가하나의안테나를사용하게되는데, 서로번갈아가며데이터를전송하는사용하는방식을이용해, 애초부터그간섭을최대한줄이게끔되어있다. 블루투스 1.1-3 -
2002 년 802.15.1 IEEE 표준으로승인되었고, 1.0B 의많은문제점들을수정하였다. 이외에비암호화채널 (non-encrypted channels) 을지원하였고, Signal Strength Indicator (RSSI) 를수신받을수있게되었다. 블루투스 1.2 이버전은 1.1버전과호환이되며주요향상점은다음과같다 : 빠른접속과가까운거리에서의주파수간섭및, 먼거리에서의분산스펙트럼 (frequency-hopping spread spectrum) 에대비하였다. 실제전송속도는 1.1과같은 721kbit/s이다. 패킷의오류나재전송에따른음성이나음원신호의 quality손실을막는 Extended Synchronous Connections (esco) 를지원하게되었고, three-wire UART를위한 Host Controller Interface (HCI) 를지원하게되었다. 2005년 802.15.1 IEEE 표준으로승인되었다. 블루투스 2.0 2004년 10월에표준화가된이버전은 1.1과호환되게하였다. 주된향상점은 3.0Mbit/s의 Enhanced Data Rate (EDR) 를지원하게된점이다. 이로써다음의효과를가지게되었다 : 평균 3배, 최대 10배의전송속도향상 ( 실제전송속도 2.1Mbit/s) 과 Duty Cycle감소에의한저전력소비, 또한 multi-link scenarios의단순화로사용가능한대역폭이증가되었다. 이론상의전송속도는 3.0Mbit/s이고, 실제 data전송속도는 2.1Mbit/s이다. Special Interest Group (SIG) 에표준화가된 "Bluetooth 2.0 + EDR" 은많은업체들이사용하는 EDR과표준화되지않은 "Bluetooth 2.0" 를포함한다. 앞에명시된기술을보여주는 HTC TyTN pocket PC phone과다른 Bluetooth 2.0 without EDR의기술은추가적인문제점들을수정한버전 1.2와거의같다. 많은제품들이 Bluetooth 2.0을지원한다고명시하지만실제로 EDR을지원하는지는명확하게표기하지않아문제가되고있다. 블루투스 2.1 1.1버전과완벽하게호환이되는핵심표준화버전인 Bluetooth 2.1은 Bluetooth SIG 에의해 2007년 8월1일제정되었다. 이기술은다음의특징을가지고있다 : 확장된 inquiry 응답 : 접속하기전에좀더나은필터링을위해 inquiry procedure동안더많은정보를제공한다. 여기서정보라함은장치의이름, 장치가지원하는서비스목록, 날짜나시간, 공유정보와같은것들을포함한다. Sniff subrating 기술 : 저전력모드일경우, 특히 asymmetric data flows로연결되어있을경우전력소비를줄일수있다. Human interface devices (HID) 장치들이가장이익이될것으로예상되는데최소 3배에서최대 10배까지 battery의수명을증가시킬수있다. Encryption Pause Resume: 암호를재설정했을경우, 장치간에더욱강력한암호화로최소 23.3시간이상의연결을유지할수있다. 안전하고간편한공유 : 보안의강화와사용시간의증가로인해 Bluetooth장치간의공유기술이근본적으로향상되었다. 이것은앞으로의 Bluetooth 의사용에있어큰기여를할것으로기대된다. NFC cooperation: NFC radio interface이사용가능할경우, 자동적으로안전하게접속할수있게된다. 예를들어, 수센티미터이내로헤드셋을 NFC를포함한 Bluetooth 2.1 phone로가져가기만하여도접속할수있게되고또다른예로는, 휴대전화나디지털카메라로찍은사진을디지털액자에가깝게가져가는것만으로디지털사진을디지털액자로업로드할수있게된다. - 4 -
2. 준비물 (1) 블루투스동글 (Bluetooth dongle) 블루투스장비들과의통신이가능하고더나아가서스니핑까지가능하게할수있는 USB장비입니다. (2) 블루투스장비핸드폰, 해드셋, 컴퓨터등등많은예가있겠습니다. (3) Backtrack과같은 Bluetooth 실습이가능한환경 3. 기본명령어및실습준비 (1) hciconfig 을이용해서동글을등록합니다. (2) hciconfig -a 는자세한동글의기본정보를제공합니다. - 5 -
(3) hcitool 을이용해서근처의블루투스장비를검색합니다. 제가테스트에이용된장비의소유주임을말씀드립니다. (4) 해당블루투스장비에대한기본정보를획득합니다. (5) 블루투스설정 /etc/bluetooth/hcid.conf 파일을다음과같이수정합니다. # # HCI daemon configuration file. # # HCId options options { # Automatically initialize new devices autoinit yes; - 6 -
# Security Manager mode # none - Security manager disabled # auto - Use local PIN for incoming connections # user - Always ask user for a PIN # security auto; # Pairing mode # none - Pairing disabled # multi - Allow pairing with already paired devices # once - Pair once and deny successive attempts pairing multi; # Default PIN code for incoming connections passkey "1234"; } # Default settings for HCI devices device { # Local device name # %d - device id # %h - host name name "device1"; # Local device class class 0x000000; # Default packet type #pkt_type DH1,DM1,HV1; - 7 -
# Inquiry and Page scan iscan enable; pscan enable; # Default link mode # none - no specific policy # accept - always accept incoming connections # master - become master on incoming connections, # deny role switch on outgoing connections lm accept,master; # Default link policy # none - no specific policy # rswitch - allow role switch # hold - allow hold mode # sniff - allow sniff mode # park - allow park mode lp rswitch,hold,sniff,park; auth enable; encrypt enable; } (6) 블루투스를재시작합니다. (7) 해당블루투스장비에대한 rfcomm bind 를설정합니다. 이렇게 3 개의 bind 를생성하였습니다. (8) sdptool 을이용해서해당 channel 들을등록합니다. - 8 -
이제블루투스장비공격실습을위한준비를끝났습니다. :-) 4. 공격에쓰이는툴들 구글링을하시다보면요즘은블루투스해킹이많이알려진만큼생각보다많은툴들이존재함을알수있습니다. 그중에서몇가지툴을소개하겠습니다. 본문서에서는공격시연에대한내용은담지않았습니다. (1) Bluesnafer 블루투스장비의 OBEX Push profile을통해서장비에접속하게됩니다. 동영상을보시면아시겠지만저장된번호확인및삭제, 전화걸기또한일명블루재킹이가능합니다. 악의적인공격자는블루재킹을이용해서바이러스나트로잔같은악성프로그램을블루투스장비에게보낼수있습니다. 참조 : http://en.wikipedia.org/wiki/bluesnarfing (2) BlueBugger BlueBugger 또한 Bluesnafer와비슷하게접근합니다. - 9 -
(3) BlueStab 기법 주로노키아와파라소닉폰을대상으로많이실습됬던 BlueStab는서비스거부공격기법입니다. 5. RAW 모드로변환하기 Cambrige Silicon Radio 칩셋의 USB동글을 FTS4BT 스니핑동글로바꿔보겠습니다. bluz 유틸리티로펌웨어를수정하게되는데다시기존모드로돌아올수없음을말씀드립니다. 기존펌웨어백업을위해서는 dfutool을이용합니다. (1) USB 동글의칩셋확인하기 USB동글칩셋에는 BlueCore-4 Rom과 BlueCorer-4 External이있습니다. 칩셋이어느것이던 RAW 모드로바꾸는데는상관없습니다. :-) (2) 동글을등록하고 USB 동글의특정값를수정합니다. - 10 -
어떤동글을쓰느냐에따라다를수있지만동글에는 byte를읽기위한몇부분들이있습니다. 일반적으로 "Default" (0x0000), "param" (0x0008), "psi" (0x0001), "psf" (0x0002) 그리고 "psrom" (0x0004) 입니다. (3) 이번엔 Vender ID 를수정합니다. (4) 이젠 "psf" (0x0002) 를수정해야합니다. 새로운 ID 를만든후확인합니다. (5) 계속적인 hciconfig 명령어를통해서스니핑이가능한 RAW 모드임을확인할수있습니다. (TX 와 RX 가계속적으로증가함을확인합니다.) - 11 -
6. 마무리 블루투스는현재도많이취약한것으로알고있습니다. 물론블루투스가대중화되서편하게통화할수있는핸드폰이라든지우리삶을좀더윤택하게만들어주고있습니다. 하지만앞으로다소어려울수는있겠으나꼭빠른개발만이아닌보안까지신경써서새로운제품혹은기술이탄생하기를바랍니다. 해킹시연에대해서는부족한문서이지만조금이나마도움이되시기를바랍니다. 읽어주셔서감사합니다. - 12 -