-[ 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*