Superficie de Ataque, Mapeo, Descubrimiento y Explotación en Ajax

Body

Todos los típicos ataques funcionan contra la interfaz de Ajax. Pero esto se hace más fácil por la gran cantidad de código en el lado del cliente quien realiza la lógica del negocio, y se debe entender el flujo de la aplicación. Esto hace más claro el flujo de la aplicación para un atacante con experiencia. El atacante puede incluso acceder a la lógica de la aplicación de una manera inesperada por ésta. Un ejemplo podría ser un carrito de compras el cual permite a un atacante utilizar la autorización de crédito antes de añadir artículos hacia el carrito. Potencialmente esto podría permitir comprar artículos sin una autorización o sin dinero. Funcionan los típicos ataques de inyección SQL, XSS, y las aplicaciones Ajax también está diseñadas para CSRF, pues la funcionalidad es llamada directamente por el código del cliente.

Mapeo en Ajax

Mapear una aplicación Ajax es más difícil en la mayoría de los casos. Esto porque mucha de la funcionalidad de la aplicación es llamada mediante código del cliente o es dinámicamente generada. Las herramientas utilizadas mayormente no están diseñadas para interpretar y evaluar este código. Esto de hecho causa el profesional en pruebas de penetración deba manualmente recorrer el sitio, para asegurarse todas las funcionalidades del objetivo se añadieron al mapa del sitio sobre el cual se trabaja.

Descubrimiento en Ajax

El descubrimiento en Ajax depende grandemente de la habilidad del profesional en pruebas de penetración para interceptar todas las peticiones hechas por la aplicación. Utilizado una herramienta como Zed Attack Proxy se puede interceptar las llamadas. Luego será factible catalogar cada una de las peticiones y sus parámetros para determinar si algunas vulnerabilidades están en la aplicación.

Explotación en Ajax

La explotación de aplicaciones Ajax típicamente no tienen más dificultad comparado con aplicaciones no Ajax. Los problemas podrían ser causados por los temas ya expuestos. Por ejemplo, si una herramienta no es capaz de descubrir las fallas, esta no puede sembrar sus funciones de explotación.

La manera más fácil de solucionar esto es manualmente sembrar las fallas utilizando las herramientas. Por ejemplo, SQLMap aceptar parámetros para atacar como parte de sus argumentos en línea de comandos.

Fuentes:

https://www.owasp.org/index.php/OWASP_Mutillidae_2_Project
https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project

Ajax y Mashups

Body

Ajax es la tecnología utilizada para permitir comunicación asíncrona entre el navegador y el servidor web. En los sitios web antiguos, cuando se hacia clic, el cliente envía toda una petición hacia el servidor, el servidor procesa la petición y luego responde. Cuando el navegador obtiene toda la respuesta, nuevamente dibuja la pantalla completamente.

Con Ajax, JavaScript crea objetos XMLHTTP. Estos objetos pueden hacer peticiones y recibir respuestas de manera asíncrona, actualizando la pantalla conforme se recibe la respuesta. Por ejemplo, con Google maps. Cuando se busca por algo y desplaza el mapa, el navegador utiliza Ajax para hacer llamadas de ida y vuelta hacia el servidor para obtener las imágenes constituyendo el mapa. De esta manera el mapa cambia dinámicamente, pero lo restante de la página es estática y no necesita ser nuevamente dibujada con cada cambio.

Mashups

Una de las más populares funcionalidades de la sitios de la web 2.0 son los “mashups”. Este es donde una aplicación combina otros dos o más sitios dentro de un “widget” o funcionalidad de su sitio. La política del mismo origen causa problemas para este tipo de aplicaciones. Debido a esto, muchas aplicaciones “mashup” incluyen capacidades de proxy para eliminar esta restricción.

Mismo Origen

La política del mismo origen permanece en efecto para las aplicaciones Ajax. Esto significa JavaScript puede únicamente acceder a datos del mismo origen desde donde proviene el JavaScript original. Cuando es creado el objeto XMLHttpRequest, este puede únicamente hacer peticiones de vuelta hacia el servidor desde donde provino el script.

Funcionalidades del Proxy Mashup

Estas aplicaciones construirán las capacidades correctas del proxy dentro de la aplicación. Recibe las peticiones desde el código del cliente y obtiene el sitio requerido. Cuando el código del cliente desde ambos sitios son devueltos hacia el usuario, parece provenir desde la aplicación mashup permitiendo evadir las restricciones del mismo origen.

El principal problema es el control de esta URL siendo utilizada por el proxy. Si podemos cambiar el parámetro URL se puede hacer algo. Este parámetro es comúnmente parte de una petición GET o POST, y puede ser abusada ya sea navegando hacia otros sitios; posiblemente aplicaciones intranet no puedan acceder directamente; u obtener JavaScript malicioso para un ataque XSS.

Sitio Cruzado Vía la Etiqueta Script

Una segunda opción más segura luego del proxy en la aplicación es utilizar la etiqueta Script para cargar el contenido. Debido a la etiqueta script por si misma fue cargada como parte del documento fuente, el documento es accedible hacia el código del cliente. Muchos de las librerías más populares disponibles utilizan esta técnica.

La etiqueta script es parte del documento original, y como tal es considerado como parte del mismo origen. Esto significa los scripts del cliente cargados desde la página pueden acceder al contenido como es desde la misma página.

Esto requiere exista la etiqueta script en la página, pero como se está viendo un código existente y no un ataque XSS, esto usualmente no es un problema.

El funcionamiento es; el script ejecutándose en la página carga el contenido desde un servidor. Esto puede ser hecho mediante XMLHTTPRequest o solo haciendo el SRC del script apunte al recurso el cual retorne el dato requerido por el código. El script luego toma la entrada y la carga a través de la función eval(). Esto carga el contenido en memoria como código. Más comúnmente esta técnica es utilizad con objetivo JSON.

Fuentes:

http://www.w3schools.com/xml/ajax_intro.asp
https://www.safaribooksonline.com/library/view/ajax-the-definitive/9780…
https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy

DOM (Document Object Model)

Body

DOM o por su traducción al español Modelo de Objetos del Documento es un API para documentos HTML y XML, el cual proporciona una representación estructural del documento, permitiendo la modificación de su contenido y visualización. Esencialmente, comunica las páginas web con los scripts o los lenguajes de programación.

Es común utilizar DOM al unísono de JavaScript. El código es escrito en JavaScript, pero utiliza DOM para acceder hacia la página web y sus elementos. Sin embargo DOM fue diseñado para ser independiente de cualquier lenguaje de programación, poniendo la representación estructural del documento disponibles a un solo API. Las implementaciones DOM pueden hacerse para cualquier lenguaje.

DOM proporciona objetos nativos para acceder hacia varios ítemes de interés.

El objeto “document” se refiere a todo el documento.

  • document.forms[0] se refiere al primer formulario de la página.
  • document.write(“Hola Mundo!”) escribe la cadena “Hola Mundo!” en la página.
  • document.write(document.cookie) escribirá el valor de las cookies de la página hacia la página.

El objeto “Form” es utilizado para acceder a un formulario específico.

  • form.action = [URL Destino] ajusta la acción del formulario hacia la URL definida, permitiendo redireccionar al navegador hacia otra página.
  • form.submit() enviará el formulario.

El documento además de su ventana son visualizados y gestionados como un árbol. Como en el diagrama presentado en la imagen anterior, el árbol inicia con la etiqueta “HTML”, de aquí se originan otras ramas y etiquetas. Cada nodo desde aquí es un hijo de alguno anterior, y un padre del siguiente. Cada etiqueta puede tener uno o más atributos asignados, como el color y tamaño.

Fuentes:

https://www.w3.org/2005/03/DOM3Core-es/introduccion.html
https://developer.mozilla.org/es/docs/Acerca_del_Modelo_de_Objetos_del_…
https://developers.google.com/web/fundamentals/performance/critical-ren…
http://www.reydes.com/d/?q=Ajax_Asynchronous_JavaScript_and_XML

Ajax (Asynchronous JavaScript and XML)

Body

AJAX es una tecnología utilizada para permitir comunicación asíncrona entre el navegador y el servidor web. El los sitios webs de antaño, cuando se hacia clic en un enlace, el cliente enviaba toda una petición hacia el servidor, el servidor procesaba la petición y luego respondía. Cuando el navegador web obtenía la respuesta completa, este dibujaba nuevamente la pantalla completa.

Con Ajax, JavaScript crea objetos XMLHTTP. Estos objetos pueden hacer peticiones y recibir respuesta de manera asíncrona, actualizando la pantalla conforme se reciben respuestas.

El objeto JavaScript “XMLHttpRequest” es el corazón de Ajax. Permite a JavaScript hacer peticiones por datos en segundo plano, proporcionando más interactividad sobre la página web. Tiene un número de métodos y propiedades, pero cinco son las más críticos para hacer su trabajo.

  • open: El método open especifica las propiedades de la petición. Este en realidad no inicia una conexión.
  • send: Crea una conexión hacia la URL referenciada enviando la petición.
  • onreadystatechange: Esta propiedad especifica la función llamada cuando cambia el estado listo.
  • readyState: Esta propiedad es ajustada con el estado de la petición.
  • responseText: La respuesta desde el servidor es puesta en esta propiedad.

Por ejemplo considerar Google Maps. Cuando se utiliza Google Maps, y se busca por algo desplazándose a través del mapa, el navegador web utiliza Ajax para hacer llamadas de ida y vuelta hacia el servidor para obtener las imágenes y hacer el mapa. De esta manera el mapa cambia dinámicamente, pero lo restante de la página es estática y no necesita ser dibujada nuevamente con cada cambio.

Fuentes:

https://en.wikipedia.org/wiki/Ajax_(programming)
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest

Conexión de un Dispositivo Inalámbrico hacia una Antena

Body

Para conectar un dispositivo inalámbrico hacia una antena se necesita un cable. Algunas antenas vienen con cables, pero se podría necesitar comprar uno por separado. Cuando se selecciona un cable, se debe estar seguro tenga un tipo de conector adecuado. Existen numerosos tipos de conectores inalámbricos, incluyendo los conectores N, SMA, e Hirose U.FL, disponibles en la forma de macho y hembra. Un conector N es un conector RF trenzado, resistente a la intemperie de tamaño medio utilizado para unir cables coaxiales. Un Conector SMA es un conector coaxial RF de semi presición, desarrollado como un conector mínimo de interfaz para cable coaxial con un mecanismo de acoplamiento tipo tornillo. Hirose U.FL es conector RF miniatura para señales de alta frecuencia de hasta 6 GHz fabricado por Hirose Electric Group y otros.

Se debe estar seguro también sobre la impedancia de los conectores del cable correspondan a la impedancia del dispositivo inalámbrico y conexión de la antena planificada a utilizar (50 y 70 Ohm son muy comunes, por lo tanto se debe seleccionar el adecuado).

También podría haber alguna perdida de señal en el cable por si mismo. Se debe estar seguro el cable tenga una baja perdida, el adquirir cables de baja perdida tiende a ser más costoso. También, mantener el cable entre el dispositivos inalámbrico y la antena tan corto como sea posible para una baja perdida de señal en el cable.

Fuentes:

https://www.data-alliance.net/antenna-cables-adapters/
http://wireless.gumph.org/content/3/7/011-cable-connectors.html
https://en.wikipedia.org/wiki/N_connector
https://en.wikipedia.org/wiki/SMA_connector
https://en.wikipedia.org/wiki/Hirose_U.FL

Antenas para Pruebas de Penetración Inalámbricas

Body

Otro de los elementos importantes para un profesional en pruebas de penetración inalámbricas son las antenas externas. Mientras la mayoría de interfaces inalámbricas vienen con una pequeña antena incorporada, la mayoría de profesionales necesita antenas adicionales con diferentes propiedades a las relativamente pequeñas y débiles antenas incorporadas en la mayoría de interfaces inalámbricas. Las antenas se caracterizan por varios atributos, pero dos de ellos son los más importantes, la ganancia y ancho del haz. La ganancia describe cuanto la antena amplificará una señal. El ancho del haz se refiere al ángulo a través del cual la antena enfoca la señal inalámbrica, representado ya sea en formato horizontal (paralelo a la tierra) y formato vertical. Una antena direccional tiene un ancho de haz horizontal ajustado comparado con una antena omni-direccional.

La mayoría de antenas direccionales tienen un ancho de haz de 30 grados, permitiendo a la señal viajar considerablemente más lejos con el mismo poder y la misma ganancia comparado con una antena omni-direccional, porque la señal inalámbrica está concentrada sobre una pequeña área. Estas antenas direccionales son útiles para encontrar un dispositivo específico y atacar dispositivos sobre grandes distancias, como puede ser un único punto de acceso.

Las antenas omni-direccionales tienen un ancho de haz horizontal de 360 grados, y son útiles para probar una amplia red, de tal manera sea factible encontrar todos los puntos de acceso dentro de una área definida. Con el mismo poder y misma ganancia, la distancia de transmisión es menor desde una antena omni-direccional. Entonces ¿Cual tipo de antena debería tener un profesional en pruebas de penetración?. Se recomienda tener al menos una antena direccional (utilizada para localizar y atacar un único dispositivo) y una antena omni-direccional (utilizada para descubrir dispositivos inalámbricos).

Fuentes:

https://en.wikipedia.org/wiki/Directional_antenna
https://en.wikipedia.org/wiki/Omnidirectional_antenna
https://www.pugetsystems.com/pic_disp.php?id=20301&width=800&height=800
http://i.ebayimg.com/images/i/291064672769-0-1/s-l1000.jpg
http://en.data-alliance.net/top-tips-wifi/

Receptores GPS para Pruebas a Redes Inalámbricas

Body

Un dispositivo de navegación GPS o receptor GPS, y cuando es utilizado para la navegación de un vehículo comúnmente se referencia simplemente como GPS, es un dispositivo capaz de recibir información desde satélites GPS, y luego calcular de manera precisa su localización geográfica. El Sistema de Posicionamiento Global (GPS) es un sistema de navegación por satélite (GNSS) constituida por una red mínima de 24, pero actualmente tiene 30 satélites colocados en órbita por el Departamento de Defensa de los Estados Unidos.

Cuando se realizan pruebas para descubrir redes LAN inalámbricas, y de esta manera identificar puntos de acceso dentro de la organización objetivo, un profesional en pruebas de penetración o hacking ético necesita registrar la localización física donde se descubrió cada dispositivo inalámbrico.

La mayoría de herramientas para el descubrimiento de redes LAN inalámbricas incluye la habilidad de leer desde un receptor GPS conectado hacia la laptop. Muchas modernas interfaces GPS se conectan hacia una laptop mediante un conector USB, teniéndose diversos productos para escoger. Un buen dispositivo USB de propósito general es una parte importante para las pruebas inalámbricas.

Un producto ampliamente compatible con varias herramientas para el descubrimiento de redes LAN inalámbricas es GobalSat BU-353.

Fuentes:

https://en.wikipedia.org/wiki/GPS_navigation_device
http://usglobalsat.com/p-62-bu-353-w.aspx#images/product/large/62.jpg

Dispositivos a Utilizar como Interfaz para Redes Inalámbricas

Body

Para analizar redes inalámbricas se necesita una interfaz inalámbrica para una laptop. Se debe ser cuidadoso con la compatibilidad de las interfaces inalámbricas y las herramientas a utilizar, asegurándose por adelantado las herramientas inalámbricas para la detección, escaneo, ataque; el controlador inalámbrico, y el hardware de la interfaz inalámbrica son todos compatibles el uno con el otro. Las funcionalidades inalámbricas incorporadas en muchas laptops usualmente no son óptimas para pruebas inalámbricas, porque la mayoría de ellas carecen de un conector fácilmente accedible para interactuar con una antena externa. Peor aún, algunas de las herramientas de análisis y ataque open source o libres son incompatibles con algunas funcionalidades inalámbricas incorporadas en laptops. Por lo tanto se recomienda obtener una o más interfaces USB inalámbricas de terceros, la cual pueda conectarse en una laptop con una buena antena para pruebas inalámbricas.

Actualmente están disponibles muchos dispositivos USB inalámbricos, pero uno común con amplio soporte es la familia 802.11 a/b/g/n de dispositivos Atheros. Incluso si se obtiene este tipo de dispositivos USB, se debe ser consciente sobre la compatibilidad de diversas herramientas cambia con el tiempo, con una herramienta la cual previamente no era soportada y ahora sí, o algunas veces dejando de dar soporte debido a actualizaciones o cambios en los controladores. Por esta razón, antes de realizar cualquier prueba inalámbrica, se recomienda verificar cada herramienta planificada a utilizar con los controladores y hardware inalámbrico en un laboratorio antes de iniciar la prueba. El último tema sensible a considerar; es el escenario en el cual se utilizan los controladores y herramientas más actualizados, pero luego se da con la sorpresa de ya no funcionan como lo hacian antes de la última actualización.

También, para soportar un amplio número de herramientas inalámbricas, se necesita tener varios dispositivos con interfaces USB inalámbricas.

Fuentes:

https://www.aircrack-ng.org/doku.php?id=compatibility_drivers
https://www.raymond.cc/blog/best-compatible-usb-wireless-adapter-for-ba…

Negación de Servicio (DoS) Inalámbrico

Body

Los ataques de negación de servicio inalámbrico son trivialmente fáciles de realizar. Algunas veces, sin embargo el personal de una organización solicita realizar una negación de servicio para ver si son posibles estos ataques. Si una tecnología LAN inalámbrica está siendo utilizada; como la familia de protocolos 802.11 a/b/g/n; es posible una negación de servicio completa. Los profesionales en hacking ético y pruebas de penetración deben aconsejar al personal de la organización objetivo, sobre el hecho de no es realmente necesario realizar este tipo de pruebas para ver si esto es posible, porque los recursos para la prueba podrían ser desperdiciados. La organización debe asumir tal ataque como posible y planearlo consecuentemente. Existen razones legítimas para realizar tales pruebas, más allá de determinar si son posibles. Algunas organizaciones pueden requerir medir el impacto de tales ataques sobre sus operaciones.

Una manera para mostrar el impacto de tales ataques de negación de servicio inalámbrico es simplemente desenchufar la energía para los puntos de acceso. De esta manera una organización puede determinar las implicaciones sobre su infraestructura en caso lo inalámbrico desapareciera. Alternativamente, para lanzar un ataque de negación de servicio contra una LAN inalámbrica, se puede utilizar una tecnología de radio frecuencia (RF) para interferencia, el cual abruma con ruidos las señales inalámbricas. En muchos países la venta y utilización de estos dispositivos para interferencia inalámbrica están estrictamente regulados. Tales herramientas deben ser evitadas en la vasta mayoría de proyectos de pruebas de penetración y hacking ético.

Otro enfoque no se opone a la ley desde una perspectiva RF. En lugar de enviar ruido RF, un atacante puede emplear un ataque de desauntenticación. Utilizando una herramienta, la máquina del atacante puede inyectar un flujo de mensajes de desautenticación dentro de todas las LANs inalámbricas disponibles, saltando a través de los canales y sacando a todos los clientes repetidamente de la red. Además de los mensajes de desautenticación hacia los clientes, se puede utilizar también una herramienta para enviar una inundación de mensajes con peticiones de autenticación y peticiones de asociación en los puntos de acceso objetivos, abrumando su capacidad de interactuar con clientes legítimos. Existen también otras técnicas de ataque para DoS inalámbrico, incluyendo el paso de mensajes corruptos para el intercambio de llaves por TKIP. En algunos productos de puntos de acceso, mensajes TKIP no validos proviniendo de algunos clientes podría causar el punto de acceso descarte sus sesiones con todos los otros clientes utilizando el punto de acceso.

La mejor defensa contra estos ataques DoS inalámbrico es proporcionar una acceso cableado alternativo donde sea requerida una conectividad a red.

Fuentes:

https://www.sans.org/reading-room/whitepapers/wireless/80211-denial-ser…

Obtener los Rangos de Direcciones IP de las Cuatro Principales Operadoras del Perú

Body

Whois es un protocolo de consulta y respuesta ampliamente utilizado para consultar bases de datos donde se almacena información sobre los usuarios registrados o asignados de un recurso en Internet, como un nombre de dominio, bloque de direcciones IP, o un sistema autónomo. Aunque también puede ser utilizada con otro tipo de información. El protocolo almacena y entrega contenido de la base de datos factible de ser leída por los seres humanos.

LACNIC es uno de los cinco registros regionales en Internet, y brinda sus servicios para treinta y tres territorios de América Latina y el Caribe, incluido el Perú. Todos los recursos asignados en Internet por LACNIC están asociadas con una “Entidad” la cual representa a la organización receptora del recurso. Todas las entidades registradas en el sistema de LACNIC tienen un identificador único, el OWNER-ID.

El propósito del presente ejemplo es obtener información sobre los rangos de direcciones IP asignadas a las cuatro principales operadoras prestando servicios de telecomunicaciones en Perú. Utilizando el comando “whois” es factible consultar varios tipos de información desde el servidor whois de LACNIC; incluyendo también los rangos de direcciones IP requeridas.

Telefónica Móviles S.A

# whois -h whois.lacnic.net PE-PETD13-LACNIC

América Móvil S.A.C

# whois -h whois.lacnic.net PE-TPSA4-LACNIC

Entel Perú S.A

# whois -h whois.lacnic.net PE-MPSA3-LACNIC

Viettel Perú S.A.C

# whois -h whois.lacnic.net PE-VPSA9-LACNIC

Adicionalmente a encontrar la información sobre los rangos de las direcciones IP, es factible obtener direcciones físicas, nombres y apellidos de personas, direcciones de correo electrónico, número de teléfonos y extensiones, además de otra información relevante.

En la parte final de la presente publicación se encuentran las URLs para consultar esta información utilizando la interfaz web del servicio Whois de LACNIC.

Fuentes:

https://tools.ietf.org/html/rfc3912
http://www.lacnic.net/en/web/lacnic/faq
http://lacnic.net/cgi-bin/lacnic/whois
https://www.mtc.gob.pe/comunicaciones/regulacion_internacional/estadist…
http://www.lacnic.net/en/web/lacnic/documentos-tecnicos-whois
https://www.mtc.gob.pe/comunicaciones/regulacion_internacional/estadist…
http://lacnic.net/cgi-bin/lacnic/whois?lg=EN&query=PE-PETD13-LACNIC
http://lacnic.net/cgi-bin/lacnic/whois?lg=EN&query=PE-TPSA4-LACNIC
http://lacnic.net/cgi-bin/lacnic/whois?lg=EN&query=PE-MPSA3-LACNIC
http://lacnic.net/cgi-bin/lacnic/whois?lg=EN&query=PE-VPSA9-LACNIC