Actualizar certificados raíz

Actualizar certificados raíz

A partir de certificados válidos de un equipo con Windows 10, podemos generar un fichero que contenga todos ellos, ejecutaremos el comando:

certutil.exe -generateSSTFromWU roots.sst

El archivo generado roots.sst contiene todos los certificados raíz del equipo, incluye también los caducados.

Descargamos la utilidad rootsupd.exe de Microsoft, aunque ya no este disponible en la web oficial, podemos encontrarla en la web de Karsperky o alternativamente aquí.

En el nuevo equipo, ejecutamos la utilidad para incorporar los certificados raíz:

rootsupd.exe roots.sst

Estos nos servirá en varios escenarios, desde preparar equipos nuevos, pasando por distribuir mediante Powershell o GPO, hasta poder seguir usando Windows XP con ciertos servicios.

Debemos tener cuidado en los escenarios en los que utilizamos este tipo de utilidad, se han reportado vulnerabilidades previas; bajo Windows 10 podemos optar por los comandos Import-Certificate de PowerShell

Programas de inicio en Windows 10

En ocasiones algunos programas o malware se resisten a desaparecer de la pestaña «Inicio» del administrador de tareas, tienen donde esconderse.
Deberemos revisar el el registro de Windows (regedit.exe) las siguientes rutas:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

HKEY_CURRENT_USER\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run

Y en el explorador de ficheros:
%ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup
%Appdata%\Microsoft\Windows\Start Menu\Programs\Startup




Identificar \Device\Harddisk# en Windows

Algunos de los registros de eventos de Windows utilizan identificadores internos diferentes, para conocer la relación de posible nombres del objeto al que se refieren:

Podemos utilizar la utilidad WinObj de Sysinternals para obtener la relación, desde la carpeta «Device»:

O desde la carpeta «GLOBAL??» ordenando por «Symlink» hasta llegar a los dispositivos de disco duro en «\Device\Harddisk…»

Mediante Powershell, donde el DeviceID corresponde con HardDisk#

Get-PhysicalDisk | Select -Prop DeviceId,FriendlyName,SerialNumber

En el registro de Windows dentro la clave:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\disk\Enum

Mediante el listado de drivers instalados:

wmic /output:c:\drivers.txt path Win32_PnPSignedDriver

 

Activar escritorio remoto mediante Powershell

Por defecto la conexión por escritorio remoto aparece deshabilitada en los equipos con Windows Pro, en una red de dominio es posible establecer mediante políticas de grupo los permisos necesarios:

– Configuración de Equipo \ Directivas \ Plantillas Administrativas
— Componentes de Windows \ Servicios de escritorio remoto \ Host de sesión de Escritorio remoto \ Conexiones \ Permitir que los usuarios se conecten de forma remota mediante Servicios de Escritorio Remoto

— Red \ Conexiones de red \ Firewall de Windows \ Perfil de dominio \ Firewall de Windows: permitir excepciones de Escritorio remoto entrantes

Igualmente podemos echar mano de un Script para powershell escrito por Sitaram Pamarthi en 2013, que mediante WMI nos facilita acciones puntuales:

[cmdletbinding()]
param(
	[parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
	[string[]]$ComputerName = $env:computername,
	[ValidateScript({Test-Path $_})]
	[string]$OutFolder = "c:\"
)

begin {
$SuccessComps = Join-Path $OutFolder "Successcomps.txt"
$FailedComps = Join-Path $OutFolder "FailedComps.txt"
}

process {
	foreach($Computer in $ComputerName) {

		try {
			$RDP = Get-WmiObject -Class Win32_TerminalServiceSetting `
								-Namespace root\CIMV2\TerminalServices `
								-Computer $Computer `
								-Authentication 6 `
								-ErrorAction Stop
								
		} catch {
			Write-Host "$Computer : WMIQueryFailed"
			"$Computer : WMIQueryFailed" | Out-File -FilePath $FailedComps -Append
			continue
		}
		
		if($RDP.AllowTSConnections -eq 1) {
			Write-Host "$Computer : RDP Already Enabled"
			"$Computer : RDP Already Enabled" | Out-File -FilePath $SuccessComps -Append
			continue
		} else {
			try {
				$result = $RDP.SetAllowTsConnections(1,1)
				if($result.ReturnValue -eq 0) {
					Write-Host "$Computer : Enabled RDP Successfully"
					"$Computer : RDP Enabled Successfully" | Out-File -FilePath $SuccessComps -Append
				} else {
					Write-Host "$Computer : Failed to enabled RDP"
					"$Computer : Failed to enable RDP" | Out-File -FilePath $FailedComps -Append

				}
			
			} catch {
				Write-Host "$computer : Failed to enabled RDP"
				"$Computer : Failed to enable RDP" | Out-File -FilePath $FailedComps -Append
			}
		}
	}

}

end {}

Su utilización para un equipo concreto:

.\Enable-RDPAccess.ps1 -ComputerName <computer name>

 Si obtenemos errores al ejectuarlo, debemos comprobar que tenemos acceso mediante WMI o activarlo mediante GPO:

– Configuración del equipo \ Directivas \ Configuración de Windows \ Configuración de seguridad \ Firewall de Windows con seguridad avanzada \ Reglas de Entrada