Por vicisitudes de la vida me ha tocado enredar con el almacén de credenciales (Windows Credential Manager) en Microsoft Windows 7 - funciona igual en Windows 8, Windows 10 o Window Server 2012 -, todo gracias a ese preciado producto de Microsoft que es Outlook y su integración con Active Directory. Para lo que quiero hacer, Powershell es algo así como la herramienta definitiva ya que igual te vale para administrar los sistemas eficientemente como para hacer Pentesting con PowerShell en una red Windows. En el artículo de hoy, el uso de PowerShell podría decirse que su uso es para ambos fines, y que dependerá de cada uno el uso que se le quiera dar.
Para simplificar aún más las cosas voy a hacer uso del script Credman.ps1 del bello JimmyJoeBob Alooba que permite gestionar el almacén de credenciales de máquinas Windows, y que en este caso vamos a utilizar con la cuenta del propio usuario de la máquina - sin ser administrador del equipo -.
Acceso a datos de Windows Credential Manager
El funcionamiento es sencillo. Tras descargarlo, hay que firmar el script digitalmente, ya que tenemos aplicada la política AllSigned como forma de fortificación de ejecución de software en nuestros equipos Windows. En un primer intento, tras ejecutarlo y lista mis credenciales, sin sacar una contraseña alguna por el momento.
Hay que comentar que en el almacén de credenciales de Microsoft no solo se guarda información permanente - lo que marcamos como "recordar contraseña" -, sino que también aparece información volátil y de sesión. Y aquí es donde entra en juego Microsoft Lync 2013.
Las credenciales de MS Lync (Skype for Business)
Supongo que si digo que actualmente se llama "Skype for Business" queda todo explicado sobre la idea de la herramienta. Una de las mejores posibilidades es la de integrarse en Active Directory e integrarse con líneas de telefonía dentro de la estrategia de Comunicaciones Unificadas que muchas empresas aplican. Además, se enlaza con Microsoft Outlook para obtener contactos, almacenar conversaciones, etcétera.
Una vez que se ha instalado en el equipo Microsoft Lync 2013 y se ha iniciado sesión, el comportamiento del script cambia. Si volvemos a lanzar exactamente el mismo script podemos ver que salen mis contraseñas de Microsoft Lync 2013 en texto claro.
Si alguien es capaz de acceder durante unos instantes a mi sesión de escritorio y lanzar el script, en PowerShell podría robar mis credenciales para conectarse al correo electrónico, recursos de red, tal vez VPNs, etcétera. También podría hacer llamadas telefónicas a través de otra instancia de Microsoft Lync utilizando mi identidad y cargar todas las llamadas a mi cuenta.
Las credenciales de la cuenta de Microsoft Lync quedan ahí mientras que la sesión está abierta e incluso pasado un buen rato después de que se cierre la sesión se sigue mostrando Solo se borra automáticamente si se vuelve a abrir Microsoft Lync con otra cuenta o si reiniciamos la sesión. La explicación de por qué están las credenciales ahí se debe a la integración del servicio con todos los servicios. En algún momento necesitará autenticarse en otros servicios y por eso recuerda la contraseña en la sesión, aunque tal vez debería guardarla cifrada en el Windows Credential Manager.
Una última prueba que queda por hacer es ver si la GUI del administrador de credenciales también muestra la contraseña o no.
Como se puede ver, parece que no. El interfaz gráfico sí que tiene alguna protección para no mostrar esa información sensible. Ni siquiera se muestra el campo con herramientas como WinSpy. Este funcionamiento es similar a cómo se guarda la cuenta de la sesión de Windows cuando se autentica en un equipo con un usuario de Windows Live.
La ventaja de este sistema tan sencillo de usar el script para listar las identidades frente a usar una herramienta más agresiva como Mimikatz o los volcados de memoria - para el caso de Microsoft Lync o cualquier otro sistema que almacene credenciales temporalmente sin cifrar - es que no es bloqueado por el sistema antimalware del sistema ni necesitamos privilegios de administrador para acceder a los datos. Al fin y al cabo no es más que utilizar herramientas del propio sistema como PowerShell con los permisos de usuario.
Autor: Jdeisusi
Figura 1: Obtener la contraseña de Lync con PowerShell |
Para simplificar aún más las cosas voy a hacer uso del script Credman.ps1 del bello JimmyJoeBob Alooba que permite gestionar el almacén de credenciales de máquinas Windows, y que en este caso vamos a utilizar con la cuenta del propio usuario de la máquina - sin ser administrador del equipo -.
Acceso a datos de Windows Credential Manager
El funcionamiento es sencillo. Tras descargarlo, hay que firmar el script digitalmente, ya que tenemos aplicada la política AllSigned como forma de fortificación de ejecución de software en nuestros equipos Windows. En un primer intento, tras ejecutarlo y lista mis credenciales, sin sacar una contraseña alguna por el momento.
Figura 2: Listando credenciales almacenadas en Windows Credential Manager de Windows |
Hay que comentar que en el almacén de credenciales de Microsoft no solo se guarda información permanente - lo que marcamos como "recordar contraseña" -, sino que también aparece información volátil y de sesión. Y aquí es donde entra en juego Microsoft Lync 2013.
Las credenciales de MS Lync (Skype for Business)
Una vez que se ha instalado en el equipo Microsoft Lync 2013 y se ha iniciado sesión, el comportamiento del script cambia. Si volvemos a lanzar exactamente el mismo script podemos ver que salen mis contraseñas de Microsoft Lync 2013 en texto claro.
Figura 3: Con Microsoft Lync con una sesión activa se muestran las credenciales |
Si alguien es capaz de acceder durante unos instantes a mi sesión de escritorio y lanzar el script, en PowerShell podría robar mis credenciales para conectarse al correo electrónico, recursos de red, tal vez VPNs, etcétera. También podría hacer llamadas telefónicas a través de otra instancia de Microsoft Lync utilizando mi identidad y cargar todas las llamadas a mi cuenta.
Las credenciales de la cuenta de Microsoft Lync quedan ahí mientras que la sesión está abierta e incluso pasado un buen rato después de que se cierre la sesión se sigue mostrando Solo se borra automáticamente si se vuelve a abrir Microsoft Lync con otra cuenta o si reiniciamos la sesión. La explicación de por qué están las credenciales ahí se debe a la integración del servicio con todos los servicios. En algún momento necesitará autenticarse en otros servicios y por eso recuerda la contraseña en la sesión, aunque tal vez debería guardarla cifrada en el Windows Credential Manager.
Figura 4: En Windows Credential Manager se muestra que la cuenta tiene la contraseña guardada, pero no se ve. |
Una última prueba que queda por hacer es ver si la GUI del administrador de credenciales también muestra la contraseña o no.
Figura 5: Edición de datos de la credencial |
Como se puede ver, parece que no. El interfaz gráfico sí que tiene alguna protección para no mostrar esa información sensible. Ni siquiera se muestra el campo con herramientas como WinSpy. Este funcionamiento es similar a cómo se guarda la cuenta de la sesión de Windows cuando se autentica en un equipo con un usuario de Windows Live.
Figura 6: Windows Credential Manager en Windows 8 con almacenamiento de datos de Windows Live |
La ventaja de este sistema tan sencillo de usar el script para listar las identidades frente a usar una herramienta más agresiva como Mimikatz o los volcados de memoria - para el caso de Microsoft Lync o cualquier otro sistema que almacene credenciales temporalmente sin cifrar - es que no es bloqueado por el sistema antimalware del sistema ni necesitamos privilegios de administrador para acceder a los datos. Al fin y al cabo no es más que utilizar herramientas del propio sistema como PowerShell con los permisos de usuario.
Autor: Jdeisusi
No hay comentarios:
Publicar un comentario