HACKEJAR LINUX AMB ACCES FISIC A LA MAQUINA per Alex Castan Salinas acastan@xtec.cat Hola xiquets i xiquetes. No soc un expert en Linux, sino tan sol un usuari poc avancat, pero no volia acabar la serie d'articles "hackejar amb acces fisic" sense dedicar un a la seguretat fisica a Linux. Com veureu, encara que es parla molt sobre la seguretat de Linux, quan tenim acces fisic a la maquina tenim molt guanyat. Com resa el refrany: "amb acces fisic, qualsevol amb un descargolador pot entrar". 1. INTRODUCCIO -------------- Avis 1: encara que l'article esta dedicat a Linux, gran part del que dic a les seguents linies es extensible a qualsevol varietat de Unix. Pot ser que la ruta a algun fitxer que menciono canvii d'una distribucio de Linux a una altra. Per a les meves proves he fet servir la distribucio Debian Sid de desembre del 2001. Avis 2: tota la bibliografia que menciono al llarg del document (howtos i manuals) es troben al Linux Documentation Project: http://www.linuxdoc.org/. Avis 3: per falta de temps i de coneixements, de moment no parlare de maquines amb discos RAID ni de maquines sense disc amb inici remot de xarxa. Avis 4: a partir d'ara, quan parlem de 'root' ens referirem a l'usuari amb maxims privilegis dins un sistema Unix. Comencem, primer de tot, aprenent una mica sobre Linux: el proces d'inici, els carregadors i els fitxers de contrasenyes. Si voleu aprendre una mica mes sobre altres temes, podeu llegir "The Unix and Internet Fundamentals HOWTO". 1A. EL PROCES D'INICI A UN PC ----------------------------- En engegar l'ordinador, el microprocessador cerca la BIOS (Basic Input/Output System) i l'executa. La BIOS, que esta escrita sobre memoria de nomes lectura, proporciona la interficie de mes baix nivell amb els diferents dispositius i periferics, i tambe s'encarrega de controlar el primer pas en el proces d'arrencada. En aquest proces la BIOS comprova el correcte funcionament de tot el sistema i a continuacio llegeix el sector d'arrencada (boot sector) del dispositiu que esta configurat per arrencar, on resideix la primera part del carregador d'inici (bootstrap loader), i l'executa. En el cas que aquest dispositiu sigui un disc dur, que pot estar dividit en varies particions i cadascuna d'elles tenir un sector d'arrencada, el que fa la BIOS es llegir el Master Boot Record, que resideix al primer sector del disc i indica quina es la particio activa de la que cal llegir el sector d'arrencada. La primera part del carregador d'inici crida a la segona part, que a Linux normalment es /boot/boot.b, la qual a la seva vegada carrega el nucli (kernel) a memoria, i l'execucio es passa al nucli. (El nucli d'un sistema operatiu actua com a mediador entre els programes i el hardware). El nucli inicialitza el subsistema de memoria virtual, el programador de tasques i el temporitzador. A continuacio analitza sintacticament les opcions de la linia de comandes amb que fou cridat. S'inicialitzen el sistema de moduls i diferents buffers del nucli i caches i es carreguen els controladors de dispositius (device drivers) necessaris per muntar el sistema d'arxius arrel, normalment en mode de nomes lectura (si es pot apareix el missatge 'VFS: Mounted root (ext2 filesystem) readonly' i si no es pot apareix el missatge 'Kernel Panic!'). Per ultim, es crea un context de proces per a 'init', el primer i mes important proces del sistema, i s'inicia la seva execucio. Si no troba /sbin/init intenta executar /bin/sh, i si aixo tambe falla llavors no es pot iniciar el sistema. Init genera els processos del sistema: getty (la consola), login (control d'acces), syslog (la bitacola del sistema), cron i at (execucio periodica de comandes), XWindows (la interficie grafica), etc. Init te dues configuracions: BSD i System V. Gairebe totes les distribucions de Linux utilitzen la versio System V de init, que llegeix el fitxer /etc/inittab. Cada linia d'aquest fitxer esta formada per quatre camps delimitats per dos punts: identificador_de_linia:nivells_d'execucio_associats:accio:comandes_a_executar on accio es una paraula clau que indica quan s'han d'executar les comandes. Dintre d'init hi han diferents nivells d'execucio (runlevels), que no son mes que diferents estats d'init i el sistema que defineixen quins serveis estan operant. Aquests nivells d'execucio son: 0 Detenir el sistema 1 Mode d'usuari individual 2 Mode d'usuari multiple, sense processos de servidor 3 Mode d'usuari multiple, amb processos de servidor 5 Mode d'usuari multiple, amb processos de servidor i X11 6 Reiniciar el sistema 4, 7, 8 i 9 No emprats A cada canvi del nivell d'execucio, s'executen els corresponents fitxers de comandes dels directoris /etc/rcX.d, on cal canviar X pel nombre de nivell. Aquests fitxers en realitat son vincles simbolics a fitxers del directori /etc/init.d. Graficament: / -> etc/ -+-> init.d/ --> fitxers de comandes <-+ | | +--> rc0.d/ --> vincles simbolics a --+ +--> rc1.d/ --> vincles simbolics a --+ +--> rc2.d/ --> vincles simbolics a --+ +--> rc3.d/ --> vincles simbolics a --+ +--> rc5.d/ --> vincles simbolics a --+ +--> rc6.d/ --> vincles simbolics a --+ El primer caracter (S o K) del nom del vincle simbolic al fitxer de comandes, indica si el subsistema que controla s'ha d'iniciar (S) o parar (K) en aquell nivell d'execucio. Els seguents caracters del nom del vincle simbolic al fitxer de comandes son un nombre que indica l'ordre d'execucio dins el seu nivell. Si voleu aprendre mes sobre el proces d'arrencada us recomano llegir "From PowerUp To Bash Prompt HOWTO". 1B. CARREGADORS D'INICI ----------------------- LILO (Linux loader) es el carregador d'arrencada mes comu de Linux per PC. Tambe tenim Grub i loadlin, pero d'aquests parlare mes endavant. Per altres plataformes trobem MILO i aboot per Alpha, SILO per Sparc i BootX per Macintosh, pero d'aquest no arribare a parlar. Quan arrenquem Lilo, aquest normalment llegeix i carrega el nucli per defecte, pero es possible configurar-lo per poder escollir entre diferents nuclis i sistemes operatius a l'hora d'arrencar. Amb Lilo, tambe es possible passar arguments en una linia de comandes al nucli o al sistema operatiu, com per exemple el nivell d'execucio al qual volem arribar, etc. La configuracio d'arrencada de Lilo es troba al fitxer /etc/lilo.conf. Podeu trobar informacio sobre les comandes que conte aquest fitxer cridant a la corresponent pagina del manual amb 'man lilo.conf'. Un exemple tipic de fitxer lilo.conf seria: | # Suport per discos durs grans. | lba32 | | # Especifica el dispositiu d'arrencada (primer disc dur). | boot=/dev/hda | | # Especifica el dispositiu que es muntara com a arrel '/' (4a particio). | root=/dev/hda4 | | # Fitxer que conte la segona part del carregador d'inici. | install=/boot/boot.b | | # Fitxer que conte la ubicacio al disc dels fitxers necessaris per arrencar. | map=/boot/map | | # Demana a l'usuari quina opcio vol i espera 5 segons. | timeout=50 | prompt | vga=normal | | # Etiqueta del sistema a arrencar per defecte. | default=Linux-2.4.17 | | # Primera opcio: nucli al fitxer vmlinuz. | image=/vmlinuz | label=Linux-2.4.17 | read-only | | # Segona opcio: nucli al fitxer vmlinuz.old. | image=/vmlinuz.old | label=Linux-2.2.20 | read-only | optional | | # Tercera opcio: primera particio (1) del primer disc dur IDE (a). | other=/dev/hda1 | label=OpenBSD-3.0 | | # Quarta opcio: segona particio (2) del primer disc dur IDE (a). | other=/dev/hda2 | label=OpenDOS Quan realitzem canvis al fitxer /etc/lilo.conf, cal executar /sbin/lilo per actualitzar els canvis. /sbin/lilo llegeix el fitxer de configuracio /etc/lilo.conf i crea l'arxiu /boot/map, que registra les ubicacions al disc dels nuclis i la resta d'arxius que pugui necessitar. Normalment grava la primera part del carregador d'inici al master boot record del disc dur, pero tambe la pot gravar a un disquet o al sector d'arrencada d'una particio. Grub (http://www.gnu.org/software/grub/) es un carregador d'inici molt potent i flexible, que ja comenca a substituir a Lilo a algunes distribucions. La configuracio de Grub roman al fitxer /boot/grub/grub.conf. Podeu trobar informacio sobre les comandes que conte aquest fitxer cridant a la corresponent pagina del manual amb 'man grub'. Un exemple tipic de fitxer grub.conf seria: | # Espera cinc segons i arrenca per defecte la primera opcio. | default=0 | timeout=5 | splashimage=(hd0,3)/grub/splash.xpm.gz | | # Primera opcio: 1er disc dur IDE, 4a particio, nucli al fitxer vmlinuz. | title Linux-2.4.17 | root (hd0,3) | kernel /vmlinuz ro root=/dev/hda4 | initrd /initrd-2.4.17.img | | # Segona opcio: 1er disc dur IDE, 4a particio, nucli al fitxer vmlinuz.old. | title Linux-2.2.20 | root (hd0,3) | kernel /vmlinuz.old ro root=/dev/hda4 | initrd /initrd-2.2.20.img | | # Tercera opcio: primer disc dur, primera particio. | title OpenBSD-3.0 | root (hd0,0,a) | kernel /boot/loader | | # Quarta opcio: primer disc dur, segona particio. | title OpenDOS | rootnoverify (hd0,1) | chainloader +1 Loadlin (http://elserv.ffm.fgan.de/~lermen/) es un petit carregador d'inici que permet arrencar Linux des de el sistema operatiu DOS (MSDOS, DRDOS, OpenDOS, etc.). Suposant que a:\ sigui el lloc on resideixin tant Loadlin com una imatge del nucli, i la quarta particio del primer disc dur sigui la que conte el directori arrel de Linux, podem arrencar Linux executant: a:\loadlin a:\vmlinuz root=/dev/hda4 ro De carregadors d'inici per PC encara n'hi ha mes: XOSL, Gujin, Syslinux, etc. Trobareu un munt a http://freshmeat.net/search/?q=boot+loader. 1C. EL FITXER DE CONTRASENYES ----------------------------- El fitxer de contrasenyes es a /etc/passwd, on tothom te permis de lectura i nomes root te permis d'escriptura. Per tal que els usuaris no puguin llegir les contrasenyes encriptades d'aquest fitxer i rebentar-les amb un craquejador de contrasenyes, el que es fa es guardar-les a un altre fitxer anomenat /etc/shadow, on nomes te permisos de lectura root (i els processos executant-se amb permisos de root) i el grup shadow. En aquest cas el que trobareu al fitxer /etc/passwd es una creu 'x' enlloc de la contrasenya, i al fitxer /etc/shadow la contrasenya encriptada. # ls -l /etc/passwd /etc/shadow -rw-r----- 1 root shadow 685 Dec 16 22:23 shadow -rw-r--r-- 1 root root 963 Dec 16 22:23 passwd Tots dos, /etc/passwd i /etc/shadow, son fitxers de text. Si visualitzem /etc/passwd veurem que presenta varies linies amb el seguent aspecte: usuari:contrasenya:uid:gid:text:directori:shell Un exemple tipic seria: | root:x:0:0:administrador:/root:/bin/bash | daemon:x:1:1:daemon:/usr/sbin:/bin/sh | bin:x:2:2:bin:/bin:/bin/sh | sys:x:3:3:sys:/dev:/bin/sh | sync:x:4:100:sync:/bin:/bin/sync | games:x:5:100:games:/usr/games:/bin/sh | man:x:6:100:man:/var/cache/man:/bin/sh | lp:x:7:7:lp:/var/spool/lpd:/bin/sh | mail:x:8:8:mail:/var/spool/mail:/bin/sh | news:x:9:9:news:/var/spool/news:/bin/sh | uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh | identd:x:100:65534::/var/run/identd:/bin/false | Barner:x:1000:101:membre de CatHack!:/home/Barner:/bin/bash | Pancake:x:1001:101:membre de CatHack!:/home/Pancake:/bin/bash | Asef:x:1002:101:membre de CatHack!:/home/Asef:/bin/bash | PGB:x:1003:101:membre de CatHack!:/home/PGB:/bin/bash El significat dels camps es el seguent: usuari : nom d'usuari. contrasenya : contrasenya d'usuari encriptada mitjancant una variant de DES. uid : identificador d'usuari. Es un nombre enter que indica els privilegis que te l'usuari, quins fitxers posseeix i a quins fitxers pot accedir. Un UID igual a 0 indica privilegis de root. gid : identificador de grup. Es un nombre enter que indica els privilegis que te un grup d'usuaris. Un GID igual a 0 indica privilegis de root. Permet establir patrons d'acces i propietat per usuaris amb un mateix GID, encara que tinguin UID diferents. text : un comentari. Normalment, el nom complet de l'usuari o el seu telefon. directori : directori personal on es guarden els fitxers privats de l'usuari, i on aquest es trobara despres d'accedir al sistema. shell : programa que s'executara quan l'usuari accedeixi al sistema. Normalment un interpret de comandes. Si visualitzem /etc/shadow veurem que presenta varies linies amb el seguent aspecte: usuari:contrasenya:ultim:pot:ha_de:avis:expira:inhabilitat:reservat Un exemple tipic seria: | root:9139Pi3lLtW7I:11672:0:99999:7::: | daemon:*:11672:0:99999:7::: | bin:*:11672:0:99999:7::: | sys:*:11672:0:99999:7::: | sync:*:11672:0:99999:7::: | games:*:11672:0:99999:7::: | man:*:11672:0:99999:7::: | lp:*:11672:0:99999:7::: | mail:*:11672:0:99999:7::: | news:*:11672:0:99999:7::: | uucp:*:11672:0:99999:7::: | identd:!:11672:0:99999:7::: | Barner:fQ.SFTq1TaFr2:11672:0:99999:7::: | Pancake:SRhRXj2rz9Pls:11672:0:99999:7::: | Asef:jR8WP1P.tNyBU:11672:0:99999:7::: | PGB:zRLNXpWo2fFzw:11672:0:99999:7::: El significat dels camps es el seguent: usuari : nom d'usuari. contrasenya : contrasenya d'usuari encriptada mitjancant una variant de DES. ultim : dies transcorreguts d'enca l'1 de gener de 1970 que la contrasenya fou canviada per ultim cop. pot : minim de dies que han de passar abans que la contrasenya pugui ser canviada. ha_de : maxim de dies que pot passar amb la contrasenya sense canviar. avis : dies abans que s'avisara a l'usuari que la seva contrasenya expira. expira : dies que tardara en inhabilitar-se el compte d'un usuari un cop ha caducat la seva contrasenya. inhabilitat : dies transcorreguts d'enca l'1 de gener de 1970 el compte fou inhabilitat. reservat : camp reservat. La rao per la qual interessa que tothom pugui llegir el fitxer /etc/passwd es que molts programes sense privilegis de root necessiten accedir a la informacio continguda a aquest fitxer, com el directori personal de l'usuari, etc. Per exemple, la comanda 'ls', que llista el contingut de directoris, ha d'accedir-hi per mostrar el nom d'usuari que correspon al UID del propietari d'un fitxer. Els programes normalment corren amb els privilegis de les persones que els executen, a menys que siguin SUID, cas en el que corren amb els privilegis de l'usuari que els va SUIDar. (En general s'intenta no emprar SUID perque exposa molt la seguretat del sistema). De manera analoga tenim els fitxers /etc/group i /etc/gshadow, per emmagatzemar la informacio i contrasenyes de grups d'usuaris (encara que els grups d'usuaris gairebe mai no tenen contrasenya). El format de /etc/group es similar al de /etc/passwd, contenint entrades pel nom del grup, la contrasenya, l'identificador numeric (GID), i una llista de membres del grup separats per comes. Per exemple: CatHack:x:101:Barner,Pancake,Asef,PGB Les contrasenyes es codifiquen mitjancant l'algorisme DES ('Data Encryption Standard'), que es un algorisme que encripta dades emprant una clau. El que es fa es encriptar unes dades d'entrada que son 64 bits tots a zero amb una clau que consisteix en els set bits menys significatius dels vuit caracters de la contrasenya de l'usuari (56 bits) i una petita permutacio aleatoria d'entre 4096 possibles (12 bits). La sortida s'utilitza de nou com a entrada d'una altra ronda de DES, amb la mateixa clau i permutacio. Aquest proces es repeteix 25 vegades. En acabat, la sortida es codifica en 11 bytes i la permutacio en 2 bytes, i aquests 13 caracters son el que s'escriu al fitxer de contrasenyes. Aquest metode d'encriptacio es unidireccional, es a dir, es facil de calcular en un sentit pero molt dificil de calcular en sentit invers. A partir d'una contrasenya encriptada es practicament impossible obtenir l'original, excepte provant sistematicament totes les contrasenyes i permutacions. Llavors, com s'ho fa un usuari per autentificar-se i accedir al sistema? De la seguent manera: l'usuari introdueix la seva clau, que s'utilitza per encriptar els 64 bits de dades tots a zero amb el metode anterior, utilitzant com a permutacio la que es pot trobar al fitxer de contrasenyes. Si el resultat correspon als altres 11 bytes que es guarden al fitxer de contrasenyes, es considera valid i es permet a l'usuari l'acces al sistema. Graficament: contrasenya introduida | v (/etc/shadow) +-------------+ (permutacio) fURfuu4.4hY0U --+--> OK! | encriptar | <----------------^^ | 64 bits a 0 ---> | | | | 25 x DES | -----------------> Rfuu4.4hY0U --+ +-------------+ (resultat) Aquesta antiga encriptacio de contrasenyes dels sistemes UNIX (funcio 'crypt()' de C) es debil pels temps que corren. Amb els ordinadors d'avui en dia es facil de trencar, especialment si s'escull una mala contrasenya. Es per aixo que algunes variants actuals de Unix permeten emprar altres algorismes de xifrat mes potents, com MD5 i Blowfish. Podeu identificar si les contrasenyes han estat encriptades amb aquests algorismes de la seguent manera: si els dos primers caracters de la contrasenya encriptada son $1, aquesta ha estat encriptada amb l'algorisme MD5, mentre que si son $2, aquesta ha estat encriptada amb l'algorisme Blowfish. Si cerqueu un llibre gratuit per aprendre els principis de la criptografia, us recomano: "Criptografia y Seguridad en Computadores" per Manuel Lucena Lopez - mlucena@ujaen.es http://wwwdi.ujaen.es/~mlucena/lcripto.html 2. PRENENT EL CONTROL DEL SISTEMA --------------------------------- A continuacio presento quatre trucs que permeten aconseguir agafar el control del sistema de fitxers d'una maquina amb Linux, per tal de modificar o endur-se els fitxers de contrasenyes que guarda. Tambe presento una manera de defensar-se per a cadascun d'aquests trucs. Crec que una bona solucio a aquests tipus d'atacs, especialment quan hem de treballar des de diferents equips connectats en xarxa, pot ser emprar autentificacio remota de contrasenyes. Desconec completament aquest tema, pero crec que ha d'existir alguna manera d'emmagatzemar les contrasenyes no localment, sino a algun ordinador remot. Em sonen de veus PAM (Pluggable Authentication Modules), NIS (Network Information Service) i LDAP (Lightweight Directory Access Protocol), pero no se en que consisteixen. Crec que el mes senzill es configurar PAM, que s'instal.la amb tota distribucio actual de Linux. Els fitxers de configuracio de PAM es troben al directori /etc/pam.d. Crec que diuen que es millor no emprar NIS, ja que guarda a varis ordinadors la informacio compartida, i si comprometen la seguretat d'un d'aquests ordinadors comprometen la de tot el sistema. Com a alternativa, podeu instal.lar un servidor LDAP i configurar PAM a la vostre maquina per tal que s'autentifiqui contra el servi dor. Per aprendre mes llegiu el "User Authentication HOWTO", el "NIS HOWTO", el "LDAP HOWTO", el "LDAP Implementation HOWTO" i "The Linux-PAM System Administrators' Guide" (aquest ultim el trobareu a http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/pam.html). 1a) Arrencar des de un disquet o CD: Aquest metode tracta d'arrencar Linux des de un disquet o CD i a continuacio muntar la particio del disc dur on tenim el fitxer de contrasenyes. Si no podeu arrencar des de disquet o CD i no podeu configurar la BIOS perque aquesta es troba protegida per contrasenya, passeu al seguent punt o be llegiu l'article http://www.lsi.upc.es/~acastan/Hacking/Hacking%20BIOS.txt. Trobareu tot un seguit de distribucions minimalistes de Linux en disquet a ibiblio (http://www.ibiblio.org/pub/Linux/system/recovery/!INDEX.html) i a la pagina oficial de Linux (http://www.linux.org/dist/english.html). Les mes famoses son Tom's Root Boot (http://www.toms.net/rb/) i Yard (http://www.linuxlots.com/~fawcett/yard/), pero tambe podeu fer servir els mateixos disquets d'emergencia que crea qualsevol distribucio de Linux en instal.lar-se. A falta de disquet, amb els CDs d'instal.lacio de les diferents distribucions de Linux normalment es pot arrencar en mode de recuperacio d'errors seleccionant l'opcio 'rescue'. En el meu cas concret a mes a mes puc fer el seguent: quan s'inicia la instal.lacio de Debian, tan aviat com selecciono l'idioma del teclat ja puc premer Alt+F2 i obrir un terminal amb privilegis de root. Un cop hem arrencat, a continuacio muntem al sistema de fitxers de rescat la particio del disc dur on tenia els fitxers de contrasenyes (en el meu cas la particio arrel es la quarta particio del primer disc dur): # mkdir /jaettinc # mount -t ext2 /dev/hda4 /jaettinc # usr/bin/chroot /jaettinc /bin/sh Comprovem que aquesta particio del disc dur conte els fitxers de contrasenyes, que son al directori /etc: # ls bin cdrom etc home lib mnt proc sbin usr vmlinuz boot dev floppy initrd lost+found opt root tmp var Si teniu problemes per saber quina es la vostra particio, feu servir la comanda 'fdisk -l'. Defensa: - Configurar la BIOS perque nomes arrenqui des de disc dur, i protegir aquesta configuracio mitjancant contrasenya. A continuacio, tanqueu amb cadenat la carcassa del vostre ordinador. 1b) Arrencar des de disc dur: Aquest metode tracta d'arrencar Linux des de el disc dur on es instal.lat, pero aconseguint privilegis de root en el proces d'arrencada. En arrencar, quan apareix la linia de comandes de Lilo (normalment el missatge 'LILO boot:') podem premer la tecla Tab per mostrar la llista de possibles opcions. Si Lilo no esta configurat per ser interactiu, premeu les tecles Alt o Maj abans que aparegui el missatge. A continuacio podem fer varies coses: Podem especificar el numero de nivell d'execucio al que volem arribar. Si especifiquem un 1, entrarem en el mode d'usuari individual. Aixo vol dir que entrarem com a root i sense haver d'introduir cap contrasenya. Aquest mode s'utilitza per manteniment del sistema. [nom_imatge] 1 [opcions] , o de manera equivalent [nom_imatge] single [opcions] , o be [nom_imatge] emergency [opcions] . Suposant que 'linux' es el nom de la imatge de la qual volem arrencar i que volem tenir acces d'escriptura: LILO: linux single Defensa: - Posar una contrasenya a LILO per tal que en arrencar un usuari no pugui accedir a les opcions de la linia de comandes de LILO sense coneixer aquesta contrasenya. A mes a mes, protegir la linia de comandes de LILO deixant el minim temps a l'atacant per afegir opcions. Cal editar /etc/lilo.conf i afegir les seguents linies: restricted password=la_meva_contrasenya delay=0 o be timeout=0 A continuacio executem la comanda 'lilo' per guardar els canvis. Com que la contrasenya a lilo.conf esta escrita en text clar (sense encriptar), cal canviar els permisos de lectura d'aquest fitxer perque ningu excepte root el pugui consultar: executem la comanda 'chmod 600 /etc/lilo.conf'. Encara millor si fem aquest arxiu immutable per protegir-lo de canvis. Executem la comanda: 'chattr +i /etc/lilo.conf'. D'aquesta manera, si volem modificar-lo, primer haurem de tornar a activar el seu bit d'immutabilitat amb 'chattr -i /etc/lilo.conf'. Cal ser root, pero, per fer-ho. - Posar una contrasenya a Grub: primer encriptem la contrasenya amb l'utilitat 'grub-md5-crypt' i a continuacio editem /boot/grub/menu.lst i afegim la linia: password --md5 la_meva_contrasenya_encriptada Si el mode d'usuari individual esta protegit per contrasenya encara podem accedir com a root al sistema de la seguent manera: podem especificar com a opcio a la linia de comandes de Lilo el programa que volem que s'executi en comptes d''init'. Aixi: [nom_imatge] init=/bin/sh [mes opcions] Arrencara el nucli de Linux, pero executara la consola 'bash' com a primer proces del nucli, enlloc d''init'. Com que el nucli s'executa 'init' com a root, tambe executara la consola com a root. Suposant que 'linux' es el nom de la imatge de la qual volem arrencar i que volem tenir acces d'escriptura: linux init=/bin/sh amb el que despres del nucli apareixera directament el terminal. Defensa: - Evitar l'acces en mode d'execucio d'usuari individual editant el fitxer /etc/inittab i inserint darrera de la linia "initdefault" la seguent linia: ~~:S:wait:/sbin/sulogin Aixo fa que s'executi la comanda 'sulogin' abans d'obrir la consola amb privilegis de root. 'sulogin' obliga a l'usuari a introduir la contrasenya de root abans de continuar. Aixo vol dir que ara cal la contrasenya de root per entrar al mode d'usuari individual. Com que segurament la particio arrel haura quedat muntada en mode de nomes lectura, si per algun motiu volem escriure a aquesta el primer que caldra fer es tornar-la a muntar en mode d'escriptura: # mount -o remount,rw / 1c) Muntar un sistema d'arxius amb un interpret de comandes SUIDat: Aquest metode prova, en el cas que un usuari convencional pugui muntar sistemes d'arxius, muntar un disquet amb un interpret de comandes amb el bit de SUID activat i amb un UID de 0 que es correspon al de l'usuari root. D'aquesta manera, en executar l'interpret de comandes del disquet adquirim privilegis de root. Per muntar el disquet cal, pero, tenir un compte d'usuari al sistema. De la mateixa manera, el disquet aixi muntat podria contenir a mes a mes arxius especials de dispositiu amb permisos de lectura i escriptura per nosaltres, i d'aquesta manera poder escriure a dispositius on previament no teniem permis. Cal vigilar, pero, que el metode de SUIDar l'interpret de comandes ja no funciona amb els actuals interprets. Per evitar que es facin servir com a rootshell, aquests comproven l'EUID (Effective User ID) i no reaccionen davant el SUIDat. Comproveu-lo a casa: # su root # chmod +s /bin/bash # su usuari_normal # whoami # /bin/bash # whoami Si ha funcionat el SUIDat sobre l'interpret de comandes 'bash', el resultat de la ultima comanda 'whoami' sera root, enlloc del nom d'usuari que ha executat 'bash'. Com segurament no ha funcionat, caldra provar altres coses: al disquet, no nomes podem emprar interprets de comandes SUIDats, sino qualsevol fitxer executable SUIDat. Aixi, podem crear un fitxer executable que obri un interpret de comandes. Amb algun editor de text escriurem el seguent fitxer que anomenarem prova.c: #include void main(void) { system("/bin/sh"); } A continuacio el compilem amb: # gcc prova.c -o prova Comprovem si ara funciona: # su root # chmod +s prova # su usuari_normal # whoami # prova # whoami Ara segur que si! A casa, on som root, construim el nostre disquet: # mkfs /dev/fd0 # mkdir /floppytmp # mount /dev/fd0 /floppytmp # cp prova /floppytmp # chown root /floppytmp/prova # chmod +4755 /floppytmp/prova # umount /floppytmp # rmdir /floppytmp Ara, a l'ordinador on tenim compte local i volem aconseguir root introduim el disquet i observem el fitxer /etc/fstab: # cat /etc/fstab /dev/hda4 / ext2 defaults,errors=remount-ro 0 1 /dev/hda3 none swap sw 0 0 proc /proc proc defaults 0 0 /dev/fd0 /floppy auto defaults,user,noauto 0 0 /dev/cdrom /cdrom iso9660 defaults,ro,user,noauto 0 0 En el meu cas la quarta linia es per muntar el disquet, pero sembla que no podre fer res ja que falta l'opcio 'exec', que em permetria executar fitxers. Provem-ho: # mount /floppy # ls /floppy -rwsr-sr-x 1 root root 4957 Jan 17 14:20 /floppy/prova # /floppy/prova bash: /floppy/prova: Permision denied No l'he pogut executar des de disquet. A veure que passa si ho copio a algun directori del disc dur: # cp /floppy/prova /tmp # ls -l /tmp -rwxr-xr-x 1 Alex CatHack 4957 Jan 17 17:11 /tmp/prova Renoi! En copiar-lo ha canviat el propietari i el bit de SUID. Ja esta tot perdut: # ./tmp/prova sh-2.05a$ whoami Alex He fallat! A veure si vosaltres teniu millor sort. Defensa: - En cas que cap usuari hagi de muntar cap sistema de fitxers canviem els permisos d'execucio de les comandes 'mount' i 'umount': # chmod o-x /bin/mount # chmod o-x /bin/umount Si volem que els usuaris puguin muntar algun sistema de fitxer, emprem les opcions 'nosuid' i 'nodev'. Per exemple, al fitxer /etc/fstab les linies per muntar un disquet i un CD haurien de ser: /dev/fd0 /floppy auto user,noauto,nodev,nosuid 0 0 /dev/cdrom /cdrom iso9660 ro,user,noauto,nodev,nosuid 0 0 2a) Editar el fitxer de contrasenyes: Una de les coses que podem fer quan ja tenim acces al sistema amb privilegis de root es editar el fitxer de contrasenyes per tal de crear un nou usuari, canviar o treure la contrasenya d'un usuari ja existent, canviar els privilegis d'un usuari ja existent, etc. A continuacio editem el fitxer que conte les contrasenyes, amb algun petit editor de text com 'vi', 'ae' o 'nano'. Si hem arrencat des de CD o disquet: # vi /etc/shadow Per crear un nou usuari caldra escriure una nova linia als fitxers /etc/passwd i /etc/shadow amb els corresponents camps. Tambe es poden fer servir les comandes 'useradd' i 'adduser', o fins i tot redireccionar la sortida de la consola. Per exemple, crearem un usuari anomenat 'nou' sense contrasenya i amb privilegis de root: # echo "nou:x:0:0:hacker:/:/bin/bash" >> /etc/passwd # echo "nou::11672:0:99999:7:::" >> /etc/shadow Per canviar la contrasenya d'un usuari caldra modificar a /etc/shadow el segon camp de la linia corresponent a aquell usuari, escrivint un valor conegut tret d'un altre fitxer de contrasenyes. Tambe es pot fer servir la comanda 'passwd' seguida de la nova contrasenya, que canvia la contrasenya de l'usuari que executa aquesta comanda. Si sou root, a mes a mes podeu executar 'passwd nom_usuari' per canviar la contrasenya de qualsevol usuari. Per exemple, si volem canviar la contrasenya de root per 'hola' quedara: root:4sJ4oPJ9tSDxc:11672:0:99999:7::: Si el que es vol es esborrar la contrasenya d'un usuari, a la linia del fitxer /etc/shadow corresponent a aquest usuari, basta amb esborrar la clau que esta xifrada entre ':' al segon camp. Quan reiniciem i entrem com a l'esmentat usuari, no demanara contrasenya, o si la demana bastara amb premer la tecla Enter. Podrem posar una contrasenya nova amb la comanda 'passwd'. Per exemple, si esborrem la contrasenya de root, quedara: root::11672:0:99999:7::: Aneu amb compte, ja que en alguns sistemes tenen configurat PAM o altres paquets d'autentificacio per prevenir contrasenyes nul.les. Per canviar els privilegis d'un usuari, cal substituir els seus identificadors d'usuari (UID) i grup (GID) al fitxer /etc/passwd pels d'un usuari o grup amb mes privilegis. Aquests identificadors son el tercer i quart camp de cada linia, respectivament. Per exemple, pujarem els privilegis de l'usuari 'alex' a root. alex:x:0:0:Alejandro Castan Salinas,,,:/home/alex:/bin/bash Una altra cosa que es pot fer es deixar a un usuari temporalment sense acces al sistema canviant al fitxer /etc/passwd la seva shell (ultim camp) per una inexistent o per un fitxer de comandes especial que haguem creat. Per exemple, deixarem fora a l'usuari 'alex' que acaben de crear, fent apareixer un missatge per tal que contacti amb l'administrador: alex:x:0:0:Alejandro Castan Salinas,,,:/home/alex:/home/alex/qui_ets.sh on qui_ets.sh el podem crear aixi: # echo "#!/bin/sh" > /home/alex/qui_ets.sh # echo "echo \"D'ON SURTS TU?\"" >> /home/alex/qui_ets.sh # echo "echo \"PARLA AMB L'ADMINISTRADOR\"" >> /home/alex/qui_ets.sh # chmod a+x qui_ets.sh Per ultim, per assegurar-nos que els canvis fets als fitxers de contrasenyes queden guardats al disc dur: # sync Si a mes a mes haviem arrencat des de CD o disquet i haviem muntat la particio arrel del disc dur: # exit # umount /jaettinc Ara ja podem reiniciar la maquina amb 'reboot', o passar a un nivell d'execucio superior escrivint 'init 3' o 'init 5'. 2b) Endur-nos el fitxer de contrasenyes: Una altre de les coses que podem fer quan ja tenim acces al sistema amb privilegis de root es endur-nos el fitxer de contrasenyes per tal de crackejar les contrasenyes dels usuaris a un ordinador mes tranquil i potent. # mkdir /floppytmp # mount -t auto /dev/fd0 /floppytmp # cp /etc/passwd /floppytmp # cp /etc/shadow /floppytmp # chmod a+r /floppytmp/* # umount /floppytmp # rmdir /floppytmp Altres defenses: - Inhabilitar l'execucio de les comandes de consola que no ens interessi que tingui acces un usuari no privilegiat, com 'shutdown', 'halt' i 'reboot': # chmod o-x comanda o tambe a algunes distribucions (RedHat): # rm -f /etc/security/console.apps/comanda - Inhabilitar reiniciar amb Ctrl+Alt+Del. Al fitxer /etc/inittab caldra inhabilitar la linia que te escrit 'ctrlaltdel' al tercer camp emprant un caracter de comentari '#' a l'inici de linia. Per exemple: #ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now A continuacio cal executar 'init q' per tal que els canvis tinguin efecte. - Encriptar els fitxers i directoris personals que contenen informacio confidencial a la que no volem que pugui accedir un atacant que es faci amb el control del sistema. Existeixen nombroses eines per fer aixo. Proveu amb 'GnuPG', que es troba a http://www.gnupg.org/, i 'TCFS', que es troba a http://edu-gw.dia.unisa.it/tcfs/. 3. OBTENINT LES CONTRASENYES ---------------------------- El primer que necessitareu sera un programa de "recuperacio" de contrasenyes per Unix/Linux. Els mes famosos son 'John the Ripper' i 'Crack', que trobareu respectivament a http://www.openwall.com/john/ i http://www.users.dircon.co.uk/~crypto/. Amb aquests programes podeu dur a terme tres tipus d'atacs sobre el fitxer de contrasenyes: atac de diccionari, atac de forca bruta i atac hibrid. El metode mes rapid per crackejar contrasenyes es l'atac de diccionari. Es tracta de provar com a contrasenyes originals totes les paraules d'un fitxer de paraules (diccionari). Molta gent utilitza com a contrasenyes paraules com Alex o Barca. Podeu crear el vostre propi fitxer de paraules, pero el mes efectiu es cercar-lo a Internet. En podeu trobar a http://wordlist.sourceforge.net/ i ftp://ftp.cerias.purdue.edu/pub/dict/. El segon metode es l'atac hibrid. Es tracta de realitzar l'atac de diccionari afegint caracters numerics i simbols a les paraules del diccionari. Molta gent utilitza contrasenyes com Alex30 o Barca!. El tercer i mes poderos metode es l'atac de forca bruta. Aquest metode sempre recupera la contrasenya original, mentre que els dos metodes de crackejat anteriors no sempre. Es tracta de provar TOTES les contrasenyes formades per un determinat conjunt de caracters. Atencio, aneu amb compte que pot arribar a ser un atac molt lent. Per que us feu una idea: en un Pentium III a 800 Mhz, si les contrasenyes tenen nomes lletres pot tardar dues hores en trobar-les, si contenen lletres i nombres pot tardar dos dies, si a mes a mes contenen caracters especials pot tardar setmanes. Aixi que us recomano que comenceu per un conjunt de caracters de nomes lletres, despres amb lletres i nombres i per ultim amb caracters especials. Si treballem amb John the Ripper: 1) El descomprimim i compilem: # tar xzf john-1.6.tar.gz # cd john-1.6/src # make linux-x86-any-elf # cd ../run 2) Combinem de nou els fitxers de contrasenyes i els deixem llestos per l'us amb John: # ./unshadow fitxer_passwd fitxer_shadow > fitxer_passwd 3) Iniciem el crackejat de contrasenyes, que s'executara en primer pla. Podrem consultar l'estat de la sessio prement qualsevol tecla, i aturar la sessio prement CTRL+C. Segons el tipus d'atac executarem: diccionari: john -w:fitxer_diccionari.lst fitxer_passwd dicc+regles: john -w:fitxer_diccionari.lst -rules fitxer_passwd forca bruta: john -i fitxer_passwd tots: john fitxer_passwd Per exemple, executant-lo sobre el fitxer de contrasenyes que hi ha a inici d'aquest document: # ./unshadow /floppy/passwd /floppy/shadow > exemple.txt # ./john exemple.txt Loaded 5 passwords with 5 different salts (Standard DES [48/64 4K]) alex (root) estiu (Pancake) tardor (Asef) hivern (PGB) primaver (Barner) 4) Podem consultar l'estat d'una sessio aturada amb: # ./john -show fitxer_passwd 5) Podem continuar la sessio aturada amb: # ./john -restore Si treballem amb Crack: 1) El descomprimim, compilem i construim els diccionaris: # tar xzf crack5.0.tar.gz # cd c50a # ./Crack -makeonly # ./Crack -makedict 2) Combinem de nou els fitxers de contrasenyes i els deixem llestos per l'us amb Crack: # scripts/shadmrg.sv > fitxer_passwd 3) Iniciem el crackejat de contrasenyes, que romandra executant-se en segon pla: # ./Crack fitxer_passwd 4) En un moment donat consultem l'estat de la sessio: # ./Reporter ---- passwords cracked as of sun jan 16 20:42:33 CET 2002 ---- Guessed root [alex] administrador [fitxer_passwd /bin/bash] Guessed Barner [primavera] membre de CatHack! [fitxer_passwd /bin/bash] Guessed Pancake [estiu] membre de CatHack! [fitxer_passwd /bin/bash] Guessed Asef [tardor] membre de CatHack! [fitxer_passwd /bin/bash] Guessed PGB [hivern] membre de CatHack! [fitxer_passwd /bin/bash] ---- done ---- 5) Finalitzem correctament el crackejat de contrasenyes i netegem el sistema de fitxers: # scripts/plaster # make tidy Podeu treure molt mes profit d'aquests programes si consulteu els seus fitxers d'ajuda i la seva linia de comandes. Solucio: - En instal.lar Linux escolliu guardar les contrasenyes separades a un fitxer shadow. Si no les teniu aixi separeu-les mitjancant les comandes 'pwconv' i 'grpconv'. - En instal.lar Linux escolliu xifrat de contrasenyes MD5 enlloc del xifrat estandard de Unix. Encara que les contrasenyes xifrades amb MD5 tambe son crackejables, costen mes de crackejar i permeten una longitud de contrasenya mes gran de vuit caracters. - Escollir be les contrasenyes per tal d'evitar els atacs de diccionari i fer mes dificils els atacs de forca bruta. Males contrasenyes son les que contenen paraules, noms, patrons senzills com qwerty o 1234, i informacio de l'usuari facil d'obtenir com l'edat o el DNI. Bones contrasenyes son les que contenen minuscules, majuscules, xifres i caracters especials. La longitud minima de la contrasenya hauria de ser de vuit caracters. Una manera d'escollir una contrasenya d'aquests tipus i recordar-se'n es citar una frase coneguda i escollir la primera lletra de cada paraula. Per exemple: "Vaig neixer el 22 de gener!" es convertiria en la contrasenya "Vne22dg!". - En la mesura del possible, intenteu no accedir remotament a ordinadors des de segments de xarxa on algu pugui col.locar sniffers i interceptar les vostres contrasenyes. - En la mesura del possible, no empreu la mateixa contrasenya en diferents maquines, ja que un cop la contrasenya sigui esbrinada totes les maquines seran compromeses. - Aneu amb compte amb on anoteu les contrasenyes, amb els documents que llenceu, amb no deixar sobre la taula material confidencial, amb no marxar del despatx deixant sessions obertes al vostre ordinador, etc. - Si administreu un sistema, obligueu els usuaris a escollir bones contrasenyes, explicant-los perque es necessari l'us d'aquestes. Comproveu la seguretat de les contrasenyes dels usuaris mitjancant eines com 'John the ripper' o 'Crack'. Podeu establir la longitud minima de contrasenya modificant la linia PASS_MIN_LEN del fitxer /etc/login.defs. Una manera de comprovar automaticament la seguretat d'una contrasenya en el moment que l'usuari la intenta canviar es afegir la seguent linia al fitxer /etc/pam.d/passwd: password required pam_cracklib.so retry=3 minlen=8 difok=3 - Si administreu un sistema, obligueu a que les contrasenyes dels usuaris expirin de tant en tant. La caducitat es pot especificar amb la comanda 'chage -M num_dies nom_usuari'. - Si administreu un sistema, esborreu amb les comandes 'userdel' i 'groupdel' tots els comptes d'usuari i grups que no empreu, tant els creats per vosaltres com els creats per defecte: games, lp, ... - Si administreu un sistema, inhabiliteu l'entrada als usuaris amb contrasenya nul.la. Al fitxer /etc/pam.d/login cal canviar la linia auth required pam_unix.so nullok per auth required pam_unix.so 4. UN COP DINTRE ---------------- Molt be. Ja tenim les contrasenyes d'acces al sistema. Ara podem accedir com a usuari normal, com a root, o com a usuari normal i despres canviar a root amb la comanda 'su'. Un cop dintre ja podem comencar a aprendre tot experimentant amb el sistema. Una de les coses que podem fer, si tenim varis usuaris connectats al sistema, es veure que estan executant: - Amb 'ps -aux | more' o 'ps -aux | grep algun_text' visualitzarem els processos que s'executen al sistema. - Amb 'top' ('gtop' per Gnome i 'kpm' a KDE) visualitzarem els recursos consumits per cada proces. - Si teniu privilegis de root, amb el programa 'ttywatcher' que trobareu a http://www.engarde.com/, podeu espiar el que estan teclejant els altres usuaris al sistema i el que veuen al seu monitor. - Idear algun metode per tal d'assegurar la futura entrada al sistema, com instal.lar una porta amagada, un troia o un rootkit. Podem, per exemple deixar una porta amagada creant un nou usuari, deixant una consola associada a un port o afegint el nom d'alguna maquina a .rhosts (l'arxiu .rhosts, situat ocult al directori personal de cada usuari, conte el nom de les maquines des de les que pot accedir l'usuari mitjancant 'rlogin' i altres comandes sense necessitat d'introduir contrasenya). Podem tambe instal.lar un troia que suplanti qualsevol comanda del sistema, com per exemple una versio falsa de 'login' que guardi el nom d'usuari i contrasenya introduits a un fitxer. Fins i tot podem instal.lar tot un rootkit, que es un conjunt d'utilitats que fa la nostra presencia totalment invisible. Trobareu un bon grapat de troians i rootkits a http://packetstormsecurity.org/trojans/ i http://packetstormsecurity.org/UNIX/penetration/rootkits/. - Instal.lar un sniffer que permeti capturar, interpretar i emmagatzemar els paquets que circulen per la xarxa, i descobrir aixi mes noms d'usuari amb la seva corresponent contrasenya. Hi trobareu un bon grapat de sniffers a http://packetstorm.decepticons.org/sniffers/. El meu preferit per Unix es Dsniff, que tambe trobareu a http://www.monkey.org/~dugsong/dsniff/. - Haureu de vigilar, pero, no haver deixat petjada als fitxers d'anotacions i alarmes (logs). Podeu fer una ullada al fitxer /etc/syslog.conf per consultar on s'emmagatzemen aquests (normalment als fitxers del directori /var/log). Recordeu-vos tambe que el Bourne Again Shell (/bin/bash) guarda les comandes mes recents que ha escrit cada usuari, a un fitxer anomenat .bash_history ocult al seu directori personal. Si heu suplantat un usuari, caldra netejar-lo de les vostres comandes i, de passada, espiar quines son les de l'usuari. Trobareu eines que automatitzen el proces d'esborrat d'aquest fitxers a http://packetstorm.widexs.nl/UNIX/penetration/log-wipers/. Defenses: - Previngueu amb la comanda 'chmod -R 700 /etc/init.d/*' que altres usuaris no root puguin modificar els fitxers que indiquen quines comandes s'executaran en arrencar. - Previngueu l'esborrat i addicio de serveis immunitzant els fitxers /etc/services i /etc/inetd.conf, amb la comanda 'chattr +i /etc/services /etc/inetd.conf'. - Comproveu que el valor de la variable d'entorn PATH de l'usuari root no inclogui cap directori escrivible per la resta d'usuaris, ja que root podria acabar executant sense adonar-se'n una comanda modificada per algun usuari. - A les maquines on hagin de treballar usuaris, impediu que ningu accedeixi amb permisos de root. Primer impediu la seva entrada modificant el fitxer /etc/securetty. A continuacio restringiu els usuaris que poden emprar la comanda 'su' per aconseguir permisos de root editant el fitxer /etc/pam.d/su afegint-li les seguents dues linies: auth sufficient /lib/security/pam_rootok.so debug auth required /lib/security/pam_wheel.so group=wheel A partir d'aquest moment nomes els usuaris que afegiu al grup 'wheel' podran emprar 'su' per esdevenir root. - Comproveu el contingut dels fitxers .rhosts amb la comanda 'find /home -name .rhosts -print'. El millor fora que aquests fitxers no existissin o estiguessin buits. - Comproveu la integritat dels fitxers de contrasenyes mitjancant la comanda 'pwck'. Aquesta comanda llegeix cada entrada d'aquest fitxers verificant que el nombre de camps sigui correcte, que no hi hagi cap altre usuari amb el mateix nom, que el UID i GID siguin correctes, que existeixi el directori de l'usuari i la seva shell. - Comproveu periodicament la mida i data dels binaris del vostre sistema, per tal de vigilar que no us hagin instal.lat un troia o un rootkit. Per aixo teniu eines com 'tripwire', 'Aide' i 'md5sum'. Una manera mes trapera de guardar aquestes dades a un disquet (suposant que esta muntat al directori /floppy) seria: # ls -alRu > /floppy/data_ultim_access.txt # ls -alRc > /floppy/data_modificacio.txt # ls -alR > /floppy/data_creacio.txt - Aneu amb compte amb els permisos dels fitxers. Vigileu els fitxers escrivibles per tothom, els fitxers orfes (amb una UID o GID que no correspon a cap usuari) i els programes SUIDats i GUIDats (programes que un usuari normal pot executar com root). Per trobar fitxers SUID: 'find / -type f -perm -04000 -ls' Per trobar fitxers GUID: 'find / -type f -perm -02000 -ls' Per trobar fitxers orfes: 'find / -nouser -o -nogroup -ls' Per trobar fitxers escrivibles per tothom: 'find / -type f -perm -2 -print' Per canviar els permisos teniu la comanda 'chmod'. Per exemple, per treure el bit de SUID d'un programa que no el necessita escrivim 'chmod a-s nom_programa'. - Per prevenir els rootkits de nucli, instal.leu LIDS, que trobareu a http://www.lids.org/. Els rootkits de nucli son un tipus especial de rootkits que no modifiquen fitxers del sistema, sino el nucli, i utilitzen moduls carregables del nucli (LKM) per interceptar i modificar les crides a sistema. - Per tal d'evitar que sniffers interceptin les vostres contrasenyes, en la mesura del possible empreu serveis de xarxa que utilitzin xifrat enlloc dels que no utilitzen (per exemple: SSH enlloc de telnet). - Guardeu la informacio dels fitxers d'anotacions i alarmes dels vostres sistemes a algun mitja que sigui dificil de modificar: paper impres, CDROM, ordinador remot, etc. 5. ADEU ------- I aqui s'acaba l'article. Si us heu quedat amb ganes d'aprendre molt mes sobre Linux, el llibre que us recomano es "Linux from Scratch", que ve a dir quelcom aixi com "Arremangueu-vos, que ara aprendreu i us divertireu construint la vostra propia distribucio de Linux des de zero". El trobareu a http://www.linuxdoc.org/guides.html. Qualsevol comentari, critica i suggeriment que ajudi a millorar aquest article sera ben rebut. Animeu-vos i fins aviat! ------------------------------------------------- Hackejar Linux amb Acces Fisic a la Maquina - Revisio 1.0 Copyleft (c) Alejandro Castan Salinas Es concedeix el permis per copiar, distribuir i/o modificar aquest document sota els termes de la llicencia de documentacio lliure GNU, versio 1.1 o qualsevol altre versio posterior publicada per la Free Software Foundation. Podeu consultar dita llicencia a http://www.gnu.org/copyleft/fdl.html. El contingut d'aquest document pot canviar degut a ampliacions i a correccions enviades pels lectors. Trobareu sempre la ultima versio del document a http://www.xtec.es/~acastan/textos/index.html. Breu historia del document: v1.0 Primera publicacio del document. Per fer: - Arrencar desde disc dur amb 'Grub' (linia de comandes i proteccio).