miércoles, julio 27, 2016

La evolución de los keyloggers.

No solo nos tenemos que preocupar de los fallos o vulnerabilidades de software, también tenemos que controlar el hardware. Por ejemplo controlar las contraseñas de BIOS y evitar el arranque en dispositivos como CD-ROM, diskettes o memorias USB, también tenemos que controlar el uso de keyloggers hardware que se conectan entre el teclado y la placa base y almacenan todo lo que tecleamos. Estos keyloggers son muy eficientes y imposibles de detectar por software.


También existen keyloggers en forma de aplicaciones que trabajan en segundo plano y capturan todo lo que escribimos en el teclado, esto los convierte en una clara amenaza, existen mucha aplicaciones contra el malware que detectan keyloggers como: Ad-aware, Spybot… Existe una aplicación solo para detectar keyloggers, bastante buena, se trata de KL-detector.

Más información y descarga de  KL-detector:
http://dewasoft.com/privacy/kldetector.htm

Una técnica mas avanzada es la descubierta por unos investigadores de Universidad de Berkley que se basa en que, cada tecla del teclado, al ser pulsado hace un ruido diferente que podría ser identificado con un 85% de acierto. Si una persona con un software de reconocimiento de sonido, grabara e identificara el sonido de todas las teclas, seria capaz de descifrar lo que se escribe en un teclado por el sonido del mismo Esto aplicado a la seguridad de PC y cajeros automáticos tiene bastante importancia, sobre todo a cajeros automáticos.

Existe una evolución del típico keylogger totalmente pasivo de cara al sistema, que es USBdriveby, un minidispositivo que se puede llevar en cualquier sitio e instalar rápidamente de forma encubierta y que permite abrir una puerta trasera, anular la configuración de DNS... en una máquina a través del puerto USB en cuestión de segundos. Esto es posible mediante la emulación de un teclado y un ratón, por parte de un microcontrolador, permitiendo escribir a ciegas comandos controlados o movimientos y pulsaciones del ratón.

Este proyecto se basa en explotar la confianza ciega de un sistema en los dispositivos USB y cómo gracias a un microcontrolador Teensy de 20$ enchufado en cualquier puerto USB es posible: evadir varios ajustes de seguridad en un sistema real, abrir una puerta trasera permanente, desactivar un firewall, controlar el flujo del trafico de la red… y todo esto en unos pocos segundos y de forma permanente, incluso después de retirar el dispositivo.

Cuando se conecta normalmente un ratón o un teclado en una máquina, no se requiere autorización para empezar a usarlos. Los dispositivos pueden simplemente comenzar a escribir y hacer clic. Entonces se aprovecha esta vulnerabilidad mediante el envío de pulsaciones de teclas arbitrarias destinadas en el caso del ejemplo del proyecto en un entorno OS X a: poner en marcha aplicaciones específicas (a través de Spotlight/Alfred/Quicksilver), evadir permanentemente un firewall (Little Snitch), instalar una “reverse shell” en el crontab e incluso modificar la configuración de DNS sin ningún tipo de permisos adicionales. Si bien el ejemplo del proyecto se ejecuta en un entorno OS X, es fácilmente extensible a Windows y Linux.

Más información y descarga de USBdriveby:
https://github.com/samyk/usbdriveby

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