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

Unix Internet Daemons

      4547

Autor: Net-Yonkie
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