
# HardeningKitty – Prüft und härtet Ihre Windows-Konfiguration
Dies ist die stabile Version von HardeningKitty aus dem Windows Hardening Project von Michael Schneider. Die stabile Version von HardeningKitty ist mit dem Code-Signing-Zertifikat der scip AG signiert. Da es sich um die stabile Version handelt, akzeptieren wir in diesem Repository keine Pull-Requests. Bitte senden Sie diese an das Entwicklungs-Repository.
HardeningKitty unterstützt das Härten von Windows-Systemen. Die Konfiguration des Systems wird mithilfe einer Finding-Liste abgerufen und bewertet. Darüber hinaus kann das System gemäß vordefinierten Werten gehärtet werden. HardeningKitty liest Einstellungen aus der Registrierung und verwendet andere Module, um Konfigurationen außerhalb der Registrierung zu lesen.
Das Skript wurde für englischsprachige Systeme entwickelt. Es ist möglich, dass die Analyse in anderen Sprachen fehlerhaft ist. Bitte erstellen Sie ein Issue, falls dies auftritt.
Führen Sie das Skript mit Administratorrechten aus, um auf Maschineneinstellungen zuzugreifen. Für die Benutzereinstellungen ist es besser, sie mit einem normalen Benutzerkonto auszuführen. Idealerweise wird dieses Konto für die tägliche Arbeit verwendet.
Laden Sie HardeningKitty herunter und kopieren Sie es auf das Zielsystem (Skript und Listen). Anschließend kann HardeningKitty importiert und ausgeführt werden:```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.
## How To Install
Erstellen Sie zuerst das Verzeichnis *HardeningKitty* und für jede Version ein Unterverzeichnis wie *0.9.3* in einem Pfad, der in der Umgebungsvariablen *PSModulePath* aufgeführt ist.
Kopieren Sie das Modul *HardeningKitty.psm1*, *HardeningKitty.psd1* und das Verzeichnis *lists* in dieses neue Verzeichnis.```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
Weitere Informationen finden Sie im Artikel Installieren eines PowerShell-Moduls von Microsoft.
Mit dem folgenden Skript können Sie das neueste Release von HardeningKitty herunterladen und installieren.```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
## Beispiele
### Audit
Der Standardmodus ist _Audit_. HardeningKitty führt ein Audit durch, speichert die Ergebnisse in einer CSV-Datei und erstellt eine Protokolldatei. Die Dateien werden automatisch benannt und erhalten einen Zeitstempel. Mit den Parametern _ReportFile_ oder _LogFile_ ist es auch möglich, einen eigenen Namen und Pfad festzulegen.
Der Parameter _Filter_ kann verwendet werden, um die Härtungsliste zu filtern. Dafür muss die PowerShell-ScriptBlock-Syntax verwendet werden, zum Beispiel `{ $_.ID -eq 4505 }`. Die folgenden Elemente sind zum Filtern nützlich: ID, Kategorie, Name, Methode und Schweregrad.```powershell
Invoke-HardeningKitty -Mode Audit -Log -Report
HardeningKitty kann mit einer bestimmten Liste ausgeführt werden, die über den Parameter FileFindingList definiert wird. Wenn HardeningKitty mehrmals auf demselben System ausgeführt wird, kann es nützlich sein, die Maschineninformationen auszublenden. Zu diesem Zweck wird der Parameter SkipMachineInformation verwendet.```powershell Invoke-HardeningKitty -FileFindingList .\lists\finding_list_0x6d69636b_user.csv -SkipMachineInformation
HardeningKitty verwendet die Standardliste und prüft nur Tests mit dem Schweregrad Medium.```powershell
Invoke-HardeningKitty -Filter { $_.Severity -eq "Medium" }
Der Modus config ruft alle aktuellen Einstellungen eines Systems ab. Wenn eine Einstellung nicht konfiguriert wurde, verwendet HardeningKitty einen in der Finding-Liste gespeicherten Standardwert. Dieser Modus kann mit anderen Funktionen kombiniert werden, beispielsweise um ein Backup zu erstellen.
HardeningKitty ruft die aktuellen Einstellungen ab und speichert sie in einem Bericht:```powershell Invoke-HardeningKitty -Mode Config -Report -ReportFile C:\tmp\my_hardeningkitty_report.csv
### Backup
Backups sind wichtig. Wirklich wichtig. Deshalb verfügt HardeningKitty auch über eine Funktion, um die aktuelle Konfiguration abzurufen und in einer Form zu speichern, die teilweise wiederhergestellt werden kann.