SET 39 Call For Papers

¿Eres un hacker? Si deseas pasar a formar parte de la historia del hacking hispano, colabora con la próxima edición de SET 39 enviándonos un artículo. No esperes más, esta es tu oportunidad de demostrar lo que sabes. Ayúdanos a construir una revista de hackers para hackers. SET Staff

LiveCD

      4101

Autor: blackngel
-[ 0x06 ]--------------------------------------------------------------------
-[ LiveCD Linux ]------------------------------------------------------------
-[ by blackngel ]----------------------------------------------------SET-34--

        @                                                              @
       @@@                   blackngel@iespana.es                     @@@
        IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
        IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
        III @@@@  @     @@@@@ @@@@@ @   @ @@    @ @@@@@  @@@@@ @     III
        III @   @ @     @   @ @     @  @  @ @   @ @      @     @     III
        III @@@@@ @     @@@@@ @     @@@   @  @  @ @  @@@ @@@@  @     III
        III @   @ @     @   @ @     @  @  @   @ @ @   @  @     @     III
        III @@@@  @@@@@ @   @ @@@@@ @   @ @    @@ @@@@@  @@@@@ @@@@@ III
        IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
        IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
       @@@                                                            @@@
        @                                                              @
                         %%%%%%%%%%%%%%%%%%%%%%%%%%%%
                         %%%======================%%%
                         %%% CREA TU LIVECD LINUX %%%
                         %%%======================%%%
                         %%%%%%%%%%%%%%%%%%%%%%%%%%%%
                     "Bienvenidos al mundo de lo real..."



*__**__**__**__**__**__**__*
*__* 01 *__*   INDICE   *__*
*__**__**__**__**__**__**__*



                    {}--{}-----------------------{}
                    {}01{} INDICE                {}
                    {}--{}-----------------------{}
                    {}--{}-----------------------{}
                    {}02{} INTRODUCCIoN          {}
                    {}--{}-----------------------{}
                    {}--{}-----------------------{}
                    {}03{} PREPARAR ENTORNO      {}
                    {}--{}-----------------------{}
                    {}--{}-----------------------{}
                    {}04{} PERSONALIZAR          {}
                    {}--{}-----------------------{}
                    {}--{}-----------------------{}
                    {}05{} FINALIZAR             {}
                    {}--{}-----------------------{}
                    {}--{}-----------------------{}
                    {}06{} DESPEDIDA             {}
                    {}--{}-----------------------{}



*__**__**__**__**__**__**__**__*
*__* 02 *__*  INTRODUCCIoN  *__*
*__**__**__**__**__**__**__**__*



Antes de nada, saludos y agradecimientos a todos aquellos que donan un poquito
de su humilde tiempo para leer estas lineas. No es nada especial, como siempre,
pues no es el libro de las revelacones, pero lleva su trabajo y uno gusta de
saber que otras personas con intereses similares disfrutan, se nutren y utilizan
(que es el fin primordial de cada articulo) el contenido del mismo.

¿Cual es el porque de este articulo?

Pues facil, hoy en dia podemos encontrar bastantes guias acerca de como
"remasterizar" una distribucion Linux y adaptarla a nuestras necesidades; pero
muchas (la mayoria de ellas), no plantean una ordenacion, una maquetacion y lo
mas importante, una explicacion de lo que realmente se esta haciendo.
Esta guia viene precisamente a cubrir ese espacio vacio en el ambito de la
modificacion de distribuciones y creacion de LiveCD's.

Otro punto importante a esclarecer, es que la creacion del LiveCD que aqui
vamos a desarrollar se basara en la distribucion de Linux "Ubuntu", que a dia
de hoy ocupa la cabeza en la lista de las mejores distribuciones Linux del
mundo.

Una mejor definicion de Ubuntu nos la aporta nuestra gran conocida Wikipedia:

   Ubuntu es una distribucion Linux que ofrece un sistema operativo
   predominantemente enfocado a ordenadores de escritorio aunque tambien
   proporciona soporte para servidores. Basada en Debian GNU/Linux, Ubuntu
   concentra su objetivo en la facilidad de uso, la libertad en la restriccion
   de uso, los lanzamientos regulares (cada 6 meses) y la facilidad en la
   instalacion.

Que mejor carta de presentacion para comenzar este articulo no?

Como ultimo apunte dire que, no habiendo que cenirse a la version aqui
utilizada, yo me basare en el LiveCD Ubuntu 7.04 "Feisty Fawn" para el
desarrollo de los contenidos que a continuacion se explican.



*__**__**__**__**__**__**__**__**__*
*__* 03 *__*  PREPARAR ENTORNO  *__*
*__**__**__**__**__**__**__**__**__*



Antes de nada puntualizar que en el ejemplo de distribucion que vamos a crear
utilizare el nombre de "SetOS" para el LiveCd, este nombre, como muchos otros
parametros, puede ser modificado al antojo de cada uno, pues para eso este
articulo trata sobre la construccion de una distro "personalizada".

IMPORTANTE: Cabe recalcar que lo mejor seria realizar todas las operaciones
sobre una distribucion Ubuntu igual a la base que se va a utilizar para la
creacion propia. En este caso Ubuntu 7.04.

#--------------------------------------------------------#
| REQUISITOS: (Conexion a Internet, bastante necesario)  |
|                                                        |
|   $sudo apt-get install squashfs-source squashfs-tools |
|   $sudo apt-get install unionfs-source unionfs-tools   |
|   $sudo apt-get install cdrecord mkisofs cdparanoia    |
#--------------------------------------------------------#

En primer lugar, definiremos nuestro espacio de trabajo, que sera aquel
directorio que contendra toda la informacion necesaria para crear nuestro LiveCD
personalizado. Declararemos este directorio como una "variable de entorno" para
que su utilizacion durante el resto del proceso sea mas comoda.

   $ export LIVECD=~/setos
   $ mkdir -p $LIVECD

Punto seguido tendremos que optar entre dos opciones, la primera la utilizaremos
si ya disponemos de un LiveCD Ubuntu 7.04 Feisty Fawn, y la segunda si nos hemos
descargado la imagen (imagen.iso).

1ª:
   $ mount -t iso9660 /dev/hdc /media/cdrom

Nota: Aqui sustituiremos "/dev/hdc" por el dispositivo donde se encuentre
nuestra unidad CD-ROM. En casa de que la unidad ya estuviera montada porque el
sistema la ha reconocido automaticamente, este paso ya no haria falta (seria
redundante).

2ª 
  $ sudo mount -t iso9660 -o loop /directorio/imagen/iso/imagen.iso /media/cdrom

Nota: Aqui sustituiremos el PATH de la imagen por aquel donde se encuentre la
imagen que cada uno se ha descargado.

Ahora crearemos un nuevo directorio donde copiaremos todo el contenido del 
CD-ROM o imagen que acabamos de montar y le otorgaremos permiso de escritura al
usuario. Luego desmontaremos el directorio donde hemos montado el CD-ROM o la 
imagen pues ya no nos hara falta a lo largo del articulo.

   $ cd $LIVECD
   $ mkdir setos-livecd
   $ cp -a /media/cdrom/. setos-livecd
   $ chmod -R u+w setos-livecd
   $ sudo umount /media/cdrom

El siguiente paso es importante, pues nos ayuda a liberar un espacio en el 
LiveCD que hasta ahora viene siendo ocupado por un grupo de programas que se 
pueden instalar en el Sistema Operativo Windows cuando el LiveCD se autoarranca.
Para nuestros propositos, estos programas no nos son utiles y por lo tanto 
usaremos cada uno de esos megabytes extras en software mucho mas util y 
provechoso.

   $ rm -rf $LIVECD/setos-livecd/programs

Bien, ahora comienza lo bueno del asunto. Llego el momento de montar en un nuevo
directorio la imagen comprimida del Sistema de Ficheros. Los siguientes pasos 
son primordiales, pues es sobre esta imagen descomprimida donde se van a 
realizar todas las modificaciones que deseemos y que una vez vuelta a comprimir 
servira de base para nuestro nuevo SetOS LiveCD.

   $ mkdir $LIVECD/old
   $ sudo mount -t squashfs -o loop,ro \ 
                  $LIVECD/setos-livecd/casper/filesystem.squashfs $LIVECD/old

Nota: He cortado el segundo comando en dos lineas para que cupiera bien en el
formato de 80 caracteres por linea de este articulo. En una shell de linux
deberian ponerlo todo en una linea para evadir errores evitables como retornos
de carro (ENTER's) incontrolados.
IMPORTANTE: De ponerlo todo en una linea, el caracter "\" debe ser eliminado
para que el comando surja efecto.

Seguidamente crearemos un fichero vacio con una capacidad de 2 Gigabytes al
cual le daremos un formato de Sistema de Ficheros Ext2. Sera en este archivo
(que debe ser montado en un nuevo directorio, como haremos dentro de poco),
en el que volcaremos el contenido de la imagen que en el paso anterior
acabamos de descomprimir.
Parece redundante, dado que ya hemos descomprimido la imagen y pareceria
obvio que pudieramos empezar a trabajar sobre el directorio $LIVECD/old y
realizar ahi nuestras modificaciones; pero esto no puede ser hecho de esta
forma, pues no tiene el formato de un Sistema de Ficheros de Linux y por lo
tanto precisamos estos pasos intermedios para que todo salga como queremos.

   $ sudo dd if=/dev/zero of=$LIVECD/ubuntu-fs.ext2 bs=1M count=2147
   $ sudo mke2fs $LIVECD/ubuntu-fs.ext2
   $ mkdir $LIVECD/new
   $ sudo mount -o loop $LIVECD/ubuntu-fs.ext2 $LIVECD/new
   $ sudo cp -a $LIVECD/old/. $LIVECD/new
   $ sudo umount $LIVECD/old

Y es ahora, por fin, cuando ya tenemos en nuestro directorio $LIVECD/new,
el Sistema de Ficheros bien preparadito para ser retocado con los ajustes
que sean necesarios.

Con esto, pasamos a la siguiente seccion que sera seguro la que mas les
interese.



*__**__**__**__**__**__**__**__*
*__* 04 *__*  PERSONALIZAR  *__*
*__**__**__**__**__**__**__**__*



Primeramente copiaremos un archivo de nuestro directorio de configuraciones al
homonimo del LiveCD que regula la resoluciones de nombres de maquina y
montaremos (IMPRESCINDIBLE) el sistema /proc.
Tambien copiaremos nuestro archivo de fuentes "sources.list" que nos servira
para poder instalar aplicaciones desde las fuentes que actualmente hayamos
anadido.

   $ sudo cp /etc/resolv.conf $LIVECD/new/etc/
   $ sudo cp /etc/apt/sources.list $LIVECD/new/etc/apt/
   $ sudo mount -t proc -o bind /proc $LIVECD/new/proc

Pongo aqui un ejemplo de mi "sources.list" que contiene las fuentes
desde donde se pueden descargar las aplicaciones que aqui se instalaran para
ejemplificar las operaciones.

#--sources.list---------------------------------------------------------------#
|deb http://es.archive.ubuntu.com/ubuntu/ feisty main restricted              |
|deb-src http://es.archive.ubuntu.com/ubuntu/ feisty main restricted          |
|deb http://es.archive.ubuntu.com/ubuntu/ feisty-updates main restricted      |
|deb-src http://es.archive.ubuntu.com/ubuntu/ feisty-updates main restricted  |
|deb http://es.archive.ubuntu.com/ubuntu/ feisty universe                     |
|deb-src http://es.archive.ubuntu.com/ubuntu/ feisty universe                 |
|deb http://es.archive.ubuntu.com/ubuntu/ feisty multiverse                   |
|deb-src http://es.archive.ubuntu.com/ubuntu/ feisty multiverse               |
|deb http://security.ubuntu.com/ubuntu feisty-security main restricted        |
|deb-src http://security.ubuntu.com/ubuntu feisty-security main restricted    |
|deb http://security.ubuntu.com/ubuntu feisty-security universe               |
|deb-src http://security.ubuntu.com/ubuntu feisty-security universe           |
|deb http://security.ubuntu.com/ubuntu feisty-security multiverse             |
|deb-src http://security.ubuntu.com/ubuntu feisty-security multiverse         |
|deb http://ubuntu.beryl-project.org feisty main                              |
|deb http://wine.lowvoice.nl/apt feisty main                                  |
|deb http://www.getautomatix.com/apt feisty main                              |
|deb http://download.tuxfamily.org/3v1deb feisty eyecandy                     |
|deb-src http://download.tuxfamily.org/3v1deb feisty eyecandy                 |
#--sources.list---------------------------------------------------------------#

Ahora realizaremos un "chroot" del directorio donde se encuentra el Sistema de
Ficheros del LiveCD para que cualquier operacion realizada a partir de este
momento cause sus efectos solo sobre este y no sobre la distribucion Ubuntu que
actualmente tenemos instalada en nuestro equipo.

   $ sudo chroot $LIVECD/new /bin/bash

Como superusuario de este directorio, ahora estas en disposicion de instalar y
desinstalar a traves del comando "apt-get" cualquier aplicacion que desees. 
Antes de nada, el siguiente comando actualizara la lista de repositorios
(sources.list) que anteriormente hemos copiado.

   # apt-get update

Nota: Notese que a partir de ahora el caracter '#' sustituye a '$' a la hora
de preceder a los comandos. Ello se debe a los permisos de superusuario (root)
que ahora poseemos sobre el directorio "chrooteado".

Vale, ahora podriamos hacer un "apt-get dist-upgrade" pero seguramente la
actualizacion no cabria en el espacio que hemos creado y tampoco este es el
objetivo que buscamos. Si como en este ejemplo, buscamos elaborar un LiveCD
orientado a nuestras activades de hacking, cracking, seguridad informatica, y
un etc. muy largo, os dire algunas de las aplicaciones que podeis y debeis
instalar; pero antes de nada obtendremos un poco mas de espacio eliminando
aquellos programas que no nos interesan.

   # apt-get remove openoffice.org*

Con el comando anterior puedes llegar a liberar mas de 250 megabytes.

Nota: Debemos responder 'S' cuando se nos pregunte si realmente deseamos
eliminar estos programos y de la misma forma contestaremos igual cuando se
nos pregunte si realmente deseamos instalar algun software (de Perogrullo).

Instalemos ahora aplicaciones concernientes a nuestro ambito de trabajo,
"hacking":

   # apt-get install aircrack-ng driftnet dsniff etherape ettercap gftp
     gpsdrive hping2 hping3 iputils-tracepath kismet ltrace mtr ndiff
     nessus nessusd nessus-plugins netcat netcat6 netwox nikto nmap nmapfe
     p0f paketto pbnj pnscan psad scapy squashfs-source squashfs-tools
     strace tcptraceroute traceproto traceroute unionfs-source
     unionfs-tools wireshark xprobe xwhois

Con esto ya tendriamos unos cuantos juguetes con los que empezar a
divertirnos a lo grande.

Opcionalmente podriamos instalar varias herramientas de programacion que
nos serian muy utiles como: Anjuta, Bluefish o KDevelop. Pero la distro
creceria con cada paquete instalado y por lo tanto queda a eleccion de
cada uno.

Existen otras aplicaciones como: Metasploit o Amap, las cuales seria casi
un delito olvidarse de ellas. Su instalacion no se realiza a traves de
"apt" sino que debemos descargarlas desde Internet, copiarlas por ejemplo
en el directorio $LIVECD/new/usr/src, descomprimirlas y compilarlas dentro
del chroot. Seria algo similar a esto:

Desde una shell aparte:
                          (metasploit)
   $ cp /home/usuario/descargas/framework-3.0.tar.gz $LIVECD/new/usr/src/

Nota: Puede que necesites utilizar "sudo" delante del comando.

Desde la shell donde tenemos el chroot:

   # cd /usr/src
   # tar xvzf framework-3.0.tar.gz

Y para instalar normalmente suele bastar con:

   # cd framework-3.0
   # ./configure
   # make
   # make install
   
Y esto lo hariamos con cada aplicacion que deba ser instalada de este
modo. Por suerte, en la actualidad la mayoria las encontraremos en los
repositorios y nos evitaran estos insidiosos (y tradicionales) procesos.

Una vez que hemos instalado aquello que nos ha parecido conveniente,
ejecutaremos unos comandos de limpieza para borrar aquellos archivos
temporales de instalacion que se han descargado y que ocupan un espacio
ciertamente valioso.

   # apt-get autoclean
   # apt-get clean

Ahora salimos por fin del chroot, desmontamos el sistema /proc y
borramos el archivo de configuracion que copiamos al principio:

   # exit
   $ sudo umount $LIVECD/new/proc
   $ sudo rm $LIVECD/new/etc/resolv.conf

Ahora podriamos modificar muchisimos detalles que haran que el LiveCD
quede completamente adaptado a nuestro gusto. Solo dare un par de
ejemplos, luego queda a voluntad del lector investigar mas acerca de
donde se pueden cambiar los diferentes parametros sobre aquello que
queremos modificar.

Ejemplo 1: Si lo que deseamos es que cuando el LiveCD arranque
completamente, se muestre un fondo de pantalla que nosotros hayamos
elegido, y no el aburrido de todos los dias que viene instalado por
defecto, haremos lo siguiente:

   $ cd $LIVECD/new/usr/share/backgrounds/
   $ cp /home/ususario/imagen.jpg .
   $ mv imagen.png warty-final-ubuntu.png

Nota 1: Puede que necesites utilizar "sudo" delante de los comandos.
Nota 2: "imagen.png" es el fondo que deseamos se vea por defecto cuando
arranque el LiveCD. Observese que el formato es "png" porque la imagen
a sustituir tambien se encuentra en este formato.
"warty-final-ubuntu.png" es la imagen que Ubuntu trae preinstalada y
por ello renombramos nuestra "imagen.png" con este nombre, para
sustituirla.

Este proceso podria abreviarse modificando tan solo un archivo de
configuracion e indicandole donde se encuentra nuestra imagen; pero por
desgracia ahora mismo no me acuerdo de cual era ese archivo. No
estaria mal como deberes que lo encontraseis, pues como este, tambien
tendreis que encontrar el resto de aspectos que querrais configurar.

Ejemplo 2: Podeis modificar unos archivos que aportan informacion
acerca de vuestra distribucion, personalizandola con un Banner propio.
Estos archivos de configuracion se llaman: issue, issue.net y motd.
Podriamos hacer algo asi:

   $ echo "SetOS 1.0" > $LIVECD/new/etc/issue
   $ echo "SetOS 1.0" > $LIVECD/new/etc/issue.net
   $ echo "Bienvenido a SetOS 1.0" > $LIVECD/new/etc/motd

Nota: Puede que necesites utilizar "sudo" delante de los comandos.

--------

Pues bien, hasta aqui personalizaremos nosotros nuestra distribucion
en este articulo. El que lo desee puede continuar retocando aspectos
a su antonjo; cuando termine, pase a la ultima seccion.



*__**__**__**__**__**__**__**__*
*__* 05 *__*    FINALIZAR   *__*
*__**__**__**__**__**__**__**__*



Ha llegado la hora de darle el toque final a nuestro LiveCD.

Con lo siguiente se actualizara el archivo "filesystem.manifest" necesario una
vez que se han modificado paquetes (instalados, eliminados).

   $ sudo chroot $LIVECD/new dpkg-query -W --showformat='${Package} \
${Version}\n' > $LIVECD/setos-livecd/casper/filesystem.manifest

IMPORTANTE: De ponerlo todo en una linea, el caracter "\" debe ser eliminado
para que el comando surja efecto.

Los siguientes dos comandos que pueden no ser entenidos por algunos, logran
limpiar el espacio sobrante de los 2 Gigabytes que creamos en un principio para
que la posterior compresion del Sistema de Ficheros sea eficiente.

   $ sudo dd if=/dev/zero of=$LIVECD/new/dummyfile
   $ sudo rm $LIVECD/new/dummyfile

Terminada la operacion anterior procederemos a borrar el antiguo Sistema de
Ficheros y crear el nuestro (osease comprimir el que acabamos de modificar).

   $ sudo rm $LIVECD/setos-livecd/casper/filesystem.squashfs
   $ cd $LIVECD/new
   $ sudo mksquashfs . $LIVECD/setos-livecd/casper/filesystem.squashfs

Este ultimo comando requiere su tiempo, pues no es sino el mas importante ya
que comprime todo el contenido de la carpeta "new" y permite que quepa en el
tamano de un CD normal.

Una vez terminado (pudimos habernos ido a tomar un cafe), desmontamos el
directorio "new" que ya no sera de utilidad hasta una proxima remasterizacion.

   $ cd $LIVECD
   $ sudo umount $LIVECD/new

Adaptamos el fichero de sumas (HASH (md5)) al contenido de lo que sera nuestro
CD-ROM.

   $ cd $LIVECD/setos-livecd
   $ sudo find . -type f -print0 |xargs -0 md5sum |sudo tee md5sum.txt

Y ya por ultimisimo creamos la imagen final (.iso) que grabaremos en un CD-ROM
virgen, o que ejecutaremos con un emulador como "qemu".

   $ cd $LIVECD
   $ sudo mkisofs -o setos.iso -b isolinux/isolinux.bin -c isolinux/boot.cat \
     -no-emul-boot -boot-load-size 4 -boot-info-table -r -V "SetOS Live CD" \
     -cache-inodes -J -l setos-livecd

Podriamos utilizar cualquier programa de grabacion de CD's para gnome o incluso
K3b con las librerias correctamente instaladas; pero ya que nos hemos pasado
todo el articulo delante de una "linea de comandos", podremos facilmente grabar
la imagen con la siguiente instruccion:

   $ cdrecord -v dev=/dev/cdrom fs=10M speed=4 $LIVECD/setos.iso

Si utilizamos un Cd Regrabable (que seria lo mas logico en este tipo de
pruebas), antes de ejecutar el comando anterior debemos asegurarnos de que el
CD-RW esta vacio. Para borrar su contenido ejecutaremos:

   $ cdrecord --blank=fast dev=/dev/cdrom

IMPORTANTE: "/dev/cdrom" debe ser sustituido por el dispositivo que controle
nuestra unidad de grabacion, pues podria ser /dev/dvd o /dev/cdrw, a saber...
Normalmente podriamos sustituir "dev=/dev/cdrom" por "dev=0,0,0" que es lo
normal en las grabadoras IDE.

--------

Pues ala, ya podemos arrancar nuestro sistema booteando desde CD-ROM y probar
nuestro recien cocinado LIVECD personalizado. Y si es estable, pues se lo
vendeis a los amigos para sacar un dinerillo u os haceis buenas personas y lo
liberais a Internet para que la gente disfrute de vuestro trabajo.

Si en el momento de deseais reiniciar vuestro sistema para arrancar desde CD,
teneis otra opcion muy buena que es la de ejectuar la imagen dentro de un
emulador. Qemu es una herramienta fantastica para estos menesteres:

   $ qemu $LIVECD/setos.iso -cdrom /dev/cdrom -boot d -m 256

Nota: El numero que sigue al parametro "-m" es la cantidad de memoria que
queremos asignarle al sistema que vamos a emular. Ello dependera de la
capacidad fisica de nuestro sistema y de nuestra generosidad.



*__**__**__**__**__**__**__**__*
*__* 06 *__*    DESPEDIDA   *__*
*__**__**__**__**__**__**__**__*



Hasta aqui hemos llegado con esto. No deseo extenderme mas pues hay muchas
mas cosas sobre las que escribir y esto lo considero mas un pasatiempo con
el que aprender ciertas cositas que serviran de mucho a aquellos que no
esten acostumbrados a las lindes de las distribuciones Linux y que no se
desenvuelvan muy bien al frente de una consola del sistema. 

Sin duda alguna, si alguno de vosotros quiere disponer de una distribucion
LiveCD (con posibilidad de instalacion) orientada realmente al hacking y a
todos los ambitos de la seguridad informatica, ahorrareis mas tiempo
descargando BackTrack 2.0 desde Internet. Una joya que, aunque no es 
imprescindible para el hacker, si le facilitara mucho sus labores, pues el
hacker de hoy dia no esta como para perder el tiempo.

Con un cordial saludo me despido. Hasta la proxima.


*EOF*