Windows Security Controls
Last updated
Last updated
Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Usa Trickest per costruire e automatizzare flussi di lavoro alimentati dagli strumenti comunitari più avanzati al mondo. Accedi Oggi:
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 quali file/estensioni sono nella blacklist/whitelist:
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
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.
I comuni binaries "LOLBAS's" possono essere utili per bypassare AppLocker.
Regole scritte male possono 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 bloccare l'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 di 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.
Le credenziali locali sono presenti in questo file, le password sono hashate.
Le credenziali (hashate) sono salvate nella memoria di questo sottosistema per motivi di Single Sign-On. LSA amministra 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.
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...)
È il database dell'Active Directory. È presente solo nei Controller di Dominio.
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.
Per controllare lo stato di Defender puoi eseguire il cmdlet PS Get-MpComputerStatus
(controlla il valore di RealTimeProtectionEnabled
per sapere se è attivo):
Per enumerarlo potresti anche eseguire:
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 in 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, semplicemente cambiando la password del proprietario e accedendo 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 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
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.
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 never expire" 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 ai 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'.
Puoi leggere questa password con GMSAPasswordReader:
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.
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, è possibile leggere le password degli amministratori locali.
LAPSPowerShell 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.
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.
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.
Per impostazione predefinita è impostata su riservata. I principali modi per bypassare questa politica:
More can be found here
È 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.
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
User Account Control (UAC) è una funzionalità che abilita un messaggio di consenso per attività elevate.
UAC - User Account ControlUsa Trickest per costruire e automatizzare facilmente i flussi di lavoro alimentati dagli strumenti comunitari più avanzati al mondo. Accedi oggi:
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)