Gli altri commenti dimenticano qualcosa. Un utente malintenzionato può elevare da un contesto non privilegiato (senza diritti di amministratore) in un contesto privilegiato (diritti di amministratore) se viene eseguito in un account che proviene effettivamente da un amministratore. Questo è chiamato UAC Bypass.
L'attacco
Come ci si può aspettare, questo attacco comporta tecniche di iniezione di codice, come AtomBombombing (ma in realtà qualsiasi altro metodo, anche il semplice CreateRemoteThread funzionerà).
Questo viene fatto in 2 passaggi. La prima cosa da fare è, in effetti, iniettare il codice in determinati processi che vengono eseguiti in modalità utente. Ci sono alcuni processi vulnerabili ma parlerò di explorer.exe
che è anche il più stabile. Questo processo non è come gli altri, è speciale perché ha molti usi. Ecco perché ha alcuni privilegi speciali. Ad esempio, l'interfaccia COM IFileOperation può essere elevata; Ciò significa che verrà eseguito con una sorta di privilegi di tipo admin. Questo può sembrare inutile, dal momento che puoi solo scrivere file con diritti di amministratore. Ma non lo è! Dal momento che puoi usarlo per eseguire un altro attacco; Dirottamento DLL. Questo è il passo 2. Fondamentalmente si posizionerebbe il evil.dll
, che può essere embebed in evil.exe
, nello stesso posto in cui si trovano i processi autoelevati; Programmi o processi autoelevati sono programmi che una volta eseguiti otterranno automaticamente i diritti di amministratore. In breve, questo viene fatto da Microsoft poiché quei programmi devono avere quei privilegi per funzionare correttamente ed eseguire cose come attività automatizzate. Infine, eseguiremo quel programma, che caricherà evil.dll
e quindi eleveremo automaticamente, quindi concedendo i privilegi di amministratore al codice dell'attaccante.
Mitigazione
Microsoft ha provato a correggere il secondo passaggio in passato, inserendo nella whitelist i file .dll e le tecniche simili, ma non è riuscito, poiché è possibile aggirarlo facilmente sostituendo i file .dll esistenti in alcuni casi.
Il primo passo non verrà affatto corretto. Microsoft non ha applicato patch ad altri metodi di iniezione come CreateRemoteThread, perché dovrebbero correggere Atombring? Ciò richiederebbe un enorme sforzo e pesanti modifiche del sistema operativo, che probabilmente non accadrà. L'unico modo per evitare che questo sarebbe eliminare quei diritti speciali da programmi come l'esploratore, ma sembra che non accadrà nessuno dei due. Quindi in sostanza dipende da AV per rilevare se i programmi dannosi tenteranno di iniettare il codice utilizzando qualsiasi metodo.
Puoi vedere un POC dell'exploit sopra qui
EDIT: ho dimenticato alcuni punti della domanda. Quindi, questi sono i modi tecnici per evitare che gli atroombranti abbiano successo:
-Avviso API: una soluzione antivirus può intercettare e analizzare tutti i tentativi di modifica della tabella atom. Le funzioni GlobalAddAtom () e GlobalGetAtomName () sono quelle utilizzate per eseguire questo attacco. Potrebbero intercettare le chiamate e scansionare i dati che verranno aggiunti alla tabella Atom, cercando parole chiave o più probabilmente, cercando di analizzare i dati, se si tratta di uno shellcode.