Jaques Rousseau dijo: “El hombre es bueno por naturaleza, es la sociedad la que lo corrompe“. Los usuarios que, disfrutando de permisos de administrador (enmascarados por el UAC), se ausenta de su puesto de trabajo sin bloquear el sistema, son buena parte de esa “sociedad”. Tientan a que algunas personas buenas se vayan al lado oscuro de la fuerza. En esta entrada mostramos una sencilla receta que combina Rubber Ducky, Raspberry Pi y algunos scripts, para crear un ataque eficaz, rápido y potencialmente indetectable en sistemas Windows. Veamos cómo.
- Enchufar y esperar. No es necesario teclear.
- Fileless: Sin tocar disco, las probabilidades de ser detectado por las soluciones habituales de seguridad (antivirus), se minimizan.
El flujo es sencillo, levantaremos un servicio SSH y uno web en la Raspberry, con un móvil podremos acceder al sistema para encender o apagar el servicio web a voluntad. Dentro de la Raspberry, tendremosun script powershell con mimikatz para ejecutarlo en las máquinas objetivo y un usb Rubber Ducky para hacer la llamada al script desde las máquinas desbloqueadas y, en este caso, obtener su contraseña de inicio de sesión.
Lo primero de todo es configurar la Raspberry. Como sistema operativo se ha elegido el oficial, Raspian, pero se puede optar por cualquiera, según las preferencias de cada uno. Para abrir una conexión desde el móvil u otro terminal hacia la Raspberry se utiliza un servicio SSH. Por defecto, desde el 2016 viene desactivado, con lo que se deberá activar con los siguientes pasos:
- Abrir un terminal y escribir “sudo raspi-config”
- Seleccionar “Opciones Avanzadas”
- Navegar hasta SSH y habilitarlo
Activando SSH en Raspberry |
Teniendo el servicio SSH activo se aconseja usar unas cuantas medidas de seguridad básicas para prevenir ataques. Obviamente, para acceder desde redes externas a la Raspberry se debe abrir el puerto correspondiente al servicio en el router y se podría usar un servicio como no-ip.org para no tener que aprender la IP pública en caso de que esta sea dinámica y/o cambie periódicamente.
Además del servicio SSH procede a habilitar un servidor web, en esta caso se ha elegido lighttpd por ser un servicio ligero y rápido. Se instala abriendo en la Raspberry un terminal mediante el comando sudo apt-get install lighttpd. Si se quiere parar o iniciar el servicio basta con introducir el comando sudo service lighttpd start/stop.
Dentro de la Raspberry en la ruta /var/www/html se añade el script de powershell para la ejecución de mimikatz, obtenido desde aquí (por cierto, aunque ponga que sólo es efectivo hasta Windows 8.1 funciona en W10); y se añadirá un fichero PHP con el siguiente código:
Vamos a “armar” nuestro USB. Necesitamos un fichero .bin que se ejecute en cuanto se conecte. Es tan simple como crear un fichero de texto en el que se añadirá una serie de comandos para nuestro payloaddesde esta página y se convertirá al archivo necesario con el servicio que proporciona la página https://ducktoolkit.com/encoder/.
Los principales comandos que se van a utilizar son abrir un terminal con permisos de administrador:
- GUI r
- STRING powershell Start-Process cmd -Verb runAs
- ENTER
- SHIFT TAB
- ENTER
Llamar y ejecutar el script powershell de mimikatz (alojado en nuestra Raspberry) y volcar las credenciales:
Con las configuraciones previas y tras obtener una vil oportunidad para actuar, procedemos a levantar el servicio lighttpd y conectar el Rubber Ducky en la máquina objetivo. Con esto, el proceso se realizará de forma automática y, muy importante:
- Enchufar y esperar, todo en menos de un minuto.
- El payload no tocará disco.
Las credenciales, junto con la IP de la máquina objetivo, acabarán en la Raspberry. Objetivo cumplido.
Resultados del ataque |
Las posibilidades con este tipo de herramientas son múltiples y permiten una gran variedad de diversos ataques, desde la prueba realizada en la que se roban las contraseñas, hasta instalar malware, establecer backdoors, etc. Existen múltipes ejemplos ya creados con payloads para que el ataque resulte incluso más sencillo. También es posible trabajar en la velocidad de ejecución y optimizar todo el proceso en varios aspectos.
Como es natural, se soluciona con una mínima exposición de privilegios (evitar el uso de UAC y utilizar cuentas de no administrador) y bloqueando el sistema en todo momento cuando se encuentre desatendido, además de vigilar quién enchufa nada en los puertos USB.