Desde hace ya algún tiempo se han popularizado los ataques con dispositivos de simulación HID (Dispositivos de Interfaz Humana). Se han ofrecido diferentes soluciones para llevar a cabo este tipo de ataques, pero siempre hay sitio para buscar más innovación en el concepto, diversidad, comodidad, facilidad de utilización y sobre todo por intentar hacer más accesible el precio. SMOLPION es un dispositivo que se une a la filosofía Plug & Play para simular un teclado - al estilo de los famosos Rubber Ducky o de Arducky, el proyecto de construir un Rubber Ducky con Arduino que hizo el equipo de ElevenPaths - que al ser conectado en el equipo de la víctima, comenzará a escribir automáticamente y a una velocidad sobrehumana para realizar ataques sobre la máquina a la que se conecta.
Figura 1: SMOLPION: Rompiendo tu seguridad en 2 clics y 3 segundos.
Con solo esos segundos se puede ejecutar código arbitrario de todo tipo, desde exploits y payloads, pasando por la instalación de RATs, hasta la ejecución de scripts o cmdlets en Powershell para controlar el equipo remoto, obtener credenciales guardadas en el equipo, realizar ataques de ransomware, extraer archivos confidenciales y un largo etcétera en solo cuestión de segundos. Además, es importante mencionar que las medidas de seguridad tradicionales como antivirus o firewalls resultan inútiles ante este tipo de ataque, ya que bloquear un teclado iría en contra de la filosofía Plug & Play del sistema operativo.
Para poder hacer esos ataques, SMOLPION viene con un framework que permite la creación de ataques automáticos con vectores totalmente configurables por el atacante, tal y como pueden observarse en la imagen de la Figura 3.
Figura 3: Utilizando SMOLPION desde un Kali Linux para ver los vectores de ataque
Existen en el mercado diferentes tipos de soluciones para llevar a cabo ataques HID y en la siguiente lista veis algunas diferencias con respecto a SMOLPION:
- Concepto físico: SMOLPION está disponible como una pulsera de cuero, un anillo de titanio con cuerda de acero inoxidable y un pendrive tradicional. Además, el framework en Python también puede ser utilizado con Arduino Leonardo, Esplora o cualquier otro que porte el mismo microcontrolador, tal y como se hacía en Arducky.
Figura 4: Pulsera SMOLPION
- Utilización de DuckyScript: Es posible utilizar DuckyScript para escribir tus propias secuencias de tecleo acorde a tus necesidades, además de tener a disposición la App Ducky2Smolpion para tu smartphone y la versión de aplicación web.
Figura 5: App Ducky2Smolpion en Android
- Diseño hardware: Se ha construido SMOLPION como una solución de Arduino con interfaz USB que no necesita ni cables, ni tarjeta de almacenamiento MicroSD, lo que ahorra en costes, cables u adaptadores para poder configurarlo y utilizarlo. Esto hace, además, que su coste sea mucho menor.
- Ataques variados y rápidos: SMOLPION viene con un interfaz fácil de utilizar por cualquiera, y con ataques optimizados en los diferentes vectores, lo que permite hacer ataques complejos en pocos segundos. En este ejemplo, un ataque con Mimikatz en solo dos segundos. Este es un ejemplo perfecto para demostrar en un Ethical Hacking la importancia de educar a los usuarios de una empresa en el cierre de sesión de su computadora cuando abandonen su puesto de trabajo.
Figura 6: Ataque de SMOLPION con Mimikatz
- Fácil de utilizar: A través del framework de SMOLPION que está escrito en Python, es extremadamente sencillo llevar a cabo ataques complejos totalmente automáticos, sin la necesidad de tener conocimientos sobre programación.
- Multiplataforma: El framework de Smolpion puede ser utilizado desde cualquier sistema operativo, al estar escrito en Python y generar scripts para una interfaz USB, por lo que se puede utilizar Windows, macOS, Android o Kali Linux como se ve en las demos, y también se pueden atacar cualquiera de ellos siempre que implementen HID y el payload esté creado para ellos.
- Portabilidad: Debido a lo anterior, es posible utilizar el framework de SMOLPION sobre Python en tu Smartphone, cargar tus payloads y llevar a cabo la traducción de código. Todo esto sin la necesidad de utilizar una computadora, ni tampoco conexión a internet.
A final de cuentas cuando alguien conecta SMOLPION a una computadora, es como si la víctima le hubiera dado el teclado al atacante para que éste ejecute lo que le venga en gana, y si se automatiza, la cantidad de cosas que se pueden hacer son infinitas. Vamos a ver un ejemplo útil en un Ethical Hacking a una empresa, la toma de control de una máquina en un descuido para tomar café.
2 Clics + 3 Segundos = METERPRETER.
Para esta PoC utilizaremos el vector número 1 de la herramienta SMOLPION que será el encargado de darnos una consola de Meterpreter en un tiempo récord de 3 segundos. Desde nuestro Kali Linux damos ejecución al script con "./smolpion.py" (previos permisos otorgados con chmod). Se abrirá el menú principal del script en donde se podrán observar la variedad de vectores de ataque que se veían en la Figura 3.
Para esta demostración en cuestión, elegimos la opción número 1) Obtener reverse shell con Meterpreter. Donde a continuación se nos pedirá la URL en donde se encuentra alojado el archivo TXT con el que se realizará una inyección alfanumérica del payload a través de Powershell.
Figura 7: Petición previa a la opción número 1
Para generar el fichero del ataque alfanumérico utilizaremos la herramienta SEToolkit, elegimos la opción 1) Social-Engineering Attacks, después 9) Powershell Attack Vectors, más tarde elegiremos 1) Powershell Alphanumeric Shellcode Injector. Y finalmente ingresaremos la dirección IP o el servidor DNS (NO-IP si se desea sacar el ataque fuera de la red local) y el puerto.
Figura 8: Construyendo el payload en PowerShell con SEToolkit
A continuación, se nos pregunta si queremos iniciar el listener de Metasploit para quedar a la espera de la sesión entrante de Meterpreter de la víctima, a lo que debemos responder con un yes.
Figura 9: Ruta del fichero TXT generado y copiado al Escritorio
Después de este proceso se generará un archivo con formato TXT en la ruta /root/.set/reports/powershell con el nombre de x86_powershell_injection.txt el cual, en este caso, renombraré como shell.txt y lo subiré a un servidor remoto. Para efectos de esta prueba correré el demonio de Apache y mandaré a llamarlo desde una ruta local, pero si la finalidad del pentester es realizar el ataque fuera de la red local para atacar un equipo remoto, puede darle salida a internet a su servidor Apache, subirlo a un hosting, a Dropbox o a algún otro servicio similar.
Habiendo realizado todo este proceso, se procede a escribir la ruta exacta del archivo shell.txt en la configuración del payload de SMOLPION.
Figura 10: Configurando la ruta del fichero shell.txt en la configuración de SMOLPION
Una vez terminada la configuración, SMOLPION nos generará el código que debemos compilar con solo un par de clics más en el IDE de Arduino.
Figura 11: Código compilado y subido al Arduino exitosamente
Una vez realizado esto, SMOLPION estará listo para atacar y darnos la tan deseada sesión de Meterpreter con los privilegios más altos de administración en solo 3 segundos. Al introducir SMOLPION en un puerto USB de la víctima, el dispositivo automáticamente presionará la combinación de teclas WINDOWS+R (que abrirá una ventana de Ejecutar) y realizará la ejecución del comando: "powershell start-process cmd -verb runas" , lo cual ordenará ejecutar una ventana de CMD con privilegios de administración a través de PowerShell.
Figura 12: SMOLPION pidiendo una CMD con privilegios
En este caso, inmediatamente saltará la protección UAC de Windows 10, pero Smolpion lo salta con extrema facilidad ordenando presionar las teclas "izquierda" (para situarse en el "sí") y después ENTER. Como veis, no es necesario utilizar ataques de Bypass de UAC como los que se pueden hacer con uac-a-mola, ya que es como si SMOLPION fuera el administrador de la máquina sentado al teclado y aceptando él mismo la elevación de privilegios.
Figura 13: Aceptando la elevación de privilegios en UAC
Automáticamente se abrirá una ventana de CMD con privilegios de administración y a través de Powershell se ordenará descargar nuestro archivo Shell.txt y ejecutarlo sin que toque el disco.
Figura 14: Descarga y ejecución de Shell.txt
Y finalmente tenemos nuestra sesión de Meterpreter, con la cual obtenemos información del sistema y escalamos a los privilegios más altos de NT AUTHORITY\SYSTEM con un simple getsystem. Y ahora sí, el atacante puede hacer con la máquina víctima lo que le plazca para continuar con el Ethical Hacking en la empresa, utilizando esta máquina "abandonada" unos segundos, como punto de pivoting.
Figura 15: Escalando privilegios a SYSTEM desde Meterpreter
Y de esta manera tan sencilla cualquiera podría tomar control de tu equipo en solo 3 segundos de descuido. Y si, también puedes ver en tiempo real esta prueba de concepto aquí: