sábado, marzo 03, 2007

Test de Intrusión (II de VI)

****************************************************************************************
Artículo Publicado en PCWorld Abril 2007
- Test de intrusión [I de VI]
- Test de intrusión [II de VI]
- Test de intrusión [III de VI]
- Test de intrusión [IV de VI]
- Test de intrusión [V de VI]
- Test de intrusión [VI de VI]
****************************************************************************************

Spidering

Las técnicas de Spidering se utilizan para poder encontrar toda la información que se nos ofrece gratuitamente a través de los sitios web de la compañía. Nos ofrece páginas html, aplicativos, ficheros de imágenes, documentos, javascripts, applets, etc… Cuando realizamos un pentest hay que sacar toda la información que se pueda extraer de comentarios, meta información de archivos gráficos o documentos, etc… Por ejemplo los archivos doc de Microsoft Office no suelen ser limpiados de la información de sus creadores antes de ser publicados y generalmente nos van a dar rutas de archivos en máquinas locales y nombres de cuentas de los usuarios en los dominios. Sólo por poner un ejemplo. Además, cuando se está realizando una descarga completa de un sitio se busca también aquello que, aparentemente no está publico, pero que es predecible, como los directorios típicos /cgi-bin, /bin, /images, /admin, /privado, etc… y los archivos predecibles, como archivos de ejemplo, configuración etc… Para ello se utilizan herramientas que se llaman Scanners de Cgi y que, aunque en origen rastreaban programas cgi vulnerables, hoy en día se usan como rastreadores de ficheros en técnicas de spidering.

Ejemplo 1: Documento office descargado de la Universidad de las Illes Balears con información del usuario y la ruta del sistema de ficheros de su creador.

Imagen 5: Usuario tsiralb. http://www.uib.es/recerca/osr/AIsolicitud.doc

¿Os suena cierto escándalo en el gobierno británico con cierto documento sobre las armas de destrucción masiva en Irak que había sido modificado?

Imagen 6: Comentario en una página web que delata que ha sido desarrollada con Dreamweaver. ¿Hay Dreamweaver para Linux?

Imagen 7: Foto descargada desde Internet con meta información sobre el creador.

Es una foto de Arturo descargada desde un directorio que hay por aquí en la misma universidad de antes.[http://www.uib.es/depart/dqu/fotos_arturo/]. Ya sabemos que día fue la fiesta, la camarita e incluso se puede averiguar la hora del día a la que se tiró, que como se aprecia era hora de cena.

Herramientas como Teleport Pro te permiten descargarte todos los ficheros que se ofrecen públicamente en un sitio Web, scaners de cgi como voideye, whisker, cgi-scan o cualquier otro permiten cargar una lista de ficheros y directorios a buscar. Como se puede ver en la imagen, a voideye se le puede configurar el uso de servidores Proxy anónimos para evitar la detección de quien está realizando el escaneo.

Imagen 8: Voideye

Imagen 9: Teleport Pro

Fingerprinting

Ya hemos recogido toda la información que era pública, ahora vamos a recoger aquella que también está accesible públicamente pero que a priori no se puede ver. Es decir, vamos a inferir información a partir de pruebas que vamos a ir realizando a cada uno de los servicios y o servidores. Fácil, ¿no?

Identificación de Sistemas Operativos y/o Firewalls

Para identificar los sistemas operativos que corren sobre los servidores o debajo de los servicios que queremos auditar existen diferentes herramientas. Todas estas herramientas se basan en jugar al ¿Quién es Quién? ¿Recordáis aquel juego en el que se iba preguntando al contrario si tenía bigote o sombrero? Pues es la misma idea. Averiguar el sistema operativo consiste en enviarle distintas petición e ir analizando las respuestas. Por ejemplo, pensemos en un simple ping. Si enviamos en las tramas TPC/IP valores 1 en los bits de urgencia, que no van a ser utilizados por el sistema operativo, y observamos los resultados obtenidos se puede inferir que sistema es. Un sistema Microsoft devuelve esos valores siempre a 0, eso es porque cuando construye una trama TCP/IP de respuesta lo hace desde una nueva trama; sin embargo, un sistema Linux construye la respuesta a partir de la trama de petición. Esto hace que si enviamos 1 y recibimos 0 podamos inferir, con un porcentaje alto de éxito, que el sistema operativo es un Microsoft Windows. Lógicamente el número de pruebas que se pueden hacer son muchas y las diferencias pueden existir entre un Microsoft Windows NT 4 Server y un Microsoft Windows NT 4 Server Service Pack 6. A veces se puede afinar y saber exactamente la versión del kernel de un sistema Linux y otras no. Para ello vamos a utilizar distintas herramientas que ya nos ayudan con un amplio conjunto de diferenciación de sistemas operativos.

Nmap

Es un scanner de información sobre servidores, y, aunque su principal utilidad es la de un scanner de puertos tiene opciones de reconocedor de sistemas operativos. La opción –O (jé,je) También puedes hacer simplemente clic en el interfaz gráfico, si usas un frontend.(;). El escaneo de sistemas operativos que realiza nmap no solo se queda en Windows, Linux, etc.. .sino es capaz de detectar impresoras de red, centralitas PBX, o teléfonos IP. Para realizar esta detección cuenta con una enorme base de datos para hacer una detección entre miles, repito miles, de sistemas operativos (Windows Server NT, Windows NT Workstation SP4, Windows NT SP6, todos los sabores de Linux, etc…) Además, en las nuevas versiones realiza pruebas sobre los puertos TCP y UDP descubiertos y es capaz de sacar conclusiones del tipo Nokia Chekpoint redirigiendo a IIS 6 sobre un Windows Server 2003.

Hping2 (o hping3)

Esta utilidad [hping] se puede comparar con un ping pero a nivel TCP/IP, es decir, podemos, mediante comandos definir la conversación completa con un servidor con un tipo de paquetes enviados. La utilidad nos permite enviar paquetes con los flags que queramos activados, modificando todos y cada uno de los campos de una mensaje TCP/IP: MTU, TOS, Bit de Urgencia, flags de SYN, etc… Esta herramienta va a permitir averiguar el sistema operativo a base de realizar pruebas. Por suerte nmap implementa casi todas las técnicas conocidas para el reconocimiento de sistemas operativos, pero si alguna no estuviera implementada se puede utilizar hping2 para implementarla. Además de para reconocer el sistema operativo también vamos a poder utilizarla para averiguar los algoritmos de generación de números de secuencia (útiles en escaneos de puertos y técnicas de IP-Spoofing), la configuración de un firewall, e incluso la transmisión de ficheros encapsulándolos sobre los paquetes que configuremos.

Los puertos del sistema

El siguiente paso, que en un escaneo rápido se realiza al mismo tiempo, es la detección de puertos abiertos en un sistema. A priori que un puerto esté abierto no es ni malo ni bueno. Un puerto se abre para dar servicio. El problema es cuando se abre un puerto que conecta con una aplicación o servicio que no está securizado o que realmente el administrador ignora que lo tiene abierto en una máquina. Desde el punto de vista de un test de intrusión hay que ver a que servicios se puede llegar.

Detectar un puerto TCP abierto debería ser tan fácil como establecer una conexión con dicho servicio; para ello bastaría con establecer una conexión con un simple telnet, que, además, nos mostrará la información por pantalla que el servicio o aplicación al otro lado del puerto está enviando.

Imagen 10: Telnet al puerto 80

El problema radica en las alarmas que se activen o la información que se deje en los logs cuando se produce el scaneo, hay que tener en cuenta que el número de puertos posibles es de 65536 puertos que pueden ser TCP o UDP.

Lo más probable es que un firewall deje de responder a una determinada IP cuando se haya producido más de un número de peticiones de conexión desde una determinad ip, o cuando se han pedido más de un número por unidad de tiempo, o cuando hay una violación de protocolo (comando no valido que suele denotar que un servicio está hablando con un ser humano detrás de un telnet y que ha cometido un error al teclear o en el comando), etc….

El objetivo de los métodos de escaneo es averiguar todos los puertos que se encuentran ofreciendo servicio por TCP/UDP sin levantar alarmas y dejar el menor rastro posible.

Hay muchos tipos de scaneo, y me encantaría explicarlos todos aquí, pero no tengo espacio, pero si os los voy a enumerar para que podáis buscar más información sobre ellos. Al final la idea consiste en enviar paquetes con una determinada configuración y escuchar como reacciona el equipo escaneado. Un escaneo no tiene porque ser perfecto y a veces no salen todos los puertos si está detrás de un firewall en un único tipo de escaneo. Los más usados son el escaneo de SYN, de FIN, de SYN+ACK, de ACK, el escaneo de NULL, que se realiza con todos los flags apagados y el de XMAS Tree, que recibe ese nombre porque activa todas las banderas como si fueran luces en un arbolito de navidad [Y para UDP e Iddle Scanning].

Scaneo con Nmap

Nmap, realiza el escaneo de establecimiento de conexiones (como si hiciéramos un telnet) que se llama TCP connect(), de SYN (o de conexiones medio abiertas, ya que se envía un paquete SYN a un puerto y se espera la confirmación por parte del cliente sin nunca cerrar la conexión), de FIN, de NULL y de XMAS Tree.

Para los puertos UDP implementa un sistema basado en el envío de mensajes UDP a un puerto de 0 bytes de tamaño. Si se recibe un mensaje ICMP que dice que es inalcanzable entonces es que el puerto está cerrado, por el contrario se asume que está abierto. Este tipo de escaneo, como muchos de los anteriores puede tener un alto índice de falsos positivos debido a que puede que el firewall prohíba todo tráfico ICMP de salida o que se haya perdido la respuesta.

****************************************************************************************
Artículo Publicado en PCWorld Abril 2007
- Test de intrusión [I de VI]
- Test de intrusión [II de VI]
- Test de intrusión [III de VI]
- Test de intrusión [IV de VI]
- Test de intrusión [V de VI]
- Test de intrusión [VI de VI]
****************************************************************************************

5 comentarios:

Anónimo dijo...

Si señor muy completito esta entrega.

Otra herramienta destacar en este nivel es Burproxy, que es un webproxy que visualiza las peticiones y respuestas que pasan a través de el (claro mejor el que sabe interpretar lo que el cacharro dice).

Otro viejo y común problemas son esos puertos abieros.. hay.. (SMTP), por eso otro viejo amigo en las auditorias son las tecnicas de port nock.

Chema Alonso dijo...

Hola Sirw2p!

de los proxys para man in the middle (achilles, odysseus y la burpsuite) hablo en el tercer artículo (el de marzo en pcworld y que será el V y VI aquí).

Gracias por el comentario!

Chema Alonso dijo...

Por cierto!!!

para todos. Leeros este artículo de juanillo, que es de lo más!

Blog de Juanillo

Anónimo dijo...

Veo que te gusta meter caña a la UIB donde trabaja RICARDO GALLI. Hay algún rencor Maligno??

Saludos, fleky

Chema Alonso dijo...

Rencor? que va! solo casualidad!

Entrada destacada

10 maneras de sacarle el jugo a tu cuenta de @MyPublicInbox si eres un Perfil Público

Cuando doy una charla a algún amigo, conocido, o a un grupo de personas que quieren conocer MyPublicInbox , siempre se acaban sorprendiendo ...

Entradas populares