Confianza



Para nuestro ultimo topico de vulnerabilidad, nos desviaremos de la estrategia practica que hemos seguido previamente para meternos un poco mas en la parte teorica, y discutir brevemente la nocion de la confianza. Las cuestiones e implicaciones de la vulnerabilidad aquí, son un poco mas sutiles y lejanas de alcanzar que las que hemos apuntado anteriormente; en el contexto de este texto usamos la palabra confianza siempre que se da la situacion de que un servidor (siempre que un host permite acceso remoto se le puede llamar servidor) permita que un recurso local sea usado por un cliente sin autentificacion de password cuando dicha autentificacion es normalmente requerida. En otras palabras, limitamos arbitrariamente la discusion a los clientes "disfrazados".

Hay muchas maneras de un host pueda confiar: los ficheros .rhosts y hosts.equiv que permiten el acceso sin verificacion de password; servidores basados en ventanas que permiten a los sistemas remotos el uso y abuso de privilegios; archivos exportados que controlan el acceso via NFS, y mas.

Casi todos estos dependen de la conversion del IP del cliente al nombre del host para determinar si se concede el servicio o no. El metodo mas simple usa el archivo /etc/hosts para una busqueda directa. Sin embargo, hoy en dia la mayoria de hosts usan o bien DNS (Domain Name Service), NIS, o ambos para el servicio de busqueda del nombre. Una busqueda inversa ocurre cuando un servidor tiene una direccion IP (de una conexión de un cliente) y desea coger el correspondiente nombre del host del cliente.

Auqnue el concepto de como funciona la confianza del host es bien sabido por muchos administradores de sistema, los peligros de la confianza, y el problema practico que representa, sin tomar en consideracion la interpretacion del nombre del host, es uno de los problemas menos entendidos que conocemos en Internet. Esto va mas alla de los obvios ficheros hosts.equiv y .rhosts; NFS, NIS, sistemas de ventanas - de hecho, muchos de los utiles servicios en UNIX estan basados en el concepto de que sites bien conocidos (para un administrador o ususario) son de alguna manera de confianza. Lo que no se entiende es como las redes atan de forma tan estrecha la seguridad entre lo que normalmente se consideran hosts inconexos.

Cualquier forma de confianza puede ser engañada, burlada, o derribada, especialmente cuando la autoridad que tiene la responsabilidad de chequear los credenciales de un cliente esta o bien fuera del dominio administrativo del servidor, o cuendo el mecanismo de confianza esta basado de alguna forma en metodo que tiene una forma debil de autentificacion; normalmente ambos son el caso.

Obviamente, si el host que contiene la base de datos (bien NIS, DNS, o o lo que sea) ha sido comprometido, el intruso puede convencer al host victima de que el viene de cualquier host de confianza; ahora es suficiente con encontrar que hosts son de confianza para la victima. Esta tarea es en gran medida facilitada examinado de donde los administradores de sistema y las cuentas del sistema (tales como root, etc.) se conectaron por ultima vez. Volviendo a nuestra victima, victim.com, puedes ver que la cuenta root asi como otras cuentas del sistema se conectaron desde big.victim.com. Cambias el registro PTR para evil.com de forma que cuando intentes hacer un rlogin (login remoto) desde evil.com a victim.com, evil.com intentara buscar tu nombre de host y encontrara lo que pusistes en el registro. Si el registro en la base de datos DNS es asi:

1.192.192.192.in-addr.arpa IN PTR evil.com

y lo cambias por:

1.192.192.192.in-addr.arpa IN PTR big.victim.com

entonces, dependiendo de como sea de ingenuo el software de victim.com, victim.com creera que el acceso proviene de big.victim.com, y, asumiendo que big.victim.com este en los ficheros /etc/hosts.equiv o /.rhosts, te sera posible aceder sin tener que proporcionar un password. Con NIS, es cuestion de o bien editar la base de datos del host en el NIS maestro (si es que este esta controlado por el intruso) o de burlar o forzar el NIS (ver discusion sobre la seguridad del NIS arriba) para proporcionar a la victima cualquier informacion que desees. Aunque mas complejos, dañinos e interesantes ataques pueden ser realizados por medio del DNS, el tiempo y el espacio no permiten cubrir dichos metodos aquí.

Dos metodos puedem ser usados para prevenir dichos ataques. El primero es el mas directo, pero quizas mas poco practico. Si tu site no usa ningun metodo de confianza, no seras tan vulnerable al engaño de host. La otra estrategia es la de usar protocolos encriptados. El usar el seguro protocolo RPC (usado en NFS, NIS+, seguros) es un metodo; aunque ha sido "roto" criptograficamente, aun da mas seguridad que los procedimientos de autentificacion RPC que no usan ningun tipo de metodo de encriptacion. 


Otras soluciones, tanto de hardware (smartcards) como de software (Kerberos), estan siendo desarroladas, pero estan o bien incompletas o requieren cambios en el software de el sistema.

El apendice B detalla los resultados de un estudio informal tomado de una variedad de hosts en Internet.

protegiendo el sistema




Es nuestra esperanza el que hallamos demostrado que incluso algunos de los 
aparentemente inocuos servicios ofrecidos (algunas veces inesperadamente) 
pueden ser "municion" para determinados crackers de sistemas. Pero, por 
supuesto, si la seguridad fuera nuestra unica preocupacion, los ordenadores 
jamas estarian encendidos, y enganchados a una red con literalmente 
millones de intrusos en potencia. Mas que dar avisos de que deberia o no 
ncenderse, ofreceremos algunas sugerencias generales:

Si no puedes quitar el servicio finger, considera el instalar un nuevo 
finger daemon. Es raramente necesario el revelar el home directory de un 
usuario y la procedencia de su ultimo acceso.

No corras NIS a menos que sea absolutamente necesario. Usalo lo menos 
posible.

Jamas exportes sistemas de archivo NFS sin restriccion, a todo el mundo. 
Trata de exportar sistemas de archivos de solo lectura cuando sea 
posible.

"Fortifica" y protege los servidores (ej, los hosts que dan un servicio 
a otros hosts - NFS, NIS, DNS, o lo que sea.). Solo permite cuentas 
administrativas en dichos hosts.

Examina cuidadosamente los servicios ofrecidos por inetd y el mapeador 
de puertos (pormapper). Elimina todos aquellos que no sean totalmente 
necesarios. Usa los inetd wrappers de Wietse Venema, no para otra 
funcion que la de tener un log de las fuentes de conexiones a tu host. 
Esto aporta grandes mejoras a las caracteristicas de verificacion 
standard de UNIX, especialmente con referencia a los ataques de red. Si 
es posible, usa los metodos loghost de syslog para obtener informacion 
relacionada con la seguridad en un host seguro.

Elimina los metodos de confianza a menos que su uso sea totalmente 
necesario. La confianza es tu enemigo.
Usa passwords shadowed y el comando passwd para rechazar passwords 
pobres, debiles. Desabilita cuentas de usuario o de sistema no usadas o 
inactivas.


Estate al tanto de la literatura actual (observa la lista de lectura y 
bibliografua sugerida al final de este documento) y de las herramientas 
de seguridad; informa a los demas acerca de problemas e incidentes de 
seguridad. Como minimo, suscribete a la lista de mail del CERT y de la 
revista PHRACK (ademas de la lista de mail de los firewalls, si tu site 
esta usando o piensa instalar firewalls) y lee los grupos de news de 
usenet acerca de seguridad para asi obtener la ultima informacion sobre 
problemas de seguridad. La ignorancia es el problema de seguridad mas 
mortal de los que estamos al tanto.

Instala todos los parches de seguridad tan pronto como sea posible, en 
todos tus hosts. Examina la informacion de los parches de seguridad de 
otras distribuciones - muchos bugs (rdist, sendmail) son comunes en 
muchas variantes UNIX.

Es interesante el ver que soluciones comunes para problemas de seguridad , 
tales como usar Kerberos o el usar passwords de usar y tirar o tokens 
digitales no son efectivas contra muchos de los ataques discutidos aquí. 
Recomendamos de verdad el uso de tales sistemas, pero alertamos que no son 
la solucion TOTAL a los problemas de seguridad - son parte de un esfuerzo 
ayor de proteger tu sistema.

Conclusiones



Tal vez ninguno de los metodos expuestos aquí sean sorprendentes; cuando se escribio este documento, no aprendimos mucho sobre como irrumpir en sistemas. Lo que aprendimos fue, testeando estos metodos en nuestros propios sistemas y en sites amigos, lo efectivos que son estos metodos a la hora de ganar acceso a un tipico host Unix de Internet. Cansado de tratar de teclear todo esto a mano, y deseando mantener nuestros propios sistemas mas seguros, decidimos poner en practica una herramienta de seguridad (SATAN) que trata de chequear hosts remotos al menos para alguno de los problemas discutidos aquí. La tipica respuesta, cuando informabamos a la gente acerca de nuestro documento y nuestra herramienta, era algo del estilo de "eso suena bastante peligroso - espero que no vayas a darlo a todo cristo. Pero ya que tu confias en mi, podria tener una copia?"

Jamas pensamos en crear un cookbook o una herramienta de metodos y programas soobre/para irrumpir en sistemas - en vez de eso, vemos que estos mismos metodos fueron usados, todos los dias, contra nosotros y contra administradores de sistema amigos. Creemos que el propagar la informacion que normalmente no era accesible para aquellos que estuvieran fuera del underworld, podemos aumentar la seguridad incrementando la conciancia del peligro.. El intentar restringir el acceso a informacion "peligrosa" sobre seguridad nunca ha sido un metodo muy util para incrementar la seguridad; de hecho, lo contrario parece ser el caso, ya que los crackers de sistemas han sido reticentes a la hora de compartir informacion con otros.

Mientras es casi seguro que alguna de la informacion aquí presentada es material nuevo para aspirantes a crackers de sistemas, y que algunos la usaran para ganarse accesos no autorizados en hosts, la evidencia presentada por nuestros tests muestra que hay un monton de sites inseguros, simplemente por que el administrador de sistema no sabe mucho mas - no son estupidos o lentos, simplemente no son capaces de pasar el poco tiempo que tienen libre explorando todas las materias de seguridad pertenecientes a sus sistemas. Combinado esto con el hecho de que no tienen un acceso facil a este tipo de informacion da como resultado sistemas pobremente defendidos. 

Esperamos (modetamente) que este documento provea de datos muy necesarios sobre como los sistemas son crackeados, y mas aun, explique por que se 
deben de dar ciertos pasos para proteger un sistema. El saber por que algo es un problema es, en nuestra opinion, la clave para aprender y hacer una eleccion informada e inteleginte para lo que la seguridad de tu sistema significa de verdad.
-----

Apendice A:


SATAN (Security Analysis Tool for Auditing Networks)



Concebido originalmente hace unos años, SATAN es actualmente el prototipo 
de una vision mas amplia y comprensible de una herramineta de seguridad. En 
su encarnacion actual, SATAN prueba e informa remotamente acerca de varios 
bugs y debilidades en servicios de red y sistemas basados en ventanas, asi 
como tambien detalla tanta informacion util sobre la victima como le es 
posible. Entonces procesa los datos con un filtro y con lo que se 
calificaria como un sistema experto para al final generar el analisis de 
seguridad. A pesar de no ser particularmente rapido, es extremadamente 
adaptable y facil de modificar.


SATAN consiste en varios sub-programas, cada uno de los cuales es un 
fichero ejecutable (perl, shell, binario compilado en C, lo que sea) que 
testea un host para una debilidad potencial dada. El añadir futuros 
programas de testeo es tan facil como poner un ejecutable en el directorio 
principal con la extension ".sat"; el programa principal lo ejecutara 
automaticamente. Este genera una serie de blancos (usando DNS y una version 
rapida de ping a la vez para llegar a los blancos en directo), y despues 
ejecuta cada uno de los programas sobre cada uno de los blancos. Un 
programa de interpretacion/filtrado de datos analiza despues el resultado, 
y finalmente un programa de informes digiere todo para ponerlo en un 
formato mas leible.

El paquete entero, incluyendo el codigo fuente y la documentacion, estara 
disponible libremente al publico, via ftp anonimo y postenadolo a uno de 
los numerosos foros sobre codigo fuente de Usenet.

Apendice B

Un estudio informal llevado a cabo en al menos una docena de sites en 
Internet (educacionales, militares, y comerciales, con unos 200 hosts y 
4000 cuentas) revelo que como media, alrededor del 10% de las cuentas de un 
site tenian archivos .rhosts. Cada uno de estos archivos promediaba 6 hosts 
confiados; sin embargo, no era raro el tener unas 100 entradas en el 
archivo .rhosts de una cuenta, y en algunas ocasiones, esta cifra estaba 
alrededor de 500! (Este no es un record del que uno deberia estar orgulloso 
de poseer). Adicionalmente, cada uno de los sites directamente en Internet 
(un site estaba practicamente tras un firewall) confiaba en un usuario o 
host en otro site - asi que, la seguridad del site no estaba bajo el 
control directo del administrador de sistema. Los sites mas grandes, con 
mas usuarios y hosts, tenian un porcentaje mas bajo de usuarios con 
archivos .rhosts, pero el tamaño de estos archivos era mayor, asi como el 
numero de hosts remotos de confianza.

Aunque fue muy dificil el verificar cuantas de las entradas fueron validas, 
con nombres de host tales como "Makefile", "Message-Id:", and
"^Cs^A^C^M^Ci^C^MpNu^L^Z^O", asi como unas pocas entradas de wildcard, nos 
cuestionamos la sensatez de poner la seguridad de un site en manos de sus 
usuarios. Muchos usuarios (especialmente los poseedores de largos archivos 
.rhosts) intentaron poner comentarios tipo shell en sus archivos .rhosts, 
que son intentados reolver como nombre de host validos por muchos sistemas 
UNIX. Desafortunadamente, un atacante puede entonces usar las tecnicas DNS 
y NIS de engaño del nombre de host discutidas antes para fijar sus nombres 
de host como "#" y entrar libremente. Esto pone en riesgo a muchos sites 
(al menos una distribucion es dada con comentarios en sus archivos 
/etc/hosts.equiv).

Podrias pensar que estos sites no son tipicos, y, de hecho, no lo eran. 
Virtualmente todos los administradores saben un monton sobre seguridad y 
escriben programas de seguridad como hobby o como profesion, y muchos de 
los sites para los que trabajaron hicieron estudios de seguridad o crearon 
roductos de seguridad. Solo podemos suponernos como sera un site "tipico".
apendice C:

Despues de recibir mail de un site que habia sido violado desde uno de 
nuestros sistemas, se inicio una investigacion. Con el tiempo, encontramos 
que el intruso estaba haciendolo desde una lista de sites ".com" 
(comerciales), buscando hosts con ficheros de password faciles de robar. En 
este caso, "facil de robar" se refiere a sites con un nobre de dominio NIS 
facil de adivinar y un servidor NIS de facil acceso. Sin saber cuan lejos 
habia llegado el intruso, parecia una buena idea el alertar a los sites que 
eran en si vulnerables al robo de passwords. De los 656 hosts de la lista 
del intruso, 24 tenian archivos de password susceptibles de robo - 1 de 
cada 25 hosts mas o menos!!. Un tercio de estos archivos contenia al menos 
una cuenta sin password con shell interactivo. Con un total de 1594 
entradas, a una media de 10 minutos corriendo un password cracker (Crack) 
daria mas de 50 passwords, usando una estacion de trabajo Sun de gama baja.
Otros 40 mas se encontaron en los siguientes 20 minutos; y un password de 
la cuenta root se encontro en solo 1 hora. El resultado despues de unos 
dias de crackeo fue: 5 passwords root, 19 de 24 archivos de password (80%) 
con al menos un password conocido, y 259 de 1594 (1 sexto) passwords 
adivinados.

Apendice D:



Como conseguir metodos de seguridad gratis en Internet



Listas de mail:


o The CERT (Computer Emergency Response Team) advisory mailing list. Mandar e-mail a cert@cert.org, y pedir que se te ponga en su lista de mail.

o The Phrack newsletter. Mandar e-mail a phrack@well.sf.ca.us y pedir que se te añada en la lista.

o The Firewalls mailing list. majordomo@greatcircle.com 
Poner lo siguiente:

subscribe firewalls

o Computer Underground Digest. Mandar e-mail a tk0jut2@mvs.cso.niu.edu, pidiendo que te pongan en la lista.

Software gratis:


COPS (Computer Oracle and Password System) disponible via ftp anonimo fde archive.cis.ohio-state.edu, in pub/cops/1.04+.

The tcp wrappers disponibles via ftp anonimo de ftp.win.tue.nl,
in pub/security.

Crack esta disponible en ftp.uu.net, in /usenet/comp.sources.misc/volume28.

TAMU is a UNIX auditing tool that is part of a larger suite of excellent tools put out by a group at the Texas A&M University. They can be gotten via anonymous ftp at net.tamu.edu, in pub/security/TAMU.

Sources for ftpd and many other network utilities can be found in ftp.uu.net, in packages/bsd-sources.

Source for ISS (Internet Security Scanner), a tool that remotely scans for various network vulnerabilities, is available via anonymous ftp from ftp.uu.net, in usenet/comp.sources.misc/volume40/iss.

Securelib is available via anonymous ftp from ftp.uu.net, in usenet/comp.sources.misc/volume36/securelib.

The latest version of berkeley sendmail is available via anonymous ftp from ftp.cs.berkeley.edu, in ucb/sendmail.

Tripwire, a UNIX filesystem integrity checker+, is available via anonymous ftp at ftp.cs.purdue.edu, in pub/spaf/COAST/Tripwire.