Fingerprinting
Las técnicas de fingerprinting entran, como las de footprinting, en la fase de recogida de información de una auditoría de caja negra. Las técnicas y herramientas que existen vamos a ir viéndolas por diferentes áreas para ir entendiendo que se puede conseguir de cada una ellas. Todas las técnicas de fingerprinting tienen en común la forma de extraer información mediante una manera indirecta, realizando pruebas con los sistemas e infiriendo conclusiones.
¿Qué se puede desear conseguir con una herramienta de recogida de información para una auditoría de caja negra? Pues conocer cosas como:
- La lista de puertos que ofrece un servidor.
- La lista de servicios que se ofrecen por esos puertos
- Los productos y las versiones que se utilizan para dar esos servicios.
- Las configuraciones de esos productos
- Las vulnerabilidades de seguridad de los productos.
- Sistemas operativos de los servidores
- La topología de la red interna
- Los elementos de interconexión de la red (switches, routers, APs,…)
- ….
Entenderemos que una herramienta o técnica de fingerprinting es toda aquella que nos pueda información sobre el objetivo que no puede ser capturada a priori.
Scaneo de Puertos
Un puerto no es bueno ni malo. A menudo la gente asocia abrir puertos a ser un fallo de seguridad, pero es no tiene por que ser así. Podemos encontrarnos con firewalls que tienen abiertos 100 puertos y no existe un fallo de seguridad y por el contrario abrir un único puerto en el que se publica un software vulnerable y sí tener un riesgo de seguridad. En una auditoría de seguridad descubrir los puertos publicados es obligatorio.
Lo primero es analizar el tipo de puertos que abre un servidor dependiendo del protocolo a nivel transporte de la torre TPC/IP que utilice el servicio que se ofrece.
TCP (Transport Control Protocol) lo utilizan los servicios que necesitan una conexión fiable, es decir, que garantice que el mensaje se entrega. Servicios http, SMTP, FTP, etc.. necesitan que los paquetes lleguen todos, por lo que utilizan este tipo de conexiones.
¿Qué pasa? ¿Es que hay servicios que no necesitan que lleguen todos los mensajes de red? La verdad es que no es lo deseable, pero todos los servicios que dependen del tiempo hacen que si un dato no llega en su momento justo su información ya no sea útil. Pensad en una transmisión de imágenes en streaming. Es preferible que lleguen 15 imágenes por segundo a tiempo que 24 imágenes tarde. En ese tipo de servicios se utiliza UDP (User Datagran Protocol). ¿Sólo en esos casos se usa UDP? No, UDP se utiliza también en conexiones donde se garantiza que no se van a producir fallos o donde se controlan los errores a otros niveles. ¿Para que controlar a nivel Transporte los fallos si ya lo controla el nivel de aplicación o nivel de enlace?
Cuando se usan puertos TCP y un cliente desea utilizar ese servicio se producen tres fases:
1- Fase de Establecimiento de Conexión
2- Fase de Transferencia de Información
3- Fase de Desconexión
En cada una de las fases se produce un intercambio de mensajes entre el cliente y el servidor. Esto implica que el servidor contesta siguiendo el protocolo TCP ante diferentes mensajes enviados desde el cliente. Esto permite a alguien, enviando mensajes al servidor y analizando las respuestas saber que puertos están abiertos o no en el servidor.
En el caso de los puertos UDP el tema es distinto, ya que el protocolo UDP, no exige las fases de establecimiento y desconexión con lo que un servidor UDP no tiene porque devolver ningún mensaje. Dependerá la contestación o no ante un estímulo a un puerto UDP de la aplicación que esté corriendo en ese puerto. Así, si buscamos un servidor DNS escuchando por UDP deberemos generar peticiones DNS a puertos UDP que hagan que se generen respuestas desde el servidor DNS que haga que descubramos que está corriendo.
Y…. esto está quedando muy largo, la semana que viene vemos los métodos de descubir los puertos con scanners.
Bies malignos!
http://elladodelmal.blogspot.com