Crackers y Seguridad  Personal (03.09.2000 v.1.0)

 

Seguridad Personal
Mi educación formal fue pre-Internet y me conecté a la red pocos  años con total ignorancia sobre el sistema, entiendo de Internet tan poco como cualquier persona común que ha ido aprendiendo por su cuenta y una de las cosas que me ha intrigado siempre es la vulnerabilidad que tenemos los usuarios corrientes, conectados por línea telefónica, ante un tipo que maliciosamente pretenda husmear o intervenir nuestro equipo de manera remota.

Por lo mismo hace poco tiempo comencé a hacer mis averiguaciones al respecto y aquí trataré de resumir, en palabras simples, lo que he aprendido

¿Puede alguien remotamente entrar a mi disco duro mientras estoy conectado?
Esta era mi primera duda y la respuesta es si, puede hacerlo, aunque no siempre y tampoco es muy fácil que lo logre. Dependiendo de como estemos conectados y los programas que tengamos instalados tendremos más o menos riesgo a que alguien ingrese a nuestro disco en forma maliciosa.

Internet se configura según un modelo de clientes (que principalmente piden información, es decir bajan desde Internet) y servidores (que principalmente entregan información a los clientes). Nuestro equipo en la casa es un cliente que pide información al servidor (el equipo de nuestro ISP). Un equipo que solo tuviera capacidad para pedir información y no darla (digamos, un cliente puro) sería invulnerable a cualquier intervención. Pero nuestros computadores como sabemos también envían datos, por ejemplo cuando mandamos un e-mail, cuando subimos información a nuestra página web e incluso en tareas cotidianas. Con solo conectarse, nuestro equipo está enviando datos al servidor (password y contraseña).

De aquí concluimos que mientras más habilitada esté nuestro equipo para enviar información, más vulnerable es a la intervención de un intruso. Por ejemplo, si tenemos instalado el Personal Web Server de Microsoft, si usamos un programa de chat o el ICQ seremos mucho más vulnerables que si solo usamos Internet para explorar la web y enviar correo electrónico o news.

También son potencialmente riesgosos los programas que permiten controlar nuestro equipo por vía remota como por ejemplo el PC Anywhere, Laplink o Wingate, que para funcionar dejan "puertas abiertas" en el equipo.

Otro factor que tiene el mismo efecto son los programas conocidos como "troyanos" que también dejan, sin que lo sepamos, puertas abiertas para que los intrusos ingresen a nuestro equipo sin ser notados. Los troyanos se instalan de manera similar a los virus (vienen dentro de juegos, programas pirateados, etc.) y, si no los detectamos, cada vez que nos conectamos nuestro equipo queda abierto y avisando a los intrusos que tiene entradas disponibles.

Un problema con que se encuentra el intruso para acceder remotamente a nuestro equipo es como saber si lo tenemos encendido. Lógicamente solo podrá tener acceso a nuestro computador mientras lo tengamos encendido y conectado a Internet, de otro modo no hay caso. Luego las conexiones que no se cortan nunca como el cable modem y similares, facilitan mucho la tarea del atacante, ya que cuenta con que nuestro equipo podrá estar conectado la mayor parte del tiempo. Ante esta dificultad lo que se hace no es atacar una máquina específica sino "barrer" un rango determinado de direcciones IP hasta encontrar alguna que esté activa. Después de eso simplemente comienzan a revisar los puertos a ver si encuentran alguno abierto y disponible para ingresar

 

IP y Puertos
Para que alguien pueda entrar remotamente a nuestro computador, antes que nada debe conocer nuestra dirección IP, que es el número que nos identifica en Internet. 

Las direcciones IP constan de cuatro grupos de tres números cada uno y están organizadas según una jerarquía. Por ejemplo mi dirección IP podría ser algo así como 200.25.566.xx donde los tres primeros grupos de números corresponden a datos de mi ISP y el último número (xxx) es el que me asignan al momento de conectarme. Así, en una conexión mi dirección podría ser 200.25.566.20, en otra 200.25.566.128, etc.

Eso presenta una dificultad a alguien que quiera atacar específicamente a mi equipo ¿como podría saber ese último número?, bueno, si estoy usando ICQ por ejemplo y el atacante me tiene en su lista de contactos, podría obtener mi IP en el momento en que estoy conectado y con ella comenzar a escanear mis puertos a ver si hay alguno abierto. Pero aun si estoy conectado vía cable modem donde mi IP es fija (no cambian los últimos tres números) y así una vez que la conoce, el atacante puede tratar de atacar el equipo cuando quiera.

Hasta ahora hemos hablado de "puertas" y "puertos" pero ¿que son estas realmente?. Bueno el computador tiene puertos físicos (como el puerto serie donde conectamos el mouse y el modem, o el paralelo donde conectamos la impresora) y puertos lógicos que están asociados a servicios que puede dar el computador. Los puertos físicos son unos pocos pero los puertos lógicos son alrededor de 65.000!, claro que son puertos disponibles y solo unos cuantos son ocupados por un equipo.

Podemos pensar en un puerto lógico como una puerta que nos permite o nos impide entrar remotamente a nuestro equipo. Un Scanner es un programa que revisa los puertos más comúnmente usados para ver si están abiertos o cerrados. Si hay alguno abierto, por ahí podríamos entrar remotamente al computador, existen convenciones para asociar servicios a ciertos puertos, por ejemplo, estas son algunas de las asignaciones comunes de puertos:

Puerto/ Servicio/ Utilidad
7 /echo /Lo que teclees se volverá a escribir 
9 /discard /dev/null - basura 
11 /systat /Informacion sobre los usuarios 
13 /Hora y fecha en el host remoto 
15 /netstat /Informacion sobre la red 
21 /ftp /Transferencia de ficheros 
23 /telnet /Acceso al shell 
25 /smtp /Correo saliente 
37 /time /Hora en el host remoto 
39 /rlp /Localización del recurso 
43 /whois /Información sobre la red y el host 
53 /domain /Nombre del servidor 
70 /gopher /Buscador de información (ya anticuado) 
79 /finger /Información sobre los usuarios 
80 /www /Servidor de Web 
110 /pop3 /Correo entrante 
119 /nntp /Grupos de noticias (news)
139 /nbsession /Netbios session
443 /shttp /Servidor de Web 'seguro'
512 /biff /Notificación de correo 
513 /rlogin /Login remoto 
514 /shell /Comando remoto 
515 /spooler 
520 /route /Protocolo de información routing 
8000 /http /Otro servidor de web.
8080 /proxy 

Sin embargo, como dijimos antes estas son solo convenciones, un equipo bien podría tener asignado el puerto 22 para ftp o un "troyano" en el puerto 70, etc. Así, el intruso lo que hace con su programa de scanner es revisar cada uno de estos puertos "usuales" para ver si hay alguno abierto por donde pueda ingresar a nuestra máquina

 

Una vez que el Intruso ha entrado ¿que puede hacer?
Una vez que el intruso ha ingresado por un puerto abierto tiene a su disposición comandos similares a los que tenemos nosotros desde el teclado, es decir podría abrir la puerta de nuestro CD-Rom, ver nuestros directorios, borrar archivos, etc. todo esto si es particularmente estúpido, ya que nos daríamos cuenta de inmediato que hay alguien "jugando" con nuestro equipo y lo apagaríamos. 

Si es un poco más vivo simplemente se dedicará a ver silenciosamente nuestra actividad y tratar de ubicar nuestro password sin que nos demos cuenta de manera que el mismo pueda entrar con toda tranquilidad haciéndose pasar por nosotros en una sesión nueva de Internet. Esto le permitiría por ejemplo, monitorear nuestro e-mail sin que nos demos cuenta.

 

Firewalls (cortafuegos)
Para protegernos de estos molestos (y potencialmente peligrosos) ataques existen programas llamados firewall (en nuestro caso personal firewalls, para distinguirlos de  los firewall que usan los servidores). En palabras sencilla un firewall simplemente vigila y avisa cuando alguien está escaneando remotamente nuestros puertos y deja pasar o bloquea selectivamente, es decir deja pasar los servicios que nosotros hemos definido como "permitidos" y bloquea todos los demás.

Así, si tenemos un personal web server instalado en nuestro equipo o algún programa de acceso remoto, el firewall dejará pasar toda la información sin riesgo de que se cuele por esa puerta algún intruso no autorizado (que será rechazado). Si transferimos archivos entre dos equipos podemos crear un "tunel" seguro de modo que el firewall deje abierto el puerto solo para dos IP determinadas y rechace toda transferencia a cualquier otro equipo, etc.

Así un firewall personal autoriza o niega acceso según el origen o destino esté o no autorizado por nosotros. Un firewall de buena calidad también puede detectar si hay alguien que remotamente está tratando de encontrar nuestro password  por fuerza bruta (ataques de diccionario por ejemplo) y mandarlo inmediatamente a una lista negra que le niegue el acceso a futuro, etc. Aunque, según me han observado, esta no es una característica común en los firewalls personales al menos.

 

Ataques a los servidores
Así vemos que nuestro equipo personal, por ser esencialmente un cliente es bastante difícil de atacar y no es mucho el daño que puede hacer un intruso sin que nos demos cuenta. Otra cosa es con los servidores (por ejemplo el de nuestro ISP) que es donde se dirige el mayor esfuerzo de los crackers. Un servidor es especialmente vulnerable ya que su misión es justamente entregar información, así necesita de distintas medidas de seguridad para evitar que esta entrega de información se haga a personas maliciosas o no autorizadas.

Alguien que logre averiguar nuestro password por ejemplo (lo que no es tan difícil como parece) podría monitorear sigilosamente todo nuestro correo electrónico, así como entrar y modificar la información que tengamos almacenada en el servidor como por ejemplo nuestra página web

De hecho, esto es algo que está al alcance de la mayoría del personal técnico en nuestro ISP, por lo que el correo no encriptado a través de Internet es similar a pasar los sobres abiertos al cartero.

 

Seguridad en el Correo Electrónico
Curiosamente los programas cliente de correo electrónico más populares no traen dentro de sus características ningún método de encriptación que permita enviar correo conservando la confidencialidad. Tal vez la posición de muchos gobiernos que ven en la posibilidad de que la gente común pueda enviar mensajes confidenciales un peligro para su seguridad interna (USA es uno de los más conspicuos) es lo que ha retardado la inclusión de esta característica que debería ser común y transparente en todos los programas.

Así, el que no quiera romperse la cabeza aprendiendo a usar encriptadores estará condenado a enviar mensajes abiertos que pueden ser vistos libremente en el servidor del ISP y tal vez en varios más. 

Si no estamos dispuestos a que cualquiera lea nuestros mensajes tenemos que encriptarlos o esconderlos de algún modo antes de enviarlos. La opción más usada en estos momentos es el software PGP, el problema con estos programas es que para usarlos tienen que estar instalados tanto en el lado del emisor como el del receptor y hay que tener alguna comprensión del sistema para general las claves, distribuirlas, encriptar y desencriptar mensajes

Una alternativa simple consiste en enviar los mensajes en formato ZIP con password. No es lo más seguro ya que el password va incluido de algún modo dentro del mensaje pero da una protección suficiente contra los intrusos casuales y no técnicos, el password se puede avisar por teléfono o enviar por ICQ a la otra parte, obviamente nunca por el mismo e-mail que queremos mantener como confidencial

¿Que Hacer si me Atacaron?
Si, por ejemplo, recibes un mailbombing (o sea varios cientos de mail insultantes en tu casilla) o detectas que alguien te está escaneando los puertos seguramente podrás encontrar su dirección IP con facilidad, en el caso de un mail basta con leer el encabezado completo donde muestra toda la ruta. El problema es que no es fácil a partir de la dirección IP identificar al equipo intruso. En http://grc.com/su-reading.htm la excelente página de Dave Gibson hay una caja de texto donde ingresas la dirección IP y te entrega el dominio y bastantes datos acerca de la organización a que pertenece, lo que permite quejarse y, eventualmente, pedir el cierre de la cuenta del intruso. También hay distintos niveles de anonimización que puede usar el atacante, desde los más burdos (cambiar la dirección electrónica en el campo "Reply To") a otros más sofisticados como usar un servidor anónimo o acceder a través de cualquier servidor vía telnet. En ambos casos es todavía posible tracear la procedencia con la ayuda de los administradores del servidor. sin embargo existen anonimizadores que usan encripción fuerte y en esos casos resulta muchísimo más dificil determinar el origen