Rootkit: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
-F, sezione Note |
fix |
||
Riga 1:
Il '''rootkit''' è una collezione di [[software]], tipicamente [[Malware|malevoli]], realizzati per ottenere l’accesso ad un computer o ad una parte di esso, che non sarebbe altrimenti possibile (per esempio un utente non autorizzato ad effettuare il login). Questi software, oltre a garantire questi accessi, si preoccupano di mascherare sé stessi o altri programmi utili per raggiungere lo scopo. Il termine inglese
L’installazione di un Rootkit può essere automatizzata oppure un attaccante ([[Cracker (informatica)|cracker]]) può installarla personalmente, una volta ottenuti i permessi di root o l’accesso come Amministratore. Ottenere questo tipo di accesso può essere il risultato di un attacco diretto verso il sistema sfruttando, per esempio, una vulnerabilità nota (come [[Privilege escalation|Privilege Escalation]]) o scoprendo una [[password]](ottenuta tramite [[Cracking (informatica)|Cracking]] o [[Ingegneria sociale|Ingegneria Sociale]]). Una volta installato il Rootkit, è importante mantenere nascosta l’intrusione così da poter mantenere i privilegi ottenuti. La chiave di questo attacco sta quindi nei permessi di root o Amministratore. Con questi permessi è possibile avere un controllo completo del sistema, questo include anche modificare software, compreso quello nato per rilevarli e bloccarli (come gli antivirus).
Riga 6:
== Storia ==
Il termine rootkit o root kit originariamente si riferiva ad un insieme di software di amministrazione, per sistemi operativi [[Unix-like]] modificati a scopo malevolo, per ottenere i privilegi da utente
Questa prima tipologia di rootkit erano facili da rilevare tramite l’utilizzo di strumenti come [[:en:Open Source Tripwire|Tripwire]] che non erano stati compromessi, per accedere alle stesse informazioni<ref>{{Cita pubblicazione|autore=Sparks, Sherri; Butler, Jamie (2005-08-01)|titolo=Raising The Bar For Windows Rootkit Detection}}</ref><ref name=":5">{{Cita pubblicazione|autore=Myers, Michael; Youndt, Stephen (2007-08-07)|titolo=An Introduction to Hardware-Assisted Virtual Machine (HVM) Rootkits}}</ref>. Lane Davis e Steven Dake hanno scritto il primo rootkit conosciuto, nel 1990, per i sistemi SunOs UNIX della [[Sun Microsystems|Sun Microsystem]]<ref>{{Cita libro|nome=Rory|cognome=Bray|nome2=Daniel|cognome2=Cid|nome3=Andrew|cognome3=Hay|titolo=OSSEC Host-Based Intrusion Detection Guide|url=https://books.google.com/books?id=h37q2q3wvcUC|accesso=8 giugno 2016|data=9 aprile 2008|editore=Syngress|lingua=en|ISBN=978-0-08-055877-6}}</ref>. Nel 1983, nella conferenza tenutasi dopo aver ricevuto il premio Turing, [[Ken Thompson]] dei Laboratori Bell, uno dei creatori di [[Unix]], ha teorizzato un compilatore C alterato, nelle distribuzioni Unix, e ha discusso l’[[exploit]]. Il compilatore modificato avrebbe rilevato i tentativi di compilare i comandi Unix di login e generato, di conseguenza, del codice alterato che avrebbe accettato non solo la password corretta dell’utente, ma una password addizionale di “[[backdoor]]”, conosciuta solo dall’attaccante. Inoltre il compilatore alterato avrebbe rilevato tentativi di compilare una nuova versione del compilatore stesso, inserendo così lo stesso exploit in quello nuovo. Una revisione del codice sorgente del comando di login o l’aggiornamento del compilatore non avrebbe rilevano nessun codice malevolo<ref>{{Cita pubblicazione|autore=Thompson, Ken (August 1984)|titolo=Reflections on Trusting Trust|rivista=https://www.ece.cmu.edu/~ganger/712.fall02/papers/p761-thompson.pdf}}</ref>. Questo exploit era l’equivalente di un rootkit.
Riga 27:
== Utilizzi ==
I rootkit moderni non si preoccupano più di elevare i permessi<ref name=":1" />, ma piuttosto mascherano il caricamento di un altro software aggiungendo funzioni per renderlo invisibile<ref name=":2" />. La maggior parte dei rootkit sono classificati come [[malware]], perché sono legati a software malevolo. Per esempio il carico (payload) che si porta dietro un rootkit potrebbe segretamente rubare le password dell’utente, informazioni sulle carte di credito, risorse dal computer oppure potrebbe svolgere attività non autorizzate. Un numero ridotto di rootkit può essere utile all’utente: per esempio, potrebbe mascherare un driver di emulazione dei CD-ROM, permettendo di superare le misure [[:en:Copy protection#Anti-piracy|anti-pirateria]]
I rootkit con il loro [[Payload (malware)|payload]], possono avere diversi utilizzi:
* Forniscono all’attaccante un accesso non autorizzato e completo tramite backdoor, con lo scopo, per esempio, di rubare o falsificare documenti. Uno dei posibili metodi per raggiungere tale scopo è quello di alterare il meccanismo di login, che per i sistemi [[Unix-like|UNIX-like]] può essere il programma /bin/login oppure [[:en:Graphical identification and authentication|GINA]] per i sistemi Windows. Il sostituto sembra funzionare normalmente, ma accetta anche una combinazione di login (username e password) segreta che permette all’attaccante un accesso diretto al sistema con privilegi di amministratore, bypassando così l’autenticazione standard e i meccanismi di autorizzazione.
* Nascondere altri malware, in particolar modo i [[keylogger]]s in grado di rubare password e i virus informatici<ref>{{Cita web|url=http://www.windowsitpro.com/Article/ArticleID/46266/46266.html|titolo=Unearthing Root Kits|sito=www.windowsitpro.com|accesso=8 giugno 2016}}</ref>.
* Si appropriano della macchina compromessa rendendola un [[computer zombie]]
* Forzatura dei [[Digital rights management|DRM]] (Digital Rights Management)
In alcuni casi i rootkit forniscono funzionalità desiderate, e possono essere installati intenzionalmente dall’utente sul proprio computer:
Riga 46:
=== Modalità Utente ===
I rootkit in modalità utente lavorano nell’anello 3, insieme alle altre applicazioni dell’utente, piuttosto che a livello più basso con i processi di sistema<ref name=":6">{{Cita pubblicazione|autore=|titolo=Rootkits Part 2: A Technical Primer|rivista=https://web.archive.org/web/20081205031526/http://www.mcafee.com/us/local_content/white_papers/wp_rootkits_0407.pdf}}</ref>. Hanno diversi possibili vettori di installazione per intercettare e modificare il comportamento standard delle application programing interfaces ([[Application programming interface|API]]
*
* Intercettazione di messaggi
* [[Debugger]]s
Riga 83:
== 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]] (trojan), ingannando l’utente di un computer facendogli credere che l’installazione del rootkit è in realtà un’installazione benigna<ref name=":4" /> — 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
L’installazione di rootkit malevoli è commercialmente guidata, con un metodo di compensazione [[:en:Compensation methods#PPI|pay-per-install]]
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<ref>{{Cita web|url=http://www.usenix.org/publications/login/1999-9/features/rootkits.html|titolo=USENIX {{!}} The Advanced Computing Systems Association|sito=www.usenix.org|accesso=8 giugno 2016}}</ref>. 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<ref name=":7">{{Cita pubblicazione|autore=|titolo=Hacking Exposed Malware & Rootkits (Chapter10)|rivista=http://www.mhprofessional.com/downloads/products/0071591184/0071591184_chap10.pdf}}</ref>. Il “rootkit perfetto” può essere pensato come il “[[:en:Perfect crime|crimine perfetto]]”: quello che nessuno si rende conto che ha avuto luogo.
Riga 94:
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<ref name=":7" />. 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<ref name=":7" />.
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]]
I software per il rilevamento dei rootkit su sistemi Unix includono Zeppo<ref>{{Cita web|url=http://sourceforge.net/projects/zeppoo/|titolo=zeppoo|sito=SourceForge|accesso=8 giugno 2016}}</ref>, [[:en:Chkrootkit|chrootkit]], [[:en:Rkhunter|rkhunter]], e [[:en:OSSEC|OSSEC]]. Su ambiente Windows, i software di questo tipo sono Microsoft Sysinternals, [[:en:RootkitRevealer|RootkitRevealer]]<ref>{{Cita web|url=https://technet.microsoft.com/en-us/sysinternals/bb897445.aspx|titolo=RootkitRevealer|sito=technet.microsoft.com|accesso=8 giugno 2016}}</ref>, [[Avast!|Avast! Antivirus]], [[Sophos]] Anti-Rootkit<ref>{{Cita web|url=https://www.sophos.com/products/free-tools/sophos-anti-rootkit.aspx|titolo=Anti-Rootkit Scanner {{!}} Free Rootkit Detection and Removal Tool {{!}} Sophos Virus Protection|sito=www.sophos.com|accesso=8 giugno 2016}}</ref>, [[F-Secure]]<ref>{{Cita web|url=http://www.f-secure.com/en_UK/security/security-lab/tools-and-services/blacklight/index.html|titolo=F-Secure UK and Ireland {{!}} Switch on Freedom|sito=www.f-secure.com|accesso=8 giugno 2016}}</ref>, Radix<ref>{{Cita web|url=http://www.usec.at/rootkit.html|titolo=Radix|autore=|data=|accesso=}}</ref>, [[:en:GMER|GMER]]<ref>{{Cita web|url=http://www.gmer.net/|titolo=GMER - Rootkit Detector and Remover|sito=www.gmer.net|accesso=8 giugno 2016}}</ref> e [[:en:WindowsSCOPE|WindowsSCOPE]]. Ogni software di questo tipo, con la scoperta di nuovi malware, migliora la sua stessa efficacia, ma allo stesso modo gli autori dei malware adattano e testano il loro codice per evitare di essere scoperti dagli strumenti più noti.
Riga 116:
=== Integrity checking ===
La [[:en:Code signing|firma del codice]] utilizza la struttura della [[chiave pubblica]] per verificare se il file ha subito modifiche dopo essere stato [[Firma digitale|firmato digitalmente]] dal produttore. In alternativa il proprietario o l’amministratore del sistema può usare una [[funzione crittografica di hash]] per calcolare l'“impronta digitale” al momento dell'installazione che può aiutare a scoprire successive modifiche non autorizzate alle librerie sul disco<ref>{{Cita web|url=https://msdn.microsoft.com/en-us/library/ms537364(VS.85).aspx|titolo=Signing and Checking Code with Authenticode (Windows)|sito=msdn.microsoft.com|accesso=8 giugno 2016}}</ref>. Però, i sistemi meno sofisticati controllano solo se il codice è stato modificato dopo il momento della installazione; eventuali modifiche prima di questo momento non vengono rilevate. L’impronta digitale dovrà essere ristabilita ogni volta che vengono apportate modifiche importanti al sistema: per esempio, dopo aver installato aggiornamenti di sicurezza o [[Service Pack|service pack]]. La funzione di hash crea un messaggio digest, ovvero un codice relativamente corto, calcolato a partire da ogni singolo bit nel file, utilizzando un algoritmo che genera grossi cambiamenti in conseguenza ad una modifica, anche minima, nel file originale. Ricalcolando e confrontando i messaggi digest del file installato ad intervalli regolari con un elenco di messaggi fidati, i cambiamenti nel sistema possono essere scoperti e monitorati
In modo analogo, la scoperta nel [[firmware]] può essere ottenuta calcolando l’hash del firmware e comparandolo con una whitelist di valori attesi, oppure estendendo i valori di hash nel registro di configurazione del [[Trusted Platform Module]] (TPM) che vengono poi comparati, anche in questo caso, ad una whitelist di valori attesi<ref>{{Cita web|url=http://www.trustedcomputinggroup.org/files/resource_files/C2426F48-1D09-3519-AD02D13C71B888A6/Whitepaper_Rootkit_Strom_v3.pdf|titolo=Stopping Rootkits at the Network Edge {{!}} Trusted Computing Group|sito=Trusted Computing Group|data=1º giugno 2009|lingua=en|accesso=8 giugno 2016}}</ref>. Il codice che esegue l’hash, compara o estende le operazioni deve essere protetto —in questo contesto, la nozione di immutable root-of-trust sostiene che il primo codice per misurare le proprietà di sicurezza di un sistema, deve essere esso stesso attendibile per garantire che un rootkit o un bootkit non compromettano il sistema al suo livello più fondamentale<ref>{{Cita pubblicazione|autore=|titolo=TCG PC Specific Implementation Specification, Version 1.1|rivista=http://www.trustedcomputinggroup.org/files/resource_files/87B92DAF-1D09-3519-AD80984BBE62D62D/TCG_PCSpecificSpecification_v1_1.pdf}}</ref>.
=== Memory dump ===
Forzare un dump completo della [[memoria virtuale]]
== Rimozione ==
| |||