Compartir vía


Solución de problemas de mitigaciones de protección contra vulnerabilidades

Se aplica a:

¿Quiere experimentar Defender para punto de conexión? Regístrese para obtener una prueba gratuita.

Al crear un conjunto de mitigaciones de protección contra vulnerabilidades de seguridad (lo que se conoce como configuración), es posible que el proceso de exportación e importación de la configuración no quite todas las mitigaciones no deseadas.

Puede quitar manualmente las mitigaciones no deseadas en Seguridad de Windows o puede usar el siguiente proceso para quitar todas las mitigaciones y, a continuación, importar un archivo de configuración de línea base en su lugar.

  1. Quite todas las mitigaciones de procesos con este script de PowerShell:

    # Check if Admin-Privileges are available
    function Test-IsAdmin {
        ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")
    }
    
    # Delete ExploitGuard ProcessMitigations for a given key in the registry. If no other settings exist under the specified key,
    # the key is deleted as well
    function Remove-ProcessMitigations([Object] $Key, [string] $Name) {
        Try {
            if ($Key.GetValue("MitigationOptions")) {
                Write-Host "Removing MitigationOptions for:      " $Name
                Remove-ItemProperty -Path $Key.PSPath -Name "MitigationOptions" -ErrorAction Stop;
            }
            if ($Key.GetValue("MitigationAuditOptions")) {
                Write-Host "Removing MitigationAuditOptions for: " $Name
                Remove-ItemProperty -Path $Key.PSPath -Name "MitigationAuditOptions" -ErrorAction Stop;
            }
            if ($Key.GetValue("EAFModules")) {
                Write-Host "Removing EAFModules for: " $Name
                Remove-ItemProperty -Path $Key.PSPath -Name "EAFModules" -ErrorAction Stop;
            }
    
            # Remove the FilterFullPath value if there is nothing else
            if (($Key.SubKeyCount -eq 0) -and ($Key.ValueCount -eq 1) -and ($Key.GetValue("FilterFullPath"))) {
                Remove-ItemProperty -Path $Key.PSPath -Name "FilterFullPath" -ErrorAction Stop;
            }
    
            # If the key is empty now, delete it
            if (($Key.SubKeyCount -eq 0) -and ($Key.ValueCount -eq 0)) {
                Write-Host "Removing empty Entry:                " $Name
                Remove-Item -Path $Key.PSPath -ErrorAction Stop
            }
        }
        Catch {
            Write-Host "ERROR:" $_.Exception.Message "- at ($MitigationItemName)"
        }
    }
    
    # Delete all ExploitGuard ProcessMitigations
    function Remove-All-ProcessMitigations {
        if (!(Test-IsAdmin)) {
            throw "ERROR: No Administrator-Privileges detected!"; return
        }
    
        Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" | ForEach-Object {
            $MitigationItem = $_;
            $MitigationItemName = $MitigationItem.PSChildName
    
            Try {
                Remove-ProcessMitigations $MitigationItem $MitigationItemName
    
                # "UseFilter" indicate full path filters may be present
                if ($MitigationItem.GetValue("UseFilter")) {
                    Get-ChildItem -Path $MitigationItem.PSPath | ForEach-Object {
                        $FullPathItem = $_
                        if ($FullPathItem.GetValue("FilterFullPath")) {
                            $Name = $MitigationItemName + "-" + $FullPathItem.GetValue("FilterFullPath")
                            Write-Host "Removing FullPathEntry:              " $Name
                            Remove-ProcessMitigations $FullPathItem $Name
                        }
    
                        # If there are no subkeys now, we can delete the "UseFilter" value
                        if ($MitigationItem.SubKeyCount -eq 0) {
                            Remove-ItemProperty -Path $MitigationItem.PSPath -Name "UseFilter" -ErrorAction Stop
                        }
                    }
                }
                if (($MitigationItem.SubKeyCount -eq 0) -and ($MitigationItem.ValueCount -eq 0)) {
                    Write-Host "Removing empty Entry:                " $MitigationItemName
                    Remove-Item -Path $MitigationItem.PSPath -ErrorAction Stop
                }
            }
            Catch {
                Write-Host "ERROR:" $_.Exception.Message "- at ($MitigationItemName)"
            }
        }
    }
    
    # Delete all ExploitGuard System-wide Mitigations
    function Remove-All-SystemMitigations {
    
        if (!(Test-IsAdmin)) {
            throw "ERROR: No Administrator-Privileges detected!"; return
        }
    
        $Kernel = Get-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\kernel"
    
        Try {
            if ($Kernel.GetValue("MitigationOptions"))
                { Write-Host "Removing System MitigationOptions"
                    Remove-ItemProperty -Path $Kernel.PSPath -Name "MitigationOptions" -ErrorAction Stop;
                }
            if ($Kernel.GetValue("MitigationAuditOptions"))
                { Write-Host "Removing System MitigationAuditOptions"
                    Remove-ItemProperty -Path $Kernel.PSPath -Name "MitigationAuditOptions" -ErrorAction Stop;
                }
        } Catch {
            Write-Host "ERROR:" $_.Exception.Message "- System"
        }
    }
    
    Remove-All-ProcessMitigations
    Remove-All-SystemMitigations
    
  2. Create e importe un archivo de configuración XML con las siguientes mitigaciones predeterminadas, como se describe en Importar, exportar e implementar configuraciones de Protección contra vulnerabilidades:

     <?xml version="1.0" encoding="UTF-8"?>
     <root>
        <SystemConfig/>
        <AppConfig Executable="ExtExport.exe">
           <ASLR OverrideForceRelocateImages="false" ForceRelocateImages="false" Enable="true"/>
        </AppConfig>
        <AppConfig Executable="ie4uinit.exe">
          <ASLR OverrideForceRelocateImages="false" ForceRelocateImages="false" Enable="true"/>
        </AppConfig>
        <AppConfig Executable="ieinstal.exe">
       <ASLR OverrideForceRelocateImages="false" ForceRelocateImages="false" Enable="true"/>
        </AppConfig>
        <AppConfig Executable="ielowutil.exe">
          <ASLR OverrideForceRelocateImages="false" ForceRelocateImages="false" Enable="true"/>
        </AppConfig>
       <AppConfig Executable="ieUnatt.exe">
          <ASLR OverrideForceRelocateImages="false" ForceRelocateImages="false" Enable="true"/>
        </AppConfig>
       <AppConfig Executable="iexplore.exe">
          <ASLR OverrideForceRelocateImages="false" ForceRelocateImages="false" Enable="true"/>
        </AppConfig>
       <AppConfig Executable="mscorsvw.exe">
           <ExtensionPoints OverrideExtensionPoint="false" DisableExtensionPoints="true"/>
        </AppConfig>
        <AppConfig Executable="msfeedssync.exe">
           <ASLR OverrideForceRelocateImages="false" ForceRelocateImages="false" Enable="true"/>
        </AppConfig>
        <AppConfig Executable="mshta.exe">
           <ASLR OverrideForceRelocateImages="false" ForceRelocateImages="false" Enable="true"/>
        </AppConfig>
        <AppConfig Executable="ngen.exe">
           <ExtensionPoints OverrideExtensionPoint="false" DisableExtensionPoints="true"/>
        </AppConfig>
        <AppConfig Executable="ngentask.exe">
           <ExtensionPoints OverrideExtensionPoint="false" DisableExtensionPoints="true"/>
        </AppConfig>
        <AppConfig Executable="PresentationHost.exe">
           <DEP Enable="true" OverrideDEP="false" EmulateAtlThunks="false"/>
           <ASLR OverrideForceRelocateImages="false" ForceRelocateImages="false" Enable="true" OverrideBottomUp="false" HighEntropy="true" BottomUp="true"/>
           <SEHOP Enable="true" OverrideSEHOP="false" TelemetryOnly="false"/>
           <Heap OverrideHeap="false" TerminateOnError="true"/>
        </AppConfig>
        <AppConfig Executable="PrintDialog.exe">
           <ExtensionPoints OverrideExtensionPoint="false" DisableExtensionPoints="true"/>
        </AppConfig>
        <AppConfig Executable="PrintIsolationHost.exe"/>
        <AppConfig Executable="runtimebroker.exe">
           <ExtensionPoints OverrideExtensionPoint="false" DisableExtensionPoints="true"/>
        </AppConfig>
            <AppConfig Executable="splwow64.exe"/>
        <AppConfig Executable="spoolsv.exe"/>
        <AppConfig Executable="svchost.exe"/>
        <AppConfig Executable="SystemSettings.exe">
           <ExtensionPoints OverrideExtensionPoint="false" DisableExtensionPoints="true"/>
        </AppConfig>
    </root>
    

Si aún no lo ha hecho, es una buena idea descargar y usar las líneas base de Seguridad de Windows para completar la personalización de protección contra vulnerabilidades de seguridad.

Sugerencia

¿Desea obtener más información? Engage con la comunidad de seguridad de Microsoft en nuestra comunidad tecnológica: Microsoft Defender para punto de conexión Tech Community.