Script PowerShell para comprobar vulnerabilidad MS17-010

 

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

 


#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"
     } 
}

Enlace a GitHub:

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

 

Un Saludo.

P.D Haced siempre copia de seguridad 🙂

6 thoughts on “Script PowerShell para comprobar vulnerabilidad MS17-010”

  1. Estimado

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

    Gracias.

  2. 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

    1. 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 !

Deja un comentario