Muchos 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. Además, 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 camera 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:
gedit vendors.sh
Copie el siguiente código en el archivo:
#!/bin/bash
TMP_FILE='/tmp/vendors.txt'
FILE='vendors.txt'
curl -s 'https://directory.ifsecglobal.com/screens-monitors-code004843.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' > $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/cameras-code004815.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/cctv-poles-and-columns-code004816.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/data-storage-solutions-code009685.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/voice-video-integrated-data-systems-code004908.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/dvr-code004822.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/voice-video-integrated-data-storage-code004941.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/nvr-code004827.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/4k-cameras-code009684.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/anpr-code004813.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/body-worn-cameras-code007865.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/hd-quality-cameras-code007866.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/low-light-level-camera-systems-code007867.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/camera-housings-code004814.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/internet-remote-surveillance-code004932.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/cctv-monitoring-code004999.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/dome-camera-code004821.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/ip-cameras-code004823.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/security-camera-lenses-code004824.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/security-monitors-code004825.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/security-screens-code007437.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/ptz-camera-code004828.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/switches-code004968.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/remote-surveillance-code004829.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/public-space-surveillance-code005012.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/infrared-cameras-code007439.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/thermal-imaging-code004833.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/ai-machinelearning-code009668.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/security-cameras-code007485.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/video-surveillance-code007482.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://directory.ifsecglobal.com/video-surveillance-code004812.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
#curl -s '' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=A' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=B' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=C' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=D' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=E' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=F' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=G' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=H' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=I' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=J' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=K' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=L' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=M' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=N' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=O' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=P' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=Q' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=R' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=S' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=T' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=U' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=V' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=W' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=X' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=Y' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=Z' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=2' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=3' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=4' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=5' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=7' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=8' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
curl -s 'https://www.ispyconnect.com/sources.aspx?letter=9' | grep -E -o 'man\.aspx\?n=[^"]{1,}"' | sed 's/man.aspx?n=//' | sed 's/"//' | while read -r line ; do
grep -E "$line " vendors.txt >> $TMP_FILE
done
echo 'Tenda Technology Co., Ltd.' >> $TMP_FILE #https://www.google.com/search?q=Tenda+Technology+CCTV&tbm=isch
echo 'LG Innotek' >> $TMP_FILE #https://www.google.com/search?q=LG+Innotek+CCTV&tbm=isch
echo 'Hand Held Products Inc' >> $TMP_FILE #Handheld Thermal Cameras
echo 'Wistron Neweb Corporation' >> $TMP_FILE #https://www.wnc.com.tw/index.php?action=pro_detail&id=76
echo 'HangZhou KuoHeng Technology Co.,ltd' >> $TMP_FILE #https://www.google.com/search?q=HangZhou+KuoHeng+Technology&tbm=isch
echo 'VCS Video Communication Systems AG' >> $TMP_FILE
echo 'D-Link International' >> $TMP_FILE
echo 'Cisco-Linksys, LLC' >> $TMP_FILE
echo 'ICP Internet Communication Payment AG' >> $TMP_FILE
echo 'China Dragon Technology Limited' >> $TMP_FILE
echo 'SAMSUNG TECHWIN CO.,LTD' >> $TMP_FILE
echo 'Hanwha Techwin Security Vietnam' >> $TMP_FILE
echo 'Beward R&D Co., Ltd.' >> $TMP_FILE
echo 'Lorex Technology Inc.' >> $TMP_FILE
echo 'TP-LINK TECHNOLOGIES CO.,LTD.' >> $TMP_FILE
echo 'ABUS Security-Center GmbH & Co. KG' >> $TMP_FILE
echo 'ACM Systems' >> $TMP_FILE
echo 'Aztech Electronics Pte Ltd' >> $TMP_FILE
echo 'Axium Technologies, Inc.' >> $TMP_FILE
echo 'Ace Axis Limited' >> $TMP_FILE
#echo '' >> $TMP_FILE
echo "Total vendors in the list: "`cat $TMP_FILE | wc -l`
cat $TMP_FILE | sort| uniq > $FILE
echo "Unique vendors in the list: "`cat $FILE | wc -l`
El código se ejecuta de la siguiente forma:
bash ./vendors.sh
Esto creará un archivo vendors.txt.
Estadísticas:
Total vendors in the list: 1665
Unique 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:
sudo systemctl stop NetworkManager
sudo airmon-ng check kill
Después de eso, pondremos la tarjeta WiFi en modo monitor:
sudo ip link set wlan0 down
sudo iw wlan0 set monitor control
sudo ip link set wlan0 up
Ahora ejecutamos airodump-ng con el siguiente comando:
sudo 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:
sudo 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.
cat /home/mial/cameras-01.csv | wc -l
1600
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:
gedit fc.sh
Copie ahí el siguiente código:
#!/bin/bash
if [[ "$1" && -f "$1" ]]; then
FILE="$1"
else
echo 'Укажите .csv файл, который вы хотите проанализировать.';
echo 'Пример запуска:';
echo -e "\tbash fc.sh /tmp/test-01.csv";
exit
fi
while read -r line ; do
newline="$(echo $line | grep -E '([A-Z0-9:]{17})')"
if [ "$newline" ]; then
MAC2=`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`
#vendor=`echo "$resultshort" | awk -F '\t' '{print $3}'`
if [ "$vendor" ]; then
result3=${vendor%,*}
iscamera=''
iscamera=`cat vendors.txt | grep -i "$result3"`
if [ "$iscamera" ]; then
echo
echo $newline
echo $vendor
echo -e "\t\t\t\033[7mВероятно, это камера или другое устройство слежения\e[0m"
echo
fi
fi
fi
done < <(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:
bash ./fc.sh /ПУТЬ/ДО/ФАЙЛА.csv
Si el archivo que obtuvimos de airodump-ng se encuentra en /tmp/test-01.csv, entonces el comando es el siguiente:
bash 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:
wget 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:
dos2unix -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:
gedit findcameras.sh
Copie el siguiente código en él:
#!/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;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"
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 así:
bash findcameras.sh /ПУТЬ/ДО/ФАЙЛА.csv
Por ejemplo:
bash findcameras.sh /tmp/test-01.csv
Este script, como el anterior, requiere archivos oui.txt y 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:
gedit fcl.sh
Copie el siguiente código en él:
#!/bin/bash
if [[ "$1" ]]; then
NET="$1"
else
echo 'Укажите подсеть для поиска камер наблюдения';
echo 'Пример запуска:';
echo -e "\tbash ./fcl.sh 192.168.0.0/24";
exit
fi
found=0
while read -r line ; do
newline=$line
if [ "$newline" ]; then
MAC2=`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" ]; then
result3=${vendor%,*}
iscamera=''
iscamera=`cat vendors.txt | grep -i "$result3"`
if [ "$iscamera" ]; then
echo
echo $newline
echo $vendor
echo -e "\t\t\t\033[7mВероятно, это камера или другое устройство слежения\e[0m"
echo
found=1
fi
fi
fi
done < <(sudo nmap -n -sn -PR -PS -PA -PU -T5 $NET | grep -E -o '[A-Z0-9:]{17}')
if [ $found -eq 1 ]; then
sudo nmap -A $NET
fi
Ejecute de este modo (recuerde que Nmap requiere privilegios de administrador):
sudo bash fcl.sh СЕТЬ/МАСКА
Por ejemplo:
sudo 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:
|_http-title: NETSurveillance WEB
554/tcp open rtsp H264DVR rtspd 1.0
|_rtsp-methods: OPTIONS, DESCRIBE, SETUP, TEARDOWN, GET_PARAMETER, SET_PARAMETER, PLAY, PAUSE
8899/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).
Entusiasta de la seguridad cibernética. Especialista en seguridad de la información, actualmente trabajando como especialista en infraestructura de riesgos e investigador.
Experiencia en procesos de riesgo y control, soporte de auditoría de seguridad, diseño y soporte de COB (continuidad del negocio), gestión de grupos de trabajo y estándares de seguridad de la información.
Envía tips de noticias a info@noticiasseguridad.com o www.instagram.com/iicsorg/.
También puedes encontrarnos en Telegram www.t.me/noticiasciberseguridad