# Bootkit

Il bootkit è una tipologia di virus informatico, che si può vedere come un ibrido tra un virus del tipo che infetta i boot-sector e un virus tipo rootkit. Questo tipo di virus è molto difficile da eliminare in quanto è invisibile (quasi totalmente) dal suo PC infetto. Un famoso bootkit è quello che infettò il sistema operativo Windows Vista, ideato da due programmatori indiani.

## Eliminazione

Dei modi per eliminare un bootkit sono la disinfestazione o l'avvio del sistema da un qualsiasi supporto rimovibile non infetto (che non sia l'hard disk), così che si eviti il principale avvio del virus durante l'accensione del computer.

## Avvio del bootkit

L'avvio in un PC del suddetto virus si divide in due fasi:

### Caricamento del modulo di boot del virus dall'hard disk

Il bootkit è in grado di infettare direttamente l'hard disk e nascondersi al suo interno, restando invisibile, in due modi:

#### Modifica MBR

Modificando l'MBR, ovvero il Master Boot Record, il primo settore fisico dell'hard disk deputato all'avvio del settore di boot che a sua volta avvia il sistema. Questo lo fa modificando il bootstrap loader code, cioè le istruzioni in linguaggio macchina (Assembly) che vengono eseguite affinché il computer possa localizzare e caricare in memoria le aree di avvio successive:
Modalità di avvio di un computer generico:
* Il BIOS carica il MBR e la tabella delle partizioni.
* Il controllo viene trasferito al boot sector e l'area dei parametri della partizione primaria.
* Avvio vero e proprio del sistema operativo con il caricamento di tutti i moduli.
Il virus può rimpiazzare i codici del MBR con i suoi e poi far caricare il resto dei punti di avvio di un PC, dopo essersi a sua volta caricato in memoria, oppure reindirizzando il caricamento del boot sector a sé stesso, il quale caricherà il seguente settore di boot della partizione attiva (contenente il sistema operativo). Quest'ultima procedura è praticata sostituendo i primi dati contenuti nella tabella di partizione (la parte finale del MBR) con i dati che indicano la posizione fisica del settore che contiene il modulo di boot del virus, indicando il numero della testina che contiene il cilindro che a sua volta contiene il settore "infetto".

#### Modifica settore di boot

Il virus modifica le istruzioni contenute nel settore di boot che stanno dopo l'area dei parametri della partizione attiva. Qui il virus solitamente inserisce il codice necessario a caricare l'altra parte del modulo di boot virale, per poi lasciare che sia il suo stesso modulo a caricare il "vero boot-sector", precedentemente memorizzato in un'altra locazione, così che al momento opportuno (per esempio intercettata una richiesta di lettura del boot-sector) possa visualizzare la versione originale del boot sector invece di quella reale e infetta.

### Caricamento del restante modulo del virus (Rootkit)

Il restante modulo è quello che realmente agisce e resta invisibile all'interno della RAM. Questo modulo è preventivamente caricato dal precedente modulo di boot virale in un'area di memoria RAM, solitamente nelle regioni alte (HIGH-Memory) rese virtualmente inesistenti. Per non permettere che il computer acceda all'area della memoria RAM dove il virus risiede, il virus sottrae un valore speciale che indica la quantità di memoria disponibile facendo credere al computer che quelle aree sottratte non ci siano.
Per esempio: se la quantità di memoria è 400 MB e vengono sottratti 3 MB di memoria, di cui il virus necessita, il computer crede di avere 397 MB di memoria e non ne utilizza di più.
Questo modulo può a sua volta caricare il sistema operativo oppure attendere il normale caricamento del sistema per poi attivarsi ad una determinata condizione, (per esempio l'accesso ad internet). Grazie alla possibilità di anticipare l'avvio del sistema, il virus ha il massimo dei privilegi (Ring 0) e non è soggetto ad alcuna restrizione amministrativa (a parte le eccezioni e le limitazioni fisiche del computer).
La permanenza e l'invisibilità del virus è dovuta anche a delle funzioni da lui inserite per l'intercettazione dei processi affinché essi non visualizzino, danneggino, cancellino o facciano qualsiasi cosa che possa compromettere la permanenza nel sistema del virus stesso.