jueves, 17 de diciembre de 2020

Envía mail desde Powershell sin escribir a fuego la password en el fichero...

 Estimados amigos de Inseguros !!!

Creo que el título es suficientemente descriptivo como para todos los telespectadores xD pero por si acaso...

Un caso sencillo de scripts de envío de correo podría ir vinculado a un evento determinado, o por ejemplo una tarea programada que falla... los casos son muchos.


Escribir un script en Powershell para enviar correos es sencillo, pero tener una $password="12345678" es una mala práctica, porque los malos saben que lo haces/hacemos... y buscan en todo tipo de referencias buscando este tipo de comportamientos.

El procedimiento es más bien sencillo:

Volcamos en un fichero de texto la contraseña cifrada y hacemos el envío del correo ( o cualquier uso de credenciales)recuperando la clave cifrada y haciendo la magia descifrado.

El churro sería algo así:

"CacadeVaca123" | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File "C:\EmailPassword.txt"

$Mensaje = "mimamamemima"
$User = "notificacionempresalab@gmail.com"
$File = "C:\EmailPassword.txt"

$cred=New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, (Get-Content $File | ConvertTo-SecureString)

$EmailFrom = "test_empresalab@gmail.com"

$EmailTo = "kinomakino_mecome_el_pepino@hotmail.com"

$Subject ="Alerta de registro."

$Body = "Se ha modificado el registro con ID $Mensaje"

$SMTPServer = "smtp.gmail.com"

$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)

$SMTPClient.EnableSsl = $true

$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($cred.UserName, $cred.Password); 

$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body) 

El comando ConverTo-SecureString hace uso de DPAPI ( Data Protection API) para usando un algoritmo de cifrado ( AES 256 en versiones modernas, 3DES en antiguas) para montar un hash en base al propio hash de la clave del usuario.

Si quieres conocer en profundidad cómo funciona el proceso de cifrado a bajo nivel, este es el mejor artículo que conozco.

Si te gustan estos artículos, hemos habilitado un formulario en la web para registrar tu correo y enviarte información para posibles formaciones de Ciberseguridad. Te apuntas?

Gracias por leerme !!!