CONTENIDO
- [Introducción]
- [Modelo general de PNAF]
- [Modos de instalación]
- [Instalación con instalador]
- [Instalación con tarball chroot preconfigurado de Debian]
- [Instalación con imagen de Máquina Virtual (archivo OVA)]
- [Instalación como módulo Perl (instalación independiente avanzada)]
- [CONFIGURACIÓN]
- [POC: análisis de archivo PCAP]
- [Ejecución inicial]
- [Procesamiento general]
- [Procesamiento específico]
- [Análisis e interpretación de datos]
- [Resumen desde línea de comandos (stdout)]
- [Interfaz web]
Introducción
El prototipo público de PNAF v0.1 es una implementación de una tesis de maestría de la TU/e, desarrollada como proyecto de estancia en Fox-IT B.V en los Países Bajos. Este prototipo público NO incluye información interna de la TU/e ni de Fox-IT.
A partir de la versión 0.1.2, PNAF es un proyecto del UNAM-Chapter [The Honeynet Project]
Repositorio principal de desarrollo
La versión 0.1.2 solo recibirá actualizaciones menores (bugs/parseo) y es la última versión de la rama 0.1.x. Puedes clonar este repositorio e instalarlo en tu propia máquina, o descargar la imagen de Máquina Virtual disponible en http://pnaf.honeynet.org.mx/download/
Resumen
PNAF es un framework diseñado para proporcionar la capacidad de obtener una evaluación de seguridad de plataformas de red, analizando en profundidad el tráfico de red (de forma pasiva) y proporcionando una interpretación de alto nivel de forma automatizada. Combina diferentes técnicas y herramientas de análisis. El framework busca lograr los siguientes objetivos:
Arquitectura
- Ser un framework flexible, escalable y modular
- Proporcionar un análisis preciso de las plataformas de red
- Proporcionar una API útil para desarrollar funcionalidades y mejoras adicionales (no incluida en el prototipo 0.1.2, pero sí en la 0.2.x)
Funcional
- Resumen del nivel de seguridad de la red
- Hallazgos de actividades anómalas
- Hallazgos de política de auditoría de seguridad
- Hallazgos de análisis de impacto (p. ej. basado en CVE)
- Resumen de recomendaciones de seguridad
- Referencia de evidencia
ARQUITECTURA
PNAF (prototipo original) está compuesto por tres módulos principales. Cada módulo tiene sus propios motores que gestionan herramientas específicas y procesan los datos. PNAF está escrito en Perl, ¿por qué? ¡porque Perl es lo máximo!
DCM – MÓDULO DE RECOLECCIÓN DE DATOS
- NTCE – Motor de Captura de Tráfico de Red
- NCPE – Motor de Preprocesamiento de Tráfico de Red
DPM – MÓDULO DE PROCESAMIENTO DE DATOS
- NPEE – Motor de Perfilado y Enumeración de Red
- p0f : Enumeración de red y servicios
- prads : Enumeración de red y servicios
- IDSE – Motor de Detección de Intrusos de Red
- Suricata
- Snort
- Bro
- Barnyard : Lector Unified2
- NFAE – Motor de Análisis de Flujo de Red
- Cxtracker : Resumen básico de datos de flujo
- Argus : Análisis de datos de flujo
- Yaf : Análisis de datos de flujo
- Silk : Análisis de datos de flujo
- Tcpdstat : Estadísticas de protocolo
- DPIE – Motor de Inspección Profunda de Paquetes
- Chaosreader : Extracción de datos de aplicación “any-snarf”
- Nftracker : Extracción de archivos
- Xplico : Extracción de datos de aplicación (url, archivos, …)
- Httpry : Logger de datos HTTP
- Ssldump : Rastreador de datos SSLv3/TLS
- Dnsdump : Extracción de datos DNS
- PassiveDNS : Recolección pasiva de datos DNS
- Dnscap : Utilidad de captura DNS (similar a tcpdump para DNS)
- Tcpxtract : Extracción de archivos
- Tcpdump : Filtrado de Pcap
- NSAE – Motor de Auditoría de Seguridad de Red
- Pnaf-auditor
DVM – MÓDULO DE VISUALIZACIÓN DE DATOS (TODO — En desarrollo)
- WDVE – Motor de Visualización Web de Datos
- GSVE – Motor de Visualización Gráfica de Seguridad
- SARE – Motor de Reportes de Auditoría de Seguridad
- DIEE – Motor de Importación/Exportación de Datos
Modelo general de PNAF
El modelo general de PNAF (Figura 1) define el flujo de trabajo de cómo PNAF decodifica, filtra e interpreta datos a partir de archivos de captura de tráfico de red como entrada única.
MODOS DE INSTALACIÓN
PNAF incluye un conjunto de herramientas[2] para la captura y análisis de tráfico de red, tales como perfiladores pasivos, IDS, decodificadores de protocolo, etc. Dado que algunas de estas herramientas son bastante complejas por sí mismas, también pueden implicar procesos de instalación complejos. Por ello, PNAF está diseñado no solo para usar el conjunto de herramientas de forma automatizada, sino también para facilitar su integración implementando formas limpias y sencillas de desplegar todo el framework unificado. Existen cuatro modos principales de instalación, explicados en las secciones siguientes.
Instalación usando el instalador
PNAF incluye un instalador que automatiza la descarga, compilación y configuración de todas las herramientas incluidas en el framework. Este instalador es un script de shell (bash) que ofrece un asistente basado en dialog. Para usar este modo de instalación, es necesario cumplir con los siguientes requisitos:
- Debian GNU/Linux 7 o posterior (se recomienda 8.x) o Gentoo stage 3.x.
- Conexión a Internet durante el proceso de instalación (el instalador descarga e instala algunas librerías y otras dependencias vía Apt o Emerge), así como algunos módulos de Perl a través de CPAN.
Es posible que PNAF funcione en Ubuntu o cualquier otra distribución GNU/Linux basada en paquetes APT de Debian. Sin embargo, esto implicaría verificar todas las equivalencias de librerías correspondientes a dichas distribuciones. Además, es posible usar el instalador en otros sistemas que no estén basados en APT ni Emerge. Para ello, sería necesario instalar manualmente todas las dependencias necesarias y luego hacer algunos pequeños cambios en el propio instalador. Para más información puedes revisar la lista de dependencias en el archivo README. Se planea que futuras versiones de PNAF incluyan soporte adicional para el instalador, así como formas automatizadas (más sencillas) adicionales de desplegarlo (p. ej. contenedores).
Dado que PNAF necesita instalar muchas librerías y dependencias que pueden causar problemas de compatibilidad con el sistema nativo, se recomienda instalar PNAF dentro de un entorno chroot. Este artículo explica cómo realizar la instalación usando chroot.
Así, asumiendo que se usa un sistema Debian 8 (amd64):
1. Generación del entorno chroot (vía debootstrap)
# aptitude install debootstrap
# debootstrap --arch amd64 jessie chroot\_pnaf [http://ftp.nl.debian.org/debian](http://ftp.mx.debian.org/debian) # mount -t sysfs sysfs chroot\_pnaf/sys
# mount -t proc proc chroot\_pnaf/proc
# mount -o bind /dev chroot\_pnaf/dev
# mount -o bind /dev/pts chroot\_pnaf/dev/pts
Luego cambia al entorno chroot:
# chroot chroot\_pnaf
# cd ~
2. Descargar PNAF
Opción 1: Desde su repositorio oficial (sitio principal de desarrollo)
# aptitude install git
\# git clone [https://dev.honeynet.org.mx/traffic-analysis/pnaf.git](http://dev.honeynet.org.mx/traffic-analysis/pnaf.git)
Opción 2: Desde github (mirror)
# apachectl start
Una vez descargada la última versión de pnaf, entra al directorio y ejecuta el instalador.
# cd pnaf
\# ./install.sh
Esto ejecutará el asistente del instalador. Primero es necesario confirmar que deseas instalar PNAF en el sistema. Después, es posible elegir qué herramientas se instalarán. A pesar de que en la versión 0.1.2 no se usan todas las herramientas, se recomienda instalar todas las listadas. Así, el instalador de PNAF por sí mismo puede considerarse una herramienta automatizada y sencilla para desplegar un conjunto de herramientas de análisis de tráfico de red.
Si es la primera vez que se instala PNAF en el sistema, entonces debería ser una “instalación limpia”. De lo contrario, en caso de que PNAF ya esté en el sistema, una instalación limpia eliminará cualquier herramienta y configuración previamente establecida. Entonces, si necesitas instalar o reinstalar cierta herramienta conservando una configuración previa, selecciona la opción “NO” en este paso.
Después de este paso, PNAF iniciará el proceso de compilación y configuración, el cual puede tomar entre 30-40 minutos dependiendo de las características de la máquina. En caso de que el instalador encuentre algún error, mostrará el mensaje correspondiente y puedes revisar los detalles en los archivos install.log (log básico) e install.log.exec (log detallado) para identificar el problema. Si no se encuentran problemas, el instalador mostrará una confirmación de éxito y PNAF quedará instalado en el sistema.
Se recomienda que, para actualizar todas las variables de entorno, salgas del entorno chroot y vuelvas a entrar. Además, puede ser útil agregar una etiqueta a la shell del chroot:
# echo 'PS1="(PNAF) $PS1"' >> ~/.bashrc
\# exit
\# chroot chroot\_pnaf
Para verificar que PNAF se instaló correctamente:
# apachectl start
Instalación con un chroot de Debian preconfigurado (tarball)
El segundo modo de instalación puede hacerse usando un directorio chroot preconfigurado con todas las herramientas ya instaladas y configuradas. Este modo básicamente evita todo el proceso explicado en el primer modo de instalación (usar debootstrap y ejecutar el instalador). Además, este modo ofrece una forma de desplegar entornos mediante el uso de plantillas (directorio chroot). Para usar este modo de instalación, solo es necesario descargar el tarball (de aproximadamente 1.3 Gb) que contiene la plantilla mencionada y luego descomprimirlo en el sistema de archivos local.
Nota: Es importante enfatizar que este modo solo funciona si el sistema nativo en el que se usa la plantilla es Debian 8 (amd64), aunque podría ser posible hacerlo funcionar en cualquier sistema de 64 bits basado en Debian.
\# wget [http://pnaf.honeynet.org.mx/download/chroot\_pnaf.tar.bz2](http://pnaf.honeynet.org.mx/download/chroot_pnaf.tar.bz2) # tar -jxvf chroot\_pnaf.tar.bz2
# mount -t sysfs sysfs chroot\_pnaf/sys
# mount -t proc proc chroot\_pnaf/proc
# mount -o bind /dev chroot\_pnaf/dev
# mount -o bind /dev/pts chroot\_pnaf/dev/pts
# chroot chroot\_pnaf
De forma similar, se puede probar que PNAF funciona correctamente ejecutando:
# apachectl start
Instalación usando una Máquina Virtual
Este modo de instalación es muy sencillo. Solo necesita descargar una imagen de máquina virtual (archivo OVA) que contiene un entorno PNAF preinstalado y configurado bajo un sistema Debian. Este archivo OVA puede importarse usando VirtualBox o Vmware.
-
- Descarga la imagen OVA http://pnaf.honeynet.org.mx/download/pnaf-0.1.2.ova
- Impórtala en Virtual Box:
Menú File/Import appliance/ y selecciona el archivo OVA para crear la máquina virtual. Esta máquina virtual incluye un directorio chroot con todas las herramientas que el instalador puede desplegar. Las credenciales de acceso se muestran en la propia pantalla de Bienvenida al iniciar la máquina virtual.
Una vez que el usuario inicia sesión, es necesario cambiar al entorno de PNAF incluido en un directorio chroot.
# mount -t sysfs sysfs chroot\_pnaf/sys
# mount -t proc proc chroot\_pnaf/proc
# mount -o bind /dev chroot\_pnaf/dev
# mount -o bind /dev/pts chroot\_pnaf/dev/pts
# chroot /root/chroot\_pnaf
Instalación independiente (modo avanzado)
Este modo de instalación está pensado para usarse cuando algunas herramientas ya están instaladas y configuradas en el sistema, de modo que el núcleo de PNAF (módulo Perl) se usa para procesar toda la información generada por dichas herramientas. Sin embargo, no se recomienda usar este modo, ya que implica especificar un enorme conjunto de parámetros en los archivos de configuración, lo cual haría al framework muy propenso a fallar. Por ello, se recomienda usar en su lugar cualquiera de los modos de instalación mencionados anteriormente.
Si realmente necesitas usar una instalación independiente, simplemente instala el módulo Perl:
# cd pnaf
\# vim build/pnaf/Pnaf/lib/Pnaf/Core.pm (_establece todos los parámetros: rutas, binarios, archivos de configuración, etc._)
\# cd build/pnaf/Pnaf
\# perl Makefile.PL
\# make
\# make test
\# make install
CONFIGURACIÓN
La versión 0.1.2 toma todas las opciones de configuración directamente de los argumentos pasados durante la ejecución. Para ver las opciones disponibles de PNAF (pnaf_auditor), se pueden usar las siguientes opciones:
# apachectl start
Además, para visualizar las versiones de las herramientas incluidas en la versión compilada:
# apachectl start
En caso de necesitar alguna configuración específica (p. ej. una ruta o archivo de reglas específico para suricata, archivos de log para prads, etc.), todos los archivos de configuración dentro del directorio /pnaf/etc pueden establecerse.
POC: Análisis de archivos de tráfico de red (pcap)
Este PoC mostrará cómo realizar un análisis básico de archivos de tráfico de red usando PNAF. Hay que enfatizar que PNAF extrae e interpreta información de diferentes maneras, dependiendo del propósito y la profundidad del análisis deseado. Por lo tanto, la información presentada en este PoC no representa todos los hallazgos que se pueden obtener usando PNAF.
La siguiente tabla describe el tipo de información y el propósito obtenido en este análisis general.
Tipo de dato
Propósito
Identificación de activos
Identificación de activos que realizan actividades dentro de la red, incluyendo su tipo de conexión, protocolos involucrados, tasas de uso, plataformas, software, entre otros.
Eventos de seguridad (alertas basadas en IDS)
Identificación de actividades potencialmente anómalas o maliciosas basadas en datos de IDS.
Recursos
Identificación de recursos que proporcionan información de actividades de flujo de trabajo, así como fuentes de datos como URL, dominios, archivos transferidos, etc.
Auditoría de software
Identificación pasiva de software que se está usando dentro de la red. Esta información se toma como línea base para identificar posibles vulnerabilidades basadas en CVEs.
Ejecución inicial
Procesamiento general:
Teniendo el archivo PCAP test1.cap, pnaf_auditor se ejecuta de la siguiente manera:
apachectl start
Estas opciones especifican que el archivo será tomado por las herramientas usadas por PNAF y los datos de salida se almacenarán dentro del directorio /pnaf/www/test1.
Procesamiento específico
Ahora, asumiendo que se necesita un análisis más específico, es posible ejecutar pnaf_auditor usando las siguientes opciones:
# apachectl start
Con estos parámetros pnaf_editor analizará el archivo pcap test2.cap, tomando el segmento de red 192.168.1.0/24 como “home_net”, que es la red interna de la organización. Es posible especificar el home_net usando formato CIDR. Además, se especifica que los payloads se decodificarán en caso de que se dispare alguna alerta de IDS. Esto es especialmente útil para analizar e identificar posibles falsos positivos.
Análisis e interpretación de datos
Para obtener información básica significativa a partir de un montón de datos crudos, el análisis puede realizarse en diferentes etapas.
1. Logs de línea de comandos (stdout de ejecución)
Los logs generados durante la ejecución se muestran en la salida estándar (Figura 7 abajo). Esta fase es importante ya que el analista puede verificar qué herramientas se están usando para obtener los logs crudos, así como el resumen básico de los eventos parseados y la auditoría de activos.
2. Visualización web
PNAF ofrece una visualización web básica que incluye los siguientes datos:
- Logs de datos crudos generados por todas las herramientas incluidas en la compilación de PNAF
- Logs preprocesados en formato JSON
- Logs de datos de auditoría procesados en formato JSON mostrados en un visualizador JSON.
Todos los datos JSON generados por PNAF pueden usarse e interpretarse dentro del propio framework; sin embargo, es importante enfatizar que dichos datos también pueden exportarse para alimentar sistemas de análisis de datos como un SIEM.
Para usar la visualización web básica, es necesario habilitar el servidor web Apache.
# apachectl start
Por defecto, todos los hallazgos se almacenan en el directorio /pnaf/www. Al ejecutar pnaf_auditor, se puede usar la opción –log_dir para especificar que el directorio de salida se establezca directamente dentro del webdir. En el ejemplo en ejecución, el directorio de salida se estableció en /pnaf/www/test2, al cual se puede acceder directamente mediante un navegador web en http://localhost o la dirección IP correspondiente del servidor donde se haya desplegado PNAF.
El directorio web tiene la siguiente estructura (ejemplo práctico en la Figura 9):
DIRECTORY\_NAME/ (Logs crudos generados por las herramientas)
|
|----- JSON/ (Archivos parseados en formato JSON)
| |
| |---SUMMARY/ (Vista de árbol JSON del dataset y auditorías)
| | | (Este es el visualizador básico principal)
| | |
| | |---dataset (Datos parseados de todo el conjunto de herramientas)
| | |---auditSummary (Resumen de información de auditoría)
| | |---dataset.html (Todo el software encontrado en el tráfico)
| | |---auditOutput (Auditoría basada en CVE (NIST) y software)
| | |---dataset.html (Datos de auditoría ordenados por activo individual)
| |
| |-------VIEW1/ (Visualizador JSON alternativo)
| |
| |-------VIEW2/ (Obsoleto)
Figura 9. Archivos generados para la visualización web
El análisis de este PoC se realiza yendo de datos generales a hallazgos específicos. Primero, es útil revisar el archivo json/summary/dataset.html. Aquí, el analista puede visualizar los logs de datos generados por todas las herramientas usando visualizadores JSON. Cada árbol tiene dos categorías principales:
- Summary: contiene el resumen de hallazgos
- Tracking: contiene datos ordenados por activo individual
Dependiendo de la profundidad del análisis, es posible profundizar en los detalles de cada dataset, así como realizar búsquedas usando el cuadro de texto integrado en el visualizador.
El siguiente paso del análisis implica revisar los datos parseados y correlacionados almacenados en el archivo /json/summary/auditSummary.html. Aquí, el analista puede visualizar información detallada de cada activo identificado en el tráfico de red. Por ejemplo, es posible revisar información sobre URLs, certificados SSL, alertas de IDS, archivos transferidos, software, etc. Además, es posible revisar la correlación de auditoría a través de una categoría Tracking (igual que en el dataset principal explicado antes), en la cual los datos de auditoría se ordenan por activo individual. Para ello, se puede acceder al archivo /json/summary/auditTracking.html.
Finalmente, el archivo /json/summary/auditOutput.html muestra hallazgos sobre vulnerabilidades en el software identificado dentro del tráfico de red, basado en la base de datos CVE[3]. Este análisis incluye una puntuación que mide el impacto de dichas vulnerabilidades. Además, se presenta una lista de activos identificados dentro de listas negras (basadas en IP y nombre de dominio, tomadas de fuentes confiables: p. ej. EmergingThreats DB).
Tomando en cuenta todos los datos recolectados por las herramientas, la información interpretada por PNAF, así como la interpretación (específica) significativa realizada por el propio analista, se puede determinar un panorama general del contexto y las características de la red. De hecho, el tipo de información que debe filtrarse y en la que hay que enfocarse depende del tipo de problema, contexto y asunto que se necesite identificar.
Es muy importante notar que PNAF es propenso a falsos positivos debido a la propia naturaleza del PNA, en el cual la entrada única y la posible falta de datasets completos (p. ej. logs reales de aplicaciones, etc.) pueden causar una mala interpretación y una correlación inexacta, llevando a hallazgos imprecisos que deben ser verificados manualmente por el propio analista.
Actualmente PNAF está en desarrollo. La versión 0.1.2 es la última versión de la rama 0.1. Las siguientes versiones incluirán mejoras principalmente en la visualización de resultados, estabilidad, facilidad de despliegue e integración con software externo para análisis de datos. Para más información puedes seguir las actividades en el blog oficial del UNAM-Chapter de The Honeynet Project y su repositorio de desarrollo:
Referencias
[1] Passive Network Audit Framework, tesis de maestría. Santillán, Javier. Eindhoven University of Technology. Países Bajos. 2014
[2] Tabla 1. “Herramientas de análisis de tráfico de red” del artículo anterior