
HardeningKitty - Controlla e indurisce la configurazione di Windows
Questa è la versione stabile di HardeningKitty del Windows Hardening Project di Michael Schneider. La versione stabile di HardeningKitty è firmata con il certificato di firma del codice di scip AG. Poiché questa è la versione stabile, non accettiamo pull request in questo repository; inviatele al repository di sviluppo.
HardeningKitty supporta l'hardening di un sistema Windows. La configurazione del sistema viene recuperata e valutata utilizzando un elenco di findings. Inoltre, il sistema può essere indurito secondo valori predefiniti. HardeningKitty legge le impostazioni dal registro di sistema e utilizza altri moduli per leggere le configurazioni al di fuori del registro.
Lo script è stato sviluppato per sistemi in inglese. È possibile che in altre lingue l'analisi risulti errata. Se ciò accade, si prega di creare una issue.
Eseguire lo script con privilegi amministrativi per accedere alle impostazioni della macchina. Per le impostazioni utente è meglio eseguirlo con un account utente normale. Idealmente, l'account utente viene utilizzato per il lavoro quotidiano.
Scaricare HardeningKitty e copiarlo sul sistema di destinazione (script ed elenchi). Quindi HardeningKitty può essere importato ed eseguito:```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.
## Come Installare
Prima crea la directory *HardeningKitty* e per ogni versione una sottodirectory come *0.9.3* in un percorso elencato nella variabile d'ambiente *PSModulePath*.
Copia il modulo *HardeningKitty.psm1*, *HardeningKitty.psd1* e la directory *lists* in questa nuova directory.```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
Per maggiori informazioni, consulta l'articolo di Microsoft Installazione di un modulo PowerShell.
Puoi usare lo script seguente per scaricare e installare l'ultima versione di 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
## Esempi
### Audit
La modalità predefinita è _audit_. HardeningKitty esegue un audit, salva i risultati in un file CSV e crea un file di log. I file vengono nominati automaticamente e ricevono un timestamp. Utilizzando i parametri _ReportFile_ o _LogFile_, è anche possibile assegnare un nome e un percorso personalizzati.
Il parametro _Filter_ può essere utilizzato per filtrare l'elenco di hardening. A tale scopo deve essere usata la sintassi ScriptBlock di PowerShell, ad esempio `{ $_.ID -eq 4505 }`. I seguenti elementi sono utili per il filtraggio: ID, Category, Name, Method e Severity.```powershell
Invoke-HardeningKitty -Mode Audit -Log -Report
HardeningKitty può essere eseguito con un elenco specifico definito dal parametro FileFindingList. Se HardeningKitty viene eseguito più volte sullo stesso sistema, può essere utile nascondere le informazioni sulla macchina. Il parametro SkipMachineInformation viene utilizzato a questo scopo.```powershell Invoke-HardeningKitty -FileFindingList .\lists\finding_list_0x6d69636b_user.csv -SkipMachineInformation
HardeningKitty utilizza la lista predefinita e controlla solo i test con gravità Media.```powershell
Invoke-HardeningKitty -Filter { $_.Severity -eq "Medium" }
La modalità config recupera tutte le impostazioni correnti di un sistema. Se un'impostazione non è stata configurata, HardeningKitty utilizzerà un valore predefinito memorizzato nell'elenco dei risultati. Questa modalità può essere combinata con altre funzioni, ad esempio per creare un backup.
HardeningKitty recupera le impostazioni correnti e le salva in un report:```powershell Invoke-HardeningKitty -Mode Config -Report -ReportFile C:\tmp\my_hardeningkitty_report.csv
### Backup
I backup sono importanti. Davvero importanti. Per questo, HardeningKitty dispone anche di una funzione per recuperare la configurazione corrente e salvarla in una forma che può essere parzialmente ripristinata.
**Disclaimer:** HardeningKitty cerca di ripristinare la configurazione originale. Funziona abbastanza bene con le chiavi di registro e Hardening Kitty fa davvero del suo meglio. Ma la funzione di backup non è uno snapshot e non sostituisce un vero backup di sistema. Non è possibile ripristinare il sistema 1:1 con il solo HardeningKitty dopo HailMary. Se questo è un requisito, crea un'immagine o un backup di sistema e ripristinalo.