En un artículo anterior abordé un tema que, por los mails recibidos, infiero que gusto mucho a los lectores. La seguridad en los sistemas informáticos es un tema que llama mucho la atención por su directa y estrecha relación con el hacking, muchas veces la linea divisoria es muy tenue o no existe, así nos encontramos que muchos de los considerados hackers son también especialistas en seguridad, de manera que quienes demostraron interés en el tema están tanto o mas atraídos por el tema hacking que por su contracara la seguridad.

En esta nota voy a abordar el tema desde dos puntos, primero definiendo los conceptos intervinientes y segundo explicando la compilación y uso de una de las herramientas de seguridad/hacking presentadas en la nota anterior.

Antes de continuar con nuestro tema, quiero hacer una aclaración, la información aquí presentada es fruto de la lectura y experimentación personal, no me considero hacker, ni mucho menos, aunque admiro a los verdaderos hackers. Solo deseo compartir información y mis conocimientos, a todos aquellos autodenominados hackers que pululan por la red, les digo que solo me interesan sus criticas si son con animo de contribuir al conocimiento, si lo único que quieren es satisfacer su ego les sugiero aprovechen su tiempo de otra forma.

Finalmente quiero manifestar mi desagrado por el modo en que últimamente se trata a los novatos en algunos canales de IRC de Linux ya que agreden y se burlan de los que recién empiezan, llamo a la reflexión a los que toman esta actitud, aparentemente no entendieron los preceptos de la causa GNU.

Vamos ahora a tratar lo que no ocupa, la seguridad de un sistema esta fuertemente ligada a la accesibilidad que se tenga a los mismos, para acceder a un host este debe tener puertas de entrada estas puertas son los ports o puertos veamos entonces que son.

Puertos: Para poder brindar algún servicio la computadora que lo provee necesita poner a disposición de los clientes un canal para que se establezca la comunicación, este canal a su vez precisa que exista un medio de comunicación con el sistema operativo y con el programa servidor (demonio) estos medios son conocidos como puertos, y por lo general tienen asignados servicios por defecto, así el puerto 23 es el de telnet, el 21 es ftp, el 80 es web y así con todos los servicios.

Escaneo de puertos

El escaneo de puertos es una técnica para descubrir canales de comunicación aprovechables en un servidor, mediante las herramientas apropiadas podemos realizar un análisis y posterior reporte de los puertos abiertos del sistema objetivo. Esta técnica consiste en realizar un scan o barrido de un host o grupo de ellos de manera de obtener un listado con sus puertos abiertos, muchas veces esta información es crucial al momento de diagnosticar la seguridad de un host ya que sabiendo los puertos que atiende podemos determinar los ataques a los que esta expuesto. El origen de esta técnica se remonta a antes de la aparición de internet y del uso masivo de computadoras, se usaba esta tecnica para descubrir números telefónicos no incluidos en guía, detrás de los cuales se encontraba a la escucha computadoras, probando sistemáticamente números, bien al azar o de forma secuencial, uno de los sistemas mas famosos en su época fue Toneloc que usaba el modem para discar en busca que una computadora que contestara desde el otro lado de la linea.

NMAP

Con la aparición de internet llegaron también los ataques a los servidores, esta vez lo que se escanea son los puertos abiertos del host, víctima u objetivo (durante la nota me referiré de estas tres maneras a la maquina que sea nuestro objetivo Nmap es la herramienta que he escogido para este fin, a mi criterio, es la mejor y mas completa, ya que se complementa con una serie de extras o adicionales que lo ponen por encima de otros escaneadores de puertos como ser Strobe por citar alguno. Sin embargo el uso de uno no descarta a los demás, es mas, es recomendable usar mas de uno.

Veamos primero donde podemos obtener nmap, el sitio oficial de es http://www.insecure.org/ y el autor es un experto en seguridad conocido como Fyodor.

El archivo que debemos bajar es nmap-2.12.tgz o la version que al momento de leer esta nota sea la ultima. También tenemos la versión 2.2 beta que como novedad trae un frontend en GTK, en la Figura 1 podemos ver su apariencia.

Compilación e Instalación de NMAP

Una vez que tenemos en nuestro disco el archivo con el codigo fuente del programa debemos descomprimirlo, para ello usaremos el programa tar de la siguiente manera:

[root@intruder]/install # tar xvfz ~/nmap-2.12.tgz map-2.12/ nmap-2.12/nmap.c nmap-2.12/targets.c nmap-2.12/tcpip.c nmap-2.12/error.c nmap-2.12/utils.c ...continua...

Con esto obtendremos un directorio llamado nmap-2.12 dentro del cual encontramos el código fuente en C y la documentación del programa. Seria bueno que en este punto y si disponemos de los conocimientos de ingles necesarios le peguemos un mirada a la documentación.

La compilación de este programa es sencilla y no debe representar mayores problemas, describo a continuación los pasos necesarios:

Ingrese al directorio nmap-2.12 o el que corresponda segun la version del programa.

Ejecute el script de configuración configure no olvide especificar la ruta mediante ./ de manera que quede ./configure con este script verificaremos la existencias de las librerías necesarias y se crearan los archivos config-status, Makefile y config.h necesarios para la generación de los ejecutables.

Mediante la utilidad make procedemos a la compilación en si, primero se compila la librería libpcap y luego el programa nmap.

Finalmente procedemos a la instalación del ejecutable y de sus librerías y paginas del manual en linea de Linux con make install con esto obtenemos el archivo nmap en el directorio /usr/local/bin, no olvide que este directorio debe estar en el path para que pueda su contenido ser invocado desde cualquier lugar, si así no fuere, bien puede cambiar de lugar el programa o agregar el directorio a la variable de entorno PATH.

Uso

Nmap posee multiples opciones que pueden ser combinadas entre si, la sintasis de uso es la siguiente:

nmap [Tipo de Scan] [Opciones] objetivo(s) o red_objetivo

Analicemos ahora los tipos de Scan y su descripción:

-sT: Escaneo usando paquetes tcp, este tipo de scan permite que la víctima sepa el IP origen del escaneo.

-sS: Escaneo usando tcp SYN(stealth) o oculto, no permite que identifiquen tu IP, solo root lo puede ejecutar.

-sF, -sX, -sN: Stealth FIN, Xmas, o Scan Nulo (solo trabaja con objetivos tipo UNIX), este tipo de scan se le llama nulo porque intenta llamar lo menos posible al inetd o demonio de servicios de internet para evitar ser logueado por el sistema, ademas existen muchos host con firewall que poseen filtrado para paquetes del tipo SYN por lo que quedaríamos automáticamente grabados en el log del sistema, para esos casos es necesario utilizar el sF, sX, sN o el Xmas en vez de el sS.

-sP (ping scan): Este es utilizado solo para saber si determinado(s) host(s) están oerativos y conectados, normalmente esto lo realiza nmap enviado paquetes a el puerto 80 de un host pero si este tiene un filtrado de ese puerto podrás ser detectado de todas formas puedes utilizar esta opción en combinación con -PI para cambiar ese puerto 80 por uno mucho mayor preferiblemente.

-sU: Este es un scan que usar el protocolo UDP, solo root puede ajecutarlo.

-b: ftp bounce attack utilizado para ver si se puede utilizar un host para pasar una conexión ftp a través de el y no hacer el ftp a otro host desde tu maquina directamente. Busca lo que se llama un bouncer.

Veamos ahora cuales son las opciones que nmap nos brinda, no siempre son necesarias y se pueden combinar. Observen el siguiente cuadro.

-f: Utiliza pequeños paquetes fragmentados para el SYN , Xmas , FIN o barrido nulo.

-P0: No hace ping al host en cuestión , necesario para el scan o barrido a hosts con sistemas de detección de ataques sensibles así como los .gov .mil etc.).

-PT: Utiliza el Ping de tcp para determinar si un host esta conectado para el caso de -sT y -sP esta opción aunque no es suministrada va implícita en el método.

-PT21: Utiliza el Ping tcp para hacer prueba de conexión a el puerto 21 o a cualquier otro especificado después del -PT ejem: -PT110.

-PI: Utiliza paquetes icmp para determinar que hosts están conectados y es especial si deseas hacer un scan a través de un firewall.

-PB: Hace la misma función que el barrido (scan) TCP y ICMP, se le puede especificar un puerto destino después de la B

-PS: Utiliza el TCP SYN sweep en lugar de el valor por defecto que es el ack sweep utilizado en el Ping TCP.

-O: Utiliza el TCP/IP fingerprinting para determinar que Sistema operativo esta corriendo un host remoto.

-p [rango de puertos] o puerto: Ej.: -p 23 solo intenta hacer conexión con el(los) host(s) en el puerto especificado para extraer de allí la información necesaria para la operación de scan. otros ejemplos -p 20-100,31330- hace un barrido entre los puertos 20-30 y entre 31330-65535. por defecto el barrido es entre los puertos 1 y el 1024 mas los que parezcan en el /etc/services

-D host1, host2, ME, host3[,...]: Esta opción hace parecer al host víctima que el scan esta siendo realizado por host1, host2, ME (significa nuestro propio host) ,host3 y cuantos unos quiera , por lo cual la víctima detectara que el scan proviene de todos esos host y no podría determinar a ciencia cierta quien es el que en realidad esta haciendo el scan, el uso de esta opción con unos 15 hosts puede ocasionar un Denial of Service en un Host que este Utilizando un Firewall con Packets Forwarding o reenvío de paquetes y reglas simples de filtrado, haciendo con que dicho hosts pierda conexión con internet. Es una buena manera que escondernos en el monton.

-F: Barrido Rápido a Fast Scan solo examina los puertos que están en el /etc/services.

-I: Toma información de quién es el dueño del proceso que se esta ejecutando pero solo se puede ejecutar con el -sT por lo cual deja una traza enorme en el log de la víctima por ello debe evitar utilizar esta opción.

-n: No hace conversiones DNS para hacer el -sP mas rápido.

-R: Intenta Convertir utilizando DNS (o sea del ip te muestra el hostname ejemplo: le das 127.0.0.1 y te muestra que s localhost.localdomain.

-o [archivo log]: Guarda el mismo resultado mostrado por pantalla en un archivo en formato entendible para los humanos.

-m [archivo log]: Lo mismo que lo anterior pero la salida es en un formato de máquina

-i [archivo entrada]: Lee el(los) ip(s) de la(s) víctima(s) desde un archivo.

-g [numero de puerto]: Indica que puerto local se utilizara para enviar los paquetes para el scan.

-S [tu ip]: Si quieres especificar un IP para que sea la fuente del scan, ideal para hacer Scan Spoofing o encubrir tu scan.

-v: Verbose. Muestra mas Información.

-h: Muestra la ayuda. También puedes Visitar http://www.insecure.org/nmap/

-V: Imprime la version de nmap y sale.

-e [nombre dispositivo]: Enviar los paquetes a travez de esta interface en tu host pueder ser eth0, ppp0, ppp1 etc.

El parámetro del nombre de la víctima puede ser especificado con la dirección internet (IP), con el nombre o URL como por ejemplo : www.microsoft.com o con el nombre o ip del host y la mascara que es opcional por ejemplo: www.insecure.org/24 en donde /24 para una red de tipo C significa todos los IPs de esa red.

Ejemplos

Hagamos un análisis de host www.pj.org.ar (adivinen de donde es) usaremos un scan simple para ello. En la Figura 2 podemos apreciar el resultado que es una lista de todos los puertos abiertos, este host tiene mas agujeros que un queso, una recomendación para el administrador seria que dedique un tiempo a revisar su política de seguridad ya que es uno de los sitios mas propensos a ser atacados debido a la lamentable situación del país especialmente a la actitud del partido gobernante en cuanto a educación.

En el segundo ejemplo vamos usar las opciones -O para ver que sistema operativo usa y solo veremos los puertos 79,23,513,514 algunos de los mas interesantes para los hackers. Efectivamente en la Figura 3 vemos que todos estos puertos están disponibles y que el sistema operativo usado es un Linux con Kernel 2.0.35 o 36 por lo que podemos deducir que bien puede usar Red Hat 5.2 o Debian 2.0 entre otros.

Vamos finalmente un scan lo mas furtivo posible para evitar ser detectado, para ello usaremos las opciones -sS y -f ya que el sistema objetivo puede tener instalados logers o métodos de detección de escaneos de puertos. En la Figura 4 podemos ver que a la gente de la UCR (www.ucr.org.ar) poco le importa la seguridad de su sitio, mas que nada vemos que el sistema operativo que usan en Windows NT carece casi completamente de seguridad, especialmente esta expuesto a ataques DoS (Denegación de Servicios) estos ataques tiene como fin afectar servicios prestados o directamente dejar la maquina inoperativa hasta que sea reseteada o se restablezca la conexión.

Estos ejemplos son solo introductorios obviamente que se pueden usar la otras opciones explicadas arriba y combinaciones de las misma, con lo que podríamos obtener mayor información sobre los servidores auscultados.

Bien, con esto hemos aprendido dos cosas, primero que a los politicos poco les importa la seguridad de sus sistemas, y segundo algo mas acerca de como diagnosticar nuestro server, mas específicamente sobre escaneo de puertos y el uso de esta excelente herramienta llamada nmap, los conocimientos aquí expuestos son con el solo fin de enseñar a los lectores los métodos y programas mediante los cuales podemos diagnosticar la vulnerabilidad de nuestros servidores. Finalmente solo me resta decirles que usen con prudencia los conocimientos aquí adquiridos. Hasta la próxima y mucho cuidado que en la red anda mucho garca dando vuelta como dice el conductor de mi programa favorito de TV (Pergolini).

Publicidad

© 2006 Planeta Linux Argentina. La fuente de recursos Linux desde 1999. Desarrollado por VivaServer.