Rootkit: Analysis, Detection and Protection



Documenti analoghi
Michele BOLOGNA. Corso di Sicurezza dei Sistemi Informatici Università degli Studi di Bergamo

La gestione degli incidenti informatici v1.2 del 20/12/2005

Componenti di un sistema operativo

KERNEL ROOTKIT ATTACCHI E CONTROMISURE

Utente. Sistemi operativi 2003/2004. /etc/passwd

Corso di Informatica

Sistemi Operativi 1. Lezione III: Concetti fondamentali. Mattia Monga. 7 marzo 2008

Sistemi Operativi 1. Mattia Monga. 7 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia

Sistema Operativo (Software di base)

Sistemi Operativi. Lezione 4 I processi: implementazioni

Gestione dei processi nel sistema operativo Unix

Tecnologie di virtualizzazione

Il Sistema Operativo

GNU/Linux Concetti di base

Linux e i software liberi. di Nardean Lorenzo e Redigolo Marco

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Sistemi Operativi 1. Mattia Monga. a.a. 2008/09. Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia

Sistemi Operativi. Bruschi Martignoni Monga

Lezione 16. Il Software di base

I thread. Non bastavano i processi?

i link Unix i link Unix gli hard link (link fisici)

DKOM (Direct Kernel Object Manipulation)

SOFTWARE. Programmi e dati che indicano al computer come svolgere un determinato compito

Esercitazione. Prima di chiedere hai usato il comando man? sovente 1 settimana di esperimenti possono risparmiare 1 ora di lettura

Sistemi Operativi. Corso di Laurea Triennale in Ingegneria Informatica. Esercitazione 3. Gestione utenti (prosecuzione) MBR e GPT Partizioni

Sistema operativo & file system 1

Windows. La prima realizzazione di un ambiente grafico si deve alla Apple (1984) per il suo Macintosh. La gestione dei file conserva la logica del DOS

Corso di Architettura (Prof. Scarano) 10/05/2002

Sistemi Operativi. Corso di Laurea Triennale in Ingegneria Informatica. Esercitazione 2. Editor Utenti Permessi

Sistemi Operativi (Laboratorio)

Introduzione a Linux Lezione 2 Provare Linux

nanodos Organizzazione della distribuzione

LABORATORIO DI SISTEMI OPERATIVI

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione

TROJAN HORSE & ROOTKIT

LINUX: struttura generale

Lezione XII: La gestione delle eccezioni in MINIX

Elementi di Informatica A. A. 2016/2017

Borsa di Studio Orio Carlini

memoria virtuale protezione

Capitolo 2 -- Silberschatz

SHELL: File e Filesystem

Lab. di Sistemi Operativi - Lezione in aula - a.a. 2012/2013

Oxatis DataPlug Manuale d uso del o strumento di migrazione del database DataPlug verso Local DB

File: definizione. Il file è la più piccola unità logica manipolabie Un file è caratterizzato principalmente da:

Elaborato Shell. Elementi di architettura e sistemi operativi 2016/2017

Protezione del Kernel Tramite Macchine Virtuali

GESTIONE DELLA MEMORIA CENTRALE

Istruzioni per l installazione del Local Scheduler

SISTEMA DI ELABORAZIONE

Corso di Informatica Modulo T3 1-Nucleo e processi

L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software:

Interazione con il DOS e il BIOS

Prova in itinere 7 Giugno 2016 Università di Salerno

CORSO LINUX PER LA CERTIFICAZIONE LPI ESSENTIALS

Oggetti SOMMARIO: DIPARTIMENTO DI INFORMATICA Laboratorio di Architetture degli Elaboratori II Turno B : ( G Z )

Alcuni concetti base

Guida all uso del portale web per gli utenti

La memoria cache. Informatica generale

Provare e installare Linux

Abuso dell Hardware nell Attacco al Kernel di

Installazione EasyPallet Pag. 1

Sistemi Operativi e Reti 1

File System Linux Comandi Base per orientarsi con la Bash

Il Sistema Operativo. Informatica Sistema Operativo 1

Antonio Cianfrani. Standard Access Control List (ACL)

Laboratorio di Sistemi Operativi

CAPITOLO 10 - Controllo dei Processi

Sistemi Operativi. Corso di Laurea Triennale in Ingegneria Informatica. Esercitazione 2. Editor Utenti Permessi

Laboratorio in C su Processi e POSIX IPC (Inter Process Communications) Dalla nona lezione di laboratorio in avanti

Unità di apprendimento 6. Il software: dal linguaggio alla applicazione

Cenni sulla virtualizzazione

2017 Electronics For Imaging, Inc. Per questo prodotto, il trattamento delle informazioni contenute nella presente pubblicazione è regolato da quanto

Sistemi Operativi. Esercitazione 12. Corso di Laurea Triennale in Ingegneria Informatica.

Lezione 11 Contrasto alle attività maliziose Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2018/2019 Dipartimento di Scienze Fisiche,

FILE SYSTEM 2. I-nodes (o Inodes)

Installazione di IBM SPSS Modeler Entity Analytics

Cosa e come installare (Definire cosa si vuole fare - Sapere cosa si può installare - Selezione dei pacchetti)

2. Strutture dei Sistemi Operativi. 2.2 Interfaccia col Sistema Operativo Interprete dei comandi

2. Cenni di sistemi operativi

Esplorare e modificare il file system Compilare con gcc Lanciare un programma da linea di comando

Sistemi Operativi. A.M. Fanelli Architettura dei Sistemi a. a Livello di Sistema Operativo. Livello di Linguaggi Applicativi

Horizone Server IN00B02WEB. Horizone PDK

Corso ForTIC C2 LEZIONE n. 4

Sistemi Operativi Il Sistema Operativo Windows (parte 2)

Architettura dei calcolatori e sistemi operativi. Il Nucleo del Sistema Operativo. N4 I servizi di Sistema

Descrizione generale dell architettura del sistema e dell interazione tra i suoi componenti. Descrizione del sottosistema di sicurezza locale.

Transizioni di stato in UNIX

Sistemi operativi 2003/2004. Input e output

Linguaggi di Programmazione

Cenni sulla virtualizzazione

Sistemi Operativi 2003/2004 WINDOWS 2000

Linguaggio SQL: costrutti avanzati D B M G

Assembly IV Le procedure

Linguaggio SQL: costrutti avanzati Controllo dell accesso

Sistemi operativi e distribuiti

Cos'è Linux. Un sistema operativo : un insieme di programmi necessari per il funzionamento del computer e per il funzionamento di altri programmi.

Universita di Milano - Polo di Crema Novembre Session Hijacking. Marco Cremonini 1. Marco Cremonini - Corso Integrativo Network Security 1

Sistema di protezione (1)

Transcript:

Rootkit: Analysis, Detection and Protection Igor Neri 1 Definizione Un rootkit è una raccolta di tool che un intruso installa sulla macchina vittima dopo essersi guadagnato un accesso non autorizzato alla stessa. Lo scopo principale di un rootkit è identico a quello di un trojan, cioè quello di permettere all intruso (o agli intrusi) di poter ritornare al sistema compromesso senza essere scoperti. In particolare un rootkit non garantisce l accesso al sistema, che deve essere guadagnato in altro modo, ma permette principalmente di: Nascondere l attività dell intruso Garantire un accesso non autorizzato (facoltativo) Rimuovere le tracce dai log di sistema 2 Classificazione I rootkit si classificano principalmente in base al livello al quale operano, i più diffusi S.O. per le architetture x86 utilizzano solo due dei quattro livelli di privilegi disponibili (fig.1): il ring 0, corrispondente al livello kernel, dove c è pieno accesso alla memoria e all intero set di istruzioni. il ring 3, corrispondente al livello utente, che prevede accesso limitato alla memoria ed ad un set di istruzioni ridotto. Figura 1: x86 Rings 1

Considereremo quindi due principali categorie di rootkit, quelli a livello utente (userspace) e quelli a livello kernel (kernelspace), tuttavia con l emergente uso delle macchive virtuali c è stato un crescente interesse nello svoluppo di rootkit a livello hypervisor, che non tratteremo in questo seminario. 2.1 Userspace I rootkit a livello utente prevedono la modifica di binari di sistema e/o di librerie per modificarne il comportamento permettendo di nascondere le attività dell attaccante. Come abbiamo visto uno degli obiettivi principali dei rootkit è nascondere, quindi il rootkit dovrà rimpiazzare i binari di sistema per nascondere: File: du, find, sync, ls, df, lsof, netstat Processi: killall, pidof, ps, top, lsof Connessioni: netstat, tcpd, lsof, route, arp Log entry: syslogd, tcpd Login: w, who, last Una volta che l attaccante si è nascosto nel sistema vuole comunque garantirsi la possibilità di riaccedere al sistema in modo diretto, quindi compito (opzionale) del rootkit è garantire l accesso al sistema inserendo ad esempio una backdoor nei processi che vengono eseguiti in fase di boot del sistema o comunque in applicazioni normalmente destiante a garantire accesso autorizzato al sistema modificandole. Ad esempio modificando i programmi: inetd, login, rlogin, rshd, telnetd, sshd, su, chfn, passwd, chsh, sudo. Fatto ciò deve nascondere le tracce della violazione e quindi usare appositi strumenti che gli permettano di eliminare le entry relative all accesso non autorizzato dai log di sistema. Come è facile intuire l installazione di questo tipo di rootkit risulta abbastanza laboriosa, principalmente perchè è necessario sostituire gran parte degli eseguibili del sisitema manatendone comunque la compatibilità con il sistema stesso. 2.2 Kernelspace I rootkit che operano a livello kernel cercano di ovviare al poblema dei rootkit a livello utente andando a modificare il comportamente delle chiamate di sistema (syscall). L obiettivo è quindi quello di piazzare il codice maligno al livello kernel andandone a modificare la struttura. Prima di spiegare come funzionano dobbiamo vedere cosa succede quando viene eseguita un applicazione che fa uso di chiamate di sistema. 2.2.1 Flusso di esecuzione di chiamata ad una syscall Nell esempio in fig.2 vediamo come opera il comando ls, durante l esecuzione c è una chiamata alla funzione getdents() che legge le informazioni relative alla directory passata come argomento, la funzione getdents, attraverso un interfaccia utente-kernel fa riferimento alla syscall sys getdents(). L obiettivo dei rootkit a livello kernel è di intercettare il flusso di esecuzione per modificarlo, questo può essere fatto a vari livelli. 2.2.2 Il normale Workflow Vediamo più in dettaglio cosa succede quando viene chiamata una syscall (fig.3): Il processo chiamante piazza un interrupt della IDT (interrupt desctiption table) 2

Figura 2: Workflow del comando ls L interrupt handler consulta la IDT e richiama il system call handler Il system call handler, in base alla funzione richiesta preleva il puntatore alla syscall specifica dalla system call table. La system call viene eseguita, facendo anche riferimento ad altre funzioni del kernel Il rootkit può essere inserito in vari livelli dirottando il flusso di esecuzione. 2.2.3 Manipolare la Syscall Table Uno dei primi metodi è quello di modificare la syscall table (fig.4(a)) andando a modificare il puntatore alla syscall da eseguire sostituendolo con il puntatore ad una modificata. La nuova funzione viene quindi chiamata al posto di quella originale, spesso la nuova funzione fa soltanto da wrapper alla vecchia aggiunendo dei controlli. 2.2.4 Copia della syscall table/handler Uno dei modi più semplici per rilevare un rootkit del tipo precedente è fare una copia della systemcall table originale e confrontarla periodicamente con quella attuale. Per ovviare a questo problema possiamo farci una copia della syscall table e modificare il syscall handler per fargli fare riferimento alla syscall table modificata (fig.4(b)). 2.2.5 Manipolare la IDT Un altro punto per intercettare il flusso di esecuzione è modificare la IDT (fig.4(c)) modificando il puntatore alla syscall handler facendogli chiamare uno modificato che si occuperò di eseguire il rootkit. 2.2.6 Modificare la syscall all interno del kernel Per evitare di modificare la struttura precedente possiamo modificare direttamente la funzione chiamata dalla syscall per alterarne il comportamento (fig.4(d)), questo metodo risulta tuttavia difficile da applicare perchè richiede spesso una ricompilazione del kernel e un riavvio della macchina. 3

Figura 3: Flusso di esecuzione 3 Rilevare la presenza di rootkit I metodi di rilevamento cambiano molto in base al tipo di rootkit utilizzati. Per il primo tipo di rootkit, quelli a livello utente, i metodo più efficaci sono un analisi dei binari di sistema cercando di identificare modifiche non autorizzata (checksum) o cercando di rilevare le signature dei rootkit comosciuti all interno dei binari, ovviamente nuovi rootkit sconosciuti non saranno identificabili con quest ultimo metodo. Per identificare rootkit a livello kernel invece possiamo affidarci a vari strumenti che vanno dall identificare modifiche nella memoria destinata al kernel (kstat), all uso di specifici moduli per il kernel che hanno come obiettivo quello di restringere e monitorare le azioni possibili a livello kernel. Metodi che funzionano in entrambi i casi si basano invece in un analisi offline del sistema che si presume sia compromesso o da un terzo nodo della rete per identificare comportamente sospetti. 4 Protezione del sistema La prevenzione è un aspetto importante, è necessario assicurarsi che il prorpio sistema sia al sicuro alemno dalle minacce conosciute, e comunque che i comportamenti sospetti o non autorizzati siano impediti. Applicando delle semplici linee guida di sicurezza, che vanno dall applicare periodicamente le patch di sicurezza al restingere le operazioni possibili, possiamo considerare il nostro sistema sufficientemente sicuro. 4

(a) Manipolare la Syscall Table (b) Copia della syscall table/handler (c) Manipolare la IDT (d) Modificare la syscall all interno del kernel Figura 4: N-1 Performance 5