Extracción de credenciales cifradas de herramientas comunes PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Extracción de credenciales cifradas de herramientas comunes

La mayoría de los ciberataques confíe en las credenciales robadas, obtenidas engañando a los empleados y usuarios finales para que las compartan, o recolectando las credenciales de dominio almacenadas en caché en las estaciones de trabajo y otros sistemas en la red. Estas credenciales robadas brindan a los atacantes la capacidad de moverse lateralmente dentro del entorno a medida que pasan de una máquina a otra, tanto en las instalaciones como en la nube, hasta que alcanzan los activos críticos para el negocio.

En Incumplimiento de Uber en septiembre, los atacantes encontró las credenciales en un script específico de PowerShell. Pero hay muchas formas menos llamativas, pero igual de dañinas, en las que los atacantes pueden encontrar credenciales que les permitirían acceder al entorno. Estos incluyen credenciales locales comunes, usuarios locales con contraseñas similares y credenciales almacenadas en archivos en recursos compartidos de red.

En nuestra investigación, nos enfrentamos a la pregunta de qué tipo de información se puede extraer de una máquina comprometida, sin explotar ninguna vulnerabilidad, para moverse lateralmente o extraer información confidencial. Todas las herramientas que usamos aquí están disponibles en nuestro GitHub repositorio.

Las organizaciones confían en varias herramientas para autenticarse en servidores y bases de datos mediante los protocolos SSH, FTP, Telnet o RDP, y muchas de estas herramientas guardan las credenciales para acelerar la autenticación. Analizamos tres de estas herramientas (WinSCP, Robomongo y MobaXterm) para mostrar cómo un atacante podría extraer credenciales que no son de texto claro.

WinSCP: credenciales ofuscadas

Cuando un controlador de dominio no está disponible, un usuario puede acceder a los recursos del sistema utilizando las credenciales almacenadas en caché que se guardaron localmente después de un inicio de sesión de dominio exitoso. Debido a que el usuario estaba autorizado previamente, el usuario puede iniciar sesión en la máquina utilizando la cuenta de dominio a través de las credenciales almacenadas en caché, incluso si el controlador de dominio que autenticó al usuario en el pasado no está disponible.

WinSCP ofrece la opción de guardar los detalles de las credenciales utilizadas para conectarse a máquinas remotas a través de SSH. Si bien las credenciales están ofuscadas cuando se guardan en el registro de Windows (ComputerHKEY_CURRENT_USERSOFTWAREMartin PrikrylWinSCP 2Sessions), no están encriptadas en absoluto. Cualquiera que conozca el algoritmo utilizado para ofuscar puede obtener acceso a las credenciales.

Dado que el código fuente de WinSCP está disponible en GitHub, pudimos encontrar el algoritmo de ofuscación. Utilizamos una herramienta que implementó el mismo algoritmo para desobstruir las credenciales y obtuvimos acceso a las credenciales en texto no cifrado.

La implementación de un algoritmo de ofuscación para proteger las credenciales almacenadas no es una buena práctica, ya que puede revertirse fácilmente y provocar el robo de credenciales.

Robomongo: No es una clave secreta

Robomongo (ahora Robo 3T) es un cliente de MongoDB que se utiliza para conectarse a los servidores de bases de datos de Mongo. Cuando guarda sus credenciales, se cifran y guardan en un robo3t.json archivo JSON. La clave secreta utilizada para cifrar las credenciales también se guarda localmente, en texto no cifrado, en un robo3t.key archivo.

Eso significa que un atacante que obtiene acceso a una máquina puede usar la clave guardada en texto sin cifrar para descifrar las credenciales.

Observamos el código fuente de Robomongo en GitHub para comprender cómo se usa la clave para cifrar la contraseña y aprendimos que usa la biblioteca SimpleCrypt de Qt. Si bien Robomongo utiliza el cifrado para almacenar de forma segura las credenciales, el hecho de que la clave secreta se guarde en texto no cifrado no es una buena práctica. Los atacantes podrían leerlo potencialmente, porque cualquier usuario con acceso a la estación de trabajo puede descifrar las credenciales. Incluso si la información está codificada de una manera que los humanos no pueden leer, ciertas técnicas podrían determinar qué codificación se está utilizando y luego decodificar la información.

MobaXterm: Descifrando la Contraseña

MobaXterm es una poderosa herramienta para conectarse a máquinas remotas utilizando varios protocolos como SSH, Telnet, RDP, FTP, etc. A un usuario que quiera guardar sus credenciales dentro de MobaXterm se le pedirá que cree una contraseña maestra para proteger sus datos confidenciales. De forma predeterminada, MobaXterm solicita la contraseña maestra solo en una computadora nueva.

Eso significa que la contraseña maestra se guarda en algún lugar y MobaXterm la recuperará para acceder a las credenciales cifradas. Usamos Procmon de Sysinternals Suite para mapear todas las claves de registro y los archivos a los que accede MobaXterm, y encontramos la contraseña maestra guardada en el registro de Windows (ComputerHKEY_CURRENT_USERSOFTWAREMobatekMobaXtermM). Las credenciales y contraseñas se guardan en las claves de registro C y P, respectivamente.

Inicialmente, no pudimos descifrar la contraseña maestra, que se cifró mediante DPAPI. Eventualmente descubrimos que los primeros 20 bytes DPAPI, que siempre son los mismos cuando se usa DPAPI, se habían eliminado. Cuando agregamos los primeros 20 bytes, pudimos descifrar el cifrado DPAPI para obtener el hash SHA512 de la contraseña maestra. Este hash se utiliza para cifrar y descifrar credenciales.

Aquí, la clave de cifrado utilizada para almacenar de forma segura las credenciales se guarda mediante DPAPI. Eso significa que solo el usuario que guardó las credenciales puede acceder a ellas. Sin embargo, un usuario con acceso de administrador o un atacante que obtenga acceso a la sesión de la víctima también puede descifrar las credenciales almacenadas en la máquina.

Conozca los riesgos

Los desarrolladores, DevOps y TI usan varias herramientas para conectarse a máquinas remotas y administrar estos detalles de acceso. Los proveedores deben almacenar esta información confidencial de la manera más segura. Sin embargo, el cifrado siempre está del lado del cliente y un atacante puede replicar el comportamiento de la herramienta para descifrar las credenciales.

Como siempre, no existe una solución mágica que pueda resolver todos los problemas que hemos discutido aquí. Sin embargo, las organizaciones podrían comenzar examinando los servicios que están usando ahora. Pueden construir una matriz de riesgo precisa y estar mejor preparados para las violaciones de datos al tener una comprensión más sólida de los tipos de datos confidenciales y credenciales que están almacenando.

Sello de tiempo:

Mas de Lectura oscura