Sabes cómo detectar cámaras ocultas o spycam en una habitación

Publicado por: Manuel Abreu Ortiz - social@manuelabreuo.com

Miles de usuarios lo ignoran, pero al emplear la cámara de su laptop o cualquier otra cámara con conexión WiFi, su dirección MAC se volverá visible para cualquiera en Internet. Afirman, los expertos en seguridad en redes del Instituto Internacional de Seguridad Cibernética (IICS) mencionan que es posible detectar múltiples datos de un usuario incluso si su cámara no está directamente conectada a la red.

Si la cámara utiliza una red cableada, los métodos descritos a continuación no pueden detectar dicho dispositivo. Por otra parte, los dispositivos WiFi y sus direcciones MAC se pueden recopilar usando airodump-ng, para dispositivos en la red a la que estamos conectados, las direcciones MAC se pueden obtener usando Nmap, aunque necesitamos una base de datos de fabricantes de cámaras ocultas y cámaras en general.

Bases de datos con direcciones MAC

Muchas veces no podremos encontrar dichas bases de datos, aunque podremos recurrir a las listas creadas por entusiastas, mencionan los expertos en seguridad en redes. Otra herramienta útil es el sitio web https://directory.ifsecglobal.com/video-surveillance-code004812.html, que cuenta con múltiples listas que contienen esta clase de información.

El nombre correcto del fabricante puede coincidir fácilmente con la base de datos MAC, por lo que solo necesitamos recopilar los nombres de los proveedores; esto es perfecto para nuestro objetivo de encontrar cámaras ocultas.

Cree un archivo vendors.sh:

1gedit vendors.sh

Copie el siguiente código en el archivo:

!/bin/bash

if [[ “$1” && -f “$1” ]]; then
FILE=”$1″
else
echo ‘Укажите .csv файл, который вы хотите проанализировать.’;
echo ‘Пример запуска:’;
echo -e “\tbash findcameras.sh /tmp/test-01.csv”;
exit
fi

echo -e “\033[1mВсего точек доступа: \033[0;31mgrep -E '([A-Za-z0-9._: @\(\)\\=\[\{\}\"%;-]+,){14}' $FILE | wc -l\e[0m”
echo -e “\033[1mВсего клиентов: \033[0;31mgrep -E '([A-Za-z0-9._: @\(\)\\=\[\{\}\"%;-]+,){5} ([A-Z0-9:]{17})|(not associated)' $FILE | wc -l\e[0m”
echo -e “\033[1mИз них клиентов без ассоциации: \033[0;31mgrep -E '(not associated)' $FILE | wc -l\e[0m”

echo -e “\033[0;36m\033[1mИнформация о сетях:\e[0m”

while read -r line ; do

if [ "`echo "$line" | cut -d ',' -f 14`" != " " ]; then
    echo -e "\033[1m" `echo -e "$line" | cut -d ',' -f 14` "\e[0m"
else
    echo -e " \e[3mне удалось получить имя сети\e[0m"
fi

fullMAC=`echo "$line" | cut -d ',' -f 1`
echo -e "\tMAC-адрес: $fullMAC"

MAC=`echo "$fullMAC" | sed 's/ //g' | sed 's/-//g' | sed 's/://g' | cut -c1-6`

result="$(grep -i -A 1 ^$MAC ./oui.txt)";

if [ "$result" ]; then
    echo -e "\tПроизводитель: `echo "$result" | cut -f 3`"
else
    echo -e "\tПроизводитель: \e[3mИнформация не найдена в базе данных.\e[0m"
fi

is5ghz=`echo "$line" | cut -d ',' -f 4 | grep -i -E '36|40|44|48|52|56|60|64|100|104|108|112|116|120|124|128|132|136|140'`

if [ "$is5ghz" ]; then
    echo -e "\t\033[0;31mРаботает на 5 ГГц!\e[0m"
fi

printonce="\tИнформация о подключённых клиентах:"

while read -r line2 ; do

    clientsMAC=`echo $line2 | grep -E "$fullMAC"`
    if [ "$clientsMAC" ]; then

        if [ "$printonce" ]; then
            echo -e $printonce
            printonce=''
        fi

        echo -e "\t\t\033[0;32m" `echo $clientsMAC | cut -d ',' -f 1` "\e[0m"
        MAC2=`echo "$clientsMAC" | sed 's/ //g' | sed 's/-//g' | sed 's/://g' | cut -c1-6`

        result2="$(grep -i -A 1 ^$MAC2 ./oui.txt)";

        if [ "$result2" ]; then
            echo -e "\t\t\tПроизводитель: `echo "$result2" | cut -f 3`"
            ismobile=`echo $result2 | grep -i -E 'Olivetti|Sony|Mobile|Apple|Samsung|HUAWEI|Motorola|TCT|LG|Ragentek|Lenovo|Shenzhen|Intel|Xiaomi|zte|MEIZU'`
            warning=`echo $result2 | grep -i -E 'ALFA|Intel'`
            if [ "$ismobile" ]; then
                echo -e "\t\t\t\033[0;33mВероятно, это мобильное устройство\e[0m"
            fi

            if [ "$warning" ]; then
                echo -e "\t\t\t\033[0;31;5;7mУстройство может поддерживать режим монитора\e[0m"
            fi


            resultshort="$(grep -i ^$MAC2 ./oui.txt)";          
            vendor=`echo "$resultshort" | cut -f 3`
            if [ "$vendor" ]; then
                result3=${vendor%,*}
                iscamera=''
                iscamera=`cat vendors.txt | grep -i "$result3"`
                if [ "$iscamera" ]; then
                    echo -e "\t\t\t\033[7mВероятно, это камера или другое устройство слежения\e[0m"
                fi
            fi             


        else
            echo -e "\t\t\tПроизводитель: \e[3mИнформация не найдена в базе данных.\e[0m"
        fi

        probed=`echo $line2 | cut -d ',' -f 7`

        if [ "`echo $probed | grep -E [A-Za-z0-9_\\-]+`" ]; then
            echo -e "\t\t\tИскал сети: $probed"
        fi         
    fi
done < <(grep -E '([A-Za-z0-9._: @\(\)\\=\[\{\}\"%;-]+,){5} ([A-Z0-9:]{17})|(not associated)' $FILE)

done < <(grep -E ‘([A-Za-z0-9._: @()\=[{}\”%;-]+,){14}’ $FILE)

echo -e “\033[0;36m\033[1mИнформация о неподключённых клиентах:\e[0m”

while read -r line2 ; do

clientsMAC=`echo $line2  | cut -d ',' -f 1`

echo -e "\033[0;31m" `echo $clientsMAC | cut -d ',' -f 1` "\e[0m"
MAC2=`echo "$clientsMAC" | sed 's/ //g' | sed 's/-//g' | sed 's/://g' | cut -c1-6`

result2="$(grep -i -A 1 ^$MAC2 ./oui.txt)";

if [ "$result2" ]; then
    echo -e "\tПроизводитель: `echo "$result2" | cut -f 3`"
    ismobile=`echo $result2 | grep -i -E 'Olivetti|Sony|Mobile|Apple|Samsung|HUAWEI|Motorola|TCT|LG|Ragentek|Lenovo|Shenzhen|Intel|Xiaomi|zte'`
    warning=`echo $result2 | grep -i -E 'ALFA|Intel'`
    if [ "$ismobile" ]; then
        echo -e "\t\033[0;33mВероятно, это мобильное устройство\e[0m"
    fi
    if [ "$warning" ]; then
        echo -e "\t\033[0;31;5;7mУстройство может поддерживать режим монитора\e[0m"
    fi


    resultshort="$(grep -i ^$MAC2 ./oui.txt)";          
    vendor=`echo "$resultshort" | cut -f 3`
    if [ "$vendor" ]; then
        result3=${vendor%,*}
        iscamera=''
        iscamera=`cat vendors.txt | grep -i "$result3"`
        if [ "$iscamera" ]; then
            echo -e "\t\t\t\033[7mВероятно, это камера или другое устройство слежения\e[0m"
        fi
    fi


else
    echo -e "\tПроизводитель: \e[3mИнформация не найдена в базе данных.\e[0m"
fi

probed=`echo $line2 | cut -d ',' -f 7`

if [ "`echo $probed | grep -E [A-Za-z0-9_\\-]+`" ]; then
    echo -e "\tИскал сети: $probed"
fi         

done < <(grep -E ‘(not associated)’ $FILE)

El código se ejecuta de la siguiente forma:

1bash ./vendors.sh

Esto creará un archivo vendors.txt.

Estadísticas:

12Total vendors in the list: 1665Unique vendors in the list: 680

En total, se encontraron 680 fabricantes únicos, mencionan los expertos en seguridad en redes. A continuación puede explorar la lista de vendors.txt y eliminar las entradas que crea innecesarias. Por ejemplo, noté que muchas entradas mencionan a “HUAWEI TECHNOLOGIES CO., LTD”, ya que esta empresa también fabrica teléfonos móviles.

Escáner de cámaras ocultas con WiFi por dirección MAC

Ahora que tenemos una base de datos de fabricantes de cámaras ocultas, necesitamos recopilar direcciones MAC a nuestro alcance. Usaremos un método que ha demostrado ser exitoso anteriormente. Los siguientes son los comandos para comenzar a recopilar información. Los expertos en seguridad en redes recomiendan consultar material adicional en caso de no entender plenamente la siguiente instrucción.

Para analizar el archivo .csv, airodump-ng necesita crearlo. Para ello, transferimos la tarjeta inalámbrica al modo monitor. Siempre comienzo con los siguientes dos comandos para que ningún proceso se interponga en el camino:

12sudo systemctl stop NetworkManagersudo airmon-ng check kill

Después de eso, pondremos la tarjeta WiFi en modo monitor:

123sudo ip link set wlan0 downsudo iw wlan0 set monitor controlsudo ip link set wlan0 up

Ahora ejecutamos airodump-ng con el siguiente comando:

1sudo airodump-ng --berlin 60000 -w /tmp/test wlan0

Si también está interesado en la banda de 5 GHz y si su tarjeta inalámbrica la admite, puede ejecutarla con el siguiente comando:

1sudo airodump-ng --channel 1-13,36-165 --berlin 60000 -w /tmp/test wlan0

En el ejemplo, se guarda en el archivo /home/mial/cameras-01.csv; se obtiene una respuesta de 1600 líneas allí, por lo que esto no será analizado manualmente.

12cat /home/mial/cameras-01.csv | wc -l1600

A continuación deberemos usar un script más ligero que simplemente verificará si hay una cámara de vigilancia alrededor. Y si es así, puede ejecutar un script más pesado para analizar a qué puntos de acceso están conectados.

Cree el archivo fc.sh:

1gedit fc.sh

Copie ahí el siguiente código:

#!/bin/bashif[[ "$1"&amp;&amp; -f"$1"]]; thenFILE="$1"elseecho 'Укажите .csv файл, который вы хотите проанализировать.';echo 'Пример запуска:';echo-e"\tbash fc.sh /tmp/test-01.csv";exit   fiwhileread-rline ; donewline="$(echo $line | grep -E '([A-Z0-9:]{17})')"if[ "$newline"]; thenMAC2=`echo "$newline"| sed 's/ //g'| sed 's/-//g'| sed 's/://g'| cut-c1-6`resultshort="$(grep -i ^$MAC2 ./oui.txt)";vendor=`echo "$resultshort"| cut -f3`#vendor=`echo "$resultshort" | awk -F '\t' '{print $3}'`if[ "$vendor"]; thenresult3=${vendor%,*}iscamera=''iscamera=`cat vendors.txt | grep-i"$result3"`if[ "$iscamera"]; thenechoecho $newlineecho $vendorecho-e"\t\t\t\033[7mВероятно, это камера или другое устройство слежения\e[0m"echofififidone < <(grep-E'([A-Za-z0-9._: @\(\)\\=\[\{\}\"%;-]+,){5} ([A-Z0-9:]{17})|(not associated)'$FILE| awk -F',''{print $1}')

El código se ejecuta como se muestra a continuación:

1bash ./fc.sh /ПУТЬ/ДО/ФАЙЛА.csv

Si el archivo que obtuvimos de airodump-ng se encuentra en /tmp/test-01.csv, entonces el comando es el siguiente:

1bash fc.sh /tmp/test-01.csv

También necesitamos un archivo con una base de datos de direcciones MAC y sus respectivos fabricantes; descárguelo en el mismo directorio donde colocó el archivo fc.sh. Debe descargar este archivo antes de ejecutar fc.sh y todos los demás scripts de este artículo:

1wget http://standards-oui.ieee.org/oui/oui.txt

Arreglamos el archivo descargado, ya que utiliza un salto de línea DOS / Windows. En nuestro caso, sin aplicar las correcciones necesarias el programa grep no pudo encontrar la línea, incluso si coincide con el patrón:

1dos2unix -i oui.txt

El script, utilizando una base de datos que asigna a los fabricantes a sus direcciones MAC asignadas (oui.txt), determinará el nombre del proveedor para cada dirección MAC recopilada y luego verificará si este proveedor está presente en la lista de fabricantes de cámaras de vigilancia, mencionan los expertos en seguridad en redes.

El script mostrará la dirección MAC y los nombres de los fabricantes de todas las posibles cámaras. Si el guión no mostraba nada, no se encontró nada.

Recuerde que algunos proveedores producen otros dispositivos además de las cámaras de seguridad, por lo tanto, es muy probable que se produzcan “falsas alarmas”. Si se encuentra algo, o incluso si el script muestra una docena de dispositivos, esto no significa que todos sean cámaras WiFi ocultas. En primer lugar, preste atención al fabricante, puesto que a menudo se trata de fabricantes de smartphones.

Aún así, si encuentra algo interesante los expertos en seguridad en redes le recomiendan usar un script que muestre a qué puntos de acceso están conectados todos los dispositivos.

Cree el archivo findcameras.sh:

1gedit findcameras.sh

Copie el siguiente código en él:

#!/bin/bashif[[ "$1"&amp;&amp; -f"$1"]]; thenFILE="$1"elseecho 'Укажите .csv файл, который вы хотите проанализировать.';echo 'Пример запуска:';echo-e"\tbash findcameras.sh /tmp/test-01.csv";exit   fiecho-e"\033[1mВсего точек доступа: \033[0;31m`grep -E '([A-Za-z0-9._: @\(\)\\=\[\{\}\"%;-]+,){14}' $FILE| wc-l`\e[0m"echo -e "\033[1mВсего клиентов: \033[0;31m`grep-E'([A-Za-z0-9._: @\(\)\\=\[\{\}\"%;-]+,){5} ([A-Z0-9:]{17})|(not associated)'$FILE| wc-l`\e[0m"echo-e"\033[1mИз них клиентов без ассоциации: \033[0;31m`grep -E '(not associated)' $FILE | wc -l`\e[0m"echo-e"\033[0;36m\033[1mИнформация о сетях:\e[0m"whileread-rline ; doif[ "`echo "$line" | cut -d ',' -f 14`" != "" ]; thenecho -e "\033[1m" `echo -e "$line" | cut -d ',' -f 14` "\e[0m"elseecho -e "\e[3mне удалось получить имя сети\e[0m"fifullMAC=`echo "$line" | cut -d ',' -f 1`echo -e "\tMAC-адрес: $fullMAC"MAC=`echo "$fullMAC" | sed 's/ //g' | sed 's/-//g' | sed 's/://g' | cut -c1-6`result="$(grep-i-A1 ^$MAC./oui.txt)";if [ "$result" ]; thenecho -e "\tПроизводитель: `echo "$result"| cut -f3`"elseecho -e "\tПроизводитель: \e[3mИнформация не найдена в базе данных.\e[0m"fiis5ghz=`echo "$line" | cut -d ',' -f 4 | grep -i -E '36|40|44|48|52|56|60|64|100|104|108|112|116|120|124|128|132|136|140'`if [ "$is5ghz" ]; thenecho -e "\t\033[0;31mРаботает на 5 ГГц!\e[0m"fiprintonce="\tИнформация о подключённых клиентах:"while read -r line2 ; doclientsMAC=`echo $line2 | grep -E "$fullMAC"`if [ "$clientsMAC" ]; thenif [ "$printonce" ]; thenecho -e $printonceprintonce=''fiecho -e "\t\t\033[0;32m" `echo $clientsMAC | cut -d ',' -f 1` "\e[0m"MAC2=`echo "$clientsMAC" | sed 's/ //g' | sed 's/-//g' | sed 's/://g' | cut -c1-6`result2="$(grep-i-A1 ^$MAC2./oui.txt)";if [ "$result2" ]; thenecho -e "\t\t\tПроизводитель: `echo "$result2"| cut -f3`"ismobile=`echo $result2 | grep -i -E 'Olivetti|Sony|Mobile|Apple|Samsung|HUAWEI|Motorola|TCT|LG|Ragentek|Lenovo|Shenzhen|Intel|Xiaomi|zte|MEIZU'`warning=`echo $result2 | grep -i -E 'ALFA|Intel'`if [ "$ismobile" ]; thenecho -e "\t\t\t\033[0;33mВероятно, это мобильное устройство\e[0m"fiif [ "$warning" ]; thenecho -e "\t\t\t\033[0;31;5;7mУстройство может поддерживать режим монитора\e[0m"firesultshort="$(grep-i^$MAC2./oui.txt)";          vendor=`echo "$resultshort" | cut -f 3`if [ "$vendor" ]; thenresult3=${vendor%,*}iscamera=''iscamera=`cat vendors.txt | grep -i "$result3"`if [ "$iscamera" ]; thenecho -e "\t\t\t\033[7mВероятно, это камера или другое устройство слежения\e[0m"fifi             elseecho -e "\t\t\tПроизводитель: \e[3mИнформация не найдена в базе данных.\e[0m"fiprobed=`echo $line2 | cut -d ',' -f 7`if [ "`echo $probed| grep-E[A-Za-z0-9_\\-]+`" ]; thenecho -e "\t\t\tИскал сети: $probed"fi         fidone < <(grep -E '([A-Za-z0-9._: @\(\)\\=\[\{\}\"%;-]+,){5} ([A-Z0-9:]{17})|(not associated)' $FILE)done < <(grep-E'([A-Za-z0-9._: @\(\)\\=\[\{\}\"%;-]+,){14}'$FILE)echo-e"\033[0;36m\033[1mИнформация о неподключённых клиентах:\e[0m"while read -r line2 ; doclientsMAC=`echo $line2  | cut -d ',' -f 1`echo -e "\033[0;31m" `echo $clientsMAC | cut -d ',' -f 1` "\e[0m"MAC2=`echo "$clientsMAC" | sed 's/ //g' | sed 's/-//g' | sed 's/://g' | cut -c1-6`result2="$(grep-i-A1 ^$MAC2./oui.txt)";if [ "$result2" ]; thenecho -e "\tПроизводитель: `echo "$result2"| cut -f3`"ismobile=`echo $result2 | grep -i -E 'Olivetti|Sony|Mobile|Apple|Samsung|HUAWEI|Motorola|TCT|LG|Ragentek|Lenovo|Shenzhen|Intel|Xiaomi|zte'`warning=`echo $result2 | grep -i -E 'ALFA|Intel'`if [ "$ismobile" ]; thenecho -e "\t\033[0;33mВероятно, это мобильное устройство\e[0m"fiif [ "$warning" ]; thenecho -e "\t\033[0;31;5;7mУстройство может поддерживать режим монитора\e[0m"firesultshort="$(grep-i^$MAC2./oui.txt)";          vendor=`echo "$resultshort" | cut -f 3`if [ "$vendor" ]; thenresult3=${vendor%,*}iscamera=''iscamera=`cat vendors.txt | grep -i "$result3"`if [ "$iscamera" ]; thenecho -e "\t\t\t\033[7mВероятно, это камера или другое устройство слежения\e[0m"fifielseecho -e "\tПроизводитель: \e[3mИнформация не найдена в базе данных.\e[0m"fiprobed=`echo $line2 | cut -d ',' -f 7`if [ "`echo $probed| grep-E[A-Za-z0-9_\\-]+`" ]; thenecho -e "\tИскал сети: $probed"fi         done < <(grep-E'(not associated)'$FILE)

El código se ejecuta así:

1bash findcameras.sh /ПУТЬ/ДО/ФАЙЛА.csv

Por ejemplo:

1bash findcameras.sh /tmp/test-01.csv

Este script, como el anterior, requiere archivos oui.txt vendors.txt. Hand Held Products Inc fabrica tanto cámaras termográficas como varios lectores de códigos de barras, etc. Puede ser cualquiera de estos dispositivos, ya que se trata de un TD de una tienda.

Wistron Neweb Corporation fabrica una variedad de productos electrónicos, incluyendo una cámara IP muy popular.

En lugar de conectarse a través de una red WiFi, las cámaras pueden usar una red cableada; estas cámaras no se incluirán en la lista.

Buscar cámaras de vigilancia en la red local

Este método funciona solo en redes donde puede obtener las direcciones MAC de otros dispositivos, es decir, solo en redes locales. Escanear Internet es inútil. Entre las redes LAN a las que nos conectamos a menudo están los puntos de acceso WiFi públicos en aeropuertos, hoteles, restaurantes, transporte público, etc.

Cree el archivo fcl.sh:

1gedit fcl.sh

Copie el siguiente código en él:

#!/bin/bash if [[ "$1" ]]; thenNET="$1"elseecho 'Укажите подсеть для поиска камер наблюдения';echo 'Пример запуска:';echo -e "\tbash ./fcl.sh 192.168.0.0/24";exit   fifound=0while read -r line ; do newline=$line  if [ "$newline" ]; thenMAC2=`echo "$newline" | sed 's/ //g' | sed 's/-//g' | sed 's/://g' | cut -c1-6`resultshort="$(grep -i ^$MAC2 ./oui.txt)";vendor=`echo "$resultshort" | cut -f 3` if [ "$vendor" ]; thenresult3=${vendor%,*}iscamera=''iscamera=`cat vendors.txt | grep  -i "$result3"`if [ "$iscamera" ]; thenechoecho $newlineecho $vendorecho -e "\t\t\t\033[7mВероятно, это камера или другое устройство слежения\e[0m"echofound=1fififi done < <(sudo nmap -n -sn -PR -PS -PA -PU -T5 $NET | grep -E -o '[A-Z0-9:]{17}') if [ $found -eq 1 ]; thensudo nmap -A $NETfi

Ejecute de este modo (recuerde que Nmap requiere privilegios de administrador):

1sudo bash fcl.sh СЕТЬ/МАСКА

Por ejemplo:

1sudo bash ./fcl.sh 192.168.0.0/24

Si se encuentran dispositivos con direcciones MAC de fabricantes de cámaras de vigilancia, se mostrarán continuación. En caso contrario, no se mostrará respuesta alguna.

Acorde a los especialistas en seguridad en redes, si se encuentra al menos una cámara, se lanzará otro escaneo de Nmap aún más agresivo, con salida completa de los resultados para que pueda ver la IP del dispositivo, además se tratará de determinar la versión del sistema operativo y los servicios.

Fragmento de salida de escaneo adicional:

12345|_http-title: NETSurveillance WEB554/tcp  open  rtsp    H264DVR rtspd 1.0|_rtsp-methods: OPTIONS, DESCRIBE, SETUP, TEARDOWN, GET_PARAMETER, SET_PARAMETER, PLAY, PAUSE8899/tcp open  soap    gSOAP 2.7|_http-server-header: gSOAP/2.7

El encabezado NETSurveillance WEB sugiere que se trata de una cámara de vigilancia en red. Los puertos abiertos 554 y 8899 pertenecen a los servicios RTSP y ONVIF específicos de las cámaras IP.

Conclusión

La calidad del escaneo está determinada principalmente por la calidad de la lista de fabricantes de cámaras de vigilancia; en otras palabras, se requieren más y mejores listas de direcciones MAC, lo que depende completamente de los entusiastas del hacking ético.

Tenga en cuenta que en el archivo vendors.sh se agregaron varios proveedores. Esta información fue obtenida de las siguientes formas:

  • Datos capturados en lugares donde las cámaras son visibles (tiendas, bancos, etc.)
  • Buscando en Google términos como “vendedor CCTV encontrado”, “cámara de vendedor encontrada”, etc.

Este material seguro resultará de gran utilidad para investigadores y especialistas en seguridad en redes. Para consultar más trabajos como este, visite las plataformas oficiales del Instituto Internacional de Seguridad Cibernética (IICS).

Vía | NoticiasSeguridad