
HardeningKitty - Verifica e endurece a sua configuração do Windows
Esta é a versão estável do HardeningKitty do Windows Hardening Project por Michael Schneider. A versão estável do HardeningKitty é assinada com o certificado de assinatura de código da scip AG. Como esta é a versão estável, não aceitamos pull requests neste repositório; envie-os para o repositório de desenvolvimento.
O HardeningKitty suporta hardening de um sistema Windows. A configuração do sistema é obtida e avaliada usando uma lista de descobertas. Além disso, o sistema pode ser endurecido de acordo com valores predefinidos. O HardeningKitty lê as configurações do registro e usa outros módulos para ler configurações fora do registro.
O script foi desenvolvido para sistemas em inglês. É possível que em outros idiomas a análise seja incorreta. Por favor, crie uma issue se isso ocorrer.
Execute o script com privilégios administrativos para acessar as configurações da máquina. Para as configurações do usuário, é melhor executá-las com uma conta de usuário normal. Idealmente, a conta de usuário é usada para o trabalho diário.
Baixe o HardeningKitty e copie-o para o sistema de destino (script e listas). Em seguida, o HardeningKitty pode ser importado e executado:```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.
## Como Instalar
Primeiro crie o diretório *HardeningKitty* e, para cada versão, um subdiretório como *0.9.3* em um caminho listado na variável de ambiente *PSModulePath*.
Copie o módulo *HardeningKitty.psm1*, *HardeningKitty.psd1* e o diretório *lists* para este novo diretório.```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 obter mais informações, consulte o artigo da Microsoft Instalando um Módulo PowerShell.
Você pode usar o script abaixo para baixar e instalar a última versão do 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
## Exemplos
### Auditoria
O modo padrão é _audit_. O HardeningKitty executa uma auditoria, salva os resultados em um arquivo CSV e cria um arquivo de log. Os arquivos são nomeados automaticamente e recebem um timestamp. Usando os parâmetros _ReportFile_ ou _LogFile_, também é possível atribuir seu próprio nome e caminho.
O parâmetro _Filter_ pode ser usado para filtrar a lista de hardening. Para isso, deve-se usar a sintaxe do ScriptBlock do PowerShell, por exemplo `{ $_.ID -eq 4505 }`. Os seguintes elementos são úteis para filtragem: ID, Categoria, Nome, Método e Severidade.```powershell
Invoke-HardeningKitty -Mode Audit -Log -Report
HardeningKitty pode ser executado com uma lista específica definida pelo parâmetro FileFindingList. Se o HardeningKitty for executado várias vezes no mesmo sistema, pode ser útil ocultar as informações da máquina. O parâmetro SkipMachineInformation é usado para esse fim.```powershell Invoke-HardeningKitty -FileFindingList .\lists\finding_list_0x6d69636b_user.csv -SkipMachineInformation
HardeningKitty usa a lista padrão e verifica apenas testes com severidade Medium.```powershell
Invoke-HardeningKitty -Filter { $_.Severity -eq "Medium" }
O modo config recupera todas as definições atuais de um sistema. Se uma definição não tiver sido configurada, o HardeningKitty utilizará um valor predefinido armazenado na lista de descobertas. Este modo pode ser combinado com outras funções, por exemplo, para criar uma cópia de segurança.
O HardeningKitty obtém as definições atuais e armazena-as num relatório:```powershell Invoke-HardeningKitty -Mode Config -Report -ReportFile C:\tmp\my_hardeningkitty_report.csv
### Backup
Backups são importantes. Muito importantes. Portanto, o HardeningKitty também possui uma função para recuperar a configuração atual e salvá-la em uma forma que pode ser parcialmente restaurada.
**Aviso:** O HardeningKitty tenta restaurar a configuração original. Isso funciona muito bem com chaves de registro e o Hardening Kitty realmente faz o seu melhor. Mas a função de backup não é um snapshot e não substitui um backup real do sistema. Não é possível restaurar o sistema 1:1 somente com o HardeningKitty após o HailMary. Se esse for um requisito, crie uma imagem ou backup do sistema e restaure-o.