El documento proporciona detalles sobre la configuración y uso avanzado de la herramienta ZAP (Zed Attack Proxy) para realizar pruebas de penetración web, incluyendo ajustes iniciales, escaneos pasivos y activos, extensiones, fuzzing, scripting con Zest y ejecución en modo servidor a través de su API REST.
4. #IntelCon202
0
Generar la CA de ZAP e importarla en el navegador web que se va a utilizar.
Detalles de configuración iniciales.
5. #IntelCon202
0
Si utilizas Firefox y las pruebas se realizan en local hay que habilitar la opción
“network.proxy.allow_hijacking_localhost” para que el proxy pueda capturar las
peticiones hacia localhost.
Detalles de configuración iniciales.
6. #IntelCon202
0
Ajustes de la JVM antes de lanzar ZAP.
¿De qué manera voy a utilizar ZAP? ¿Como proxy local o como servidor de pruebas
para lanzar escaneos por parte de un equipo de pentesters?
Ajustes de la memoria con las opciones
-Xms: Memoria inicial para la heap.
-Xmx: Memoria maxima para la heap.
Selección del GC adecuado dependiendo de la versión concreta de JVM:
Serial: -XX:+UseSerialGC
Parallel: -XX:+UseParallelGC
CMS (Deprecado desde Java 9): -XX:+UseConcMarkSweepGC
G1: -XX:+UseG1GC
ZGC (Disponible desde Java 11): -XX:UseZGC
Detalles de configuración iniciales.
7. #IntelCon202
0
Crear un nuevo contexto para el o los dominios que se pretende auditar.
Si la aplicación web incluye cabeceras especiales, éstas deben incluirse a nivel de
contexto para que sean replicadas en todas las peticiones HTTP que realice ZAP.
Es recomendable recomendable realizar algunos ajustes en ZAP para conexiones SSL
contra algunos sitios, especialmente aquellos que utilizan SSLv2.
Tools → Options… → Connection → SSLv2Hello
Tools → Options… → Client Certificate → Enable unsafe SSL/TLS renegotiation
Ver para más información:
https://github.com/zaproxy/zaproxy/wiki/FAQsslHandshake
Resulta conveniente excluir del proxy cualquier otra navegación hacia sitios externos.
solo interesa la navegación contra el sitio web a auditar.
Contexts → Default Context → Exclude from Proxy → Add...
^(?:(?!http://SITIO_AUDITADO:PUERTO).*).$
^(?:(?!https://SITIO_AUDITADO:PUERTO).*).$
Es recomendable guardar todos estos detalles de configuración en una sesión de ZAP
para no tener que volver a aplicarlos cada vez que se inicia la herramienta.
Detalles de configuración iniciales.
8. #IntelCon202
0
Por defecto, cualquier actividad realizada por ZAP (Spidering o Scan) ejecuta lo que se
conoce como un “escaneo pasivo” el cual se basa en un conjunto de reglas que
vienen incluidas directamente en el framework.
Dicho escaneo pasivo simplemente se encarga de analizar las respuestas emitidas por
el servidor, las cuales pueden ser provocadas por las peticiones que se realizan desde
el modo “spider” de ZAP.
En éste modo se pueden producir alertas, las cuales se pueden recuperar fácilmente
en el módulo de resultados de ZAP o programáticamente utilizando la API.
Las alertas contienen atributos que son comunes en los escaneos activos o en los
procesos de spidering, incluyendo entre otras cosas: severidad, cweid, URL,
descripción, etc.
ZAP Passive Scanning
9. #IntelCon202
0
En éste modo, ZAP habilita las reglas de ataque y a diferencia del escaneo pasivo, se
encarga de manipular las peticiones enviadas al servidor y analizar las respuestas.
Se basa en un conjunto de políticas de escaneo que vienen incluidas directamente en
la herramienta y que se encargan de ejecutar múltiples pruebas contra los objetivos
especificados.
Tanto en el escaneo pasivo como en el activo, se encarga de generar un conjunto de
alarmas indicando las posibles vulnerabilidades detectadas en la aplicación web.
ZAP Active Scanning
10. #IntelCon202
0
ZAP cuenta con un sistema de extensiones para personalizar el comportamiento de la
herramienta y extenderla. Algunas de las extensiones más interesantes son:
Python and Ruby Scripting: Permite la ejecución de scripts en Python y Ruby
dentro de ZAP.
Tree Tools: Funcionalidades añadidas a la vista en árbol de contextos.
Access Control Testing: Herramientas para probar controles de acceso en
aplicaciones web.
All In One Notes: Extensión para mantener las notas en un panel separado.
Community Scripts: Scripts diseñados por la comunidad con utilidades interesantes.
CustomReport: Personalización de reportes HTML
ExportReport: Permite personalizar el contenido de los reportes y exportarlos en el
formato elegido.
WAFP: Permite realizar fingetprint de aplicaciones web.
Requester: Panel que permite realizar peticiones HTTP manualmente.
ZAP AddOns
12. #IntelCon202
0
La herramienta permite ejecutar ataques de Fuzzing contra un recurso concreto
utilizando diferentes tipos de payloads, desde rangos de números o letras hasta
ficheros con entradas.
ZAP incluye los ficheros incluidos en los proyectos “jbrofuzz” y “dirbuster” de esta
forma es posible seleccionar múltiples tipos ficheros para pruebas.
ZAP Fuzzing
13. #IntelCon202
0
Zest es un lenguaje de scripting desarrollado por el equipo de seguridad de Mozilla
que se enfoca principalmente al mundo de las aplicaciones web y el registro de las
peticiones que se realizan contra ellas.
Zest se encuentra integrado en ZAP en forma de complemento, el cual viene
habilitado por defecto.
Un script en Zest creado desde ZAP Proxy estará compuesto por un conjunto de
peticiones que se han realizado previamente justo en el momento en el que se inicia
la “grabación” de dicho script.
Es posible incluir acciones de “Zest” durante el flujo de las peticiones HTTP y de ésta
forma, realizar pruebas de penetración sobre secciones concretas de la aplicación web
o incluso depurar las respuestas recibidas por parte del servidor.
Zest scripting
14. #IntelCon202
0
ZAP puede ejecutarse en modo “headless” con la opción “-daemon” lo que le permite
a la herramienta ejecutarse como un servicio en segundo plano.
ZAP cuenta con una API Rest que permite interactuar con el servicio de forma
programática utilizando los endpoints disponibles.
Existen clientes para consumir dicha API escritos en Python y Java.
La API Rest de ZAP se puede configurar fácilmente en:
Tools → Options… → API
ZAP – API Rest.
15. Congreso Online de Ciberinteligencia | Julio
#IntelCon20
20
Gracias por la atención