Buenas a todos, después de estar mucho tiempo sin escribir en el blog, me gustaría compartir con vosotros un script que he creado en PowerShell para comprobar la vulnerabilidad MS17-010 explotada por el ransomware WannaCry.

Este script debe de ser ejecutado desde el controlador de dominio para comprobar que equipos aún no cuentan con las actualizaciones publicadas por Microsoft para solucionar esta vulnerabilidad.

 

CheckWannaCryMS17-010.ps1

 

[code lang=”ps”]

#Script para comprobar vulnerabilidad MS17-010

#Autor: Javier Olmedo
#Twitter: @JJavierOlmedo
#https://hackpuntes.com
#16/05/2017

#ID de actualizaciones que deben de estar instaladas en el sistema para evitar la propagación de WannaCry
$actualizaciones = ("KB4012212", "KB4012217", "KB4015551", "KB4019216", "KB4012216", "KB4015550", "KB4019215", "KB4013429", "KB4019472", "KB4015217", "KB4015438", "KB4016635")

#Obtenemos los equipos que estén habilitados en el dominio y los ordenamos alfabéticamente
$equipos = Get-ADComputer -Filter {enabled -eq $true} -Property * | sort

#Bucle para recorrer los equipos
foreach ($equipo in $equipos){

#Hacemos un ping al equipo para comprobar si está encendido antes de comprobarlo
$nombreequipo = $equipo.Name
$ping = gwmi win32_pingstatus -f "Address = ‘$nombreequipo’"

#Si el equipo hace ping
if($ping.statuscode -eq 0) {

#Intentamos comprobar las actualizaciones
try {

$comprobaractualizaciones = Get-HotFix -ComputerName $nombreequipo | Where-Object {$actualizaciones -contains $_.HotfixID} | Select-Object -property "HotFixID"

if($comprobaractualizaciones) {
Write-Host -foregroundcolor Green "El equipo $nombreequipo no es vulnerable"
} else {
Write-Host -foregroundcolor Red "El equipo $nombreequipo es vulnerable"
}

#Si nos da error al comprobar las actualizaciones
} catch {
Write-Host -foregroundcolor Red "El equipo $nombreequipo está encendido, pero no se puede comprobar las actualizaciones"

}

#Si el equipo no responde a ping
} else {
Write-Host -foregroundcolor Red "El equipo $nombreequipo está apagado o no responde a ping"
}
}
[/code]

Enlace a GitHub:

https://github.com/JavierOlmedo/check-ms17-010/blob/master/CheckWannaCryMS17-010.ps1

 

Un Saludo.

P.D Haced siempre copia de seguridad 🙂


Javier Olmedo

Consultor de Ciberseguridad e Investigador de Seguridad en mi tiempo libre, Técnico en Sistemas Informáticos y Técnico Superior en Desarrollo de Software, apasionado de la [In]Seguridad Informática.

6 commentarios

Hernan Sotelo · martes, 2 enero, 2018 a las 19:36

Estimado

Excelente script, solo se modifica el KB correspondiente al S.O. y queda perfecto. existe alguna manera de exportarlo a un CSV?

Gracias.

fas · martes, 16 mayo, 2017 a las 21:46

me salta el siguiente error :

El término ‘Get-ADComputer’ no se reconoce como nombre de un cmdlet, función, archivo de script o programa ejecutable.
Compruebe si escribió correctamente el nombre o, si incluyó una ruta de acceso, compruebe que dicha ruta es correcta e
inténtelo de nuevo.
En línea: 1 Carácter: 26
+ $equipos = Get-ADComputer <<<< -Filter {enabled -eq $true} -Property * | sort
+ CategoryInfo : ObjectNotFound: (Get-ADComputer:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

    Javier Olmedo · martes, 16 mayo, 2017 a las 22:08

    Buenas fas,

    ¿Estás ejecutando el script desde el controlador de dominio?

    Saludos!!

    Sergio · miércoles, 5 julio, 2017 a las 16:30

    Hola
    A mí me pasó lo mismo y lo ejecutaba desde el controlador del dominio Resulta que hay que importar los módulos a usar. En este caso hay que añadir una línea:

    import-module activedirectory

    al principio del script

    Si actualizas PowerShell por lo visto ya no hace falta importar los módulos

    @Javier Olmedo Muy útil el post ¡ Gracias por compartir !

      Javier Olmedo · miércoles, 5 julio, 2017 a las 17:24

      Hola Sergio,

      Gracias por compartir una solución a un compañero.
      Nos la apuntamos!!!!

      Saludos.

Deja tu comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.