IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII o 06. UNIX INTERNET DAEMONS o IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII Saludos amigos!! En este articulillo voy a intentar explicaros los diferentes archivos y algunas cosillas que componen la politica de red y seguridad de UNIX. Este sera el primero de una serie de articulos acerca del TCP/IP (algunos comandos, bugs, banderas TCP, etc), que ya ire escribiendo en numeros posteriores. Este texto es mas que nada informativo, ke ya iremos metiendonos en harina mas tarde. * /ETC/HOSTS: Este archivo esta para dar siempre un nombre facilillo de recordar para cuando se pida la IP. Esto es porque siempre es mas facil para las personas recordar un nombre que una ristra de numeros. Cuando alguien usa un nombre de anfitrion , el TCP/IP mira en este archivo para encontrar la direccion IP ke se requiere. Por ejemplo, la forma de una linea de este archivo seria: #Direccion IP FQDN ALIAS <-----esto en general 194.54.214.125 organizacion.tocha.com gateway <---una entrada cualquiera Me direis... porque es importante este archivo? pues la respuesta es clara; imaginaros por ejemplo, que alguien consigue cambiar las IPs de este archivo... La siguiente vez que alguien intentase llegar hasta organizacion tocha.com, habriamos modificado la IP, de forma que al intentar resolverla la que daria en realidad seria la de te.vas.a.cagar.com, que (oh, sorpresa) es la direcion de una maquina que controlamos nosotros... ahora esa persona que se cree que esta en organizacion.tocha.com, en realidad esta en nuestra maquina! Imaginaros ahora lo que se podria hacer... en realidad, cualquier cosa :) Se puede montar una "web imaginaria" esperando a que esta persona meta algun dato comprometido (de esto seguramente hablare en otro articulo) o se puede poner algun caballo de troya que haga que cuando el otro ejecute algo en la que el cree la maquina segura, en realidad se ejecute un proceso ke hemos creado nosotros... aqui dejo libertad de imaginacion al lector jeje :) */ETC/NETWORKS: Este da una lista de las direcciones IP y nombres de las redes en internet. Cada linea es para una red determinada. El ejemplo: #Nombre de la red Direccion IP sitio.chungo.com 194.146.58.124 Algo que no he dicho antes, en todos los archivos de configuracion de red se puede poner el simbolo # para hacer comentarios. */ETC/ETHERS: Una vez conocida la direccion IP, el ordenata la tiene ke convertir a una direccion de hardware real (siempre que el servidor este en la red local). Esto tambien se puede hacer mediante el "protocolo de resolucion de direccion (ARP) o poniendo todas las entradas en este archivo. En realidad, este archivo lo usa el demonio de protocolo de resolucion de direccion revertida (RARPD). El ARP y el RARPD ya los explicare mas adelante. Un ejemplo del etc/ethers seria: # Direccion Ethernet Nombre del host 2:0:aa:3:55:ff pepito */ETC/PROTOCOLS: En este archivo esta una lista de los protocolos de internet DARPA que conoce. La informacion la suministra el DDN, y si se cambia, puede haber fallos en el sistema (ojo a este dato, algun dia puede seros util..) ejemplo: #Protocolos de internet ip 0 #protocolo internet icmp 1 #protocolo de control de mensajes tcp 6 #protocolo de control de transmision */ETC/SERVICES: Aqui se lista una lista (jeje que repetitivo) de los servicios ke tiene la maquina. El numero de puerto y el nombre del protocolo se consideran en una sola entrada y se usa una diagonal (/) para separarlos. Un ejemplo seria este: #Servicios de red ftp 21/tcp telnet 23/tcp rlp 39/udp resource domain 53/udp systat 11/tcp users Si alguna vez estais dentro de un UNIX, y no sabeis los servicios que tiene activos, podeis mirar en este archivo y ya esta :) otra opcion es modificarlo y poner otro servicio que no este... pero para eso ya habria que tener mucho cuidado, ya que eso si que es MUY FACILMENTE detectable. Habria que meter el codigo, y compilarlo, y dependiendo de que tipo de servicio sea, habria que recompilar el nucleo... un poco chungo, pero perfectamente factible (aunque lo cierto, es que no kreo que lo necesiteis.. o quizas si? ;) ) *ETC/INETD.CONF: El uso de este archivo es para proporcionar info al inetd (que es el "superservidor" de Internet) Lo que hace el comando inetd, es "escuchar" a ver cuando se necesita comenzar algun proceso, las entradas a los puertos, etc. Cuando algun proceso es requerido, el inetd llama al demonio (demonio=proceso) correspondiente. De esta forma no se ejecutan comandos innecesarios, ni se gastan recursos estando todo el tiempo con los diferentes demonios activos. El ejemplo que voy a poneros el que se encuentra en la mayoria de los sistemas UNIX (menos en SCO y en algun otro): # telnet stream tcp nowait root /usr/etc/in.telnetd in.telnetd ftp stream tcp nowait root /usr/etc/in.ftpd in.ftpd login stream tcp nowait root /usr/etc/in.rlogind in.rlogind # etc... Ahora un truquito... En este archivo podemos poner una backdoor para hacer kon el sistema lo que nos de la real gana :) como, como! os estareis preguntando... bien; Lo primero es buscar algun servicio que se use poco o nada, por ejemplo el daytime (que lo unico que hace es darnos la hora del sistema) Ahora,tenemos que poner en su lugar esta entrada: daytime stream tcp nowait /bin/sh sh -i Despues reseteamos etc/inetd para que lea de nuevo la configuracion. La manera mas facil es con kill -9 , /usr/sbin/inetd o /usr/etc/inetd. Esto detendra todos los servicios de red, asi que tened cuidado de hacerlo cuando no haya nadie en el sistema, o que haya poca gente y tengan pocos privilegios, asi creeran que solo ha sido un peque€o fallo, y no informaran al root. Y... channnnn ahora tenemos instaladita una puertecita trasera por donde podemos haber metido anteriormente cualquier programa que queramos, ya sea un shell que ejecute un tetris nada mas entrar, o un programa que nos a€ada una cuenta root en el archivo etc/passwd...(dejo al avezado lector que decida cual de estas 2 sugerencias es mejor ;) ) *ETC/HOSTS.EQUIV: Este es uno de los ficheros mas vulnerables en UNIX. Contiene una lista de ordenatas confiables. Un ordenador confiable es aquel en el que literalmente, otro ordenador, konfia sin pedir el passwd de acceso (pobre iluso). A ver si me explico; Imaginad que sois administradores de un sistema UNIX. Teneis varios dominios a vuestro control, y claro para acceder a cada uno de ellos tendriais que autentificaros con vuestro login y passwd al intentar entrar. Como esto es un plastazo, bastaria con meter en el archivo /etc/hosts.equiv del ordenador al que queremos acceder, el nombre del nuestro. Ahora, ya no nos pide autentificarnos! Un ejemplo seria: # localhost micasa usuario.correcto.com empresa cualquier.sitio.com Si no hay identificados nombres de usuario para la maquina, todos son confiables (jeje) Usar este archivo es un buen metodo para acceder a otro sistema, ya que bastaria kon hacer un "peque€o" spoofing y.. hale hop! ya estamos dentro del sistema sin haber tenido que autentificarnos antes. El problema es que normalmente este archivo esta siendo deshabilitado por los grandisimos problemas de seguridad que trae :( De todas formas, todavia hay muchos administradores que no son muy listos, jeje :) aunque este archivo este deshabilitado, comprobad si no podeis editarlo y/o modificarlo... mas de una vez os llevareis una sorpresa ;) *.RHOSTS: Este es muy parecido al etc/hosts.equiv, solo que ahora, no solo confiaria en el nombre de la maquina, sino tambien en el nombre de usuario. El .rhosts esta en el directorio home de cada persona. Un peque€isimo comentario acerca de este archivo; Si poneis la entrada ++ en el .rhosts, se podra acecder a esa cuenta desde cualquier sitio, por cualquier persona, con rlogin, ya que no pedira passwd... Dado que este archivo es realmente importante, es posible que hable de el en otro articulo. De todas formas, si habeis leido bien, os habreis dado cuenta de ke hay muchisimas posibilidades para probar y muchos posibles bugs para explotar ;) Si le echais un vistazo a la Saqueadores 7, el Duke de Sicilia explica un poco el archivo este, ademas de poner una buena forma de aprovecharlo :) Buscad por la red informacion de esto, ya que es muy interesante. *ETC/PASSWD: Creo sinceramente que este archivo no necesita ser explicado... hay infinidad de textos en la red, tanto en castellano como en ingles que lo explican, asi que, no voy a perder el tiempo contando lo que otros han explicado una y mil veces mejor de lo que yo lo haria. *ETC/SHADOW: Digo lo mismo que en el anterior *ETC/GROUP: Se usa para controlar el acceso a los archivos ke no pertenecen al usuario. Si el usuario intenta usar un archivo del que no es due€o, el sistema verifica que pertenezca al grupo due€o del archivo. Un ejemplo de linea este archivo seria: #nombre_del_grupo:passwd:GID:lista_de_miembros_del_grupo oficina:dsfvghsgh:105:pedro,mariano,luis,jose,hacker El GID es el numero de ID del grupo numerico en todos los archivos. Puede ir desde 0 hasta 30.000. En UNIX Berkeley, y en alguna otra, solo los usuarios del grupo wheel pueden usar el comando "su" para convertirse en root, y pueden colocar su propia contrase€a para pillar el root, en lugar de la contrase€a de root autentica... *ETC/FTPUSERS: Kontiene una lista de usuarios a los que no se les permite la entrada por ftp al servidor. En los servidores que tienen ftp anonimo, no se puede entrar por ftp con la cuenta de root. Una cosilla que tiene el ftp, es el archivo .netrc, que esta en el directorio base de la persona. Si un usuario (o nosotros suplantando a un usuario) inserta su registro y la informacion de contrase€a en el archivo, es posible que en un determinado momento se use el nombre de la maquina como un argumento frente a ftp, con lo que el .netrc es verificado y tenemos acceso al sistema remoto. Lo malo (o lo bueno, segun de que parte se mire) es que el comando ftp realiza una peque€a inspeccion de seguridad en este archivo, y si encuentra ke es legible por cualquier otro que no sea el due€o, no deja establecer la conexion. Y eso es todo, creo que no me dejo ninguno (o al menos, ninguno importante). En proximos articulos escribire acerca de los demonios, ya que tienen una cantidad inmensa de bugs jeje :) Ademas, igual explico tambien los comandos "r de Berkeley", que son muy majos para atravesar firewalls (ya contare como), y no se, ya ire escribiendo lo que se me vaya ocurriendo. Agradecimientos a Voyager, Markus Hbner, Linciln D. Stein, Christopher Klaus (y algun otro que me puedo dejar en el tintero), por sus estupendos dokumentos. Dudas, sugerencias, insultos, aportaciones, trucos, listas de passwds ;), fotos de vuestras amigas o de modelos (o sus telefonos :)ŽŽŽ ), y cualquier otra cosa mandadlas a: netyonkie@hotmail.com