Linux VS FreeBSD advances in attacking kernel

Titolo:
Linux VS FreeBSD advances in attacking kernel
Autore:
Attilio Rao - FreeBSD Project / GUFI
Pierre Falda - Antifork Research

Abstract intervento:
Lo speech presenterà i risultati finali di ricerche indipendenti condotte all'interno dei kernel di Linux [1] e FreeBSD [2], relativi all'architettura hardware proprietaria Intel i386 [3]. Per quanto riguarda la parte concernente Linux, si mostrerà come sia possibile sviluppare un sistema per l'occultamento di attività ed informazioni su una macchina sfruttando una sinergia di meccanismi software ed hardware, riuscendo così ad eludere qualsiasi tipo di controllo da parte di un amministratore ed al tempo stesso garantendo una portabilà elevatissima. Lo scopo che ci si prefigge è di mostrare come sia possibile realizzare quanto sopra citato e di far capire quanto sia importante la prevenzione attraverso le opportune contromisure.
Le dimostrazioni verranno effettuate su sistema operativo linux, ma i concetti che verranno esposti sono perfettamente portabili su altri sistemi operativi quali *BSD o MS Windows. Lo scopo inziale della ricerca nel kernel di FreeBSD, invece, era quello di progettare una tecnica che permettesse l'implementazione di kernel rootkits aventi le seguenti proprieta':

  • Semplicita' nel triggering: un ipotetico rootkit non avrebbe dovuto avere particolari problemi ad essere utilizzato o comunque invocato
  • Semplicita' nell'applicazione: un ipotetico rootkit non avrebbe dovuto avere particolari problemi nell'agganciarsi al kernel (come ad esempio scritture del .text del kernel o utilizzo di /dev/kmem)
  • Efficienza: un ipotetico rootkit non avrebbe dovuto portare ad una degradazione delle prestazioni della macchina
  • Opacita': un ipotetico rootkit sarebbe dovuto rimanere invisibile a tool automatizzati di controllo, anche una volta che la tecnica sarebbe stata diffusa.

I risultati finali si sono dimostrati molto soddisfacenti, riuscendo a coprire tutte le esigenze di base proposte. Per quanto riguarda l'implementazione, volendo assicurare opacita', le prime idee vagliate si sono riferite all'utilizzo di strutture che subivano aggiornamenti dinamici ed asincroni, ed una delle parti maggiormente analizzate e' stata l'infrastruttura che gestiva gli ABI [4] (Application Binary Interface). Tale infrastruttura, importata interamente dallo SCO Unix, permette a FreeBSD di mantenere un'ottima compatibilita' con vari tipi di binari senza pagare penalizzazioni in termini di perormance (al momento della stesura dell'abstract e' disponibile FreeBSD 6.1RELEASE e sono supportati i formati ELF aggiuntivi per Linux di Solaris).
Manipolando alcune funzioni introdotte dall'infrastruttura ABI, utilizzate all'interno dell'interrupt handler 80h (ovvero l'exception che si occupa di fare le syscall passando da userspace a kernelspace), si e' visto che si puo' avere un controllo forte sul flusso di esecuzione di ogni programma, mantenendo comunque un alto grado di rilocabilita' del codice maligno. Sovvertendo, dunque, l'utilizzo dell'ABI infrastructure si dimostrera' come sia possibile implementare rootkit che facilmente rispondono a tutte lenostre esigenze di base.

Riferimenti:

Breve CV Relatore:
Pierre Falda

ricercatore indipendente e consulente nel campo della security da 6 anni.
Vanta un'esperienza acquisita lavorando sia presso privati sia presso aziende a stretto contatto con istituzioni a livello nazionale per la sicurezza informatica e non. E' autore di articoli, ricerche, whitepapers apparsi su varie riviste, tra cui BFI, come il più recente "L.K.E.P.D." riguardante le varie tecniche di manomissione del kernel. I suoi lavori sono stati alla base o lo spunto per miglioramenti in vari software di sicurezza, mentre le sue ricerche e lavori orbitano prevalentemente intorno al kernel del sistema operativo Linux su architettura x86. Attualmente è studente a tempo pieno all'università di Milano, facoltà di informatica nonchè membro attivo del gruppo di ricerca Antifork Research, che lavora sia a livello nazionale che internazionale.

Attilio Rao

sviluppatore, software engineer ed architect, ricercatore indipendente da 5 anni. Si interessa prevalentemente di programmazione a basso livello ed ad alte perfomances nonchè degli aspetti di security all'interno dei sistemi operativi e del loro sviluppo. E' membro dello staff del GUFI , sviluppatore ufficiale di FreeBSD, sistema su cui ha tenuto vari interventi nel mondo portando i risultati delle sue ricerche. E' stato relatore in diversi eventi tra cui il GUFICON 2004 ed il prestigioso BsdCan 2006. Attualmente è studente di ingegneria elettronica presso l'università degli studi di Roma.