miércoles, julio 20, 2016

Seguridad en protocolos de routing: BGP.

BGP (Border Gateway Protocol) es un protocolo de routing, mediante el cual se intercambia información de encaminamiento entre sistemas autónomos. Por ejemplo, los proveedores de servicio de Internet (ISP), suelen constar de diversos sistemas autónomos y para este caso es necesario un protocolo como BGP.


Los sistemas autónomos de los ISP interactúan entre ellos permutando sus tablas de rutas a través del protocolo BGP. Este intercambio de información de encaminamiento se hace entre los routers externos de cada sistema autónomo, los cuales deben soportar BGP. Se trata del protocolo más utilizado para redes que trabajan con un Exterior Gateway Protocol (EGP).

El protocolo de gateway fronterizo (BGP) es un ejemplo de protocolo de gateway exterior (EGP). BGP permite permutar información de encaminamiento entre sistemas autónomos, a la vez que asegura una elección de rutas libres de bucles. Es el protocolo de publicación de rutas más utilizado por los ISP. BGP4 es la primera versión que acepta encaminamiento entre dominios sin clase (CIDR) y agregado de rutas. A diferencia de los protocolos de Gateway internos (IGP), como RIP, OSPF y EIGRP, no usa métricas como: número de saltos, ancho de banda o retardos. En cambio, BGP toma decisiones de encaminamiento basándose en políticas de la red o reglas que utilizan varios atributos de ruta BGP.

La forma de configurar y delimitar la información que contiene e intercambia el protocolo BGP es creando lo que se conoce como sistema autónomo. Cada sistema autónomo (AS) tendrá conexiones o, mejor dicho, sesiones internas (iBGP) y además sesiones externas (eBGP).

BGP tiene una serie de vulnerabilidades a parte de las originadas por una mala configuración de las que cabe destacar las siguientes:
  • Envío de información de encaminamiento en texto plano.
  • Falta de control temporal de los mensajes BGP. Sin este control, un atacante situado entre dos routers BGP vecinos podría capturar tráfico BGP, por ejemplo, un mensaje UPDATE que elimine cierta ruta y reproducirlo en un instante futuro.
  • Falta de verificación de integridad en las rutas recibidas.
  • No se autentica el origen de las rutas. Pueden realizarse con relativa facilidad ataques de suplantación de prefijos, sistemas autónomos o routers y tener repercusiones a nivel de Internet. Por tanto, es necesario utilizar mecanismos de autentificación que garanticen que cada elemento del sistema es quien dice ser.
  • Mal manejo en el control de encaminamiento que puede producir denegación de servicios.

Las principales medidas que se deben de tomar para securizar los elementos de red que trabajan con BGP son:

  • Proteger los mensajes de actualización (updates): Un mensaje de actualización erróneo o falsificado provocaría la designación equivocada de rutas. 
  • Control de acceso para evitar información no autorizada (spoofing). Esto se lleva a cabo mediante reglas de filtrado que evitan que redes no autorizadas ingresen en un sistema autónomo. Utilizando reglas de filtrado se pueden definir las rutas que se aceptarán y aquellas que serán anunciadas. Un ISP para evitar este problema debe filtrar todas las rutas que procedan de una organización final diferentes a las correspondientes a sus prefijos registrados.
  • Por su parte, una organización final debe ajustar sus filtros para no anunciar sus rutas de otros sistemas autónomos (para impedir el trafico).

Existen dos herramientas ideales para auditar la topología de rutas en el protocolo BGP y ver los cambios de enrutamiento para reforzar la seguridad de la red: BGPHist y LinkRank.

BGPHist, es una herramienta que pueda obtener actualizaciones MP-BGP, decodificarlo y escribir en un almacenamiento de backend para el registro y monitorizacion.

Se admite rutas no sólo de Internet, sino también estas familias de direcciones:

  • Multicast ipv4.
  • Unicast etiquetado de ipv4.
  • Unicast vpnv4.
  • Unicast ipv6.
  • Unicast etiquetado de ipv6.
  • Unicast vpnv6.
  • L2vpn vpls-vpws.
  • Mvpn en ipv4.

El almacenamientos de resultados en el backend puede ser: texto plano, bases de datos MySQL y Oracle.

Para el almacenamiento backend en MySQL también hay una sencilla interfaz de PHP, lo que lo convierte en la opción mas recomendable. Esta aplicación permite:
  • Controlar y registrar la actividad de los clientes del ISP y redes privadas virtuales.
  • Uso como una mira pasiva en BGP para todas las VPN y acceso a Internet.
  • Como backend pora algún sistema de motorización externo.

BGPHist debe conectarse al router que tiene el rol de reflector en BGP como un cliente para obtener todas las actualizaciones de enrutamiento. No permite generar mensajes de actualización de BGP, sólo actúa como un oyente.

Más información y descarga de BGPHist:
https://sourceforge.net/projects/bgphist/?source=directory

LinkRank es una herramienta para visualizar los cambios de enrutamiento BGP (protocolo utilizado en MPLS). Esta herramienta puede ser utilizada para entender la dinámica de enrutamiento, o para aprender más sobre BGP.

LinkRank resume los megabytes de actualizaciones BGP recibidos de los puntos de recogida y genera gráficos que indican los segmentos de rutas afectadas. Captura la dinámica de enrutamiento en forma gráfico que muestra claramente que los enlaces AS-AS han perdido rutas y cuáles han ganado rutas.Cada enlace AS-AS se pesa por el número de rutas BGP realizan y los cambios en los pesos de enlace se utilizan para visualizar los eventos de enrutamiento.

Más información y descarga de LinkRank:
http://sourceforge.net/projects/link-rank/?source=directory

BGP (Border Gateway Protocol):
https://es.wikipedia.org/wiki/Border_Gateway_Protocol

Análisis protocolo BGP-4 RFC4274:
http://tools.ietf.org/html/rfc4274

Seguridad en protocolos de routing: IGRP y EIGRP.
http://www.gurudelainformatica.es/2013/05/seguridad-en-protocolos-de-routing-igrp.html

miércoles, julio 13, 2016

Herramienta para la fase de reconocimiento en un test de penetración.

En un test de penetración los pasos a seguir son: reconocimiento, descubrimiento, explotación y presentación de informes. Es importante entender la diferencia entre el reconocimiento y descubrimiento. Reconocimiento es el uso de fuentes abiertas para obtener información sobre un objetivo, comúnmente conocido como "reconocimiento pasivo". Descubrimiento, comúnmente conocido como "reconocimiento activo", se produce cuando los paquetes se envían de forma explícita a la red objetivo en un intento por "descubrir" vulnerabilidades. Este es el primer paso de todo el proceso, que muchos pentester nóveles lo obvian. El reconocimiento proporciona bases firmes para un ataque eficaz y satisfactorio. Al invertir tiempo para encontrar tanto como sea posible sobre el objetivo antes de lanzar los ataques, se tendrá un mejor enfoque para los esfuerzos y un menor riesgo de detección. 


Las labores típicas en el reconocimiento son:

  • Registros Whois que apunta hacia servidores DNS.
  • Identificación de máquinas involucradas en la aplicación (Direcciones IP, Nombres de hosts). Transferencias de Zona conteniendo información detallada sobre nombres de host.
  • Buscar en fuentes de información externa como Google u otros motores de búsqueda, Redes Sociales y Listas de Correo, Blogs y diversos sitios webs.

Recon-ng es una herramienta de reconocimiento de información de dominios de Internet escrito en Python. Una herramienta muy completa con: módulos independientes, interacción con de base de datos, con funciones intuitivas y ayuda interactiva. Recon-ng proporciona un potente entorno de código abierto basado web para reconocimiento de información de dominios.

Recon-ng tiene una apariencia similar a la Metasploit Framework, lo que permite una rapida adaptación a la herramienta. Sin embargo, es muy diferente, Recon-ng no pretende competir, ya que está diseñado exclusivamente para la reconocimiento de dominios basado en la web.

Recon-ng es completamente modular y hace que sea fácil incluso para los mas novatos desarrolladores de Python aportar cambios o personalizaciones. Cada módulo es una subclase de la clase "módulo", la clase "módulo" es un intérprete de comandos personalizado  equipado con una funcionalidad integrada que proporciona interfaces sencillas para tareas comunes tales como: la estandarización de la producción, la interacción con bases de datos, las peticiones web y la gestión de claves de la API.

Características principales de Recon-ng:

  • Permite crear y compartir módulos personalizados que no se fusionan en la rama principal de la estructura. Con el fin de permitir el uso de estos módulos sin interferir con el paquete instalado, permitiendo el uso de un árbol de módulo personalizado colocado en el directorio "home" del usuario. Los módulos se organizan para facilitar el flujo de un test de penetración, con ramas y módulos independientes dentro del árbol módulo, para cada paso de la metodología: reconocimiento, descubrimiento, explotación y presentación de informes.
  • Posee comandos "help" y "show"  para familiarizarse con los comandos y las opciones de la herramienta, proporcionado ayuda y modo de empleo.
  • El comando "search" proporciona la capacidad de buscar los nombres de todos los módulos cargados y presentarlos al usuario. El comando "search" puede ser muy útil en la determinación de qué hacer a continuación, con la información que ha sido generada o la identificación de lo que se requiere para obtener la información deseada.
  • Posee espacios de trabajo que ayudan a los usuarios realizar múltiples tareas simultáneas sin tener que configurar repetidamente opciones o bases de datos globales. Toda la información para cada área de trabajo se almacena en su propio directorio. Cada área de trabajo consiste en su propia instancia de la base de datos de Recon-ng, con un archivo de configuración para el almacenamiento de: las opciones de configuración, los informes de los módulos así como cualquier información que se recoge de otros módulos.
  • Permite realizar copia de seguridad de los datos en los puntos importantes durante el proceso de reconocimiento, que ayudan a prevenir la pérdida o corrupción de datos debido a un comportamiento inesperado de los recursos. El comando "snapshots" ofrece a los usuarios la capacidad de copia de seguridad y restaurar instantáneas de la base de datos.

Más información y descarga de Recon-ng:
https://bitbucket.org/LaNMaSteR53/recon-ng

miércoles, julio 06, 2016

Herramienta para Android que permite impedir que las aplicaciones filtren datos sensibles, que vulneran la privacidad.

XPrivacy es una herramienta para Android que permite impedir que las aplicaciones filtren a terceros datos sensibles, que vulneran la privacidad mediante la restricción de las categorías de datos de una a la que una aplicación puede tener acceso. XPrivacy también permite suministrar datos falsos a las aplicaciones o ningún dato en absoluto. Entre otras muchas cosas se puede restringir la mayoría de categorías de datos como: contactos o ubicación. Del mismo modo, la restricción del acceso de una aplicación a su ubicación y también permite generar una ubicación falsa para esa aplicación.


XPrivacy no revoca los permisos de una aplicación, por lo que la mayoría de las aplicaciones seguirán funcionando como antes y no las obligará a cerrar por bloqueo. Hay dos excepciones: el acceso a internet y el almacenamiento externo (típicamente una tarjeta SD), que se restringen al negar el acceso (permisos de revocación). No hay otra manera de limitar el acceso en Android exclusivamente con los permisos de sistema de red y archivos Linux correspondientes. XPrivacy puede emular el estado de "sin datos" (Internet) y el estado "sin montar" (almacenamiento) para las aplicaciones, pero despues de esto, algunas aplicaciones todavía tratan de acceder a Internet y al almacenamiento, llegando provocar errores en el sistema. Si la restricción de una categoría de datos, para una aplicación ocasiona limitaciones funcionales en la aplicación, es posible volver a permitir el acceso a la categoría de datos para resolver el problema. XPrivacy posee un intuitivo botón de de activación y desactivación para todas las restricciones de cada aplicación.

Con XPrivacy instalado, por defecto, todas las aplicaciones recién instaladas no pueden acceder a cualquier categoría de datos, lo que impide que una nueva aplicación realice fugas de datos sensibles justo después de ser instalada. Poco después de la instalación de una nueva aplicación, XPrivacy pregunta que categorías de datos se desea que la nueva aplicación tenga acceso. Y es posible ver los permisos de la aplicación y activar o desactivar rápidamente el acceso a cualquier categoría de datos.

Para ayudar a identificar las posibles fugas de datos sensibles, XPrivacy supervisa todas los intentos para acceder a datos sensibles por parte de las aplicaciones. Cuando una aplicación intenta acceder a datos sensibles muestra un icono con un triángulo de advertencia de color naranja. Si una aplicación ha solicitado permisos de Android para acceder a datos, XPrivacy lo muestra con el icono verde. También muestra un icono de Internet, si una aplicación tiene acceso a internet, que aclara que la aplicación presenta un riesgo de compartir datos con un servidor externo.

XPrivacy se construye a partir de Xposed, que utiliza para acceder, a una gran cantidad de funciones de Android cuidadosamente seleccionadas. Dependiendo de la función, XPrivacy salta a la ejecución de la función original (por ejemplo, cuando una aplicación intenta establecer una alerta de proximidad) o altera el resultado de la función original (por ejemplo, para devolver una lista de mensajes vacía).

XPrivacy ha sido probado con la versión Android 4.0.3 - 6.0.1 (Ice Cream Sandwich, Jelly Bean, KitKat, Lollipop, Marshmallow) y con la mayoría de las variantes de Android. Necesita acceso root para instalar el marco Xposed.

Entre sus características destaca:

  • Fácil de usar.
  • No hay necesidad de parchear nada en el sistema.
  • Funciona en cualquier variante y en las versión Android 4.0.3 - 6.0.1 (Ice Cream Sandwich, Jelly Bean, KitKat, Lollipop, Marshmallow).
  • Las aplicaciones recién instaladas se restringen por defecto.
  • Muestra los datos realmente utilizados por una aplicación.
  • Opción para restringir accesos según la demanda de las aplicaciones.
  • Libre y de código abierto.
  • Libre de anuncios.

Más información y descarga de XPrivacy:
https://github.com/M66B/XPrivacy