Windows Local Privilege Escalation
Miglior strumento per cercare vettori di escalation dei privilegi locali di Windows: WinPEAS
Teoria iniziale di Windows
Token di accesso
Se non sai cos'è un Token di accesso di Windows, leggi la seguente pagina prima di continuare:
pageAccess TokensACL - DACL/SACL/ACE
Controlla la seguente pagina per ulteriori informazioni su ACL - DACL/SACL/ACE:
pageACLs - DACLs/SACLs/ACEsLivelli di integrità
Se non sai cos'è un livello di integrità in Windows, dovresti leggere la seguente pagina prima di continuare:
pageIntegrity LevelsControlli di sicurezza di Windows
Ci sono diverse cose in Windows che potrebbero impedirti di enumerare il sistema, eseguire eseguibili o addirittura rilevare le tue attività. Dovresti leggere la seguente pagina ed enumerare tutti questi meccanismi di difesa prima di iniziare l'enumerazione dell'escalation dei privilegi:
pageWindows Security ControlsInformazioni di sistema
Enumerazione delle informazioni sulla versione
Controlla se la versione di Windows ha qualche vulnerabilità nota (controlla anche le patch applicate).
Versione Exploits
Questo sito è utile per cercare informazioni dettagliate sulle vulnerabilità di sicurezza di Microsoft. Questo database contiene più di 4.700 vulnerabilità di sicurezza, mostrando l'ampia superficie di attacco che un ambiente Windows presenta.
Sul sistema
post/windows/gather/enum_patches
post/multi/recon/local_exploit_suggester
winpeas (Winpeas ha watson integrato)
Localmente con informazioni di sistema
Repository Github degli exploits:
Ambiente
Ci sono credenziali/Informazioni sensibili salvate nelle variabili di ambiente?
Cronologia di PowerShell
File di trascrizione di PowerShell
Puoi imparare come attivare questa funzionalità su https://sid-500.com/2017/11/07/powershell-enabling-transcription-logging-by-using-group-policy/
Registrazione del modulo PowerShell
I dettagli delle esecuzioni della pipeline di PowerShell vengono registrati, includendo i comandi eseguiti, le invocazioni dei comandi e parti degli script. Tuttavia, potrebbe non essere catturato l'intero dettaglio dell'esecuzione e i risultati dell'output.
Per abilitare ciò, seguire le istruzioni nella sezione "File di trascrizione" della documentazione, optando per "Registrazione del modulo" invece di "Trascrizione di PowerShell".
Per visualizzare gli ultimi 15 eventi dai log di Powershell, puoi eseguire:
Registrazione dei blocchi di script di PowerShell
Viene catturato un registro completo dell'attività e del contenuto completo dell'esecuzione dello script, garantendo che ogni blocco di codice venga documentato durante l'esecuzione. Questo processo preserva un tracciato di audit completo di ciascuna attività, prezioso per le indagini forensi e l'analisi di comportamenti dannosi. Documentando tutta l'attività al momento dell'esecuzione, vengono fornite dettagliate informazioni sul processo.
I log degli eventi per il Blocco di script possono essere trovati all'interno del Visualizzatore eventi di Windows nel percorso: Log delle applicazioni e dei servizi > Microsoft > Windows > PowerShell > Operativo. Per visualizzare gli ultimi 20 eventi puoi utilizzare:
Impostazioni Internet
Unità
WSUS
È possibile compromettere il sistema se gli aggiornamenti non vengono richiesti utilizzando httpS ma http.
Si inizia controllando se la rete utilizza un aggiornamento WSUS non-SSL eseguendo quanto segue:
Se ricevi una risposta come:
E se HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer
è uguale a 1
.
Quindi, è sfruttabile. Se l'ultimo registro è uguale a 0, l'ingresso WSUS verrà ignorato.
Per sfruttare queste vulnerabilità è possibile utilizzare strumenti come: Wsuxploit, pyWSUS - Questi sono script di exploit armati di MiTM per iniettare aggiornamenti 'falsi' nel traffico WSUS non-SSL.
Leggi la ricerca qui:
WSUS CVE-2020-1013
Leggi il rapporto completo qui. Fondamentalmente, questa è la falla che sfrutta questo bug:
Se abbiamo il potere di modificare il nostro proxy utente locale e Windows Update utilizza il proxy configurato nelle impostazioni di Internet Explorer, abbiamo quindi il potere di eseguire PyWSUS localmente per intercettare il nostro stesso traffico e eseguire codice come utente elevato sul nostro asset.
Inoltre, poiché il servizio WSUS utilizza le impostazioni dell'utente corrente, utilizzerà anche il suo archivio certificati. Se generiamo un certificato autofirmato per il nome host WSUS e aggiungiamo questo certificato nell'archivio certificati dell'utente corrente, saremo in grado di intercettare sia il traffico WSUS HTTP che HTTPS. WSUS non utilizza meccanismi simili a HSTS per implementare una convalida di tipo trust-on-first-use sul certificato. Se il certificato presentato è fidato dall'utente e ha il nome host corretto, sarà accettato dal servizio.
È possibile sfruttare questa vulnerabilità utilizzando lo strumento WSUSpicious (una volta liberato).
KrbRelayUp
Esiste una vulnerabilità di escalation dei privilegi locali in ambienti Windows di dominio in condizioni specifiche. Queste condizioni includono ambienti in cui la firma LDAP non è imposta, gli utenti possiedono diritti personali che consentono loro di configurare la delega vincolata basata su risorse (RBCD) e la capacità per gli utenti di creare computer all'interno del dominio. È importante notare che questi requisiti sono soddisfatti utilizzando le impostazioni predefinite.
Trova lo exploit in https://github.com/Dec0ne/KrbRelayUp
Per ulteriori informazioni sul flusso dell'attacco consulta https://research.nccgroup.com/2019/08/20/kerberos-resource-based-constrained-delegation-when-an-image-change-leads-to-a-privilege-escalation/
AlwaysInstallElevated
Se questi 2 registri sono abilitati (il valore è 0x1), allora gli utenti di qualsiasi privilegio possono installare (eseguire) file *.msi
come NT AUTHORITY\SYSTEM.
Payload di Metasploit
Se hai una sessione di meterpreter, puoi automatizzare questa tecnica utilizzando il modulo exploit/windows/local/always_install_elevated
PowerUP
Utilizza il comando Write-UserAddMSI
da power-up per creare all'interno della directory corrente un binario Windows MSI per l'escalation dei privilegi. Questo script scrive un programma di installazione MSI precompilato che richiede l'aggiunta di un utente/gruppo (quindi avrai bisogno di accesso GUI):
Wrapper MSI
Leggi questo tutorial per imparare come creare un wrapper MSI utilizzando questi strumenti. Nota che puoi incapsulare un file ".bat" se desideri solo eseguire comandi da riga di comando
pageMSI WrapperCreare MSI con WIX
pageCreate MSI with WIXCreare MSI con Visual Studio
Genera con Cobalt Strike o Metasploit un nuovo payload TCP EXE di Windows in
C:\privesc\beacon.exe
Apri Visual Studio, seleziona Crea un nuovo progetto e digita "installer" nella casella di ricerca. Seleziona il progetto Setup Wizard e fai clic su Avanti.
Dai un nome al progetto, come AlwaysPrivesc, utilizza
C:\privesc
come posizione, seleziona posiziona soluzione e progetto nella stessa directory, e fai clic su Crea.Continua a fare clic su Avanti fino a quando arrivi al passaggio 3 di 4 (scegli i file da includere). Fai clic su Aggiungi e seleziona il payload Beacon appena generato. Quindi fai clic su Fine.
Evidenzia il progetto AlwaysPrivesc nell'Esplora soluzioni e nelle Proprietà, cambia TargetPlatform da x86 a x64.
Ci sono altre proprietà che puoi modificare, come Autore e Produttore che possono rendere l'applicazione installata più legittima.
Fai clic con il pulsante destro del mouse sul progetto e seleziona Visualizza > Azioni personalizzate.
Fai clic con il pulsante destro del mouse su Installa e seleziona Aggiungi azione personalizzata.
Fai doppio clic su Cartella applicazioni, seleziona il tuo file beacon.exe e fai clic su OK. Questo garantirà che il payload del beacon venga eseguito non appena viene avviato l'installatore.
Nelle Proprietà azione personalizzata, cambia Run64Bit in True.
Infine, compilalo.
Se compare l'avviso
Il file 'beacon-tcp.exe' che punta a 'x64' non è compatibile con la piattaforma di destinazione del progetto 'x86'
, assicurati di impostare la piattaforma su x64.
Installazione MSI
Per eseguire l'installazione del file .msi
dannoso in background:
Per sfruttare questa vulnerabilità puoi utilizzare: exploit/windows/local/always_install_elevated
Antivirus e Rilevatori
Impostazioni di Audit
Queste impostazioni decidono cosa viene registrato, quindi dovresti prestare attenzione
WEF
Windows Event Forwarding, è interessante sapere dove vengono inviati i log
LAPS
LAPS è progettato per la gestione delle password degli amministratori locali, garantendo che ogni password sia unica, randomizzata e regolarmente aggiornata sui computer connessi a un dominio. Queste password sono memorizzate in modo sicuro all'interno di Active Directory e possono essere accessibili solo dagli utenti a cui sono state concesse le autorizzazioni sufficienti tramite ACL, consentendo loro di visualizzare le password degli amministratori locali se autorizzati.
pageLAPSWDigest
Se attivo, le password in testo normale sono memorizzate in LSASS (Local Security Authority Subsystem Service). Ulteriori informazioni su WDigest in questa pagina.
Protezione LSA
A partire da Windows 8.1, Microsoft ha introdotto una protezione avanzata per l'Autorità di Sicurezza Locale (LSA) per bloccare i tentativi da parte di processi non attendibili di leggere la sua memoria o iniettare codice, aumentando ulteriormente la sicurezza del sistema. Maggiori informazioni sulla Protezione LSA qui.
Protezione delle credenziali
Credential Guard è stato introdotto in Windows 10. Il suo scopo è proteggere le credenziali memorizzate su un dispositivo da minacce come gli attacchi pass-the-hash.| Ulteriori informazioni su Credential Guard qui.
Credenziali memorizzate
Le credenziali di dominio vengono autenticate dall'Autorità di sicurezza locale (LSA) e utilizzate dai componenti del sistema operativo. Quando i dati di accesso di un utente vengono autenticati da un pacchetto di sicurezza registrato, di solito vengono stabilite le credenziali di dominio per l'utente. Ulteriori informazioni sulle credenziali memorizzate qui.
Utenti e Gruppi
Enumerare Utenti e Gruppi
Dovresti verificare se alcuni dei gruppi a cui appartieni hanno permessi interessanti.
Gruppi privilegiati
Se appartieni a qualche gruppo privilegiato potresti essere in grado di escalare i privilegi. Scopri di più sui gruppi privilegiati e su come abusarne per escalare i privilegi qui:
pagePrivileged GroupsManipolazione del token
Approfondisci cosa sia un token in questa pagina: Token di Windows. Consulta la seguente pagina per scoprire informazioni sui token interessanti e su come abusarne:
pageAbusing TokensUtenti loggati / Sessioni
Cartelle home
Politica delle password
Ottenere il contenuto degli appunti
Processi in esecuzione
Permessi dei File e delle Cartelle
Prima di tutto, elencare i processi controlla la presenza di password all'interno della riga di comando del processo. Verifica se puoi sovrascrivere qualche binario in esecuzione o se hai le autorizzazioni di scrittura della cartella del binario per sfruttare possibili attacchi di DLL Hijacking:
Sempre controlla la presenza di debugger electron/cef/chromium in esecuzione, potresti sfruttarlo per escalare i privilegi.
Verifica dei permessi dei binari dei processi
Verifica dei permessi delle cartelle dei binari dei processi (DLL Hijacking)
Estrazione delle password in memoria
È possibile creare un dump di memoria di un processo in esecuzione utilizzando procdump di sysinternals. Servizi come FTP hanno le credenziali in chiaro in memoria, prova a fare il dump della memoria e leggere le credenziali.
Applicazioni GUI non sicure
Le applicazioni che vengono eseguite come SYSTEM potrebbero consentire a un utente di avviare un prompt dei comandi o navigare nelle directory.
Esempio: "Guida e supporto tecnico di Windows" (Windows + F1), cercare "prompt dei comandi", fare clic su "Fare clic per aprire il prompt dei comandi"
Servizi
Ottenere un elenco dei servizi:
Autorizzazioni
Puoi utilizzare sc per ottenere informazioni su un servizio
È consigliato avere il binario accesschk da Sysinternals per verificare il livello di privilegio richiesto per ciascun servizio.
È consigliato verificare se "Utenti autenticati" possono modificare qualsiasi servizio:
È possibile scaricare accesschk.exe per XP qui
Abilita il servizio
Se si verifica questo errore (ad esempio con SSDPSRV):
È stato riscontrato l'errore di sistema 1058. Il servizio non può essere avviato, sia perché è disabilitato sia perché non ha dispositivi abilitati associati ad esso.
È possibile abilitarlo utilizzando
Tenere presente che il servizio upnphost dipende da SSDPSRV per funzionare (per XP SP1)
Un altro workaround di questo problema è eseguire:
Modifica del percorso binario del servizio
Nel caso in cui il gruppo "Utenti autenticati" possieda SERVICE_ALL_ACCESS su un servizio, è possibile modificare l'eseguibile binario del servizio. Per modificare ed eseguire sc:
Riavvio del servizio
I privilegi possono essere elevati attraverso varie autorizzazioni:
SERVICE_CHANGE_CONFIG: Consente la riconfigurazione del binario del servizio.
WRITE_DAC: Abilita la riconfigurazione delle autorizzazioni, portando alla capacità di modificare le configurazioni del servizio.
WRITE_OWNER: Consente l'acquisizione della proprietà e la riconfigurazione delle autorizzazioni.
GENERIC_WRITE: Eredita la capacità di modificare le configurazioni del servizio.
GENERIC_ALL: Eredita anche la capacità di modificare le configurazioni del servizio.
Per la rilevazione e lo sfruttamento di questa vulnerabilità, può essere utilizzato l'exploit/windows/local/service_permissions.
Autorizzazioni deboli dei binari dei servizi
Verifica se puoi modificare il binario eseguito da un servizio o se hai autorizzazioni di scrittura sulla cartella in cui si trova il binario (DLL Hijacking). Puoi ottenere ogni binario eseguito da un servizio utilizzando wmic (non in system32) e verificare le tue autorizzazioni utilizzando icacls:
Puoi anche utilizzare sc e icacls:
Autorizzazioni di modifica del registro dei servizi
Dovresti verificare se puoi modificare qualche registro dei servizi. Puoi verificare le tue autorizzazioni su un registro dei servizi facendo:
Deve essere verificato se Utenti autenticati o NT AUTHORITY\INTERACTIVE possiedono autorizzazioni Controllo completo
. In tal caso, il binario eseguito dal servizio può essere modificato.
Per cambiare il percorso del binario eseguito:
Permessi di AppendData/AddSubdirectory nel registro dei servizi
Se hai questo permesso su un registro, significa che puoi creare sotto-registri da questo. Nel caso dei servizi di Windows, questo è sufficiente per eseguire codice arbitrario:
pageAppendData/AddSubdirectory permission over service registryPercorsi di servizio non quotati
Se il percorso di un eseguibile non è tra virgolette, Windows cercherà di eseguire ogni parte prima di uno spazio.
Ad esempio, per il percorso C:\Program Files\Some Folder\Service.exe Windows cercherà di eseguire:
Elencare tutti i percorsi dei servizi non quotati, escludendo quelli appartenenti ai servizi integrati di Windows:
Puoi rilevare e sfruttare questa vulnerabilità con metasploit: exploit/windows/local/trusted\_service\_path
Puoi creare manualmente un binario di servizio con metasploit:
Azioni di Ripristino
Windows permette agli utenti di specificare azioni da intraprendere in caso di errore di un servizio. Questa funzionalità può essere configurata per puntare verso un file binario. Se questo file binario è sostituibile, potrebbe essere possibile l'escalation dei privilegi. Ulteriori dettagli possono essere trovati nella documentazione ufficiale.
Applicazioni
Applicazioni Installate
Controlla le autorizzazioni dei file binari (potresti sovrascriverne uno e ottenere privilegi elevati) e delle cartelle (DLL Hijacking).
Permessi di Scrittura
Verifica se puoi modificare alcuni file di configurazione per leggere alcuni file speciali o se puoi modificare qualche file binario che verrà eseguito da un account Amministratore (schedtasks).
Un modo per trovare permessi deboli su cartelle/file nel sistema è:
Esegui all'avvio
Controlla se puoi sovrascrivere qualche registro o binario che verrà eseguito da un utente diverso. Leggi la pagina seguente per saperne di più su interessanti posizioni di autorun per l'escalation dei privilegi:
pagePrivilege Escalation with AutorunsDriver
Cerca possibili driver di terze parti strani/vulnerabili.
PATH DLL Hijacking
Se hai permessi di scrittura all'interno di una cartella presente in PATH, potresti essere in grado di dirottare una DLL caricata da un processo e escalare i privilegi.
Controlla i permessi di tutte le cartelle all'interno di PATH:
Per ulteriori informazioni su come abusare di questo controllo:
pageWritable Sys Path +Dll Hijacking PrivescRete
Condivisioni
file hosts
Controllare la presenza di altri computer noti codificati nel file hosts
Interfacce di Rete e DNS
Porte aperte
Controllare i servizi restrittivi dall'esterno
Tabella di routing
Tabella ARP
Regole del Firewall
Controlla questa pagina per i comandi relativi al Firewall (elencare le regole, creare regole, disattivare, disattivare...)
Altri comandi per l'enumerazione di rete qui
Sottosistema Windows per Linux (WSL)
Il binario bash.exe
può essere trovato anche in C:\Windows\WinSxS\amd64_microsoft-windows-lxssbash_[...]\bash.exe
Se ottieni l'accesso come utente root, puoi metterti in ascolto su qualsiasi porta (la prima volta che utilizzi nc.exe
per metterti in ascolto su una porta, ti verrà chiesto tramite GUI se nc
deve essere consentito dal firewall).
Per avviare facilmente bash come root, puoi provare --default-user root
Puoi esplorare il filesystem di WSL
nella cartella C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\
Credenziali di Windows
Credenziali di Winlogon
Gestore delle credenziali / Vault di Windows
Da https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault Il Vault di Windows memorizza le credenziali degli utenti per server, siti web e altri programmi a cui Windows può accedere automaticamente. A prima vista, potrebbe sembrare che gli utenti possano memorizzare le loro credenziali di Facebook, Twitter, Gmail, ecc., in modo che possano accedere automaticamente tramite browser. Ma non è così.
Il Vault di Windows memorizza le credenziali a cui Windows può accedere automaticamente, il che significa che qualsiasi applicazione Windows che necessita di credenziali per accedere a una risorsa (server o un sito web) **può utilizzare questo Gestore delle credenziali e il Vault di Windows e utilizzare le credenziali fornite invece che gli utenti inseriscano nome utente e password ogni volta.
A meno che le applicazioni interagiscano con il Gestore delle credenziali, non credo sia possibile per loro utilizzare le credenziali per una determinata risorsa. Quindi, se la tua applicazione vuole utilizzare il vault, dovrebbe in qualche modo comunicare con il gestore delle credenziali e richiedere le credenziali per quella risorsa dalla vault di archiviazione predefinita.
Usa cmdkey
per elencare le credenziali memorizzate sulla macchina.
Quindi puoi utilizzare runas
con l'opzione /savecred
per utilizzare le credenziali salvate. L'esempio seguente chiama un binario remoto tramite una condivisione SMB.
Utilizzando runas
con un insieme fornito di credenziali.
Nota che mimikatz, lazagne, credentialfileview, VaultPasswordView, o dal modulo Empire Powershells.
DPAPI
Il Data Protection API (DPAPI) fornisce un metodo per la crittografia simmetrica dei dati, utilizzato principalmente all'interno del sistema operativo Windows per la crittografia simmetrica delle chiavi private asimmetriche. Questa crittografia sfrutta un segreto dell'utente o del sistema per contribuire significativamente all'entropia.
DPAPI consente la crittografia delle chiavi attraverso una chiave simmetrica derivata dai segreti di accesso dell'utente. Nei casi di crittografia di sistema, utilizza i segreti di autenticazione del dominio del sistema.
Le chiavi RSA dell'utente crittografate, utilizzando DPAPI, sono memorizzate nella directory %APPDATA%\Microsoft\Protect\{SID}
, dove {SID}
rappresenta l'Identificatore di Sicurezza dell'utente. La chiave DPAPI, collocata insieme alla chiave principale che protegge le chiavi private dell'utente nello stesso file, di solito consiste in 64 byte di dati casuali. (È importante notare che l'accesso a questa directory è limitato, impedendo di elencarne i contenuti tramite il comando dir
in CMD, anche se può essere elencato tramite PowerShell).
Puoi utilizzare il modulo mimikatz dpapi::masterkey
con gli argomenti appropriati (/pvk
o /rpc
) per decifrarlo.
I file delle credenziali protetti dalla password principale sono di solito situati in:
Puoi utilizzare il modulo mimikatz dpapi::cred
con il relativo /masterkey
per decrittografare.
Puoi estrarre molti DPAPI masterkey dalla memoria con il modulo sekurlsa::dpapi
(se sei root).
Credenziali di PowerShell
Le credenziali di PowerShell sono spesso utilizzate per scripting e attività di automazione come modo per memorizzare comodamente credenziali crittografate. Le credenziali sono protette utilizzando DPAPI, il che significa tipicamente che possono essere decrittografate solo dallo stesso utente sullo stesso computer su cui sono state create.
Per decrittografare delle credenziali di PS dal file che le contiene, puoi fare:
Wifi
Wifi
Connessioni RDP Salvate
Puoi trovarle su HKEY_USERS\<SID>\Software\Microsoft\Terminal Server Client\Servers\
e in HKCU\Software\Microsoft\Terminal Server Client\Servers\
Comandi Eseguiti Recentemente
Gestore delle credenziali del Desktop remoto
Usa il modulo Mimikatz dpapi::rdg
con il relativo /masterkey
per decrittare qualsiasi file .rdg.
Puoi estrarre molti masterkey DPAPI dalla memoria con il modulo Mimikatz sekurlsa::dpapi
.
Note adesive
Le persone spesso utilizzano l'applicazione StickyNotes su workstation Windows per salvare password e altre informazioni, senza rendersi conto che si tratta di un file di database. Questo file si trova in C:\Users\<user>\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite
ed è sempre utile cercarlo ed esaminarlo.
AppCmd.exe
Nota che per recuperare le password da AppCmd.exe è necessario essere Amministratore ed eseguire con un livello di integrità elevato.
AppCmd.exe si trova nella directory %systemroot%\system32\inetsrv\
.
Se questo file esiste, è possibile che siano state configurate alcune credenziali e possano essere recuperate.
Questo codice è stato estratto da PowerUP:
SCClient / SCCM
Verifica se C:\Windows\CCM\SCClient.exe
esiste.
Gli installatori vengono eseguiti con privilegi di SYSTEM, molti sono vulnerabili al DLL Sideloading (Informazioni da https://github.com/enjoiz/Privesc).
File e Registro (Credenziali)
Credenziali Putty
Chiavi host SSH di Putty
Chiavi SSH nel registro
Le chiavi private SSH possono essere memorizzate all'interno della chiave del registro HKCU\Software\OpenSSH\Agent\Keys
, quindi è consigliabile controllare se ci sono informazioni interessanti al suo interno:
Se trovi un qualsiasi file all'interno di quel percorso, probabilmente si tratta di una chiave SSH salvata. È memorizzata in forma crittografata ma può essere facilmente decrittata usando https://github.com/ropnop/windows_sshagent_extract. Maggiori informazioni su questa tecnica qui: https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/
Se il servizio ssh-agent
non è in esecuzione e desideri avviarlo automaticamente all'avvio, esegui:
Sembra che questa tecnica non sia più valida. Ho provato a creare alcune chiavi ssh, aggiungerle con ssh-add
e accedere tramite ssh a una macchina. Il registro HKCU\Software\OpenSSH\Agent\Keys non esiste e procmon non ha identificato l'uso di dpapi.dll
durante l'autenticazione con chiave asimmetrica.
File non assistiti
Puoi cercare anche questi file usando metasploit: post/windows/gather/enum_unattend
Contenuto di esempio:
Copie di backup di SAM e SYSTEM
Credenziali Cloud
McAfee SiteList.xml
Cerca un file chiamato SiteList.xml
Password GPP memorizzata nella cache
In precedenza era disponibile una funzionalità che consentiva di distribuire account amministrativi locali personalizzati su un gruppo di macchine tramite le Preferenze di Gruppo (GPP). Tuttavia, questo metodo presentava significativi difetti di sicurezza. In primo luogo, gli Oggetti delle Preferenze di Gruppo (GPO), memorizzati come file XML in SYSVOL, potevano essere accessibili da qualsiasi utente di dominio. In secondo luogo, le password all'interno di queste GPP, crittografate con AES256 utilizzando una chiave predefinita pubblicamente documentata, potevano essere decifrate da qualsiasi utente autenticato. Questo rappresentava un rischio serio, poiché poteva consentire agli utenti di ottenere privilegi elevati.
Per mitigare questo rischio, è stata sviluppata una funzione per cercare file GPP memorizzati localmente contenenti un campo "cpassword" non vuoto. Una volta trovato un tale file, la funzione decifra la password e restituisce un oggetto PowerShell personalizzato. Questo oggetto include dettagli sulla GPP e sulla posizione del file, aiutando nell'identificazione e nella correzione di questa vulnerabilità di sicurezza.
Cerca in C:\ProgramData\Microsoft\Group Policy\history
o in C:\Documents and Settings\All Users\Application Data\Microsoft\Group Policy\history (precedente a W Vista) per questi file:
Groups.xml
Services.xml
Scheduledtasks.xml
DataSources.xml
Printers.xml
Drives.xml
Per decifrare la cPassword:
Utilizzando crackmapexec per ottenere le password:
Configurazione Web di IIS
Esempio di web.config con credenziali:
Credenziali OpenVPN
Registri
Richiesta di credenziali
È possibile chiedere all'utente di inserire le sue credenziali o addirittura le credenziali di un utente diverso se si pensa che possa conoscerle (notare che chiedere direttamente al cliente le credenziali è davvero rischioso):
Nomi file possibili contenenti credenziali
File noti che in passato contenevano password in testo in chiaro o Base64
Cerca tutti i file proposti:
Credenziali nel Cestino
Dovresti anche controllare il Cestino per cercare credenziali al suo interno
Per recuperare le password salvate da vari programmi puoi utilizzare: http://www.nirsoft.net/password_recovery_tools.html
All'interno del registro
Altre possibili chiavi di registro con credenziali
Estrarre le chiavi openssh dal registro.
Cronologia dei browser
Dovresti controllare i database in cui sono memorizzate le password di Chrome o Firefox. Controlla anche la cronologia, i segnalibri e i preferiti dei browser, così forse alcune password sono memorizzate lì.
Strumenti per estrarre le password dai browser:
Mimikatz:
dpapi::chrome
Sovrascrittura DLL COM
Component Object Model (COM) è una tecnologia integrata nel sistema operativo Windows che consente l'intercomunicazione tra componenti software di lingue diverse. Ogni componente COM è identificato tramite un ID di classe (CLSID) e ogni componente espone funzionalità tramite una o più interfacce, identificate tramite ID di interfaccia (IID).
Le classi e le interfacce COM sono definite nel registro sotto HKEY_CLASSES_ROOT\CLSID e HKEY_CLASSES_ROOT\Interface rispettivamente. Questo registro viene creato unendo HKEY_LOCAL_MACHINE\Software\Classes + HKEY_CURRENT_USER\Software\Classes = HKEY_CLASSES_ROOT.
All'interno dei CLSID di questo registro è possibile trovare il registro figlio InProcServer32 che contiene un valore predefinito che punta a una DLL e un valore chiamato ThreadingModel che può essere Apartment (a thread singolo), Free (multithread), Both (singolo o multi) o Neutral (thread neutro).
In sostanza, se è possibile sovrascrivere una delle DLL che verranno eseguite, potresti aumentare i privilegi se quella DLL verrà eseguita da un utente diverso.
Per scoprire come gli attaccanti utilizzano il dirottamento COM come meccanismo di persistenza, controlla:
pageCOM HijackingRicerca generica delle password nei file e nel registro
Ricerca dei contenuti dei file
Cerca un file con un determinato nome file
Cerca nel registro i nomi delle chiavi e le password
Strumenti che cercano password
MSF-Credentials Plugin è un plugin msf che ho creato per eseguire automaticamente ogni modulo POST di metasploit che cerca credenziali all'interno della vittima. Winpeas cerca automaticamente tutti i file contenenti password menzionate in questa pagina. Lazagne è un altro ottimo strumento per estrarre password da un sistema.
Lo strumento SessionGopher cerca sessioni, nomi utente e password di diversi strumenti che salvano questi dati in chiaro (PuTTY, WinSCP, FileZilla, SuperPuTTY e RDP)
Gestori Trapelati
Immagina che un processo in esecuzione come SYSTEM apra un nuovo processo (OpenProcess()
) con accesso completo. Lo stesso processo crea anche un nuovo processo (CreateProcess()
) con bassi privilegi ma ereditando tutti i gestori aperti del processo principale.
Quindi, se hai accesso completo al processo a bassi privilegi, puoi acquisire il gestore aperto del processo privilegiato creato con OpenProcess()
e iniettare un shellcode.
Leggi questo esempio per ulteriori informazioni su come rilevare e sfruttare questa vulnerabilità.
Leggi questo altro post per una spiegazione più completa su come testare e abusare di più gestori aperti di processi e thread ereditati con diversi livelli di autorizzazioni (non solo accesso completo).
Impersonazione del Client della Pipe con Nome
I segmenti di memoria condivisa, chiamati pipe, consentono la comunicazione tra processi e il trasferimento di dati.
Windows fornisce una funzionalità chiamata Named Pipes, che consente a processi non correlati di condividere dati, anche su reti diverse. Questo assomiglia a un'architettura client/server, con ruoli definiti come server della pipe con nome e client della pipe con nome.
Quando i dati vengono inviati attraverso una pipe da un client, il server che ha stabilito la pipe ha la capacità di assumere l'identità del client, a condizione di avere i necessari diritti di SeImpersonate. Identificare un processo privilegiato che comunica tramite una pipe che puoi imitare offre l'opportunità di ottenere privilegi più elevati adottando l'identità di quel processo una volta che interagisce con la pipe che hai stabilito. Per istruzioni su come eseguire un tale attacco, utili guide possono essere trovate qui e qui.
Inoltre, lo strumento seguente consente di intercettare una comunicazione di pipe con nome con uno strumento come burp: https://github.com/gabriel-sztejnworcel/pipe-intercept e questo strumento consente di elencare e visualizzare tutte le pipe per trovare privesc https://github.com/cyberark/PipeViewer
Varie
Monitoraggio delle righe di comando per le password
Quando si ottiene una shell come utente, potrebbero esserci attività pianificate o altri processi in esecuzione che trasmettono credenziali sulla riga di comando. Lo script di seguito cattura le righe di comando dei processi ogni due secondi e confronta lo stato attuale con lo stato precedente, restituendo eventuali differenze.
Rubare password dai processi
Da Utente a Basso Privilegio a NT\AUTORITÀ SISTEMA (CVE-2019-1388) / Bypass UAC
Se hai accesso all'interfaccia grafica (tramite console o RDP) e UAC è abilitato, in alcune versioni di Microsoft Windows è possibile eseguire un terminale o qualsiasi altro processo come "NT\AUTORITÀ SISTEMA" da un utente non privilegiato.
Ciò rende possibile l'escalation dei privilegi e il bypass di UAC contemporaneamente con la stessa vulnerabilità. Inoltre, non c'è bisogno di installare nulla e il binario utilizzato durante il processo è firmato e rilasciato da Microsoft.
Alcuni dei sistemi interessati sono i seguenti:
Per sfruttare questa vulnerabilità, è necessario eseguire i seguenti passaggi:
Hai tutti i file e le informazioni necessarie nel seguente repository GitHub:
https://github.com/jas502n/CVE-2019-1388
Da Amministratore con Media Integrità a Alta Integrità / Bypass UAC
Leggi questo per apprendere sui Livelli di Integrità:
pageIntegrity LevelsPoi leggi questo per apprendere su UAC e i bypass UAC:
pageUAC - User Account ControlDa Alta Integrità a Sistema
Nuovo servizio
Se stai già eseguendo un processo ad Alta Integrità, il passaggio a SYSTEM può essere facile semplicemente creando ed eseguendo un nuovo servizio:
AlwaysInstallElevated
Da un processo ad alta integrità potresti provare a abilitare le voci del registro AlwaysInstallElevated e installare una shell inversa utilizzando un wrapper .msi. Ulteriori informazioni sulle chiavi di registro coinvolte e su come installare un pacchetto .msi qui.
Privilegio High + SeImpersonate a System
Puoi trovare il codice qui.
Da SeDebug + SeImpersonate a privilegi di token completi
Se hai quei privilegi di token (probabilmente li troverai in un processo già ad alta integrità), sarai in grado di aprire quasi tutti i processi (tranne i processi protetti) con il privilegio SeDebug, copiare il token del processo e creare un processo arbitrario con quel token. Utilizzando questa tecnica di solito viene selezionato qualsiasi processo in esecuzione come SYSTEM con tutti i privilegi del token (sì, è possibile trovare processi SYSTEM senza tutti i privilegi del token). Puoi trovare un esempio di codice che esegue la tecnica proposta qui.
Named Pipes
Questa tecnica è utilizzata da meterpreter per scalare in getsystem
. La tecnica consiste nel creare un pipe e poi creare/abusare di un servizio per scrivere su quel pipe. Quindi, il server che ha creato il pipe utilizzando il privilegio SeImpersonate
sarà in grado di impersonare il token del client del pipe (il servizio) ottenendo i privilegi di SYSTEM.
Se vuoi saperne di più sui named pipes dovresti leggere questo.
Se vuoi leggere un esempio su come passare da alta integrità a System usando i named pipes dovresti leggere questo.
Dll Hijacking
Se riesci a dirottare una dll caricata da un processo in esecuzione come SYSTEM, sarai in grado di eseguire codice arbitrario con quei permessi. Pertanto, il Dll Hijacking è utile anche per questo tipo di escalation dei privilegi e, inoltre, è molto più facile da ottenere da un processo ad alta integrità poiché avrà permessi di scrittura sulle cartelle utilizzate per caricare le dll. Puoi saperne di più sul Dll hijacking qui.
Da Amministratore o Servizio di Rete a System
Da SERVIZIO LOCALE o SERVIZIO DI RETE a privilegi completi
Leggi: https://github.com/itm4n/FullPowers
Ulteriore aiuto
Strumenti utili
Miglior strumento per cercare vettori di escalation dei privilegi locali di Windows: WinPEAS
PS
PrivescCheck
PowerSploit-Privesc(PowerUP) -- Controlla le configurazioni errate e i file sensibili (controlla qui). Rilevato.
JAWS -- Controlla alcune possibili configurazioni errate e raccoglie informazioni (controlla qui).
privesc -- Controlla le configurazioni errate
SessionGopher -- Estrae informazioni sulle sessioni salvate di PuTTY, WinSCP, SuperPuTTY, FileZilla e RDP. Usa -Thorough in locale.
Invoke-WCMDump -- Estrae credenziali dal Gestore delle credenziali. Rilevato.
DomainPasswordSpray -- Spruzza password raccolte in tutto il dominio
Inveigh -- Inveigh è uno strumento PowerShell ADIDNS/LLMNR/mDNS/NBNS spoofer e man-in-the-middle.
WindowsEnum -- Enumerazione di base per l'escalation dei privilegi Windows
Sherlock ~~~~ -- Cerca vulnerabilità di escalation dei privilegi conosciute (DEPRECATO per Watson)
WINspect -- Controlli locali (Necessita di diritti di amministratore)
Exe
Watson -- Cerca vulnerabilità di escalation dei privilegi conosciute (deve essere compilato usando VisualStudio) (precompilato)
SeatBelt -- Enumera l'host alla ricerca di configurazioni errate (più uno strumento di raccolta informazioni che di escalation dei privilegi) (deve essere compilato) (precompilato)
LaZagne -- Estrae credenziali da molti software (exe precompilato su github)
SharpUP -- Porting di PowerUp in C#
Beroot ~~~~ -- Controlla le configurazioni errate (eseguibile precompilato su github). Non raccomandato. Non funziona bene in Win10.
Windows-Privesc-Check -- Controlla possibili configurazioni errate (exe da python). Non raccomandato. Non funziona bene in Win10.
Bat
winPEASbat -- Strumento creato basato su questo post (non ha bisogno di accesschk per funzionare correttamente ma può usarlo).
Locale
Windows-Exploit-Suggester -- Legge l'output di systeminfo e consiglia exploit funzionanti (python locale) Windows Exploit Suggester Next Generation -- Legge l'output di systeminfo e consiglia exploit funzionanti (python locale)
Meterpreter
multi/recon/local_exploit_suggestor
Devi compilare il progetto utilizzando la versione corretta di .NET (vedi qui). Per vedere la versione installata di .NET sull'host vittima puoi fare:
Bibliografia
Last updated