Rootkit: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Aggiunti gli utilizzi e alcuni tipi di rootkit. Da aggiungere i bootkit. La modifica della pagina non è terminata, le citazioni alle fonti verrano aggiunte alla fine
Etichette: Nowiki inseriti da dispositivo mobile Modifica visuale
aggiunte diverse parti sulla installazione e occultamento e parte delle tecniche di rivelazione. La pagina è ancora in fase di modifica, le citazioni verranno aggiunte alla fine
Etichette: Nowiki inseriti da dispositivo mobile Modifica visuale
Riga 55:
 
I sistemi operativi si stanno evolvendo per far fronte alla minaccia dei rootkit in modalità kernel. Per esempio, le versioni 64bit di Microsoft Windows ora implementano una firma obbligatoria per tutti i drivers che operano sullo stesso livello del kernel, in modo da rendere molto più difficile, per il codice non verificato, eseguire con privilegi così alti.
 
==== Bootkits ====
Una variante del rootkit in kernel-mode è il bootkit, il quale può infettare il codice di avvio, come il [[Master boot record]] (MBR) , [[:en:Volume_boot_record|Volume Boot Record]](VBR) oppure il [[Boot sector|settore di boot]] ed in questo modo può essere usato per attaccare sistemi [[:en:Disk_encryption|full disk encryption]], ovvero sistemi con hard disk completamente criptati. Un esempio è l’ “Evil Maid Attack”, nel quale l’attaccante installa il bootkit su un pc incustodito, rimpiazza il boot loader originale con un altro sotto al suo controllo. Tipicamente il loader del malware sopravvive al passaggio attraverso il [[Modalità protetta|protected mode]], quando il kernel è già stato caricato ed è quindi in grado di scavalcare questa protezione. Per esempio lo “Stoned Bootkit” riesce a sovvertire il sistema utilizzando un [[boot loader]] compromesso in grado di intercettare le chiavi di cifratura e le password. Più recentemente l’Alureon rootkit è riuscito a superare con successo la protezione su Windows 7, basata sulla firma dei driver, per evitare il kernel-mode nelle architetture a 64bit. Questo risultato è stato ottenuto mediante la modifica del [[master boot record]]. Sebbene non sia un malware inteso come qualcosa che compie azioni indesiderate dall’utente, alcuni “Vista Loader” o “Windows Loader” lavorano in maniera molto simile, iniettando  una [[Advanced Configuration and Power Interface|tabella ACPI]] SLIC (System Licensed Internal Code) nella versione caricata in RAM del BIOS durante il boot, in modo tale da scavalcare il processo di [[:en:Microsoft_Product_Activation|attivazione di Windows Vista e Windows 7]]. Questo vettore di attacco è stato reso inutile nelle versioni (non server) di [[Windows 8]], il quale usa una chiave unica, specifica per ogni macchina, in ogni sistema. La chiave può essere utilizzata solo sulla macchina a cui appartiene.
 
L’unica difesa nota contro i bootkit è la prevenzione contro gli accessi fisici alla macchina non autorizzati, un problema per i dispositivi portatili, oppure l’utilizzo di un [[Trusted Platform Module]] configurato per proteggere i file di avvio.
 
=== Hypervisor Level ===
I rootkit sono stati creati come Type II [[Hypervisor|Hypervisors]],cin ambito accademico,ome [[proof of concept]] (prova del concetto). Sfruttando le funzionalità di virtualizzazione, come [[Intel VT]] o [[AMD-V]] , questo tipo di rootkit opera nell’Anello-1 e ospita il sistema operativo di destinazione come una [[macchina virtuale]], in tal modo autorizzano il rootkit ad intercettare le chiamate di sistema fatte dal sistema operativo originale. Diversamente  dai normali Hypervisors, loro non devono essere caricati prima del sistema operativo. Un Hypervisor Rootkit non ha bisogno di effettuare alcuna modifica al kernel del bersaglio per attaccarlo; questo però non significa che non possa essere scoperto  dal sistema operativo ospite. Per esempio le differenze nelle tempistiche possono essere scoperte da istruzioni della [[CPU]]. Il rootkit “SubVirt” sviluppato in laboratorio congiuntamente da [[Microsoft]] e dai ricercatori della [[Università del Michigan]], è un esempio accademico di rootkit basato su macchina virtuale (VMBR- Virtual Machine Based Rootkit), mentre Blue Pill ne è un altro esempio.
 
Nel 2009, i ricercatori di Microsoft e della North Carolina State University hanno mostrato il funzionamento di un hypervisor-layer anti-rootkit chiamato Hooksafe, che fornisce una protezione generica contro i rootkit in modalità kernel.
 
Windows 10 introduce una nuova feature chiamata “Device Guard”, la quale sfrutta la virtualizzazione per fornire una protezione esterna indipendente al sistema operativo contro malware di tipo rootkit.
 
=== Firmware and hardware ===
Un [[firmware]] rootkit utilizza il firmware del dispositivo o della piattaforma per creare un’immagine persistente del malware in un dispositivo hardware, come ad esempio in un [[router]], una [[scheda di rete]], un [[disco rigido]] o il BIOS del sistema. Il rootkit si nasconde nel firmware, in quanto spesso non ne viene controllata l’integrità del codice. John Heasman ha dimostrato la fattibilità dei firmware rootkit sia nel firmare [[Advanced Configuration and Power Interface|ACPI]] sia nelle schede di espansione PCI della ROM.
 
Nell’Ottobre del 2008, dei criminali hanno manomesso dei lettori di carte di credito Europee, prima che fossero installate. I dispositivi intercettavano e trasmettevano i dati delle carte attraverso una rete di telefonia mobile. Nel Marzo 2009, i ricercatori  Alfredo Ortega e Anibal Sacco hanno pubblicato i dettagli di un rootkit a livello BIOS per sistemi Windows, in grado di resistere alla sostituzione dell’hard disk o alla reinstallazione del sistema operativo. Alcuni mesi dopo hanno scoperto che alcuni portatili erano venduti con un rootkit legittimo, conosciuto come [[:en:LoJack_for_Laptops|Absolute CompuTrace]] o [[:en:LoJack_for_Laptops|Absolute LoJack for Laptops]], preinstallato in molti BIOS. Questo rootkit è un sistema anti-furto, ma i ricercatori hanno dimostrato che può essere facilmente utilizzato per scopi malevoli.
 
[[:en:Intel_Active_Management_Technology|Intel Active Management Technology]], parte di Intel vPro, implementa un’ [[:en:Out-of-band_management|out-of-band management]], il quale fornisce agli amministratori una amministrazione remota, una gestione remota e controllo remoto dei pc, senza alcun coinvolgimento del processore del sistema ospite o del BIOS, anche quando il sistema è spento. L’amministrazione remota include uno spegnimento o una accensione remota, reset, ridirezione del boot, ridirezione della console, accesso pre-boot alle impostazioni del BIOS, filtri configurabili per il traffico di rete in uscita e in ingresso, controllo della presenza, avvisi out-of-band basati su delle policy, accesso alle informazioni del sistema come ad esempio la configurazione hardware, log degli eventi persistente e altre informazioni che sono conservate in una memoria dedicata (non sull’hard disk), accessibile anche a pc spento o se il sistema operativo non è avviato. Alcune di queste funzioni richiedono un rootkit del livello più profondo, un secondo computer spia non removibile è costruito attorno al pc principale. Sandy Bridge e i chipset futuri hanno "l’abilità di uccidere e ripristinare da remoto un PC, perso o rubato, utilizzando il 3G”. I rootkit hardware impiantati nel [[chipset]] possono aiutare nel recupero di PC rubati, rimuovere dati o renderli inutili, ma rappresentano anche un problema di privacy e sicurezza, in quanto si trattano a tutti gli effetti di spie irrintracciabili e un hacker potrebbe ottenere il controllo della macchina da remoto.
 
== Installazione e occultamento ==
I rootkit impiegano varie tecniche per prendere il controllo di un sistema; il tipo di rootkit va ad influire sulla scelta del vettore di attacco. La tecnica più comune è quella di fare leva su una [[Vulnerabilità|vulnerabilità di sicurezza]] per ottenere un aumento dei privilegi non desiderato. Un altro approccio è quello che utilizza un [[Trojan (informatica)|cavallo di troia]], ingannando l’utente di un computer facendogli credere che l’installazione del rootkit è in realtà un’installazione benigna - in questo caso è la social engineering a convincere l’utente che l’installazione è benefica. Il compito di installazione è ancora più semplice se il [[principio del privilegio minimo]] non viene applicato, poiché in questo caso il rootkit non deve richiedere esplicitamente dei permessi elevati (livello amministratore). Altre classi di rootkit posso essere installati solamente da qualcuno con accesso fisico al sistema bersaglio. Alcuni rootkit possono anche essere installati intenzionalmente dal proprietario del sistema o da qualcun’altro autorizzato dal proprietario, con lo scopo, ad esempio, di monitorare gli impiegati, rendendo le tecniche sovversive inutili.
 
L’installazione di rootkit malevoli è commercialmente guidata, con un metodo di compensazione [[:en:Compensation_methods#PPI|pay-per-install]]<nowiki/>tipico per la distribuzione.
 
Una volta installato un rootkit prende misure attive per oscurare la sua presenza all’interno del sistema ospite attraverso la sovversione o l’evasione degli strumenti standard di sicurezza del sistema e delle API usate per la diagnosi, scansione e monitoraggio. I rootkit ottengono questo con la modifica del comportamento delle parti fondamentali di un sistema operativo attraverso il caricamento di codice nei processi, l’installazione o la modifica di drivers o moduli kernel. Le tecniche di offuscamento includono il nascondere i processi in esecuzione ai meccanismi di monitoraggio del sistema e nascondere i file di sistema e altri dati di configurazione. Non è raro per un rootkit disabilitare la capacità di [[:en:Event_Viewer|event logging]] di un sistema operativo, nel tentativo di nascondere le prove di un attacco. I Rootkit possono, in teoria, sovvertire ogni attività del sistema operativo. Il “rootkit perfetto” può essere pensato come il “[[:en:Perfect_crime|crimine perfetto]]”: quello che nessuno si rende conto che ha avuto luogo.
 
I rootkit inoltre prendono una serie di misure, oltre alla installazione nel Ring 0 (kernel-mode), per assicurarsi la loro sopravvivenza contro il rilevamento e la pulizia da parte di software antivirus. Questo include il [[Virus polimorfo|polimorfismo]], tecniche di occultamento, rigenerazione, blocco di software anti-malware e la non installazione su macchine virtuali, nelle quali sono più facili da scoprire e analizzare per i ricercatori.
 
== Rivelazione ==
Il problema fondamentale nella scoperta dei rootkit è che il sistema operativo stesso viene compromesso, specialmente dai rootkit a livello kernel, esso quindi non è attendibile per quanto riguarda la ricerca di modifiche non autorizzate a se stesso o ai suoi componenti. Azioni come richiedere una lista di processi in esecuzione, o una lista di file nelle directory, non sono affidabili, le risposte potrebbero non essere quelle previste. In altre parole, i programmi che identificano rootkit che lavorano mentre il sistema infetto è in esecuzione, sono efficaci solo  contro i rootkit che hanno qualche difetto nel loro occultamento, o che operano con privilegi più bassi rispetto al programma incaricato di scoprirli. Come con i [[Virus (informatica)|virus]], la scoperta e l'eliminazione dei rootkit è una lotta costante tra le due parti.
 
La identificazione può utilizzare diversi approcci differenti, incluse firme (es. Software Antivirus), check di integrità (es. [[Firma digitale|firme digitali]]), rilevamento basato su differenze (es. risultato del confronto atteso vs risultati effettivi) e rilevamento comportamentale (es. monitoraggio dell’utilizzo della CPU o del traffico di rete). Per i rootkit in kernel mode, la scoperta è da considerarsi più complessa, essa richiede infatti un’attenta analisi della System Call Table alla ricerca di [[:en:Hooking|hooked function]]<nowiki/>dove il malware potrebbe compromettere il comportamento del sistema oppure l’analisi della memoria alla ricerca di pattern che indicano processi nascosti.
 
I software per il rilevamento dei rootkit su sistemi Unix includono Zeppo, [[:en:Chkrootkit|chrootkit]], [[:en:Rkhunter|rkhunter]], e [[:en:OSSEC|OSSEC]]. Su ambiente Windows, i software di questo tipo sono Microsoft Sysinternals, [[:en:RootkitRevealer|RootkitRevealer]], [[Avast!|Avast! Antivirus]], [[Sophos]] Anti-Rootkit, [[F-Secure]], Radix, [[:en:GMER|GMER]] e [[:en:WindowsSCOPE|WindowsSCOPE]]. Ogni software di questo tipo, con la scoperta di nuovi malware, migliora la sua stessa efficacia, allo stesso modo gli autori dei malware adattano e testano il loro codice per evitare di essere scoperti dagli strumenti più noti.
 
La scoperta attraverso un esame della memoria, mentre il sistema operativo preso in esame non sta operando, può mancare i rootkit non conosciuti dal software utilizzato, in quanto neanche il rootkit sta operando e quindi non sono rilevati i comportamenti sospetti. I software anti-malware convenzionali, che operano insieme al rootkit, potrebbero fallire se il rootkit si nasconde in modo efficace.
 
=== Alternative trusted medium ===
Il metodo migliore e più affidabile per la scoperta dei rootkit che operano a livello del sistema operativo è quello di spegnere il computer sospetto e fare un check della sua [[Memoria (elettronica)|memoria]] di archiviazione attraverso l’avvio di un alternative trusted medium (es. un CD di recupero, una chiave USB). La tecnica è efficace perché il rootkit non può nascondere in maniera attiva la sua presenza, perché non è in esecuzione.
 
=== Behavioral-based ===
L’approccio behavioral based per scovare i rootkit tenta di dedurre la presenza di un rootkit, cercando un comportamento rootkit-like. Per esempio può profilare il sistema alla ricerca di differenze nelle tempistiche e nella frequenza della chiamate API, oppure può analizzare l’utilizzo generale della CPU. Questo metodo è complesso e si ha un’alta incidenza di falsi positivi. Rootkit difettosi possono generare cambiamenti molto evidenti per un sistema: il rootkit Alureon blocca i sistemi Windows dopo che un aggiornamento di sicurezza ha portato alla luce un errore di progettazione nel suo codice.
 
I log di un packet analyzer, di un firewall, o di un sistema di prevenzione delle intrusioni possono evidenziare la presenza di un rootkit in ambiente di rete.
 
=== Signature-based ===
Gli antivirus raramente trovano tutti i virus nei test pubblici (a seconda di ciò che viene utilizzato e in quale misura), anche se i produttori di questi software incorporano dei rootkit detector nei loro prodotti. Se un rootkit prova a nascondersi durante una scansione antivirus, lo stealth detector potrebbe accorgersene; se il rootkit prova a rimuoversi temporaneamente dal sistema, il signature detector (o “impronta digitale”) può ancora trovarlo. Questo approccio combinato obbliga l’attaccante a implementare dei meccanismi di contrattacco, o “retro” routine che tentano di interrompere i programmi antivirus. I metodi di rivelazione signature-based possono essere efficaci con rootkit ben noti, ma lo sono molto meno con rootkit creati apposta per una specifica vittima, i custom-root rootkit.
 
=== Difference-based ===
Un altro metodo in grado di scoprire rootkit compara dei dati grezzi “fidati” con il contenuto “contaminato” restituito da una [[Application programming interface|API]]. Per esempio, i [[File binario|file binari]] presenti nel disco possono essere confrontati con le loro copie all’interno della memoria operativa (in alcuni sistemi operativi, l’immagine in memoria dovrebbe essere identica alla versione su disco), altrimenti con il risultato restituito dal [[file system]] oppure dalle [[Application programming interface|API]] del [[registro di sistema]] può essere controllato tramite le strutture grezze nei dischi fisici sottostanti, però, nel primo caso, possono essere introdotte alcune importanti differenze da alcuni meccanismi del sistema operativo come il memory relocation o lo [[:en:Shim_(computing)|shimming]]. Un rootkit può scoprire la presenza di diversi difference-based scanner o [[Macchina virtuale|machine virtuali]] (quest’ultimo viene comunemente usato per eseguire analisi forensi), e modificare il suo comportamento in modo tale che non venga rilevata alcuna differenza. La rilevazione Difference-based è stata usata da [[:en:Russinovich|Russinovich]] per trovare il Sony DRM rootkit.
 
== Rootkit famosi ==