Fehlermeldung „CredSSP-Encryption-Oracle-Abwehr“ beim Versuch per RDP auf eine Windows-VM in Azure zuzugreifen.

Gilt für: Azure

Problembeschreibung


Stellen Sie sich folgendes Szenario vor:

In diesem Szenario wird die folgende Fehlermeldung angezeigt: 

Überprüfen, ob das CredSSP-Update installiert wurde


Überprüfen Sie den Update-Verlauf auf die folgenden Updates oder überprüfen Sie die Version von TSpkg.dll.

Betriebssystem TSpkg.dll-Version mit CredSSP-Update CredSSP-Update
Windows 7 Service Pack 1 / Windows Server 2008 R2 Service Pack 1 6.1.7601.24117 KB4103718 (monatlicher Rollup)
KB4103712 (reines Sicherheitsupdate)
Windows Server 2012 6.2.9200.22432 KB4103730 (monatlicher Rollup)
KB4103726 (reines Sicherheitsupdate)
Windows 8.1 / Windows Sever 2012 R2 6.3.9600.18999 KB4103725 (monatlicher Rollup)
KB4103715 (reines Sicherheitsupdate)
RS1 - Windows 10 Version 1607 / Windows Server 2016 10.0.14393.2248 KB4103723
RS2 - Windows 10 Version 1703 10.0.15063.1088 KB4103731
RS3 - Windows 10 1709 10.0.16299.431 KB4103727

Ursache


Dieser Fehler tritt auf, wenn Sie versuchen, eine unsichere RDP-Verbindung herzustellen und diese durch eine Richtlinieneinstellung der Encryption Oracle-Abwehr auf dem Server oder Client blockiert wird. Diese Einstellung definiert, wie eine RDP-Sitzung mithilfe von CredSSP erstellt wird und ob ein unsicheres RDP zulässig ist.

Sie finden Szenarien in der folgenden Interoperabilitätsmatrix, die entweder anfällig für diesen Exploit sind oder Betriebsausfälle verursachen.

    Server
    Aktualisiert Force Updated Clients Mitigated Vulnerable
Client Aktualisiert Allowed Blockiert2 Allowed Allowed
Force Updated Clients Blocked Allowed Allowed Allowed
Mitigated Blockiert1 Allowed Allowed Allowed
Vulnerable Allowed Allowed Allowed Allowed

Beispiele
 

1 Auf dem Client ist das CredSSP-Update installiert und Encryption Oracle-Abwehr ist auf Gemildert festgelegt. Dieser Client kann kein RDP auf einem Server ausführen, auf dem das CredSSP-Update nicht installiert ist.

2 Auf dem Server ist das CredSSP-Update installiert und Encryption Oracle-Abwehr ist festgelegt auf Aktualisierte Clients erzwingen. Der Server blockiert alle RDP-Verbindungen von Clients, auf denen das CredSSP-Update nicht installiert ist.

Lösung


Um das Problem zu beheben, installieren Sie die CredSSP-Updates für Client und Server, damit RDP auf sichere Weise erstellt werden kann. Sie finden weitere Informationen unter CVE-2018-0886 | CredSSP-Sicherheitsanfälligkeit bezüglich Remotecodeausführung.

Installation dieses Updates mithilfe der seriellen Konsole von Azure

  1. Melden Sie sich beim Azure-Portal an, wählen Sie Virtuelle Maschine und anschließend die VM.
  2. Scrollen Sie nach unten zum Abschnitt Support und Problembehandlung und klicken Sie dann auf Serielle Konsole (Vorschau)Für die serielle Konsole muss die Spezielle Verwaltungskonsole (SAC) in der Windows-VM aktiviert sein. Wenn Sie in der Konsole SAC> nicht sehen (wie im folgenden Screenshot gezeigt), gehen Sie zu dem Abschnitt „Installation des Updates mithilfe von Remote PowerShell“ in diesem Beitrag.

    Das Bild über SAC verbunden

  1. Geben Sie cmd ein, um einen Kanal zu starten, der eine CMD-Instanz hat.
  2. Geben Sie ch-si 1 ein, um zu dem Kanal zu wechseln, auf dem die CMD-Instanz ausgeführt wird. Sie erhalten die folgende Ausgabe:

    Das Bild starten CMD in SAC
  3. Drücken Sie die Eingabetaste und geben Sie Ihre Anmeldeinformationen ein, welche über Administratorrechte verfügen.
  4. Nachdem Sie gültige Anmeldeinformationen eingegeben haben, wird die CMD-Instanz geöffnet und Sie sehen den Befehl, mit dem Sie die Problembehandlung starten können.

    Das Bild über SAC CMD Abschnitt
  5. Zum Starten einer PowerShell-Instanz, geben Sie PowerShell ein.
  6. In der PowerShell-Instanz, führen Sie dasSerielle Konsole-Skript aus, basierend auf dem VM-Betriebssystem. Dieses Skript bewirkt Folgendes: 
     
    • Erstellung eines Ordners, in dem die Downloaddatei gespeichert werden soll.
    • Laden Sie das Update herunter.
    • Installieren Sie das Update.
    • Hinzufügen des Sicherheitsrisikoschlüssels, damit nicht aktualisierte Clients eine Verbindung zur VM herstellen können.
    • Neustart der VM

Installation dieses Updates mithilfe von Remote PowerShell 

  1. Fügen Sie auf jedem Windows-basierten Computer, auf dem PowerShell installiert ist, wie folgt die IP-Adresse der VM in die „vertrauenswürdige“-Liste in der Hostdatei hinzu:
    Set-item wsman:\localhost\Client\TrustedHosts -value <IP>
  2. Konfigurieren Sie im Azure-Portal die Netzwerksicherheitsgruppen auf der VM, um den Datenverkehr für Anschluss 5986 zuzulassen.
  3. Wählen Sie im Azure-Portal Virtuelle Machine> <Ihre VM>, scrollen Sie nach unten zum Abschnitt VORGÄNGE, klicken Sie auf Befehl ausführen, und führen Sie dann EnableRemotePS aus. 
  4. Führen Sie auf dem Windows-basierten Computer das Remote PowerShell-Skript für die entsprechende Systemversion Ihrer VM aus. Dieses Skript bewirkt Folgendes:
    • Stellen Sie eine Verbindung zur Remote PowerShell auf der VM her.
    • Erstellen Sie einen Ordner, in dem die Downloaddatei gespeichert werden soll.
    • Laden Sie das Credssp-Update herunter.
    • Installieren Sie das Update.
    • Legen Sie den Sicherheitsrisiko-Registrierungsschlüssel fest, damit nicht-aktualisierte Clients eine Verbindung zur VM herstellen können.
    • Aktivieren Sie die serielle Konsole für zukünftige und einfachere Schadensminderungen.
    • Starten Sie die VM neu.

Problemumgehung


Szenario 1: Aktualisierte Clients können nicht mit nicht-aktualisierten Servern kommunizieren.

Das häufigste Szenario ist, dass auf dem Client das CredSSP-Update installiert ist, und die Richtlinieneinstellung Encryption Oracle-Abwehr keine unsichere RDP-Verbindung zu einem Server zulässt, auf dem das CredSSP-Update nicht installiert ist.

Gehen Sie folgendermaßen vor, um das Problem zu umgehen:

  1. Führen Sie auf dem Client, welcher das CredSSP-Update installiert, gpedit.msc aus und gehen Sie im Navigationsbereich zu Computerkonfiguration > Administrative Vorlagen > System > Delegierung der Anmeldeinformationen
  2. Ändern Sie die Encryption Oracle-Abwehr-Richtlinie in Aktiviert und ändern Sie anschließend die Schutzstufe in Ungeschützt.

Wenn Sie gpedit.msc nicht verwenden können, können Sie dieselbe Änderung wie folgt über die Registrierung vornehmen:

  1. Öffnen Sie ein Eingabeaufforderungsfenster als Administrator.
  2. Führen Sie den folgenden Befehl aus, um einen Registrierungswert hinzuzufügen:
    REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters\ /v AllowEncryptionOracle /t REG_DWORD /d 2


Szenario 2: Nicht aktualisierte Clients können nicht mit gepatchten Servern kommunizieren

Wenn dieses Update auf der Azure-Windows-VM installiert und auf den Empfang nicht-aktualisierter Clients beschränkt ist, führen Sie die folgenden Schritte aus, um die Richtlinieneinstellung Encryption Oracle-Abwehr zu ändern:

  1. Fügen Sie auf jedem Windows-Computer, auf dem PowerShell installiert ist, die IP-Adresse der virtuellen Maschine der „vertrauenswürdigen“ Liste in der Hostdatei hinzu:
    Set-item wsman:\localhost\Client\TrustedHosts -value <IP>
  2. Wechseln Sie zum Azure-Portal, suchen Sie die VM und aktualisieren Sie die Netzwerksicherheitsgruppe, um die PowerShell-Anschlüsse 5985 und 5986 zuzulassen.
  3. Stellen Sie auf dem Windows-Computer mithilfe von PowerShell eine Verbindung zur VM her:
    Für HTTP:
    $Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck Enter-PSSession -ComputerName "<<Public IP>>" -port "5985" -Credential (Get-Credential) -SessionOption $Skip

    Für HTTPS:
    $Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck Enter-PSSession -ComputerName "<<Public IP>>" -port "5986" -Credential (Get-Credential) -useSSL -SessionOption $Skip
  4. Führen Sie den folgenden Befehl aus, um die Richtlinieneinstellung Encryption Oracle-Abwehr mithilfe der Registrierung zu ändern:
    Set-ItemProperty -Path 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters' -name "AllowEncryptionOracle" 2 -Type DWord

Skripte für die serielle Konsole von Azure


 

BS-Version

Skript

Windows 7 Service Pack 1 / 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 / Windows Sever 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 Version 1607 / 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 Version 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 Version 1709 / Windows Server 2016 Version 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 / Windows Server 2016 Version 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

Remote PowerShell-Skripte


 

BS-Version

Skript

Windows 7 Service Pack 1 / 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 / Windows Sever 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 Version 1607 / 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 Version 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 Version 1709 / Windows Server 2016 Version 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 / Windows Server 2016 Version 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