Explorar Manualmente una Aplicación con Zed Attack Proxy (ZAP)

Body

La funcionalidad de escaneo pasivo y ataque automático son una gran manera de empezar una evaluación de vulnerabilidades contra una aplicación web, pero tiene algunas limitaciones. Entre ellas se tienen:

  • Cualquier página protegida por login no será descubierta durante un escaneo pasivo, a menos se haya configurado la funcionalidad de ZAP para la autenticación, no manejará la autenticación requerida.
  • No se tiene mucho control sobre la secuencia de la exploración en una escaneo pasivo, o los tipos de ataques acarreados en un ataque automático. ZAP proporciona muchas opciones adicionales para la exploración y ataques fuera del escaneo pasivo.

Los “spiders” son una gran manera de explorar un sitio básico, pero debe ser combinado con una exploración manual para ser más efectiva. Los spiders por ejemplo podrían únicamente ingresar datos básicos por defecto dentro de formularios en la aplicación web, pero un usuario puede ingresar información más relevante, lo cual puede a su vez, exponer más la aplicación web hacia ZAP. Esto es especialmente verdadero con cosas como los formularios de registro, donde se requiere ingresar una dirección de correo válida. El spider puede ingresar una cadena aleatoria, la cual causaría un error. Un usuario podría ser capaz de reaccionar al error, proporcionando el formato correcto de la cadena, lo cual puede causar más exposición de la aplicación, cuando el formulario es enviado y aceptado.

Se sugiere explorar toda la aplicación web con un navegador utilizando ZAP. Al hacer esto ZAP escanea pasivamente todas las peticiones y respuestas hechas durante la exploración en busca de vulnerabilidades, continuando con la construcción del sitio, además de registrar las alertas por potenciales vulnerabilidades encontradas durante la exploración.

Es importante ZAP explore cada página de la aplicación web, ya sea esté o no enlazada hacia otra página, en busca de vulnerabilidades. La oscuridad no es seguridad, y las páginas ocultas algunas veces salen a la luz sin advertencia o aviso. Por lo tanto se debe ser tan minucioso como se pueda cuando se explore el sitio.

Se puede rápida y fácilmente lanzar navegadores previamente configurados con un proxy a través de ZAP, mediante la pestaña de Inicio Rápido. Los navegadores lanzados de esta manera ignorarán cualquier advertencia sobre la validación del certificado, lo cual de otra manera sería reportado.

Para explorar manualmente la aplicación:

1. Iniciar ZAP y hacer clic en la pestaña Inicio Rápido de la Ventana del Espacio de Trabajo
2. Hacer clic en el botón de Exploración Manual
3. En la caja de texto de la URL a explorar, ingresar la URL completa de la aplicación web la cual se requiere explorar
4. Seleccionar el navegador el cual se requiere utilizar
5. Hacer clic en Lanzar Navegador

Esta opción lanzará cualquiera de los navegadores más comunes instalado con los nuevos perfiles.

Si se requiere utilizar cualquiera de los navegadores con un perfil existente, por ejemplo con otros complementos instalados en el navegador, entonces se necesita manualmente configurar el navegador con ZAP, e importar y confiar en los certificados CA raíz de ZAP. Revisar la Guía del Usuario de Escritorio ZAP para mayores detalles.

Por defecto Heads Up Display (HUD) se habilitará. Desmarcando la opción correspondiente en pantalla antes de lanzar un navegador deshabilitará HUD.

Fuentes:

https://www.zaproxy.org/getting-started/

Ejecutar un Escaneo Automático con Zed Attack Proxy (ZAP)

Body

La manera más fácil de empezar a utilizar ZAP es mediante la pestaña de Inicio Rápido. Este es un add-on de ZAP incluido automáticamente cuando se instala ZAP.

Para ejecutar un escaneo automático rápido realizar lo siguiente:

1. Iniciar ZAP para luego hacer clic en la pestaña “Inicio Rápido” sobre la Ventana del Espacio de Trabajo.
2. Hacer clic en el botón de Escaneo Automático
3. En el recuadro de la URL a Atacar, ingresar la URL completa de la aplicación web la cual se requiere atacar
4. Hacer clic en el botón Ataque

ZAP procederá a recorrer la aplicación web con su “spider”, y escaneará pasivamente cada página encontrada. Luego ZAP utilizará el escáner activo para atacar todas las páginas descubiertas, funcionalidades, y parámetros.

ZAP proporciona dos “spiders” para recorrer las aplicaciones web, se pueden utilizar una de ellas o ambas desde esta pantalla.

El spider tradicional de ZAP descubre enlaces examinando el HTML en las respuestas desde la aplicación web. El spider es rápido pero no siempre es efectivo cuando se explora una aplicación web AJAX, la cual genera enlaces utilizando JavaScript.

Para aplicaciones AJAX es probable el spider AJAX de ZAP sea más eficiente. Este spider explora la aplicación web invocando navegadores los cuales luego siguen los enlaces generados. El spider AJAX es más lento comparado con el spider tradicional, además requiere una configuración adicional para utilizarlo en un entorno “sin cabeceras.

ZAP escaneará pasivamente todas las peticiones y respuestas atravesándola. De tal manera únicamente realizará un escaneo pasivo de la aplicación web. El escaneo pasivo no cambia las respuestas de ninguna manera, y se le considera seguro. Este escaneo es también realizado en segundo plano, de tal manera no hace lenta la exploración. El escaneo pasivo es bueno para encontrar algunas vulnerabilidades, además como una forma de percibir el estado básico sobre la seguridad de la aplicación web, para localizar donde se justifica una mayor investigación.

El escaneo activo sin embargo intenta encontrar otras vulnerabilidades utilizando ataques conocidos contra la aplicación web. El escaneo activo es un ataque real sobre aquellas aplicaciones, consecuentemente las puede poner en riesgo, por lo cual no se debe utilizar el escaneo activo sin tener primero la autorización para probar.

Interpretar los Resultados de la Prueba

Conforme ZAP realiza un “spidering” de la aplicación web, construye un mapa sobre las páginas de la aplicación web, y otros recursos utilizados para dibujar estas páginas. Además registra las peticiones y respuestas enviadas hacia cada página, y crea alertas si existe algo potencialmente erróneo con la petición o respuesta.

Ver las Páginas Exploradas

Para examinar la vista de árbol de las páginas exploradas, hacer clic en la pestaña Sitios en la Ventana de Árbol. Se pueden expandir los nodos para ver las URLs individuales accedidas.

Ver las Alertas y Detalles de las Alertas

El lado izquierdo de la parte inferior contiene una contabilización de las alertas encontradas durante la prueba, divididas en cuatro categorías. Estas categorías de riesgo son; Alta (bandera roja), Media (bandera naranja), Baja (bandera amarilla), Informativa (bandera azul), y falso positivo (bandera verde).

Para visualizar las alertas creadas durante las pruebas:

1. Hacer clic en la pestaña Alertas en la Ventana de Información.
2. Hacer clic en cada alerta mostrada en la ventana para mostrar la URL y la vulnerabilidad detectada en el lado derecho de la Ventana de Información.
3. En la Ventana del Espacio de Trabajo, hacer clic en la pestaña Respuesta para ver el contenido de la cabecera y el cuerpo de la respuesta. La parte de la respuesta generando la alerta será resaltada.

Fuentes:

https://www.zaproxy.org/getting-started/

Interfaz de Usuario del Escritorio en Zed Attak Proxy (ZAP)

Body

La interfaz de usuario del escritorio en ZAP está constituida de los siguientes elementos:

Barra del Menú

Proporciona acceso hacia muchas de las herramientas automáticas y manuales.

Barra de Herramientas

Incluye botones los cuales proporcionan fácil acceso hacia la mayoría de funcionalidades comúnmente utilizadas

Ventana de Árbol

Muestra el árbol de sitios y el árbol de guiones (scripts)

Ventana del Espacio de Trabajo

Muestra las peticiones, respuestas, y guiones (scripts), además de permitir editarlos.

Ventana de Información

Muestra detalles de las herramientas automáticas y manuales

Pie de Ventana

Muestra un resumen de las alertas encontradas y el estado de las principales herramientas automáticas.

Mientras se utiliza ZAP, se puede hacer clic en “Help” en la Barra del Menú, o presionar la tecla F1 para acceder hacia una ayuda sensible al contexto, correspondiente a la Guía de Usuario del Escritorio de ZAP. Está guía también disponible en linea.

Para mayor información sobre la Interfaz de Usuario, revisar el Resumen de la Interfaz de Usuario de ZAP, en la documentación en línea de ZAP.

ZAP también soporta una poderosa funcionalidad API y linea de comando, las cuales están más allá del alcance de esta guía.

IMPORTANTE. Se debe utilizar únicamente ZAP para atacar una aplicación para cual se tenga permiso de probar con un ataque activo. Debido a ser una simulación la cual actúa como un ataque real, pueden generarse daños serios a la funcionalidad del sitio, sus datos, u otro componente. Si se está preocupado sobre utilizar ZAP, se puede prevenir causar daño (aunque las funcionalidades de ZAP ser verán significativamente reducidas), cambiando al modo seguro.

Para cambiar ZAP hacia el mondo seguro, se debe hacer clic en la flecha sobre el modo en la barra de herramientas principal, para expandir automáticamente una lista y seleccionar “Safe Mode”.

Fuentes:

https://www.zaproxy.org/getting-started/
https://www.zaproxy.org/docs/desktop/
https://www.zaproxy.org/docs/desktop/ui/

Instalar y Configurar Zed Attack Proxy (ZAP)

Body

Zed Attack Proxy tiene instaladores para Windows, Linux, y Mac OS/X. Existen también imágenes Docker disponibles en la sección descargas de su sitio web oficial.

Instalar ZAP

Lo primero es instalar ZAP en el sistema desde donde se realizarán las pruebas de penetración. La descarga apropiada del instalador puede realizarse desde la sección “Descargas” del sitio web de ZAP.

ZAP requiere Java 8+ para ejecutarse. El instalador Mac OS/X incluye una versión de Java apropiada, pero se puede instalar Java 8+ de manera separada para Windows, Linux, y versiones para plataformas cruzadas. La versión Docker no requiere instalar Java.

Una vez completada la instalación, ejecutar ZAP y leer los términos sobre la licencia. Hacer clic en “Agree” si se aceptan los términos, y ZAP finalizará su instalación, luego ZAP automáticamente iniciará.

Sesión Persistente

Cuando se inicia ZAP, se consultará si se requiere una sesión persistente de ZAP. Por defecto las sesiones de ZAP son siempre registradas hacia el disco en una base de datos HSQLDB, con una ubicación y nombre por defecto. Si no se requiere una sesión persistente, estos archivos serán borrados cuando se salga de ZAP.

Si se selecciona una sesión persistente, la información sobre la sesión será guardada en una base de datos local, de tal manera sea factible accederla posteriormente, además se estará en la capacidad de proporcionar ubicaciones y nombres para guardar los archivos.

Fuente:

https://www.zaproxy.org/getting-started/
https://www.zaproxy.org/download/
http://hsqldb.org/

Introducción a Zed Attack Proxy (ZAP)

Body

Zed Attack Proxy (ZAP) es una herramienta libre, de fuente abierta, para pruebas de penetración, mantenida bajo el paraguas de OWASP (Open Web Application Security Project). ZAP está diseñado específicamente para probar aplicaciones web, siendo flexible y ampliable.

En su núcleo ZAP es conocido como un “Proxy de hombre en el medio”. Se sitúa entre el navegador del evaluador y la aplicación web, de tal manera pueda interceptar e inspeccionar los mensajes enviados entre el navegador y la aplicación web, modificando sus contenidos si es necesario, y luego reenviando estos paquetes hacia su destino. Puede ser utilizado como una aplicación autónoma, y como un proceso demonio.

Si existe otro proxy siendo utilizado en la red, como en entornos corporativos, ZAP puede ser configurado para conectarse hacia este proxy.

ZAP proporciona funcionalidades para profesionales con una amplio rango de niveles en conocimientos, desde desarrolladores, hasta evaluadores nuevos en pruebas de seguridad, hasta especialistas en pruebas de seguridad. ZAP tiene versiones para cada uno de los principales sistemas operativos y Docker, por lo cual no se está atado hacia un único sistema operativo. Funcionalidades adicionales están disponibles libremente desde una diversidad de add-ons en el MarketPlace de ZAP, accedible desde el cliente ZAP.

Debido ZAP es de fuente abierta, el código fuente puede ser examinado para ver exactamente como se implementan sus funcionalidades. Cualquiera puede voluntariamente trabajar en ZAP, arreglando fallas, añadiendo características, creando solicitudes para introducir correcciones hacia el proyecto, y crear add-ons para soportar situaciones especializadas.

Como la mayoría de proyectos de fuente abierta, son bienvenidas las donaciones para ayudar con los costos para los proyectos. Se puede encontrar un botón de donación en su página oficial.

Fuentes:

https://www.zaproxy.org/getting-started/
https://owasp.org/www-project-zap/

Buscar Nombres de Usuario en Redes Sociales utilizando Sherlock

Body

Sherlock permite buscar cuentas en las redes sociales utilizando un nombre de usuario.

La inteligencia de medios sociales (SOCMINT) es una rama de la inteligencia desde fuentes abiertas (OSINT). Los datos disponibles desde las redes sociales pueden ser ya sea abiertos hacia el público, como también privados. La información privada implica el contenido únicamente es compartido con un circulo de amigos, el cual no debería ser accedido sin una autorización expresa de su creador.

Se ejecuta la herramienta Sherlock con la opción “-h” para visualizar sus principales opciones.

$ sudo sherlock -h

El funcionamiento de Sherlock es simple, pues únicamente se puede definir el nombre de usuario a buscar en las redes sociales.

$ sudo sherkock jlo –print-all -o /tmp/sn_jlo

La opción “--print-all” imprime también los sitios (redes sociales) donde el nombre de usuario no fue encontrado.

La opción “-o” si se está utilizando un nombre de usuario, guardará los resultados en el nombre de archivo definido.

Entre los resultados obtenidos utilizando Sherlock, de hecho se encuentran las redes sociales correctas, como lo es en este caso TikTok.

También se encuentran escenarios en los cuales el nombre de usuario no es encontrado. Esto no es un error de la herramienta, pues no necesariamente se utiliza el mismo nombre de usuario en todas las redes sociales, como en este ejemplo sucede con Facebook.

Aunque el nombre de usuario exista en una red social, y consecuentemente la herramienta Sherlock lo presente como un resultado correcto; no necesariamente lo es; como se suscita en este ocasión con Vimeo.

El archivo conteniendo los resultados producto de la ejecución de Sherlock, es un listado de todas las URLs de las redes sociales donde fue encontrado exitosamente el nombre de usuario.

Recordar siempre la verificación manual todos los resultados obtenidos por las herramientas, pues en este caso existen varios falsos positivos.

Fuentes:

https://github.com/sherlock-project/sherlock

Obtener una Captura de Pantalla de un Sitio Web utilizando EyeWitness

Body

EyeWitness está diseñado para tomar un archivo e interpretar sus URLs, tomar una captura de pantalla de las páginas webs, y generar un reporte de las capturas de pantalla, además de información sobre las cabeceras del servidor. EyeWitness es capaz de interpretar tres diferentes tipos de archivo, un archivo de texto general conteniendo cada URL en una nueva linea, un xml resultado de un escaneo con Nmap, o un archivo .nessus. Jason Hill trabajó para crear el código interprete XML para EyeWitness, y proporcionó mucha retroalimentación durante su escritura. Se han comparado también los resultados del interprete XML y Nessus con los del interprete de PeepingTom, siendo casi idénticos, por tal razón se está muy conforme con sus capacidades de interpretación.

Además de proporcionar el nombre del archivo, también se puede proporcionar un valor máximo para el tiempo de espera. Este valor define el tiempo máximo el cual EyeWitness esperará para interpretar la página web, antes de moverse hacia la siguiente URL en la lista.

Se ejecuta EyeWitness con la opción “-h” para visualizar un resumen de sus opciones.

$ eyewitness -h

Ahora se procede a ejecutar EyeWitness sobrea únicamente un sitio web.

$ eyewitness --single “https: // sitio xyz. com/?cat =6” -d /tmp/sj/

La opción “--single” define una URL o Host el cual capturar

La opción “-d” define el nombre del directorio donde se almacenará el reporte.

EyeWitness generará un reporte basado en las capturas de pantallas obtenidas, y proporcionará también información de sus cabeceras. Este reporte es extremadamente similar al resultado de PeepingToms, pues contiene mucha información útil.

Además a la imagen conteniendo la captura de pantalla, para el presente ejemplo se obtiene; el título de la página, el estado de la conexión, tipo de contenido, cookies definidas, codificación para transferencia, fecha, servidor, código de respuesta entre otra información. El directorio donde se almacenan los resultados también contiene la fuente HTML de la página.

Fuentes:

https://github.com/FortyNorthSecurity/EyeWitness
https://www.christophertruncer.com/eyewitness-triage-tool/

Descargar Imágenes y Videos desde un Perfil Público de Instagram utilizando Instaloader

Body

Instaloader es una herramienta para descargar imágenes (o videos) junto con los textos (captions) de las fotos (o videos), además de otros metadatos desde Instagram. Entre sus principales características se tienen:

  • Descarga perfiles públicos y privados, hashtags, historias de usuario, feeds, y medios guardados
  • Descarga comentarios, geotags, y textos (captions) de cada publicación
  • Automáticamente detecta cambios en el nombre del perfil, y renombra el directorio de acuerdo a esto
  • Permite una fina personalización de filtros, además de donde almacenar los medios
  • Automáticamente reinicia la iteraciones de descargas interrumpidas
  • Es software libre de fuente abierta escrita en Python

Se procede a ejecutar Instaloader con la opción “-h”, la cual permite visualizar un resumen de sus opciones.

$ sudo instaloader -h

Ahora se ejecuta Instaloader para descargar todas las imágenes y videos de un perfil, como también la imagen de perfil.

$ sudo instaloader profile nombreperfilxyz

La opción “profile”, define un perfil público o privado. En caso sea privado debe utilizarse la opción “--login”.

Finalizada la ejecución de Instaloader, se crea una carpeta con el nombre del perfil descargado. Para el caso del presente ejemplo se encuentran archivos en formato JPG, videos en formato MP4, archivos en formato TXT conteniendo los textos de las publicaciones, y archivos de extensión “JSON.XY” conteniendo información detallada en formato JSON sobre cada publicación descargada.

Si el perfil ya descargado ha sido renombrado, Instaloader automáticamente lo encontrará por su ID único, y renombrará la carpeta de acuerdo a esto.

Aparte de las publicaciones del perfil, se descarga también la imagen actual del perfil. Para cada perfil se descarga; las historias del usuario, los destacados del perfil, las publicaciones donde el usuario fue etiquetado, y videos IGTV.

Instaloader tiene una extensa y muy completa documentación, donde se incluyen todas sus funcionalidades y opciones en linea de comando para descargar imágenes y videos desde Instagram. Información sobre el módulo Python, ejemplos de uso avanzado y resolución de problemas.

Fuentes:

https://instaloader.github.io/

Navegar Sistemáticamente un Sitio Web utilizando Photon

Body

Photon es una increíblemente veloz herramienta la cual sistemáticamente navega un sitio web, esto realizado para propósitos de OSINT, o Inteligencia de Fuente Abierta. Entre sus características principales se tienen:

Extracción de Datos

Photon puede extraer los siguientes datos mientras navega sistemáticamente:

  • URLs (dentro del alcance y fuera del alcance)
  • URLs con parámetros ( ejemplo .com/gallery .php?id=2)
  • Intel (correos electrónicos, cuentas en medios sociales, buckets de amazon, etc.)
  • Archivos (pdf, png, xml, etc.)
  • Llaves secretas (Llaves auth/API y hashes)
  • Archivos Javascript & Endpoints presentes en ellos
  • Cadenas coincidentes con patrones personalizados de expresiones regulares
  • Subdominios y datos DNS relacionados

La información extraída es guardada en una manera organizada, o puede ser exportada como un archivo json.

Flexible

Control para tiempo de espera, retraso, añadir semillas, excluir URLs coincidentes a un patrón de expresión regular, y otras cosas. Un amplio rango de opciones proporcionados por Photon permite sistemáticamente navegar la web exactamente como se requiere.

Genial

El sistemáticamente navegar la web puede consumir recursos, pero Photon tiene algunos trucos. Se puede obtener URLs archivadas desde el sitio “archive .org” para ser utilizada como semillas, con la opción “--waybak”.

Se ejecuta Photon con la opción “-h” para visualizar un resumen de sus opciones.

$ sudo photon -h

La manera más simple de ejecutar Photon es definiendo dos opciones.

$ sudo photon -u “https:// 192.168.0. 70:8585/ wordpress/ ” -l 4

La opción “-u” define la URL raíz. Esto permite realizar una navegación sistemática de un sitio web.

La opción “-l” define los niveles para realizar la navegación sistemática. Utilizando esta opción se puede definir un limite para la recursividad. Por ejemplo un límite de 2 le indica a Photon encontrar todas las URLs dedesde la página principal y semillas (nivel 1), para luego navegar sistemáticamente estos niveles también (nivel 2).

Finalizada la ejecución de Photon, los resultados son almacenados en archivos en formato texto dentro de un directorio, el cual tiene como nombre el nombre de host y puerto.

Los resultados del presente ejemplo generan cinco archivos de nombres external.txt, fuzzable.txt, intel.txt, internal.txt, y scripts.txt. A continuación se presenta el contenido o las primeras lineas de estos atchivos.

intel.txt y external.txt

fuzzable.txt

internal.txt

scripts.txt

Photon está bajo constante desarrollo y actualizaciones, de tal manera se arreglen sus fallas, se optimice su desempeño, y se añadan regularmente nuevas funcionalidades. Incluye una extensa documentación sobre su utilización.

Fuentes:

https://github.com/s0md3v/Photon
https://github.com/s0md3v/Photon/wiki/Usage
https://archive.org/

Enumerar Subdominios utilizando Sublist3r

Body

Sublist3r es una herramienta escrita en Python diseñada para enumerar subdominios de sitios web utilizando OSINT. Ayuda a los profesionales en pruebas de penetración y cazadores de fallas, a recolectar y obtener subdominios para un dominio en evaluación. Sublist3r enumera subdominios utilizando muchos motores de búsqueda como Google, Bing, Yahoo, Baidu, y Ask. Sublist3r también enumera subdominios utilizando Netcraft, Virustotal, ThreatCrowd, DNSdumpster y ReverseDNS.

Subbrute fue integrado con Sublist3r para incrementar la posibilidad de encontrar más subdominios utilizando fuerza bruta con una lista de palabras mejorada. Los créditos para TheRook quien es el autor de subbrute.

Se ejecuta Sublist3r con la opción “-h” para visualizar un resumen de sus principales opciones.

$ sublist3r -h

Se ejecuta Sublist3r para enumerar los subdominios para un dominio específico.

$ sublist3r -d xyz. mil. .pe

La opción “-d” define el nombre de dominio para el cual se enumeran sus subdominios.

También es factible enumerar subdominios para un dominio específico, y mostrar únicamente subdominios los cuales tengan abiertos los puertos TCP 80 y TCP 443.

$ sublist3r -d xyz. mil. pe -p 80,443

La opción “-p” escanea los subdominos encontrados contra los puertos TCP especificados.

También es factible utilizar la herramienta para enumerar subdominios definiendo la utilización de fuentes específicas, como passivedns y dnsdumpster.

$ sublist3r -e passivedns,dnsdumspter -d xyz. mil. pe

Un par de anotaciones sobre los procedimientos realizados y los resultados obtenidos.

Los procedimientos realizados implican enumerar subdominios desde fuentes públicamente disponibles o fuentes de terceros, NO se está “atacando” o escaneando directamente el dominio.

Aunque pareciera algo obvio, los resultados de la enumeración dependen de si la información existe en las fuentes consultadas. Ejemplo; si no existe información sobre subdominios en Virustotal, evidentemente Sublist3r no presentará ningún hallazgo.

Fuentes:

https://github.com/aboul3la/Sublist3r
https://github.com/TheRook/subbrute
https://www.circl.lu/services/passive-dns/
https://dnsdumpster.com/