Error de "Corrección de oráculo de cifrado de CredSSP" al intentar un RDP en una VM Windows en Azure

Se aplica: Azure

Síntomas


Imagine la siguiente situación:

En esta situación, aparece este mensaje de error: 

Cómo comprobar si la actualización de CredSSP está instalada


Compruebe el historial de actualizaciones para las próximas actualizaciones o compruebe la versión de TSpkg.dll.

Sistema operativo Versión TSpkg.dll con actualización CredSSP Actualización CredSSP
Windows 7 Service Pack 1 y Windows Server 2008 R2 Service Pack 1 6.1.7601.24117 KB4103718 (paquete acumulativo mensual)
KB4103712 (actualización solo de seguridad)
Windows Server 2012 6.2.9200.22432 KB4103730 (paquete acumulativo mensual)
KB4103726 (actualización solo de seguridad)
Windows 8.1 y Windows Server 2012 R2 6.3.9600.18999 KB4103725 (paquete acumulativo mensual)
KB4103715 (actualización solo de seguridad)
RS1: Windows 10 versión 1607 y Windows Server 2016 10.0.14393.2248 KB4103723
RS2: Windows 10 versión 1703 10.0.15063.1088 KB4103731
RS3: Windows 10 1709 10.0.16299.431 KB4103727

Causa


Este error se produce cuando se intenta establecer una conexión RDP no segura y dicha conexión está bloqueada por una configuración de directiva de Corrección de oráculo de cifrado en el servidor o cliente. Esta configuración define cómo crear una sesión RDP mediante CredSSP y si está permitido un RDP no seguro.

Consulte la siguiente matriz de interoperabilidad para ver qué escenarios tienen vulnerabilidades de seguridad o pueden causar errores de funcionamiento.

    Servidor
    Actualizado Forzar clientes actualizados Mitigado Vulnerable
Cliente Actualizado Permitido Bloqueado2 Permitido Permitido
Forzar clientes actualizados Bloqueado Permitido Permitido Permitido
Mitigado Bloqueado1 Permitido Permitido Permitido
Vulnerable Permitido Permitido Permitido Permitido

Ejemplos
 

1 El cliente tiene instalada la actualización CredSSP y la Corrección de oráculo de cifrado está lista para Mitigado. Este cliente no hará RDP en un servidor que no tenga instalada la actualización CredSSP.

2 El servidor tiene instalada la actualización CredSSP y la Corrección de oráculo de cifrado está lista para Forzar clientes actualizados. El servidor bloqueará cualquier conexión RDP de los clientes que no tengan instalada la actualización CredSSP.

Solución


Para resolver el problema, instale las actualizaciones de CredSSP para el cliente y el servidor para que RDP se pueda establecer de forma segura. Para obtener más información, consulte CVE-2018-0886 | Vulnerabilidad de ejecución del código remoto de CredSSP.

Cómo instalar esta actualización mediante la consola de serie Azure

  1. Inicie sesión en Azure Portal, seleccione Máquina virtual y, a continuación, seleccione la VM.
  2. Desplácese hasta la sección Soporte + Solución de problemas y, a continuación, haga clic en Consola de serie (versión preliminar)La consola de serie requiere que se active la Consola de administración especial (SAC) dentro de la VM de Windows. Si no ve SAC> en la consola (como se muestra en la siguiente captura de pantalla), vaya a la sección "Cómo instalar la actualización con PowerShell remoto" en este artículo.

    La imagen sobre SAC está conectada

  1. Escriba cmd para iniciar un canal que tiene una instancia CMD.
  2. Escriba ch-si 1 para cambiar al canal que ejecuta la instancia CMD. Aparece el siguiente resultado:

    La imagen sobre el lanzamiento CMD en SAC
  3. Presione Entrar y, a continuación, escriba sus credenciales de inicio de sesión que tengan permisos administrativos.
  4. Después de introducir las credenciales válidas, se abrirá la instancia de CMD y verá el comando en el que puede iniciar la solución de problemas.

    La imagen sobre la sección CMD en SAC
  5. Para iniciar una instancia de PowerShell, escriba PowerShell.
  6. En la instancia de PowerShell, ejecute el script de la consola de serie en función del sistema operativo VM. El script hace lo siguiente: 
     
    • Crear una carpeta en la que guardar el archivo de descarga.
    • Descargue la actualización.
    • Instale la actualización.
    • Añadir la clave de vulnerabilidad para permitir que los clientes no actualizados se conecten a la VM.
    • Reiniciar la VM

Cómo instalar esta actualización mediante PowerShell remoto 

  1. En cualquier equipo basado en Windows que tenga instalado PowerShell, agregue la dirección IP de la VM a la lista de "confianza" del archivo de host de la siguiente manera:
    Set-item wsman:\localhost\Client\TrustedHosts -value <IP>
  2. En el portal Azure, configure los grupos de seguridad de red en la VM para permitir el tráfico al puerto 5986.
  3. En el portal Azure, seleccione Máquina virtual > <su VM>,vaya hacia la sección OPERACIONES haga clic en Ejecutar comando, y después ejecute HabilitarPSRemoto. 
  4. En el equipo basado en Windows, ejecute el script de PowerShell Remoto para la versión del sistema correspondiente de la VM. El script hace lo siguiente:
    • Conectarse a PowerShell remoto en la VM.
    • Crear una carpeta en la que guardar el archivo de descarga.
    • Descargar la actualización Credssp.
    • Instale la actualización.
    • Establecer la clave del registro de vulnerabilidad para permitir que los clientes no actualizados se conecten a la VM.
    • Habilitar la consola de serie para una mitigación posterior y más sencilla.
    • Reiniciar la VM.

Solución alternativa


Situación 1: Los clientes actualizados no se pueden comunicar con servidores no actualizados

El escenario más común es que el cliente tiene instalada la actualización CredSSP y la configuración de directiva de Corrección de oráculo de cifrado no permite una conexión RDP no segura con un servidor que no tenga instalada la actualización CredSSP.

Para resolver este problema, siga los siguientes pasos:

  1. En el cliente que tiene instalada la actualización CredSSP, ejecute gpedit.msc y, a continuación, busque Configuración del equipo > Plantillas administrativas > Sistema > Delegación de credenciales en el panel de navegación. 
  2. Cambie la directiva de Corrección de oráculo de cifrado a Habilitado y, a continuación, cambie el Nivel de protección a Vulnerable.

Si no puede usar gpedit.msc, puede realizar el mismo cambio con el registro de la siguiente manera:

  1. Abra una ventana del símbolo del sistema como administrador.
  2. Ejecute el siguiente comando para agregar un valor de registro:
    REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters\ /v AllowEncryptionOracle /t REG_DWORD /d 2


Situación 2: Los clientes no actualizados no pueden comunicarse con servidores revisados

Si la VM de Windows Azure tiene instalada esta actualización y está restringida a recibir clientes no actualizados, siga estos pasos para cambiar la configuración de directiva de la Corrección de oráculo de cifrado:

  1. En cualquier equipo Windows que tenga instalado PowerShell, agregue el IP de la VM a la lista de "confianza" del archivo de host:
    Set-item wsman:\localhost\Client\TrustedHosts -value <IP>
  2. Vaya a Portal Azure, busque la VM y, a continuación, actualice el grupo de seguridad de red para permitir los puertos 5985 y 5986 de PowerShell.
  3. En el equipo Windows, conéctese a la VM mediante PowerShell:
    Para HTTP:
    $Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck Enter-PSSession -ComputerName "<<Public IP>>" -port "5985" -Credential (Get-Credential) -SessionOption $Skip

    Para HTTPS:
    $Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck Enter-PSSession -ComputerName "<<Public IP>>" -port "5986" -Credential (Get-Credential) -useSSL -SessionOption $Skip
  4. Ejecute el siguiente comando para cambiar la configuración de directiva de Corrección de oráculo de cifrado con el registro:
    Set-ItemProperty -Path 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters' -name "AllowEncryptionOracle" 2 -Type DWord

Scripts de la consola de serie Azure


 

Versión OS:

Script

Windows 7 Service Pack 1 y Windows Server 2008 R2 Service Pack 1

#Create a download location
md c:\temp

##Download the KB file
$source = "http://download.windowsupdate.com/d/msdownload/update/software/secu/2018/05/windows6.1-kb4103718-x64_c051268978faef39e21863a95ea2452ecbc0936d.msu"
$destination = "c:\temp\windows6.1-kb4103718-x64_c051268978faef39e21863a95ea2452ecbc0936d.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)

#Install the KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows6.1-KB4103718-x64.cab"

#Add the vulnerability key to allow unpatched clients
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2

#Restart the VM to complete the installations/settings
shutdown /r /t 0 /f

Windows Server 2012

#Create a download location
md c:\temp

##Download the KB file
$source = "http://download.windowsupdate.com/d/msdownload/update/software/secu/2018/04/windows8-rt-kb4103730-x64_1f4ed396b8c411df9df1e6755da273525632e210.msu"
$destination = "c:\temp\windows8-rt-kb4103730-x64_1f4ed396b8c411df9df1e6755da273525632e210.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)

#Install the KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows8-RT-KB4103730-x64.cab"

#Add the vulnerability key to allow unpatched clients
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2

#Restart the VM to complete the installations/settings
shutdown /r /t 0 /f

Windows 8.1 y Windows Server 2012 R2

#Create a download location
md c:\temp

##Download the KB file
$source = "http://download.windowsupdate.com/d/msdownload/update/software/secu/2018/05/windows8.1-kb4103725-x64_cdf9b5a3be2fd4fc69bc23a617402e69004737d9.msu"
$destination = "c:\temp\windows8.1-kb4103725-x64_cdf9b5a3be2fd4fc69bc23a617402e69004737d9.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)

#Install the KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows8.1-KB4103725-x64.cab"

#Add the vulnerability key to allow unpatched clients
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2

#Restart the VM to complete the installations/settings
shutdown /r /t 0 /f

RS1: Windows 10 versión 1607 y Windows Server 2016

#Create a download location
md c:\temp

##Download the KB file
$source = "http://download.windowsupdate.com/d/msdownload/update/software/secu/2018/05/windows10.0-kb4103723-x64_2adf2ea2d09b3052d241c40ba55e89741121e07e.msu"
$destination = "c:\temp\windows10.0-kb4103723-x64_2adf2ea2d09b3052d241c40ba55e89741121e07e.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)

#Install the KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows10.0-KB4103723-x64.cab"

#Add the vulnerability key to allow unpatched clients
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2

#Restart the VM to complete the installations/settings
shutdown /r /t 0 /f

RS2: Windows 10 versión 1703

#Create a download location
md c:\temp

##Download the KB file
$source = "http://download.windowsupdate.com/c/msdownload/update/software/secu/2018/05/windows10.0-kb4103731-x64_209b6a1aa4080f1da0773d8515ff63b8eca55159.msu"
$destination = "c:\temp\windows10.0-kb4103731-x64_209b6a1aa4080f1da0773d8515ff63b8eca55159.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)

#Install the KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows10.0-KB4103731-x64.cab"

#Add the vulnerability key to allow unpatched clients
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2

#Restart the VM to complete the installations/settings
shutdown /r /t 0 /f

RS3: Windows 10 versión 1709 y Windows Server 2016 versión 1709

#Create a download location
md c:\temp

##Download the KB file
$source = "http://download.windowsupdate.com/c/msdownload/update/software/secu/2018/05/windows10.0-kb4103727-x64_c217e7d5e2efdf9ff8446871e509e96fdbb8cb99.msu"
$destination = "c:\temp\windows10.0-kb4103727-x64_c217e7d5e2efdf9ff8446871e509e96fdbb8cb99.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)

#Install the KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows10.0-KB4103727-x64.cab"

#Add the vulnerability key to allow unpatched clients
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2

#Restart the VM to complete the installations/settings
shutdown /r /t 0 /f

RS4: Windows 10 1803 y Windows Server 2016 versión 1803

#Create a download location
md c:\temp

##Download the KB file
$source = "http://download.windowsupdate.com/c/msdownload/update/software/secu/2018/05/windows10.0-kb4103721-x64_fcc746cd817e212ad32a5606b3db5a3333e030f8.msu"
$destination = "c:\temp\windows10.0-kb4103721-x64_fcc746cd817e212ad32a5606b3db5a3333e030f8.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)

#Install the KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows10.0-KB4103721-x64.cab"

#Add the vulnerability key to allow unpatched clients
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2

#Restart the VM to complete the installations/settings
shutdown /r /t 0 /f

Scripts de PowerShell remoto


 

Versión OS:

Script

Windows 7 Service Pack 1 y Windows Server 2008 R2 Service Pack 1

#Set up your variables:
$subscriptionID = "<your subscription ID>"
$vmname = "<IP of your machine or FQDN>"
$PSPort = "5986" #change this variable if you customize HTTPS on powershell to another port

#​​​​Log in to your subscription
Add-AzureRmAccount
Select-AzureRmSubscription -SubscriptionID $subscriptionID
Set-AzureRmContext -SubscriptionID $subscriptionID

#Connect to Remote Powerwhell
$Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
Enter-PSSession -ComputerName $vmname -port $PSPort -Credential (Get-Credential) -useSSL -SessionOption $Skip

#Create a download location
md c:\temp

##Download the KB file
$source = "http://download.windowsupdate.com/d/msdownload/update/software/secu/2018/05/windows6.1-kb4103718-x64_c051268978faef39e21863a95ea2452ecbc0936d.msu"
$destination = "c:\temp\windows6.1-kb4103718-x64_c051268978faef39e21863a95ea2452ecbc0936d.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)

#Install the KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows6.1-KB4103718-x64.cab"

#Add the vulnerability key to allow unpatched clients
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2

#Set up Azure Serial Console flags
cmd
bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {bootmgr} timeout 5
bcdedit /set {bootmgr} bootems yes
bcdedit /ems {current} on
bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200 

#Restart the VM to complete the installations/settings
shutdown /r /t 0 /f

Windows Server 2012

#Set up your variables:
$subscriptionID = "<your subscription ID>"
$vmname = "<IP of your machine or FQDN>"
$PSPort = "5986" #change this variable if you customize HTTPS on powershell to another port

#​​​​Log in to your subscription
Add-AzureRmAccount
Select-AzureRmSubscription -SubscriptionID $subscriptionID
Set-AzureRmContext -SubscriptionID $subscriptionID

#Connect to Remote Powerwhell
$Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
Enter-PSSession -ComputerName $vmname -port $PSPort -Credential (Get-Credential) -useSSL -SessionOption $Skip

#Create a download location
md c:\temp

##Download the KB file
$source = "http://download.windowsupdate.com/d/msdownload/update/software/secu/2018/04/windows8-rt-kb4103730-x64_1f4ed396b8c411df9df1e6755da273525632e210.msu"
$destination = "c:\temp\windows8-rt-kb4103730-x64_1f4ed396b8c411df9df1e6755da273525632e210.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)

#Install the KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows8-RT-KB4103730-x64.cab"

#Add the vulnerability key to allow unpatched clients
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2

#Set up Azure Serial Console flags
cmd
bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {bootmgr} timeout 5
bcdedit /set {bootmgr} bootems yes
bcdedit /ems {current} on
bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200 

#Restart the VM to complete the installations/settings
shutdown /r /t 0 /f

Windows 8.1 y Windows Server 2012 R2

#Set up your variables:
$subscriptionID = "<your subscription ID>"
$vmname = "<IP of your machine or FQDN>"
$PSPort = "5986" #change this variable if you customize HTTPS on powershell to another port

#​​​​Log in to your subscription
Add-AzureRmAccount
Select-AzureRmSubscription -SubscriptionID $subscriptionID
Set-AzureRmContext -SubscriptionID $subscriptionID

#Connect to Remote Powerwhell
$Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
Enter-PSSession -ComputerName $vmname -port $PSPort -Credential (Get-Credential) -useSSL -SessionOption $Skip

#Create a download location
md c:\temp

##Download the KB file
$source = "http://download.windowsupdate.com/d/msdownload/update/software/secu/2018/05/windows8.1-kb4103725-x64_cdf9b5a3be2fd4fc69bc23a617402e69004737d9.msu"
$destination = "c:\temp\windows8.1-kb4103725-x64_cdf9b5a3be2fd4fc69bc23a617402e69004737d9.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)

#Install the KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows8.1-KB4103725-x64.cab"

#Add the vulnerability key to allow unpatched clients
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2

#Set up Azure Serial Console flags
cmd
bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {bootmgr} timeout 5
bcdedit /set {bootmgr} bootems yes
bcdedit /ems {current} on
bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200 

#Restart the VM to complete the installations/settings
shutdown /r /t 0 /f

RS1: Windows 10 versión 1607 y Windows Server 2016

#Set up your variables:
$subscriptionID = "<your subscription ID>"
$vmname = "<IP of your machine or FQDN>"
$PSPort = "5986" #change this variable if you customize HTTPS on powershell to another port

#​​​​Log in to your subscription
Add-AzureRmAccount
Select-AzureRmSubscription -SubscriptionID $subscriptionID
Set-AzureRmContext -SubscriptionID $subscriptionID

#Connect to Remote Powerwhell
$Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
Enter-PSSession -ComputerName $vmname -port $PSPort -Credential (Get-Credential) -useSSL -SessionOption $Skip

#Create a download location
md c:\temp

##Download the KB file
$source = "http://download.windowsupdate.com/d/msdownload/update/software/secu/2018/05/windows10.0-kb4103723-x64_2adf2ea2d09b3052d241c40ba55e89741121e07e.msu"
$destination = "c:\temp\windows10.0-kb4103723-x64_2adf2ea2d09b3052d241c40ba55e89741121e07e.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)

#Install the KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows10.0-KB4103723-x64.cab"

#Add the vulnerability key to allow unpatched clients
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2

#Set up Azure Serial Console flags
cmd
bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {bootmgr} timeout 5
bcdedit /set {bootmgr} bootems yes
bcdedit /ems {current} on
bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200 

#Restart the VM to complete the installations/settings
shutdown /r /t 0 /f

RS2: Windows 10 versión 1703

#Set up your variables:
$subscriptionID = "<your subscription ID>"
$vmname = "<IP of your machine or FQDN>"
$PSPort = "5986" #change this variable if you customize HTTPS on powershell to another port

#​​​​Log in to your subscription
Add-AzureRmAccount
Select-AzureRmSubscription -SubscriptionID $subscriptionID
Set-AzureRmContext -SubscriptionID $subscriptionID

#Connect to Remote Powerwhell
$Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
Enter-PSSession -ComputerName $vmname -port $PSPort -Credential (Get-Credential) -useSSL -SessionOption $Skip

#Create a download location
md c:\temp

##Download the KB file
$source = "http://download.windowsupdate.com/c/msdownload/update/software/secu/2018/05/windows10.0-kb4103731-x64_209b6a1aa4080f1da0773d8515ff63b8eca55159.msu"
$destination = "c:\temp\windows10.0-kb4103731-x64_209b6a1aa4080f1da0773d8515ff63b8eca55159.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)

#Install the KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows10.0-KB4103731-x64.cab"

#Add the vulnerability key to allow unpatched clients
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2

#Set up Azure Serial Console flags
cmd
bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {bootmgr} timeout 5
bcdedit /set {bootmgr} bootems yes
bcdedit /ems {current} on
bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200 

#Restart the VM to complete the installations/settings
shutdown /r /t 0 /f

RS3: Windows 10 versión 1709 y Windows Server 2016 versión 1709

#Set up your variables:
$subscriptionID = "<your subscription ID>"
$vmname = "<IP of your machine or FQDN>"
$PSPort = "5986" #change this variable if you customize HTTPS on powershell to another port

#​​​​Log in to your subscription
Add-AzureRmAccount
Select-AzureRmSubscription -SubscriptionID $subscriptionID
Set-AzureRmContext -SubscriptionID $subscriptionID

#Connect to Remote Powerwhell
$Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
Enter-PSSession -ComputerName $vmname -port $PSPort -Credential (Get-Credential) -useSSL -SessionOption $Skip

#Create a download location
md c:\temp

##Download the KB file
$source = "http://download.windowsupdate.com/c/msdownload/update/software/secu/2018/05/windows10.0-kb4103727-x64_c217e7d5e2efdf9ff8446871e509e96fdbb8cb99.msu"
$destination = "c:\temp\windows10.0-kb4103727-x64_c217e7d5e2efdf9ff8446871e509e96fdbb8cb99.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)

#Install the KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows10.0-KB4103727-x64.cab"

#Add the vulnerability key to allow unpatched clients
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2

#Set up Azure Serial Console flags
cmd
bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {bootmgr} timeout 5
bcdedit /set {bootmgr} bootems yes
bcdedit /ems {current} on
bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200 

#Restart the VM to complete the installations/settings
shutdown /r /t 0 /f

RS4: Windows 10 1803 y Windows Server 2016 versión 1803

#Set up your variables:
$subscriptionID = "<your subscription ID>"
$vmname = "<IP of your machine or FQDN>"
$PSPort = "5986" #change this variable if you customize HTTPS on powershell to another port

#​​​​Log in to your subscription
Add-AzureRmAccount
Select-AzureRmSubscription -SubscriptionID $subscriptionID
Set-AzureRmContext -SubscriptionID $subscriptionID

#Connect to Remote Powerwhell
$Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
Enter-PSSession -ComputerName $vmname -port $PSPort -Credential (Get-Credential) -useSSL -SessionOption $Skip

#Create a download location
md c:\temp

##Download the KB file
$source = "http://download.windowsupdate.com/c/msdownload/update/software/secu/2018/05/windows10.0-kb4103721-x64_fcc746cd817e212ad32a5606b3db5a3333e030f8.msu"
$destination = "c:\temp\windows10.0-kb4103721-x64_fcc746cd817e212ad32a5606b3db5a3333e030f8.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)

#Install the KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows10.0-KB4103721-x64.cab"

#Add the vulnerability key to allow unpatched clients
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2

#Set up Azure Serial Console flags
cmd
bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {bootmgr} timeout 5
bcdedit /set {bootmgr} bootems yes
bcdedit /ems {current} on
bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200 

#Restart the VM to complete the installations/settings
shutdown /r /t 0 /f