I Loadable Kernel Module



Linux utilizza (è) un kernel di tipo monolitico modulare, quindi un solo programma gestisce tutte le funzionalità principali del sistema operativo, come gestione dei processi, della CPU, della memoria, della comunicazione coi dispositivi eccetera.

Essendo modulare, esso può caricare moduli in fase di esecuzione secondo le necessità, al fine di aggiungere supporto per periferiche (driver) o funzionalità nuove, come system call aggiuntive.

Un modulo del kernel è quindi un software, con estensione .ko, che può esser aggiunto al kernel. Essi vengono salvati nella cartella /lib/modules/<versione-kernel>.

Ogni modulo può avere un alias, definito dal file modules.alias, che si può cercare con il comando:

find / -name modules.alias

/lib/modules/<versione-kernel>/modules.alias

Il modo più semplice per caricare un modulo in memoria è utilizzare il programma modprobe, il quale carica il modulo rispettando le sue dipendenze, riferendosi al file modules.dep (generato da depmod).

Sul mio sistema:

cat /lib/modules/2.6.24-1-amd64/modules.dep | grep rt73

/lib/modules/2.6.24-1-amd64/extra/rt73.ko: 
/lib/modules/2.6.24-1-amd64/kernel/drivers/base/firmware_class.ko

Kernel e moduli del kernel funzionano nel cosiddetto kernel space, in contrapposizione ai programmi di livello utente che girano appunto in user space: un palese effetto dell'asserto è che un malfunzionamento di un modulo implica il malfunzionamento di tutto il sistema.

Alcuni comandi utili in ordine sparso:

  • modprobe: carica un modulo in memoria, rispettando le sue dipendenze;
  • rmmod: scarica manualmente i moduli;
  • lsmod: elenca i moduli caricati;
  • depmod: rigenera il file delle dipendenze tra i moduli;
  • modinfo: dà informazioni su un modulo.

Per quanto riguarda il modulo del kernel rt73, abbiamo le seguenti informazioni, che ora possiamo capire nel dettaglio:

modinfo rt73

filename:       /lib/modules/2.6.24-1-amd64/extra/rt73.ko 
license:        GPL 
description:    Ralink RT73 802.11abg WLAN Driver - k2wrlz modifications 3.0.0 
author:         http://rt2x00.serialmonkey.com 
alias:          usb:v1740p7100d*dc*dsc*dp*ic*isc*ip* 
[...]
depends:        firmware_class 
vermagic:       2.6.24-1-amd64 SMP mod_unload 
parm:           debug:Debug mask: n selects filter, 0 for none (int) 
parm:           ifname:Network device name (default rausb%d) (charp) 
parm:           firmName:Permit to load a different firmware: (default: rt73.bin) 

Ultimi articoli Sicurezza

Forensics: NBTempo una GUI per le timeline

Usiamo NBTempo, una GUI che consente di creare delle timeline dei...

Nmap: tecniche per evadere un firewall

Vediamo come sfuggire ai controlli di un firewall utilizzando Nmap.

Sfruttare vulnerabilità XSS con BeEF

Usiamo BeEF per automatizzare lo sfruttamento di vulnerabilità Cross...

Trojan Flashback: rimuoverlo da Mac OS X

Individuiamo e rimuoviamo il trojan Flashback da Mac OS X

Individuare vulnerabilità in Joomla con JoomScan

Usiamo JoomScan per verificare la sicurezza di Joomla e la presenza...

Altri articoli

Guide Sicurezza

Guida SQL Injection con Sqlmap

Scopriamo se le nostre applicazioni web sono vulnerabili alle SQL...

Guida sicurezza applicazioni Web

Le tecniche di attacco più comuni, i metodi per verificare la...

Guida rimozione malware

Un malware è un qualsiasi software nocivo per il computer. Questa...

Altre guide

Newsletter @Sicurezza

Ogni lunedì, direttamente nella tua e-mail: approfondimenti e bollettini su virus, vulnerabilità e sicurezza informatica.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto