2021/02/21

Lidiando con un scanner

Quiero usar un scanner Cannon Lide 300 que dice ser soportado por sane pero no es visto, prefiero no instalar nada o lo menos posible del fabricante.

No es tanto para evitar un troyanito, con mi conocimiento y el análisis que estoy haciendo, probablemente pasaría por debajo del radar, es sólo puro orgullo, hacer andar algo bajo mis reglas.

Voy a mostrar sin explicar mucho como se usa un poco de sane, lsusb, dpkg, file, ldd, apt, strace para comprender el proceso de instalación.

El objetivo, fallido, es no usar el programa de Cannon.


Lo primero que hice fue:

sane-find-scanner


could not open USB device 0x1d6b/0x0001 at 004:001: Access denied (insufficient permissions)
could not open USB device 0x046d/0xc534 at 003:002: Access denied (insufficient permissions)
could not open USB device 0x1d6b/0x0001 at 003:001: Access denied (insufficient permissions)
  # No USB scanners found. If you expected something different, make sure that...


Es razonable, veamos con sudo

sudo sane-find-scanner


found USB scanner (vendor=0x04a9 [Canon], product=0x1913 [LiDE 300]) at libusb:001:004
  # Your USB scanner was (probably) detected. It may or may not be supported by
  # SANE. Try scanimage -L and read the backend's manpage.



Hagámosle caso:

sudo scanimage -L

tras un ratito...

No scanners were identified.


Ya estoy seguro de dos cosas, quizás sane si, pero linux no sabe que hacer con el scanner o cómo hacerselo llegar, eso es udev.

Y además puede ser que haga falta un driver.

Sigamos dando vueltas por ahí, a ver que pasa en /dev

find /dev > antes.txt

conectar

find /dev > despues.txt

comparar

diff antes.txt  despues.txt

12a13
> /dev/vboxusb/001/004
120a122
> /dev/char/189:3
384a387
> /dev/bus/usb/001/004



Ok, vemos que probablemente virtualbox está disponibilizándolo para una virtual



lsusb
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 004: ID 04a9:1913 Canon, Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub


un poco más de detalle:

lsusb -v -s 001:004

trae información y por stderr dice

Couldn't open device, some information will be missing

ya habíamos tropezado con esa piedra:

sudo lsusb -v -s 001:004


Entre otra cosas dice:

iManufacturer           1 Canon
iProduct                2 LiDE 300
iSerial                 3 46D4C3

Sólo faltaría conseguir los drivers y apuesto que tiene que haber unas reglas de udev

Tras bajar el instalador y descomprimir el instalador, con

dpkg -x scangearmp2-3.70-1-deb/packages/scangearmp2_3.70-1_amd64.deb  .

podemos ver el interior y confirmar las sospechas:

./usr
./usr/lib
./usr/lib/libcncpnet2.so.1.2.4
./usr/lib/bjlib
./usr/lib/bjlib/canon_mfp2_net.ini
./usr/lib/bjlib/canon_mfp2.conf
./usr/lib/libcncpnet30.so.1.0.0
./usr/lib/libcncpnet20.so.1.0.0
./usr/lib/libcncpmslld2.so.3.0.0
./usr/bin
./usr/bin/scangearmp2
./usr/share
./usr/share/scangearmp2
./usr/share/scangearmp2/scangearmp2.glade
./usr/share/doc
./usr/share/doc/scangearmp2
./usr/share/doc/scangearmp2/LICENSE-scangearmp-3.70SC.txt
./usr/share/doc/scangearmp2/LICENSE-scangearmp-3.70EN.txt
./usr/share/doc/scangearmp2/changelog.Debian.gz
./usr/share/doc/scangearmp2/LICENSE-scangearmp-3.70FR.txt
./usr/share/doc/scangearmp2/LICENSE-scangearmp-3.70JP.txt
./usr/share/doc/scangearmp2/copyright
./usr/share/locale
./usr/share/locale/zh
./usr/share/locale/zh/LC_MESSAGES
./usr/share/locale/zh/LC_MESSAGES/scangearmp2.mo
./usr/share/locale/ja
./usr/share/locale/ja/LC_MESSAGES
./usr/share/locale/ja/LC_MESSAGES/scangearmp2.mo
./usr/share/locale/fr
./usr/share/locale/fr/LC_MESSAGES
./usr/share/locale/fr/LC_MESSAGES/scangearmp2.mo
./usr/share/locale/de
./usr/share/locale/de/LC_MESSAGES
./usr/share/locale/de/LC_MESSAGES/scangearmp2.mo
./etc
./etc/udev
./etc/udev/rules.d
./etc/udev/rules.d/80-canon_mfp2.rules


Tenemos varias coas interesantes:

en /usr/share/doc archivos de documentacion


en /usr/share/locale las traducciones disponible


en /usr/share/scangearmp2 pueden haber problemas, ese .glade si mal no recuerdo es la configuración de la interfaz gráfica de la aplicación, esto podría generar instalación de dependencias, veamos...

file /usr/bin/scangearmp2

scangearmp2: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 2.6.15, BuildID[sha1]=028fbac2701f687da994b21fb506a92aedb587c3, stripped



ese dinamically linked amerita un ldd:

ldd scangearmp2
    linux-vdso.so.1 =>  (0x00007ffdb31b3000)
    libgtk-x11-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 (0x00007f3071b38000)
    libgdk-x11-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0 (0x00007f3071883000)
    libatk-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0 (0x00007f307165e000)
    libgio-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007f30712d6000)
    libpangoft2-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007f30710c0000)
    libgdk_pixbuf-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 (0x00007f3070e9e000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f3070b95000)
    libpangocairo-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007f3070988000)
    libcairo.so.2 => /usr/lib/x86_64-linux-gnu/libcairo.so.2 (0x00007f3070674000)
    libpango-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007f3070428000)
    libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f307017e000)
    libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f306ff3b000)
    libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f306fce8000)
    libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007f306fae6000)
    libgmodule-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007f306f8e2000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f306f6da000)
    libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f306f3c9000)
    libusb-1.0.so.0 => /lib/x86_64-linux-gnu/libusb-1.0.so.0 (0x00007f306f1b1000)
    libcncpmslld2.so => not found
    libcncpnet2.so => not found
    libcncpnet20.so => not found
    libcncpnet30.so => not found

    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f306ef94000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f306ebca000)
    libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f306e890000)
    libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007f306e68a000)
    libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f306e480000)
    libXinerama.so.1 => /usr/lib/x86_64-linux-gnu/libXinerama.so.1 (0x00007f306e27d000)
    libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007f306e06d000)
    libXrandr.so.2 => /usr/lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007f306de62000)
    libXcursor.so.1 => /usr/lib/x86_64-linux-gnu/libXcursor.so.1 (0x00007f306dc58000)
    libXcomposite.so.1 => /usr/lib/x86_64-linux-gnu/libXcomposite.so.1 (0x00007f306da55000)
    libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007f306d852000)
    libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f306d640000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f306d426000)
    libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f306d204000)
    libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f306cfe9000)
    libharfbuzz.so.0 => /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007f306cd8b000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f3072183000)
    libpixman-1.so.0 => /usr/lib/x86_64-linux-gnu/libpixman-1.so.0 (0x00007f306cae3000)
    libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007f306c8be000)
    libxcb-shm.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007f306c6ba000)
    libxcb-render.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007f306c4b0000)
    libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f306c28e000)
    libthai.so.0 => /usr/lib/x86_64-linux-gnu/libthai.so.0 (0x00007f306c085000)
    libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f306be5c000)
    libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f306bc54000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f306ba50000)
    libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f306b7e0000)
    libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007f3072349000)
    libgraphite2.so.3 => /usr/lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007f306b5ba000)
    libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f306b3b6000)
    libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f306b1b0000)
    libdatrie.so.1 => /usr/lib/x86_64-linux-gnu/libdatrie.so.1 (0x00007f306afa8000)



estamos bien, sólo faltan:

        libcncpmslld2.so => not found
        libcncpnet2.so => not found
        libcncpnet20.so => not found
        libcncpnet30.so => not found



Preguntémosle al sistema instalador a ver que dice:

dpkg -I scangearmp2_3.70-1_amd64.deb

 
Package: scangearmp2
 Version: 3.70-1
 Architecture: amd64
 Maintainer: Canon Inc. <sup-debian@list.canon.co.jp>
 Installed-Size: 668
 Depends: libatk1.0-0 (>= 1.29.3), libc6 (>= 2.7), libcairo2 (>= 1.2.4), libfontconfig1 (>= 2.8.0), libfreetype6 (>= 2.2.1), libgcc1 (>= 1:4.1.1), libglib2.0-0 (>= 2.16.0), libgtk2.0-0 (>= 2.12.0), libpango1.0-0 (>= 1.14.0) | libpango-1.0-0, libstdc++6 (>= 4.1.1), libusb-1.0-0 (>= 2:1.0.6)
 Section: graphics
 Priority: optional
 Description: ScanGear MP for Linux.
  This ScanGear MP provides scanning functions for Canon Multifunction Inkjet Printer.


mmh, necesito saber que me va a pedir, si le pido instalar y no tiene dependencias sigue de largo sin preguntar, necesito algo tipo:

apt install --simulate scangearmp2-3.70-1-deb/packages/scangearmp2_3.70-1_amd64.deb

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'scangearmp2' instead of 'scangearmp2-3.70-1-deb/packages/scangearmp2_3.70-1_amd64.deb'
The following NEW packages will be installed:
  scangearmp2
0 upgraded, 1 newly installed, 0 to remove and 274 not upgraded.
Inst scangearmp2 (3.70-1 local-deb [amd64])
Conf scangearmp2 (3.70-1 local-deb [amd64])



Esto sugiere que los libcncp* quizás sean lo que provée el mismo instalador y si miramos lo que ya hicimos, se confirma:

./usr/lib/libcncpnet30.so.1.0.0
./usr/lib/libcncpnet20.so.1.0.0
./usr/lib/libcncpmslld2.so.3.0.0



que era una de las cosas interesantes, sólo nos queda una por ver, lo de udev, son como 70

ATTR{idVendor}=="04a9", ATTR{idProduct}=="1828", MODE="666"
ATTR{idVendor}=="04a9", ATTR{idProduct}=="183e", MODE="666"
ATTR{idVendor}=="04a9", ATTR{idProduct}=="1844", MODE="666"
ATTR{idVendor}=="04a9", ATTR{idProduct}=="1845", MODE="666"


y si no me equivoco lo único que hace es poner los permisos para no tener que ser sudo/root


Necesitaría ver si hay algún script en el .deb

dpkg -e  scangearmp2-3.70-1-deb/packages/scangearmp2_3.70-1_amd64.deb

genera una carpeta DEBIAN

conffiles  control  md5sums  postinst  postrm

en control está lo mismo que dijo con -I

en conffiles la ruta de udev

en postinst

#!/bin/sh

if [ -x /sbin/ldconfig ]; then
    /sbin/ldconfig
fi

#reload udev rules
if [ -x /sbin/udevadm ]; then
    /sbin/udevadm control --reload-rules 2> /dev/null
    /sbin/udevadm trigger --action=add --subsystem-match=usb 2> /dev/null
fi



Excelente, lo que le está diciendo al sistema es que tome los nuevos .so y avisarle a udev de las nuevas reglas


Ha llegado el momento de actuar, poner las reglas y avisar:

sudo chown root.root ./etc/udev/rules.d/80-canon_mfp2.rules
sudo cp  ./etc/udev/rules.d/80-canon_mfp2.rules /etc/udev/rules.d
sudo /sbin/udevadm control --reload-rules
sudo /sbin/udevadm trigger --action=add --subsystem-match=usb


Mirá mamá! sin sudo!

lsusb -v -s 001:004

Bus 001 Device 004: ID 04a9:1913 Canon, Inc.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x04a9 Canon, Inc.
  idProduct          0x1913
  bcdDevice            1.00
  iManufacturer           1 Canon
  iProduct                2 LiDE 300
  iSerial                 3 XXXXXX
  bNumConfigurations      1
  Configuration Descriptor:



Tenía la infundada esperanza de que de algún modo mágico sane ya lo viera con scanimage. Sería magia, pues con sudo ya debería haber funcionado, esto fueron sólo los permisos, quizás sea hora de leer la documentación de sane


Primero vamos a

http://www.sane-project.org/lists/sane-mfgs-cvs.html

control f, lide 300

que nos dice el backend que entiende este dispositivo:

http://www.sane-project.org/man/sane-pixma.5.html

¿Cómo hacerlo andar? Hace mucho tiempo hice andar un microteck II o III SP (SP significa Simple Pass, de cuando los scanner tenian que pasar tres veces, una vez por cada color) y me ahora me suena lo del backend, pero scanimage sólo entiende --device

scanimage --device /dev/bus/usb/001/004 -L


scanimage --device /dev/char/189:3 -L

Volviendo a la man page, dice como registrar los nombres, entiendo que

[/etc/sane.d/pixma.conf]
pixma:04A91913_46D4C3


pero nada, preguntémosle a strace a ver que archivos está leyenco scanimage

strace -eopen scanimage -L

open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/x86_64-linux-gnu/libsane.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
open("./dll.d", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
open("./dll.d/hplip", O_RDONLY)         = 4
open("./dll.conf", O_RDONLY)            = 3
open("./dll.aliases", O_RDONLY)         = -1 ENOENT (No such file or directory)
open("/etc/sane.d/dll.aliases", O_RDONLY) = -1 ENOENT (No such file or directory)



y despues un montón de /dev, precedidos de...


open("./sharp.conf", O_RDONLY)          = 27


está leyendo cada .conf de /etc/sane.d, incluyendo el amigo pixma.conf

y para cada backend:

open("/dev/bus/usb/001/004", O_RDWR)    = 96


Le pido ahora que sólo me cuente de la ruta de interés


strace  -P  /dev/bus/usb/001/004 scanimage  -L
open("/dev/bus/usb/001/004", O_RDWR)    = 9
ioctl(9, USBDEVFS_GET_CAPABILITIES, 0x558209e4f2c0) = 0
close(9)                                = 0
open("/dev/bus/usb/001/004", O_RDWR)    = 12
ioctl(12, USBDEVFS_GET_CAPABILITIES, 0x558209e4d330) = 0
close(12)                               = 0
open("/dev/bus/usb/001/004", O_RDWR)    = 15
ioctl(15, USBDEVFS_GET_CAPABILITIES, 0x558209e618f0) = 0
close(15)                               = 0



Para que no sea tanta info, comenté todos los backends en /etc/sane.d/dll.conf salvo pixma

Nada, ha llegado el momento de rendirme e instalar el software a ver si realmente anda...

dpkg -i scangearmp2-3.70-1-deb/packages/scangearmp2_3.70-1_amd64.deb

...como piña. Funciona excelente.

Si quisiera seguir, tendría que capturar el tráfico usb para ver qué está ocurriendo...

Puede ser que la máquina donde estoy instalando tenga una distro vieja. Uno de estos días, cuando haga la actualacion y tenga que reinstalar esto, veré si hay novedades.


Actualización 2021-10-18: con Linux Mint 20.2 que tiene simple-scan 3.36.3, no vale la pena usar el software de cannon pues es mejor. Pero me dí cuenta tras instalar scangear, no sé si simple-scan usa algo de lo instalado, no importa, no está de más tener los dos.





2021/02/16

Consejos para compartir información

Esta entrada es el resultado de emprolijar y extender lo conversado en Servidor MQTT en casa (en red privada)

 

Contexto


MQTT es un protocolo para el intercambio de mensaje en modo publisher/subscriber, esto es, que cada nodo se subscribe a un nombre de "topic" y publica o lee ahí, muy utilizado en IoT.

En una situación normal basta con que un nodo que tiene una dirección IP pública escuche en el puerto apropiado (1883 u 8883) pero a veces los proveedores de internet no dejan pasar el tráfico y además hay que lidiar con NATeos (cuando tras una IP se esconden muchas máquinas).

En la conversación se habla de cómo configurar el router de Fibertel y algunas ideas para diagnosticar y configurar la conexión.
 

En algún momento, uno se siente tentado de decir qué router tiene e incluso la IP, lo cual puede no ser buena idea y también mostrar capturas de pantallas con información de la red.
 

Esta información puede ser aprovechada por algún atacante, veamos los detalles:

 

IP

 

La IP es el punto de entrada para el atacante, el resto es información complementaria.
 
Aún sin tener la IP, el atacante puede mandar un mail a la persona o a todo el grupo con algo interesante que contenga un link a un sistema que tome nota de la IP de origen, que probablemente sea la de interés para el atacante. Bien puede ser en el caso de MQTT, "tengo este servidor si querés probar" o "fijate esta documentación".

 

Puertos abiertos  

 

En esta imagen se pueden ver los puertos abiertos y unas etiquetas que me sugieren la función de los equipos:

 
Port Forwarding
Port Forwarding

 

Direcciones MAC

 

MAC Addresses
MAC Addresses


 
En la otra, las direcciones MAC. ¿qué importa si son internas? Pues ocurre que la mitad izquierda es el identificador de la marca de la placa y hay bases de datos que incluso llegan a determinar qué equipo, por ejemplo si es una RPI, un router, un celular, la marca, si es placa wifi o ethernet, depende... y cuando no está en la base de datos podés suponer que es un VM.
 
Veamos... mmh, aburrido, pero algo es:
 
68:b5:99    Hewlett Packard
40:30:04    Apple
58:55:ca    Apple
00:23:6c    Apple
4c:0f:6e    Apple

 
Estoy seguro que había manera de obtener más información, pero no recuerdo dónde, lo anterior lo saqué de los dos primeros buscadores online, luego, escarbando un poco más y haciendo el proceso inverso a modo de ejemplo sin relación con las direcciones obtenidas:
 

 
00-10-5A-73-7F-81 corresponde a "Fast Etherlink XL in a Gateway 2000".
 
002000f0f85e es "Lexmark (Print Server)".
 
Las direcciones 02:42:xx:xx:xx:xx son de Docker.

 
Esto se combina con la información anterior para los puertos expuestos a internet.

 

Modelo Router

 

Podés decirlo explícitamente en un mensaje o como en la primera imagen estar en la misma captura. 

 
Fijate que alguien que se dedica quizás pueda determinar marcas e incluso modelos de dispositivos por otra información de la imagen, aunque hayas borrado de ésta lo evidente, por ejemplo por el diseño o por mensajes tipo "soporta 32 entradas".

 

Combinación

 

Combinando toda esta información, el atacante esta en mejores condiciones sin haberte tocado. Esto es que te gastaste un montón de plata en tu IDS (Intrusion Detection System: sistema que podría detectar una exploración de red equivalente y alertarte) y no te detectó nada. Si el atacante quiere explorarte desde afuera o ya logró meter apenas el piecito, su exploración va a ser mucho más específica y discreta, reduciendo las probabilidades de que le detectes.


Pero la pregunta es, ¿por qué y cómo podría alguien atacarme?

 

Cómo

 

Conociendo la IP y los dispositivos disponibles, puede haber que alguno tenga vulnerabilidades conocidas y quien ataca sólo tiene que buscar en internet un script que sirva.

 

Por qué

 

Yo lo haría para divertirme o practicar, al menos la parte de exploración, si no fuera por que a la gente no le gusta que le hagan estas cosas, igual podría hacerlo desde un nodo gratuito de aws/azure/googleXXX. Además se parece demasiado a trabajar y eso le quita la diversión

Otras personas podrían estar buscando armar una botnet o tener una curiosidad menos restringida que la mía.

O quizás trabajás en un lugar importante y sos sólo un medio para llegar hasta ahí. Considerá que últimamente (desde el covid) ha aumentado de modo infernal el trabajo desde el hogar, haciendo que hayamos pasado de un grupo con un cierto conocimiento técnico a una inmensa masa heterogénea de usuarios, todos conectados por VPNs a sus trabajos. Como atacante no me interesás, me interesa tu VPN y tengo que pasar por tu casa. Es como si vivieras en una casa con sótano al lado de un banco.

En la lista donde se originó esta conversación hay 5000 personas, con un 0.1% de malicia ya tenés 5 personas interesadas. Además, esta lista es pública, puede estar siendo monitorizada por una cantidad indefinida de personas.

En realidad, el mayor riesgo que corrés en el día a día con tu router conectado a internet (no hay más remedio, no? para qué querrías el router si no?) no viene por acá sino de los ataques automátizados, para los cuales tenés que hacer hardening, a continuación.
 
Tambien está la cuestión de disciplina e imagen, puede ocurrir que un potencial cliente o empleador exigente considere en sus decisiones tus acciones online.

 

Cómo lidiar con el error

 

  • Vía web eliminar el mensaje, luego reenviarlo correctamente. Igual hay a quienes les ha llegado por mail o ya lo han visto en la lista desde la página.
  • Cambiar los puertos.
  • Refrescar la IP si era dinámica.
  • Hardening de los equipos (esto hay que hacerlo de todos modos...)
    • Cambiar credenciales por defecto
    • Poner credenciales fuertes y/o usar certificados
    • Actualizar firmware
    • Poner un WAF o firewall configurado para lo que estés protegiendo
    • etc..
Cuando ves que fue otra persona la que publicó su información, consultale antes de avisar públicamente para darle oportunidad de protegerse. Aunque yo pido permiso, "la ley de la selva de la ciberseguridad" contempla que cuando otro mete la pata se le avisa pero si no responde, pasado un tiempo se hace público el asunto para el beneficio común. Y hay quienes por torpeza o porque no están de acuerdo con la Responsible Disclosure, te pueden prender fuego.

 

¿Cómo hago para compartir información en la lista de modo útil y menos inseguro?


Ok, ya tengo para este tipo de información un cierto criterio para elegir si exponerla o no, pero, no me dedico a la seguridad de la información, ¿cómo hago para no volver a meter la pata? Es una interminable cadena de "si" y relaciones tenues entre el riesgo que estés dispuesto a aceptar, el costo de ofuscar la información y los beneficios de exponerse.

La manera es ponerse en el lugar del otro y pensar si la información que se expone nos hace únicos, no es sencilla de obtener por otros medios, podría formar parte de una cadena de dependencias y para acceder a un recurso protegido.

Todo esto basado en que hay que saber lo más posible de tecnología y prestar atención a corregir cuando metas la pata.