secuencias de comandos de PowerShell se utilizan a menudo como una herramienta para realizar tareas administrativas de forma masiva. Si está ejecutando una secuencia de comandos de forma interactiva, entonces la secuencia de comandos simplemente puede operar bajo su contexto de seguridad. De manera similar, la secuencia de comandos simplemente puede solicitarle un conjunto de credenciales.
Sin embargo, algunos scripts de PowerShell están diseñados específicamente para ejecutarse en un moda automatizada sin intervención administrativa. Estos guiones suelen recibir la permisos requeridos por extrayendo credenciales de un archivo encriptado. La pregunta es: ¿puedes descifrar este tipo de archivo de contraseña, revelando la contraseña administrativa en texto claro?
En este artículo, le mostraré cómo podría funcionar dicho descifrado. Empecemos por entender cómo crear un archivo de contraseña cifrada.
Creación de un archivo de contraseña cifrada
Si está autorizando un script de PowerShell que desea ejecutar en un modo desatendido, necesitará un archivo de contraseñas desde el cual la secuencia de comandos pueda recuperar un conjunto de credenciales administrativas. El truco, sin embargo, es que este archivo no existe por defecto. depende de ti crear el archivo. Afortunadamente, es relativamente fácil que hacer. Puedes usar lo siguiente Comandos para crear un archivo de contraseñas:
- $Password = Read-Host “Ingrese su contraseña” -AsSecureString | ConvertFrom-SecureString
- $Contraseña | Archivo de salida “C:\Data\Password.txt”
¿Mira qué simple es?
los primer comando crea una variable llamada $Contraseña. Esa línea también mostrará el mensaje “Ingrese su contraseña”. Lo que ingrese se escribe en la variable $Password.
Además, notará que estoy usando el -AsSecureString parámetro. Esto hace que su entrada se enmascare con asteriscos. Finalmente, estoy usando el Variable ConvertFrom-SecureString para forzar que la contraseña se almacene dentro de la variable en un formato utilizable.
Para mostrarle cómo se ve esto en la práctica, eche un vistazo a la captura de pantalla a continuación. Ingresé la primera línea de código y luego se me solicitó una contraseña. La contraseña que ingresé (que está enmascarada en la captura de pantalla) fue [email protected] Por el bien de la demostración, luego escribí $Password para mostrarle lo que contiene.
Para aclarar, la segunda línea de código listada arriba usa el cmdlet de archivo externo para tomar el contenido de la variable $Password (la contraseña cifrada) y escribirlo en un archivo de texto. En este caso, el archivo de texto es C:\Datos\Contraseña.txt. La captura de pantalla muestra cómo usé el cmdlet Obtener contenido para mostrar el contenido de este archivo. A su vez, puede ver que coincide con la variable $Password.
A continuación, pasaré a hablar de descifrando un archivo de contraseña usando PowerShell.
Descifrar un archivo de contraseña
Ahora que le mostré cómo crear un archivo de contraseña cifrada, veamos si podemos descifrarlo. Recuerde, la contraseña de texto claro es igual a [email protected] en este caso.
Lo primero que tiene que hacer es leer el archivo de contraseña en una variable usando el Obtener el contenido cmdlet. En este caso, solo estoy reutilizando el $Variable de contraseña por el bien de la claridad. Sin embargo, borré la variable.
los dominio utilizado para leer el archivo de contraseña en la variable es:
$Contraseña = Obtener contenido “C:\Data\Password.txt”
En la captura de pantalla anterior, realicé el paso adicional de mostrando el contenido de la variable como una forma de probar que la variable $Password sí contiene la contraseña cifrada.
Ahora es el momento de descifrar la contraseña. Aquí están los comandos solía hacerlo:
- $SSPassword= $Password | ConvertTo-SecureString
- $descifrado=[Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($SSPassword))
- $descifrado
El primer comando crea una nueva variable llamada $SSContraseña. Aquí, estoy convirtiendo el contenido de la variable $Password en una cadena segura y escribirlo en esta nueva variable.
El segundo comando es el que realiza la descifrado real. PowerShell no puede hacer el descifrado por sí mismo, así que estoy aprovechando .NET. A su vez, PowerShell ejecuta las instrucciones en la variable $SSPassword. Luego, los resultados se escriben en una nueva variable a la que llamo $descifrado. La última línea de código muestra el contenido de la variable $Decrypted, que es la contraseña de texto claro.
Y ahí lo tienes. Como puede ver, es relativamente fácil aprender a descifrar un archivo de contraseña usando PowerShell.
La línea de fondo
En breve, encriptación segura de cadenas no es tan seguro como parece. Esto se debe a que tienes una manera de descifrar la cadena, revelando la contraseña en texto claro. Esta falta de seguridad significa que es extremadamente importante para proteger los archivos de contraseña guardándolos en seguro ubicaciones donde es poco probable que el archivo se vea comprometido.
En cualquier caso, espero que este artículo te haya ayudado a enseñarte cómo descifrar un archivo de contraseña utilizando PowerShell. ¡Siéntete libre de volver a consultar este breve y simple artículo en el futuro si alguna vez necesitas un repaso rápido!
¿Tiene más preguntas sobre el uso de PowerShell para descifrar contraseñas? ¡Consulte las secciones de preguntas frecuentes y recursos a continuación!
Preguntas más frecuentes
¿De qué sirve usar credenciales cifradas si PowerShell puede descifrar contraseñas?
Si bien es posible usar PowerShell para descifrar contraseñas, debe cifrarlas de todos modos. Una contraseña de texto claro es mucho más vulnerable al compromiso que una contraseña cifrada.
¿Cómo puedo salvaguardar una contraseña almacenada si se puede descifrar?
La mejor opción es usar permisos para restringir el acceso a un archivo de contraseñas. Solo debe permitir que las personas con permisos ejecuten el script que usa la contraseña cifrada, y nadie más. ¡Tenga esto en cuenta y no le dé a nadie acceso no autorizado!
¿Hay algún motivo para preocuparse por restringir el acceso a un archivo de contraseña si no hay ninguna posibilidad de que alguien en mi organización sepa cómo usar PowerShell?
Incluso si sus colegas no saben cómo usar PowerShell, aún debe restringir el acceso a ese archivo. Si, por ejemplo, un pirata informático penetra en su red, desea que sea lo más difícil posible para ellos acceder a las credenciales. Del mismo modo, restringir el acceso a los archivos de contraseña ayuda a protegerse contra la eliminación accidental.
¿Puede un archivo de contraseña representar una amenaza potencial si de alguna manera puedo protegerlo contra el descifrado?
Sí puede. Considere la forma en que PowerShell normalmente usa un archivo de contraseña. PowerShell simplemente lee el archivo y lo usa para adquirir las credenciales necesarias para realizar la operación requerida. Para hacer esto, PowerShell solo necesita tener la capacidad de leer el archivo. No existe ningún requisito para que PowerShell convierta realmente el contenido del archivo en una contraseña de texto no cifrado.
¿Cuáles son las posibilidades de que un pirata informático sepa cómo descifrar una contraseña de PowerShell?
Los piratas informáticos saben que un archivo de contraseña sigue siendo útil de alguna manera, incluso si no está descifrado. Sin embargo, es probable que también sepan cómo descifrar un archivo. Después de todo, ahora mismo está leyendo un artículo de acceso público sobre el descifrado de contraseñas. Los hackers tienen acceso a la misma información. Por eso es tan importante restringir el acceso a los archivos de contraseñas.
Recursos
TechGenix: Artículo sobre la Posible Extinción de Contraseñas Web
Conozca por qué las contraseñas web eventualmente pueden desaparecer.
TechGenix: artículo sobre contraseñas que nunca caducan
Lea más sobre cómo usar PowerShell para encontrar contraseñas que están configuradas para no caducar nunca.
TechGenix: artículo sobre empleados que venden sus contraseñas
Descubra por qué uno de cada cinco empleados estaría dispuesto a vender su contraseña.
Altaro: Artículo sobre el cifrado de contraseñas en PowerShell
Descubra cómo cifrar contraseñas en PowerShell.
Microsoft: Guía sobre la gestión de contraseñas con PowerShell
Obtenga más información sobre cómo usar PowerShell para administrar contraseñas.
N-able: Guía sobre el uso de caracteres especiales en una contraseña
Lea más sobre cómo los caracteres especiales en las contraseñas pueden causar problemas para PowerShell.