← Volver al listado de tecnologías
Capítulo 1: Instalación y Configuración de OWASP ZAP
Capítulo 1: Instalación y Configuración de OWASP ZAP
En este capítulo aprenderás a instalar OWASP ZAP en diferentes sistemas operativos y a configurar el entorno inicial para comenzar con las auditorías de seguridad.
🎯 Objetivos del Capítulo
Al finalizar este capítulo serás capaz de:
- ✅ Instalar OWASP ZAP en tu sistema operativo
- ✅ Entender la interfaz y componentes principales
- ✅ Configurar los ajustes básicos
- ✅ Generar y gestionar certificados SSL/TLS
- ✅ Configurar el proxy local
📋 Requisitos del Sistema
Requisitos Mínimos
- RAM: 4 GB (8 GB recomendado)
- Disco: 200 MB para instalación + espacio para logs
- Java: JRE 11 o superior
- Resolución: 1024x768 mínimo
Sistemas Operativos Soportados
- Windows 7/8/10/11
- macOS 10.12+
- Linux (cualquier distribución moderna)
📦 Instalación por Sistema Operativo
Windows
Método 1: Instalador Ejecutable
# 1. Descargar el instalador
# Visita: https://github.com/zaproxy/zaproxy/releases/
# Descarga: ZAP_2.14.0_windows.exe
# 2. Ejecutar como administrador
# Doble click en el archivo .exe
# 3. Seguir el asistente de instalación
# - Aceptar licencia
# - Elegir directorio (default: C:\Program Files\OWASP\Zed Attack Proxy)
# - Crear accesos directos
Método 2: Chocolatey
# Instalar Chocolatey si no lo tienes
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
# Instalar ZAP
choco install zap -y
# Verificar instalación
zap.bat -version
Método 3: Portable (Sin instalación)
# Descargar versión portable
Invoke-WebRequest -Uri "https://github.com/zaproxy/zaproxy/releases/download/v2.14.0/ZAP_2.14.0_windows.zip" -OutFile "zap.zip"
# Extraer
Expand-Archive -Path "zap.zip" -DestinationPath "C:\Tools\"
# Ejecutar
cd C:\Tools\ZAP_2.14.0
.\zap.bat
macOS
Método 1: Homebrew
# Instalar Homebrew si no lo tienes
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Instalar ZAP
brew install --cask owasp-zap
# Verificar instalación
/Applications/OWASP\ ZAP.app/Contents/Java/zap.sh -version
Método 2: DMG Installer
# Descargar DMG
curl -L -o ZAP_2.14.0.dmg https://github.com/zaproxy/zaproxy/releases/download/v2.14.0/ZAP_2.14.0.dmg
# Montar imagen
hdiutil attach ZAP_2.14.0.dmg
# Copiar a Applications
cp -R /Volumes/ZAP\ 2.14.0/OWASP\ ZAP.app /Applications/
# Desmontar
hdiutil detach /Volumes/ZAP\ 2.14.0/
Método 3: Manual
# Descargar y extraer
wget https://github.com/zaproxy/zaproxy/releases/download/v2.14.0/ZAP_2_14_0_unix.sh
chmod +x ZAP_2_14_0_unix.sh
./ZAP_2_14_0_unix.sh
# Crear alias
echo 'alias zap="/Applications/OWASP\ ZAP.app/Contents/Java/zap.sh"' >> ~/.zshrc
source ~/.zshrc
Linux
Método 1: Snap (Ubuntu/Debian)
# Instalar snap si no está disponible
sudo apt update
sudo apt install snapd
# Instalar ZAP
sudo snap install zaproxy --classic
# Ejecutar
zaproxy
Método 2: APT Repository (Debian/Ubuntu)
# Agregar repositorio
echo 'deb http://download.opensuse.org/repositories/home:/cabelo/xUbuntu_22.04/ /' | sudo tee /etc/apt/sources.list.d/home:cabelo.list
# Agregar clave GPG
curl -fsSL https://download.opensuse.org/repositories/home:cabelo/xUbuntu_22.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_cabelo.gpg > /dev/null
# Actualizar e instalar
sudo apt update
sudo apt install zaproxy
Método 3: Instalación Manual
# Descargar
wget https://github.com/zaproxy/zaproxy/releases/download/v2.14.0/ZAP_2_14_0_unix.sh
# Dar permisos y ejecutar
chmod +x ZAP_2_14_0_unix.sh
sudo ./ZAP_2_14_0_unix.sh
# Crear enlace simbólico
sudo ln -s /opt/zaproxy/zap.sh /usr/local/bin/zap
# Ejecutar
zap
Método 4: Docker
# Pull de la imagen
docker pull zaproxy/zap-stable
# Ejecutar con GUI (requiere X11)
docker run -u zap -p 8080:8080 -p 8090:8090 -i zaproxy/zap-stable zap-webswing.sh
# Ejecutar en modo headless
docker run -u zap -p 8080:8080 -i zaproxy/zap-stable zap.sh -daemon -host 0.0.0.0 -port 8080 -config api.addrs.addr.name=.* -config api.addrs.addr.regex=true
🖥️ Primera Ejecución
Iniciar ZAP
# Windows
zap.bat
# macOS/Linux
zap.sh
# O desde el menú de aplicaciones
Selección de Sesión
Al iniciar ZAP por primera vez, verás un diálogo de sesión:
- No, no quiero persistir esta sesión - Para pruebas rápidas
- Sí, quiero persistir esta sesión - Para guardar el trabajo
- Sí, y quiero generar una nueva sesión - Recomendado para empezar
🎨 Interfaz de Usuario
Componentes Principales
┌─────────────────────────────────────────────────────────┐
│ Menú Principal │
├─────────────────────────────────────────────────────────┤
│ Barra de Herramientas │
├──────────────┬────────────────────┬────────────────────┤
│ │ │ │
│ Árbol de │ Workspace │ Información │
│ Sitios │ Principal │ de Peticiones │
│ │ │ │
│ │ ├────────────────────┤
│ │ │ │
│ │ │ Response/Info │
│ │ │ │
└──────────────┴────────────────────┴────────────────────┘
Pestañas de Herramientas
Paneles Principales
-
Sites Tree (Árbol de Sitios)
- Muestra la estructura de los sitios escaneados
- Organizado jerárquicamente por dominio/path
-
Workspace Window
- Área principal de trabajo
- Muestra Request/Response
- Editor de peticiones
-
Information Window
- History: Historial de peticiones
- Search: Búsqueda en el tráfico
- Alerts: Vulnerabilidades encontradas
-
Footer Tabs
- Spider, Fuzzer, Break points
- Encode/Decode, Scripts
⚙️ Configuración Inicial
1. Configuración del Proxy Local
# Tools → Options → Local Proxies
# Configuración por defecto
Address: localhost
Port: 8080
# Para acceso desde red local
Address: 0.0.0.0 # O tu IP local
Port: 8080
# Habilitar
☑ Behind NAT (si aplica)
☑ Remove unsupported encodings
2. Configuración de Certificados SSL
Generar Certificado Root CA
# Tools → Options → Dynamic SSL Certificates
# 1. Generar nuevo certificado
[Generate] → Guardar como owasp_zap_root_ca.cer
# 2. Configurar validez
Validity: 365 días (o más)
# 3. Guardar certificado para distribución
[Save] → zap_certificate.cer
Instalar Certificado en el Sistema
Windows:
# Método 1: GUI
certmgr.msc
→ Trusted Root Certification Authorities
→ Import → zap_certificate.cer
# Método 2: PowerShell
Import-Certificate -FilePath "zap_certificate.cer" -CertStoreLocation Cert:\LocalMachine\Root
macOS:
# Agregar al Keychain
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain zap_certificate.cer
# O usar Keychain Access GUI
open /Applications/Utilities/Keychain\ Access.app
# Arrastrar certificado → System → Always Trust
Linux:
# Ubuntu/Debian
sudo cp zap_certificate.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
# Fedora/RHEL
sudo cp zap_certificate.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust
3. Configuración de API
// Tools → Options → API
// Habilitar API
☑ Enabled
// Configurar API Key
API Key: [Generar clave aleatoria]
// Configurar direcciones permitidas
Addresses permitted:
- 127.0.0.1
- 127.0.0.1
- localhost
// Deshabilitar para producción
☐ Disable the API key
☐ Report permission errors via API
4. Configuración de Memoria
# Editar zap.sh o zap.bat
# Linux/macOS (zap.sh)
JAVA_OPTS="-Xmx2048m" # 2GB RAM máximo
# Windows (zap.bat)
set JAVA_OPTS=-Xmx2048m
# O en archivo de configuración
echo "-Xmx2048m" >> ~/.ZAP/jvm.options
🔧 Configuraciones Avanzadas
Modos de Operación
# Standard Mode (GUI)
- Interfaz gráfica completa
- Ideal para aprendizaje
- Todas las herramientas disponibles
# Daemon Mode (Headless)
zap.sh -daemon -port 8080 -host 0.0.0.0
# API Mode
zap.sh -daemon -port 8080 -config api.key=changeme
# Inline Mode (Transparent Proxy)
zap.sh -cmd -inline -port 8090
Configuración de Red
# Tools → Options → Connection
# Proxy Chain (si usas otro proxy)
☑ Use proxy chain
Host: proxy.empresa.com
Port: 8080
Username: usuario
Password: ****
# Timeouts
Timeout (seconds): 20
Single read timeout: 5
# DNS
☑ Use global HTTP state
☑ Allow unsafe SSL renegotiation
Configuración de Autenticación
// Para sitios con autenticación
// 1. Context → New Context
Name: "Mi Aplicación"
// 2. Include in Context
https://miapp.com/*
// 3. Authentication
Method: Form-based Authentication
Login URL: https://miapp.com/login
Username Parameter: username
Password Parameter: password
// 4. Users
Add User → Configurar credenciales
🧪 Verificación de Instalación
Test de Proxy Local
# Test con curl
curl -x http://localhost:8080 http://example.com
# Deberías ver la petición en ZAP History
# Test HTTPS con certificado
curl --proxy http://localhost:8080 --cacert zap_certificate.crt https://example.com
Test de API
# Python
import requests
from zapv2 import ZAPv2
# Conectar a ZAP
zap = ZAPv2(apikey='tu-api-key',
proxies={'http': 'http://127.0.0.1:8080',
'https': 'http://127.0.0.1:8080'})
# Verificar versión
print(f"Versión ZAP: {zap.core.version()}")
print(f"Número de alertas: {len(zap.core.alerts())}")
Test de Spider
// JavaScript/Node.js
const ZAP = require('zaproxy');
const zapOptions = {
apiKey: 'tu-api-key',
proxy: 'http://localhost:8080'
};
const zap = new ZAP(zapOptions);
// Test spider en sitio de prueba
zap.spider.scan('http://testphp.vulnweb.com', (err, result) => {
if (err) {
console.error('Error:', err);
} else {
console.log('Spider iniciado:', result);
}
});
🛠️ Herramientas Adicionales
Add-ons Esenciales
# Marketplace → Instalar
# Esenciales para móvil
- Advanced Report Generation
- FuzzDB files
- Python Scripting
- Community Scripts
- Retire.js
# Para APIs
- OpenAPI Support
- GraphQL Support
- SOAP Support
# Utilidades
- Export Report
- Wappalyzer
- Token Generation and Analysis
Scripts de Inicio
#!/bin/bash
# start-zap.sh
# Configurar variables
export ZAP_HOME="/opt/zaproxy"
export ZAP_API_KEY="tu-api-key-segura"
# Iniciar ZAP con configuración personalizada
$ZAP_HOME/zap.sh \
-daemon \
-port 8080 \
-host 0.0.0.0 \
-config api.key=$ZAP_API_KEY \
-config api.addrs.addr.name=.* \
-config api.addrs.addr.regex=true \
-config connection.timeoutInSecs=60 \
-config scanner.maxScanDurationInMins=60
📋 Checklist de Configuración
- ZAP instalado y funcionando
- Certificado Root CA generado
- Certificado instalado en el sistema
- Proxy configurado en localhost:8080
- API habilitada con clave segura
- Memoria asignada adecuadamente
- Add-ons esenciales instalados
- Test de proxy exitoso
- Test de API exitoso
- Backup de configuración realizado
🚨 Solución de Problemas Comunes
Error: “Could not find or load main class”
# Verificar Java
java -version # Debe ser 11+
# Instalar Java 11
# Ubuntu/Debian
sudo apt install openjdk-11-jdk
# macOS
brew install openjdk@11
Error: “Address already in use”
# Verificar puerto 8080
netstat -an | grep 8080
# Cambiar puerto en ZAP
Tools → Options → Local Proxies → Port: 8090
Error: “SSL/TLS Certificate issues”
# Regenerar certificado
Tools → Options → Dynamic SSL Certificates → Generate
# Limpiar caché del navegador
# Chrome: chrome://settings/privacy → Clear browsing data
Error: “Out of Memory”
# Aumentar memoria
echo "-Xmx4096m" > ~/.ZAP/jvm.options
# O editar directamente el script de inicio
JAVA_OPTS="-Xmx4096m -XX:MaxPermSize=256m"
🎯 Ejercicios Prácticos
Ejercicio 1: Instalación y Configuración Básica
- Instala ZAP en tu sistema
- Genera un certificado Root CA
- Instala el certificado en tu sistema
- Configura el proxy en el puerto 8080
- Realiza un test con curl
Ejercicio 2: Configuración de API
- Habilita la API de ZAP
- Genera una API key segura
- Escribe un script Python que se conecte a ZAP
- Lista las alertas actuales vía API
Ejercicio 3: Configuración de Contexto
- Crea un nuevo contexto llamado “TestApp”
- Incluye el sitio http://testphp.vulnweb.com/*
- Configura un usuario de prueba
- Ejecuta un spider en el contexto
📚 Resumen
En este capítulo aprendiste:
- ✅ Cómo instalar OWASP ZAP en diferentes SO
- ✅ Configuración inicial del proxy
- ✅ Generación e instalación de certificados SSL
- ✅ Componentes de la interfaz de usuario
- ✅ Configuración de API para automatización
- ✅ Resolución de problemas comunes
🚀 Próximo Capítulo
En el siguiente capítulo aprenderás a configurar ZAP como proxy para dispositivos móviles, incluyendo:
- Configuración de proxy en Android e iOS
- Instalación de certificados en móviles
- Bypass de Certificate Pinning
- Captura de tráfico HTTPS