UML: Introduzione

User Mode Linux è un kernel Linux opportunamente modificato che sfrutta un altro kernel Linux accedendo, tramite quest'ultimo, all'hardware vero e proprio della macchina.

Comunicando con il kernel host e non interagendo direttamente con l'hardware, un kernel UML permette di eseguire Linux su se stesso.
Le possibilità offerte da questo "trucchetto" sono molteplici e tutte estremamente interessanti: tra queste và sicuramente citata la possibilità di effettuare il debugging del kernel in maniera del tutto facile e versatile.

Installazione:
Colleghiamoci al sito http://user-mode-linux.sourceforge.net/dl-sf.html e scarichiamo la patch per il nostro kernel (la più recente al momento della stesura di questo articolo è la uml-patch-2.4.27-1.bz2).
Qualora non li avessimo, scarichiamo i source del kernel linux 2.4.27 da http://www.kernel.org.
Estraiamo i sorgenti del kernel 2.4.27 in /usr/src/uml:
# mkdir /usr/src/uml
# tar -zxvf kernel-2.4.27.tar.gz


Applichiamo la patch:
# bzcat uml-patch-2.4.27-1.bz2 | patch -p1

A questo punto abbiamo il kernel UML pronto da compilare: dobbiamo procurarci un'immagine di un filesystem.
A puro scopo esemplificativo (in quanto sarete voi a scegliere il vostro fs preferito) scarichiamo il fs Debian da http://prdownloads.sourceforge.net/user-mode-linux/Debian-3.0r0.ext2.bz2.
Scaricato il filesystem montiamolo in loop:
# bunzip2 Debian-3.0r0.ext2.bz2
# mount -t loop Debian-3.0r0.ext2 /percorso/fs


Compiliamo il kernel:
# cd /usr/src/uml
# make menuconfig ARCH=um
# make modules ARCH=um
# make modules_install ARCH=um INSTALL_MOD_PATH=/percorso_del_fs_montato_in_loop
# make linux ARCH=um
# cp linux /usr/bin
# umount /percorso_del_fs_montato_in_loop


La nostra macchina virtuale è pronta, avviamola con:
# linux ubd0=/percorso/fs_root (NON montato in loop)

Vedremo un nuovo sistema avviarsi nella nostra shell !
TIP: UML in rete:
Qualora volessimo che la nostra UML abbia accesso alla rete avvieremo "linux" in questo modo:
# /usr/bin/linux eth0=tuntap,,,192.168.x.x ubd0=/home/mozako/Desktop/UML/FS/fs_root

Ciò creerà un'interfaccia tap0 sulla macchina host permettendo alla UML di "comunicare col mondo" tramite, appunto, il pc host.

Torneremo presto sull'argomento UML vedendo come debuggare un kernel, provare exploits e, perchè no, analizzare e valutare eventuali vulnerabilità del kernel linux.

Privacy Policy