|
31
|
Comunicaciones / Hacking Mobile / Re: Nueva especificación/estándar para Bluetooth
|
en: 7 Agosto 2007, 03:05 am
|
Gracias Brujo.
Ya había leído lo de la nueva especificación de Bluetooth y sobretodo destacan el "emparejamiento simple" con el espectacular sistema NFC.
Sobre seguridad, sí que había leído también que introducían mejoras en este aspecto. Si eso sólo lo que comentas, no es demasiado. Antes de la versión 2.1 ya era muy complicado sniffar tramas Bluetooth, ahora será imposible.
Lo que no tengo claro que hayan solucionado es el ataque Blue MAC Spoofing. Si no quieren romper la compatibilidad de los dispositivos 2.1 con versiones anteriores, la autenticación seguirá basándose en BD_ADDR + clave de enlace. Si consigues spoofear la BD_ADDR, lo cual es trivial, y robar la clave de enlace, boom! acceso al dispositivo.
Investigaré algo más sobre las mejoras de seguridad, a ver si han introducido algo más...
Saludos
|
|
|
35
|
Comunicaciones / Hacking Mobile / Re: bluezspammer... los celulares no reciben los archivos >.<
|
en: 27 Julio 2007, 14:43 pm
|
A ver...
Una cosa es que pruebes a enviarlo con ObexFTP y otra con BlueZSpammer, yo te digo que llames a ObexFTP con la misma llamada que BlueZSpammer.
Si lo envías con ObexFTP tal que así "obexftp -b MAC -p archivo", te encontrará el canal asociado al perfil de Transferencia de Archivos (OBEX FTP) y te lo enviará por ahi. Ahora bien, BlueZSpammer llama a ObexFTP con la opción -B, para especificar el canal por el que fuerzas a ObexFTP a enviar el archivo. Ese canal, lo descubre BlueZSpammer a través de una función que busca cual es el canal asociado al perfil de Carga de Objetos (OBEX PUSH) en el dispositivo destino.
Prueba a buscar el canal del perfil de Carga de Objetos con "sdptool browse MAC" y fuerza la llamada a ObexFTP con el parámetro -B, a ver si así te sigue funcionando. Que te funcione eso y no te funcione BlueZSpammer no tiene sentido.
Saludos
|
|
|
36
|
Comunicaciones / Hacking Mobile / Re: bluezspammer... los celulares no reciben los archivos >.<
|
en: 26 Julio 2007, 09:20 am
|
¿Operation already in progress?
No me ha pasado nunca! No estarías haciendo alguna otra operación Bluetooth al mismo tiempo? Escanear, etc.
Busca la llamada a obexftp en el código, pégala en la shell, sustituye las variables por la MAC y el archivo a enviar y envía. Si eso funciona, debería funcionar también BlueZSpammer.
Saludos
|
|
|
38
|
Comunicaciones / Hacking Mobile / Re: BlueZScanner, BlueZSpammer y otros códigos BlueZ
|
en: 25 Julio 2007, 14:37 pm
|
Programa 2 - Escanear y detectar dispositivos Bluetooth cercanos#include <stdio.h> #include <stdlib.h> #include <bluetooth/bluetooth.h> #include <bluetooth/hci.h> #include <bluetooth/hci_lib.h> int main () { inquiry_info *ii = NULL; //Almacena la lista de dispositivos detectados durante el inquiry int max_rsp, num_rsp; //Numero de respuestas/dispositivos detectados int dev_id; //Identificador del adaptador Bluetooth local int socket; //Socket HCI; int len, i; char MAC_dev[20]; //Direccion MAC del dispositivo detectado char nombre_dev[248]; //Nombre del dispositivo detectado printf("+ BlueScanner por Gospel [elblogdegospel.blogspot.com]\n"); printf("+ src: people.csail.mit.edu/albert/bluez-intro/c401.html\n\n"); //Obtenemos el identificador del adaptador local Bluetooth dev_id = hci_get_route(NULL); if (dev_id < 0) { printf("[!] Error. Dispositivo Bluetooth local no disponible.\n"); } //Abrimos un socket local HCI socket = hci_open_dev(dev_id); if (socket < 0) { printf("[!] Error. Fallo al intentar abrir socket HCI.\n"); } //Inicializamos algunas variables len = 8; //El tiempo de inquiry por dispositivo es de 1.28x8=10.24 secs/dispositivo max_rsp = 255; //Se pueden detectar a lo sumo 255 dispositivos //Creamos la lista de dispositivos detectados con hci_inquiry ii = (inquiry_info *)malloc(max_rsp * sizeof(inquiry_info )); printf("Detectando dispositivos...\n\n"); //hci_inquiry lleva a cabo un descubrimiento de dispositivos Bluetooth y devuelve una lista de //dispositivos detectados en inquiry_info ii para ser almacenados. //La bandera IREQ_CACHE_FLUSH permite que la caché sea limpiada antes de buscar nuevos dispositivos. //En otro caso, podrian aparecer dispositivos anteriormente detectados pero ahora fuera de rango. num_rsp = hci_inquiry(dev_id, len, max_rsp, NULL, &ii, IREQ_CACHE_FLUSH); if(num_rsp < 0) printf("[!] Error. Fallo al intentar hci_inquiry.\n"); //Para cada una de las respuestas obtenidas durante el inquiry obtenemos el nombre del dispositivo for(i=0;i<num_rsp;i++) { ba2str(&(ii+i)->bdaddr, MAC_dev); memset(nombre_dev , 0, sizeof(nombre_dev )); if(hci_read_remote_name(socket, &(ii+i)->bdaddr, sizeof(nombre_dev), nombre_dev, 0) < 0) strcpy(nombre_dev , "[Desconocido]"); printf("Dispositivo (%d) encontrado:\n\tMAC: %s\n\tNombre: %s\n\n", i +1, MAC_dev , nombre_dev ); } close(socket); return(0); }
|
|
|
39
|
Comunicaciones / Hacking Mobile / Re: BlueZScanner, BlueZSpammer y otros códigos BlueZ
|
en: 25 Julio 2007, 14:36 pm
|
Programa 1 - Resolver el nombre de un dispostivo Bluetooth a partir de su dirección MAC.#include <stdio.h> #include <stdlib.h> #include <bluetooth/bluetooth.h> #include <bluetooth/hci.h> #include <bluetooth/hci_lib.h> int main (int argc, char **argv) { bdaddr_t bdaddr; //Estructura bdaddr_t para almacenar la direccion MAC char MAC_dev[20]; //Direccion MAC del dispositivo char nombre_dev[248]; //Nombre del dispositivo int id_dev; //Identificador del adaptador Bluetooth local int socket; //Socket HCI if(argc < 2) { printf("Sintaxis: %s <direccion MAC>\n",argv [0]); } printf("+ BlueResolver por Gospel [elblogdegospel.blogspot.com]\n\n"); printf("Detectando nombre del dispositivo <%s>...\n",MAC_dev ); //Convertimos la dirección MAC al formato de estructura bdaddr_t baswap(&bdaddr, strtoba(MAC_dev)); //Obtenemos el identificador del adaptador local Bluetooth id_dev = hci_get_route(&bdaddr); if (id_dev < 0) { printf("[!] Error. Dispositivo Bluetooth local no disponible.\n"); } //Abrimos un socket local HCI socket = hci_open_dev(id_dev); if (socket < 0) { printf("[!] Error. Fallo al intentar abrir socket HCI.\n"); } //Obtenemos el nombre de la dirección MAC remota int timeout = 10000; if (hci_read_remote_name(socket,&bdaddr,sizeof(nombre_dev), nombre_dev, timeout) == 0) { printf("Dispositivo encontrado:\n\tMAC: %s\n\tNombre: %s\n",MAC_dev ,nombre_dev ); } else { printf("[!] Error. No se ha podido resolver el nombre del dispositivo.\n"); printf("Dispositivo encontrado:\n\tMAC: %s\n\tNombre: [Desconocido]\n",MAC_dev ); } close(socket); return(0); }
|
|
|
|
|
|
|