La novena puerta

#####################################
## HACKINDEX ##
## http://www.hackindex.org ##
#####################################
Titulo: La novena puerta
Autor: NBK
Tema: Protocología

La información incluída en este documento es expuesta en base a un interés educativo. HackIndex no se hace responsable del uso de dicha información.

El siguiente documento es propiedad de HackIndex y de su autor, pudiendo ser distribuído de forma totalmente libre y sobre cualquier tipo de soporte siempre y cuando se respete el formato original, se cite a A.H.E. como fuente, se incluya un enlace actualizado al documento o a la web del grupo: http://www.hackindex.org ; y se incluya este disclaimer en su totalidad y sin modificación alguna.

Queda extrictamente prohibida su distribución con fines lucrativos, cuando se altere su contenido sin consentimiento o cuando se incumpla cualquier otra condicion citada anteriormente en el presente disclaimer.
#####################################

Introduccion: ————-

 

El siguiente articulo no pretende en modo alguno entrar en detalle en ningun protocolo o subtrocolo en concreto y debe ser considerado como una mera introduccion a ciertos conceptos basicos para la mejor comprension de las redes y la terminologia utilizada tan a menudo en los textos tecnicos.

 

Su cometido es puramente educativo y como tal intrinsicamente positivo en si mismo. ///////////////

 

 

 TCP/IP y la filosofia Cliente/Servidor, puertos y protocolos.

 ————————————————————-

 

El TCP/IP (Transfer Control Protocol/Internetwork Protocol), es la base en la que se sustentan las comunicaciones en red modernas. Es un -Protocolo-, es decir una convencion, un lenguaje que hace posible el intercambio de paquetes de informacion a traves de la red entre diferentes ordenadores, definiendo una serie de reglas comunes a tal fin. Nos referimos a paquetes porque literalmente la informacion es dividida en bloques para optimizar la comunicacion.

 

Es un protocolo, pero existen numerosos -Subprotocolos- alrededor de el, muchos de los cuales usamos a diario aun sin ser conscientes de ello.

 

Cuando nos conectamos a la red, a traves de nuestro proveedor, necesitamos tener instalado en nuestra maquina un controlador TCP/IP, necesario para el intercambio de paquetes (informacion) en la Red. Pero para hacer uso de los subprotocolos necesitamos un programa -Cliente-, un cliente no es mas que lo que podriamos denominar un “interprete”, de alguna manera es como si el TCP/IP fuese el “idioma oficial” y los subprotocolos basados en el sus diferentes “dialectos”.

 

Uno de estos subprotocolos, y el mas interesante para nosotros sera el -Telnet-, practicamente todos los sistemas operativos incluyen un cliente Telnet, si usais Windows tan solo debereis abrir una sesion de MsDos y escribir “telnet”, a continuacion aparecera en pantalla la aplicacion cliente preparada para conectar con un -Servidor-, que no es mas que otro ordenador con una aplicacion servidora.

 

Para aprender mas sobre este y otros protocolos asociados os remito al articulo de Seldon titulado: Manual de referencia de FTP, Telnet, correo y news. Donde tambien se entro en el tema de puertos entre otras cosas.

 

Bien, algo tremendamente importante de entender es la necesidad de un programa para la utilizacion de cualquier protocolo, tanto en el lado Servido como en el Cliente. Si navegamos por la Red el protocolo usado sera el HTTP (Hyper Text Transfer Protocol), y es nuestro Browser (Navegador) el software que actua como interprete de este protocolo para nosotros. Cuando exploramos Internet nosotros disponemos de un navegador en nuestra maquina (este el programa cliente) mientras que, al otro lado, alla donde se encuentren las paginas que buscamos, existira un programa servidor. Cuando solicitamos una pagina web escribiendo su direccion en el navegador (por ejemplo http://www.hackindex.org ) este requerira una copia de la pagina a la aplicacion servidora que se encuentra en un ordenador remoto, utilizando el protocolo HTTP (es por esto que se pone al principio de cada direccion url). El software servidor recibe la peticion y te manda la pagina web a tu ordenador, donde tu cliente (navegador) hara las operaciones oportunas para mostrartela tal y como esta existe en el ordenador servidor. Recuerda siempre que la pagina web es recreada en -tu- maquina, esta es una de las claves de la filosofia Cliente/Servidor y la que hace posible que un solo ordenador servidor pueda ofrecer la misma pagina a multiples -clientes-.

 

Espero que en este punto, os haya ayudado a comprender mejor el modelo Cliente/Servidor y como ambos lados de la moneda utilizan un protocolo en concreto para entenderse.

 

Empezamos el baile de terminos:

 

La aplicacion que se encuentra en el ordenador servidor se denomina tambien -Servicio-, y no es dificil de entender ya que presta un “servicio” a nuestras aplicaciones clientes, en el caso anterior “sirve” paginas web a peticion nuestra. Pero este es solo un tipo de servicio disponible.

 

A estos servicios accederemos a traves de -Puertos-, que no son mas que numeros asignados a cada servicio y que sirven para discernir a que servicios van dirigidas nuestras peticiones. El concepto puerto es tan solo “logico”, es decir, conviene no olvidar que no existen en realidad fisicamente. Esto es a menudo objeto de confusion ya que existen puertos de comuniciones -fisicos- en nuestro ordenador, usualmente nuestro modem estara conectado a nuestro puerto fisico “COM-1″ o “COM-2″, pues bien, podriamos imaginarnos esta interface fisica como un gran portal al que llega un cartero con un saco lleno de cartas, algunas de estas cartas irian dirigidas al piso 21, otras al 23, etc, en cada piso viviria un servicio….o lo que es lo mismo un programa que ofreceria algun tipo de servicio basado en un protocolo especifico, cada vecino hablaria un lenguaje diferente…y si esa carta no esta escrita en el lenguaje apropiado nunca seria entendida por este.

 

Pero este tan solo seria un ejercicio de imaginacion para comprender mejor toda la historia ya que, como he dicho, el concepto puerto es completamente virtual.

 

Los puertos serian pues caminos virtuales por los que correria informacion (paquetes) en un determinado lenguaje (protocolo) entre un programa cliente y otro servidor. Y siempre, el cliente hara una peticion…..y el servidor ofrecera respuesta.

 

Usualmente, los servicios mas utilizados, como Telnet, FTP, HTTP…… tienen unos numeros de puerto asignados por defecto, esto es mas una convencion que otra cosa, es necesario estar abierto a sorpresas en lo referente a numeros. Por ejemplo el HTTP suele tener asignado el puerto numero 80, el Telnet el 23, etc…. En cambio es comun ver servidores web a traves del puerto 8080, o Telnet mas arriba del puerto 1024.

 

No es una contradiccion, pensar en ello como que alguien movio el programa al piso de arriba y solo es posible acceder a el tocando a esa nueva puerta. El hecho de que tradicionalmente se usen unos determinados numeros de puerto es tan solo para que la labor de busqueda de un servicio sea mas intuitiva, de manera que si buscas Telnet primero miraras si en el puerto 23 esta disponible dicho servicio.

 

Esto tiene conotaciones claras en lo que a seguridad de redes se refiere, los administradores sabedores de la utilizacion tradicional de estos puertos solemos ubicarlos en numeros diferentes, de manera que su localizacion no sea inmediata, y se requiera un -scaneo- en profundidad.

 

Scanear un ordenador no es mas que barrer sus puertos en busca de servicios activos, este puede ser -selectivo- en busca de puertos concretos o mas usuales, o -completo- un chequeo secuencial uno a uno de todos los puertos, los numeros validos de puerto van del 1 al 65535, y en principio cualquier servicio puede ser asignado a cualquier puerto aunque se recomiende cierta coherencia o se ansie segun nos vaya el baile.

 

Algo con lo que a menudo podremos encontrarnos es con -Traps-, esto son, trampas. Como si de queso en una ratonera se tratase es posible hacer parecer que, por ejemplo, el puerto 23 ofrece Telnet cuando en realidad tan solo se trata de una aplicacion colocada en dicho puerto para, en el mejor de los casos entorpecer la exploracion de dicho ordenador remoto. Es facil pensar en cosas que hacer con una persona que entro por la puerta equivocada, y obviamente, no es de la casa.

 

Un ejemplo claro de lo expuesto arriba lo teneis en los tan populares anti-bo, anti-netbus, anti-todo.

 

Los troyanos como el NetBus, como aplicaciones servidoras que son, ofrecen sus servicios por un determinado puerto, este puerto, sea cual sea el numero e independientemente del troyano que hablemos, hara muy probablemente uso de un puerto -Registrado-. Se denomina puerto registrado a los puertos altos, por encima del 1024, y hasta el 49151, que tradicionalmente se destinan a aplicaciones que no entran dentro de los servicios clasicos ofrecidos por los servidores, y que pueden ser utilizados por programas ejecutados por usuarios ordinarios.

 

Resumiendo, si estas infectado con el NetBus, este permanecera a la escucha por ejemplo por el puerto 1234. Sabedores de esto, y si disponemos de un cliente de NetBus, podriamos escanear diferentes ordenadores en busca de dicho servidor en ese puerto 1234, y simplificando una tanto podriamos conectarnos con el a traves de dicho puerto si conseguimos localizar alguna maquina infectada.

 

Estas aplicaciones Anti-Troyanos, suelen escuchar en los mismos puertos donde se supone que los troyanos operan por defecto pero en el momento que alguien intenta una comunicacion por ese puerto el programa contesta con algun mensaje airado o quizas algo peor.

 

Luego es algo parecido al concepto de “trampa” del que hablabamos.

 

Los puertos, al menos los -Well Known Ports-, o los puertos bien conocidos, estan documentados, es decir existe informacion sobre los servicios que habitualmente se ofrecen por ellos y sus protocolos asociados. Existen listas disponibles, y en general a partir del puerto 1024 deben ser consideradas como meramente orientativas. Los troyanos han cobrado tal notoriedad que a menudo sustituyen en estas listas a los servicios ofrecidos tradicionalmente en ciertos puertos, o incluso existen listas de troyanos y sus puertos asociados.

 

Me gustaria recordar brevemente algo sobre los puertos, para que en lo que en mi mano este paliar posibles sustos inecesarios o alarmas injustificadas.

 

Demasiado a menudo leo: “Han intentado atacarme con el BO por el puerto 31337″, “Intentaron entrarme por el puerto 5666″;…… Las mas de las veces estos pequeños sobresaltos son producidos por paquetes que llegan a nuestro ordenador buscando un servidor en un puerto, casi siempre producto de scaneos aleatorios, o de conexiones erroneas del cliente llamando al servidor. Por supuesto estoy hablando de comunicaciones -InBound-, es decir, paquetes entrantes.

 

Cada vez mas normalmente, la gente mas o menos informada instala software -Firewall- en sus maquinas para controlar el flujo de informacion saliente y entrante. Los firewall son algo asi como “corta fuegos” virtuales, tanto en su version fisica (ordenadores dedicados) como software (paquetes de seguridad como AtGuard, o Zone Alarm) actuan analizando los paquetes que se envian y reciben, determinando en base a su configuracion si deben ser permida o no su emision o recepcion.

 

Una persona que disponga de un cliente de cualquier troyano disponible intentara encontrar ordenadores infectados con su servidor, para ello lanzara paquetes al puerto en el que crea pueda estar este a la escucha. Esto provocara que el firewall nos avise de que “una comunicacion entrante ha sido detectada por el puerto xxxxx”, donde xxxxx puede ser cualquier cosa.

 

Esto no significa que estemos infectados por ningun troyano, tan solo podemos afirmar con “cierta” seguridad que alguien probo suerte. Y digo “cierta” seguridad, porque si alguien quisiera saber que servicios ofrece vuestro ordenador y efectuara un scaneo en completo de la maquina recibiriais por lo bajo 65000 paquetes en otros tantos puertos y esto no significaria mas que eso, un scaneo de fortuna.

 

Si no podemos suponer infeccion alguna por recibir un paquete en un puerto equivocado, menos aun podemos suponer que alguien intenta “colarnos” algo por debajo de la puerta.

 

Como hemos visto, un puerto en si mismo es pura virtualidad…nada sin un software detras, por lo tanto, un puerto abierto no supone riesgo siempre que no exista comunicacion a traves de el entre un programa cliente y otro servidor.

 

Otra actitud debemos adoptar si en cambio, los paquetes que detecta nuestro firewall fueran salientes, OutBound, ya que en ese caso una aplicacion que se encuentre -detras- del firewall, es decir en nuestra maquina o red, intenta el envio de un paqueta, ya sea iniciando una comunicacion o como contestacion a una peticion proveniente de algun lugar.

 

No obstante, si detectamos esto es gracias al firewall y, por tanto, dicho paquete puede ser obligado a no enviarse, de manera que incluso si estuvieramos infectados con algun tipo de software servidor no deseado no seria posible la comunicacion con un hipotetico cliente. Por lo que se impondria la calma y la posterior deteccion y desinfeccion (antivirus)….sin mayor alarma.

 

Otro tema delicado es la configuracion correcta de firewalls y demas software de seguridad mas o menos domestica, pero no es mi proposito ahora avanzar mas en ese sentido.

 

Lo fundamental, y si algo en claro debemos sacar de este escrito, es que en el campo del TCP/IP se juega un gran partido de futbol, en el cual juega el Cliente F.C. contra el Servidor Utd, y donde los jugadores (de todas las nacionalidades) pueden jugar casi en cualquier puesto,,,,aunque muchas veces….. ….adivinemos la alineacion.

 

“Ser justos, Ser malos.”

 

– N.B.K. www.hello.to/nbk —————————————–

Si este mundo no es serio, tratalo como se merece.

—————————————–

  • Share/Bookmark

No hay posts relacionados.

Etiquetas: , , , , , , , , , ,

2 comentarios a “La novena puerta”

  1. adriano subtt dice:

    increible que alguien sea capas de introducirse en tu ordenador

  2. sjlopezb dice:

    Es que, es un hecho que se ha dado en su día, ya que, con los tiempos actuales, ya no es necesario esto, porque ya están cerradas esas puertas traseras. E incluso, dichas vulnerabilidades que tienen dichas máquinas. No es por nada, pero se han visto muchas máquinas afectadas.

    Slds…

Deja un comentario

Tienes que iniciar sesión para escribir un comentario.