Stavo leggendo proprio in questi minuti della notizia di un clamoroso furto ai danni dei clienti svedesi della banca Nordea.

I pirati informatici, infettati i pc dei clienti con un rootkit ben conosciuto – Haxdoor – hanno controllato le attività online rubando i dati di accesso ai conti bancari. Sono stati circa 250 gli utenti afflitti, per un totale di circa 1.1 milioni di dollari e una truffa portata avanti per circa tre mesi.

Sono tre i punti fondamentali che si potrebbero evidenziare in questo accaduto, ma vorrei focalizzarmi più sull’argomento rootkit e account limitati.

Pochi utenti sono a conoscenza di tutte le funzionalità che il sistema operativo Microsoft offre, tra cui la gestione degli utenti. Se ne è parlato tanto, tutti sanno che con un account amministratore ogni malware ha la strada libera verso la conquista del pc. Pochi sono quelli che si sono cimentati nell’utilizzo di un account limitato in Windows, lavorando con l’account di amministratore esclusivamente quando strettamente necessario.

Bisogna dirlo, Microsoft non ha scelto certo la strada più facile per far capire agli utenti come si possano sfruttare queste caratteristiche di Windows. La creazione di gruppi personalizzati, con l’editing di regole personalizzate che vadano oltre il semplice “account limitato” che viene settato nelle configurazioni degli account utente, in alcuni casi non è banale. Se, in molti ambiti casalinghi, l’account limitato con i setting standard possa bastare, in ambito aziendale risulta già leggermente più difficile riuscire a configurare il pc in modo tale che tutti i software – magari alcuni sviluppati da piccole società per una specifica azienda e non ottimizzati nel codice – riescano a girare sotto un account limitato. Per tal motivo è possibile ricorrere a delle modifiche dei permessi personalizzate, che però non sempre sono alla portata – in termini di semplicità – di qualunque persona che debba configurarli. Non sono, insomma, così immediati.

Certo è che un account limitato al momento fornirebbe molta protezione da grandissima parte di malware attuali – molti rootkit compresi.

Gran parte dei malware si copia all’interno delle directory di sistema di Windows, necessita di scrivere all’interno del registro di sistema per avviarsi all’avvio del sistema e altre caratteristiche che vanno a toccare parti delicate del sistema operativo. Parti che un un account limitato non può editare per assenza di privilegi.

Sarebbero veramente pochi i malware esistenti che potrebbero infettare il pc da account limitato. Parlando di rootkit, sarebbe praticamente impossibile l’installazione di rootkit kernel mode e di gran parte di rootkit user mode.

Quindi abbiamo trovato la soluzione a tutto? Account limitato e possiamo buttare via ogni software antivirus? Beh, non proprio. Torniamo a parlare proprio dei rootkit in questione.

Come si è detto sopra, vediamo prima i rootkit kernel mode. Sono rootkit che vanno ad installare solitamente un device driver (o kernel driver) nel sistema per aver accesso alla zona di memoria virtuale dedicata al kernel – i 2GB alti, da 0x80000000 a 0xFFFFFFFF. Per far ciò necessitano di essere registrati attraverso il Service Control Manager. Permesso negato per un account limitato. Potrebbero tentare di accedere alla memoria direttamente attraverso DevicePhysicalMemory. Accesso negato per un account limitato. Un rootkit kernel mode avrà difficoltà nel venire installato.

Parliamo ora dei rootkit user mode. Rootkit che solitamente tendono a reindirizzare le chiamate effettuate dalle applicazioni alle API di Windows. Per fare ciò solitamente vanno a modificare la IAT (Import Address Table) di un determinato file in memoria o si occupano di modificare in tempo reale le funzioni stesse (inline hooking/code patching). Senza scendere nei dettagli tecnici delle tecniche, per fare questo il rootkit deve esistere nello spazio in memoria relativo al processo target.

Per poter esistere in tutti i processi attivi nel sistema, il rootkit deve avere alcuni privilegi particolari (SeDebugPrivilege) che gli permettono di poter avere accesso alle zone di memoria dei processi di cui l’utente non è owner – nel caso dell’account administrator l’accesso alle zone di memoria dei processi di sistema.

Inoltre, per essere inserito nei processi all’avvio, molti rootkit user mode modificano la chiave di registro APPInit_DLLs, la quale istruisce il sistema operativo a caricare il rootkit nel momento in cui ogni applicazione utilizzante la libreria User32.dll viene caricata.

Sia la modifica della chiave di registro APPInit_DLLs che il SeDebugPrivilege sono esclusi da un account limitato, bloccando di conseguenza gran parte dei rootkit user mode a priori.

Quindi, in altre parole, chi utilizza un account limitato sembrerebbe al sicuro da rootkit e malware. Niente più software antivirus.

In realtà la questione non sta proprio così. É vero, gran parte dei rootkit e dei malware attuali verrebbero tagliati fuori, ma non è vero che si possa essere al sicuro.

Un programma lanciato da account limitato può avere accesso alle zone di memoria di tutti gli altri processi che vengono lanciati con diritti dello stesso account limitato in uso. Una volta ricavato l’handle del processo con l’API OpenProcess() e flag PROCESS_VM_WRITE è possibile andare a scrivere nelle zone di memoria degli altri processi con diritti simili.

Lo scopo del rootkit è quello di nascondersi agli occhi degli utenti. Lo faccia in modo complesso (DKOM, SSDT/IDT hooking), lo faccia a livello più semplice e completo (rootkit user mode con diritti administrator) o lo faccia a livello di account limitato (modifica solo dei processi lanciati da account limitato) può comunque farlo. Certo, è più facile l’individuazione – basta lanciare uno scanner antivirus con permessi administrator (RunAs) o avere comunque un monitor antivirus in realtime che dovrebbe partire con diritti di SYSTEM – ma se nessuno pensasse di fare una scansione il rootkit svolgerebbe comunque il proprio lavoro.

Senza considerare – ipotesi più rara e “fantascientifica” – che se un giorno venisse scoperto un bug in qualche processo di sistema che viene lanciato con diritti di amministratore o ancora più alti, anche da account limitato potrebbe partire una privilege escalation. Blaster e Sasser, per un certo senso, insegnano.

Ecco perché, seppure un account limitato riduca *drasticamente* il rischio di infezioni, uno scanner antimalware/antivirus/HIPS o qualunque software sia sarebbe comunque consigliato.

Nel caso della news riportata ad inizio articolo, Haxdoor non avrebbe funzionato con account limitato e gli utenti sarebbero stati tutti più felici probabilmente.