
HardeningKitty - Comprueba y endurece tu configuración de Windows
Esta es la versión estable de HardeningKitty del Windows Hardening Project de Michael Schneider. La versión estable de HardeningKitty está firmada con el certificado de firma de código de scip AG. Dado que esta es la versión estable, no aceptamos pull requests en este repositorio; por favor, envíalas al repositorio de desarrollo.
HardeningKitty soporta el endurecimiento de un sistema Windows. La configuración del sistema se obtiene y evalúa mediante una lista de hallazgos. Además, el sistema puede endurecerse según valores predefinidos. HardeningKitty lee los ajustes del registro y utiliza otros módulos para leer configuraciones fuera del registro.
El script fue desarrollado para sistemas en inglés. Es posible que en otros idiomas el análisis sea incorrecto. Por favor, crea un issue si esto ocurre.
Ejecuta el script con privilegios administrativos para acceder a la configuración del equipo. Para la configuración de usuario es mejor ejecutarlo con una cuenta de usuario normal. Idealmente, la cuenta de usuario se utiliza para el trabajo diario.
Descarga HardeningKitty y cópialo al sistema de destino (script y listas). A continuación, HardeningKitty se puede importar y ejecutar:```powershell PS C:\tmp> Import-Module .\HardeningKitty.psm1 PS C:\tmp> Invoke-HardeningKitty -EmojiSupport
=^._.^=
_( )/ HardeningKitty 0.9.0-1662273740
[*] 9/4/2022 8:54:12 AM - Starting HardeningKitty
[] 9/4/2022 8:54:12 AM - Getting user information [] Hostname: DESKTOP-DG83TOD [*] Domain: WORKGROUP
...
[] [] 9/4/2022 8:54:12 AM - Starting Category Account Policies [😺] ID 1103, Store passwords using reversible encryption, Result=0, Severity=Passed [😺] ID 1100, Account lockout threshold, Result=10, Severity=Passed [😺] ID 1101, Account lockout duration, Result=30, Severity=Passed
...
[*] 9/4/2022 8:54:12 AM - Starting Category User Rights Assignment [😿] ID 1200, Access this computer from the network, Result=BUILTIN\Administrators;BUILTIN\Users, Recommended=BUILTIN\Administrators, Severity=Medium
...
[*] 9/4/2022 8:54:14 AM - Starting Category Administrative Templates: Printer [🙀] ID 1764, Point and Print Restrictions: When installing drivers for a new connection (CVE-2021-34527), Result=1, Recommended=0, Severity=High [🙀] ID 1765, Point and Print Restrictions: When updating drivers for an existing connection (CVE-2021-34527), Result=2, Recommended=0, Severity=High
...
[*] 9/4/2022 8:54:19 AM - Starting Category MS Security Guide [😿] ID 2200, LSA Protection, Result=, Recommended=1, Severity=Medium [😼] ID 2201, Lsass.exe audit mode, Result=, Recommended=8, Severity=Low
...
[] 9/4/2022 8:54:25 AM - HardeningKitty is done [] 9/4/2022 8:54:25 AM - Your HardeningKitty score is: 4.82. HardeningKitty Statistics: Total checks: 325 - Passed: 213, Low: 33, Medium: 76, High: 3.
## Cómo instalar
Primero cree el directorio *HardeningKitty* y para cada versión un subdirectorio como *0.9.3* en una ruta que figure en la variable de entorno *PSModulePath*.
Copie el módulo *HardeningKitty.psm1*, *HardeningKitty.psd1* y el directorio *lists* a este nuevo directorio.```powershell
PS C:\tmp> $Version = "0.9.3"
PS C:\tmp> New-Item -Path $Env:ProgramFiles\WindowsPowerShell\Modules\HardeningKitty\$Version -ItemType Directory
PS C:\tmp> Copy-Item -Path .\HardeningKitty.psd1,.\HardeningKitty.psm1,.\lists\ -Destination $Env:ProgramFiles\WindowsPowerShell\Modules\HardeningKitty\$Version\ -Recurse
Para más información, consulte el artículo de Microsoft Instalación de un módulo de PowerShell.
Puede utilizar el script que se muestra a continuación para descargar e instalar la última versión de HardeningKitty.```powershell Function InstallHardeningKitty() { $Version = (((Invoke-WebRequest "https://api.github.com/repos/0x6d69636b/windows_hardening/releases/latest" -UseBasicParsing) | ConvertFrom-Json).Name).SubString(2) $HardeningKittyLatestVersionDownloadLink = ((Invoke-WebRequest "https://api.github.com/repos/0x6d69636b/windows_hardening/releases/latest" -UseBasicParsing) | ConvertFrom-Json).zipball_url $ProgressPreference = 'SilentlyContinue' Invoke-WebRequest $HardeningKittyLatestVersionDownloadLink -Out HardeningKitty$Version.zip Expand-Archive -Path ".\HardeningKitty$Version.zip" -Destination ".\HardeningKitty$Version" -Force $Folder = Get-ChildItem .\HardeningKitty$Version | Select-Object Name -ExpandProperty Name Move-Item ".\HardeningKitty$Version$Folder*" ".\HardeningKitty$Version" Remove-Item ".\HardeningKitty$Version$Folder" New-Item -Path $Env:ProgramFiles\WindowsPowerShell\Modules\HardeningKitty$Version -ItemType Directory Set-Location .\HardeningKitty$Version Copy-Item -Path .\HardeningKitty.psd1,.\HardeningKitty.psm1,.\lists\ -Destination $Env:ProgramFiles\WindowsPowerShell\Modules\HardeningKitty$Version\ -Recurse Import-Module "$Env:ProgramFiles\WindowsPowerShell\Modules\HardeningKitty$Version\HardeningKitty.psm1" } InstallHardeningKitty
## Ejemplos
### Auditoría
El modo predeterminado es _audit_. HardeningKitty realiza una auditoría, guarda los resultados en un archivo CSV y crea un archivo de registro. Los archivos se nombran automáticamente y reciben una marca de tiempo. Usando los parámetros _ReportFile_ o _LogFile_, también es posible asignar tu propio nombre y ruta.
El parámetro _Filter_ se puede utilizar para filtrar la lista de endurecimiento. Para ello se debe usar la sintaxis de ScriptBlock de PowerShell, por ejemplo `{ $_.ID -eq 4505 }`. Los siguientes elementos son útiles para filtrar: ID, Category, Name, Method y Severity.```powershell
Invoke-HardeningKitty -Mode Audit -Log -Report
HardeningKitty se puede ejecutar con una lista específica definida por el parámetro FileFindingList. Si HardeningKitty se ejecuta varias veces en el mismo sistema, puede ser útil ocultar la información de la máquina. El parámetro SkipMachineInformation se utiliza para este propósito.```powershell Invoke-HardeningKitty -FileFindingList .\lists\finding_list_0x6d69636b_user.csv -SkipMachineInformation
HardeningKitty usa la lista predeterminada y solo comprueba las pruebas con severidad Media.```powershell
Invoke-HardeningKitty -Filter { $_.Severity -eq "Medium" }
El modo config recupera todos los ajustes actuales de un sistema. Si un ajuste no ha sido configurado, HardeningKitty utilizará un valor por defecto almacenado en la lista de hallazgos. Este modo se puede combinar con otras funciones, por ejemplo, para crear una copia de seguridad.
HardeningKitty obtiene los ajustes actuales y los guarda en un informe:```powershell Invoke-HardeningKitty -Mode Config -Report -ReportFile C:\tmp\my_hardeningkitty_report.csv
### Copia de seguridad
Las copias de seguridad son importantes. Muy importantes. Por ello, HardeningKitty también dispone de una función para recuperar la configuración actual y guardarla en un formato que puede restaurarse parcialmente.
**Aviso:** HardeningKitty intenta restaurar la configuración original. Esto funciona bastante bien con las claves de registro, y Hardening Kitty realmente hace todo lo posible. Pero la función de copia de seguridad no es una instantánea y no sustituye a una copia de seguridad real del sistema. No es posible restaurar el sistema 1:1 solo con HardeningKitty después de HailMary. Si este es un requisito, cree una imagen o copia de seguridad del sistema y restáurela.