Antecedentes

Passive Network Audit Framework es un proyecto desarrollado por Javier Santillán (2014) como parte de un proyecto de titulación de la Maestría en la Eindhoven University of Technology (Países Bajos) y una estancia de investigación dentro de Fox-IT B.V.

La versión pública de PNAF se liberó en 2014 como una colaboración con Honeynet UNAM-Chapter y COSMIC Labs

Descripción General del Framework PNAF

Referencia original


Passive Network Audit Framework (PNAF) v0.1.2


Copyright (C) 2014 Javier Santillán

El prototipo público de PNAF v0.1.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 COSMIC-Chapter de [The Honeynet Project] (anteriormente del UNAM-Chapter)

Actualizaciones, noticias y guías

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 las fuentes preinstaladas disponibles en http://pnaf.honeynet.org.mx/download/

  • (Debian 8) Directorio chroot con PNAF precompilado e instalado completo - (tar.gz)
  • Imagen de Máquina Virtual - (archivo OVA) (Ya no disponible)

La siguiente versión de PNAF es la 0.2.x y es el proyecto de desarrollo principal actual. Contendrá cambios significativos (imagen docker, instalación mejorada, parseo, modelo de daemon, soporte multi-hilo, etc). Si tienes retroalimentación o ideas, escríbenos (ver información de contacto abajo).

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 siguiente 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 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

  1. NTCE - Motor de Captura de Tráfico de Red
  2. NCPE - Motor de Preprocesamiento de Tráfico de Red

DPM - MÓDULO DE PROCESAMIENTO DE DATOS

  1. NPEE - Motor de Perfilado y Enumeración de Red
    • p0f : Enumeración de red y servicios
    • prads : Enumeración de red y servicios
  2. IDSE - Motor de Detección de Intrusos de Red
    • Suricata
    • Snort
    • Bro
    • Barnyard : Lector Unified2
  3. 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
  4. DPIE - Motor de Inspección Profunda de Paquetes
    • Chaoreader : 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
  5. 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

REQUISITOS

La versión actual ha sido probada en distribuciones GNU/Linux Debian (6.x o posterior) y Gentoo (Stage 3). El instalador principal prepara automáticamente todo el entorno compilando todas las herramientas incluidas en el framework, así como sus dependencias.

Dado que el instalador descarga algunos paquetes usando apt o emerge según la distribución, necesita acceso a Internet. De lo contrario, puedes usar la opción ‘–no-packages’ e instalar tú mismo los siguientes paquetes/librerías:

Paquetes APT:
autoconf automake binutils-dev bison build-essential byacc ccache cmake dsniff flex g++ gawk gcc libcap-ng-dev libcli-dev libdatetime-perl libdumbnet-dev libfixposix0 libfixposix-dev libgeoip-dev zlib1g zlib1g-dev libgetopt-long-descriptive-perl libglib2.0-cil-dev libjansson4 libjansson-dev libldns-dev liblzo2-2 libnet1-dev libmagic-dev libmysql++3 libmysqlclient-dev libmysql++-dev libnacl-dev libncurses5-dev libldns1 libnetfilter-conntrack-dev libnetfilter-queue1 libnetfilter-queue-dev libnet-pcap-perl libnfnetlink0 libnfnetlink-dev libnl-3-dev libnl-genl-3-dev libpcap-dev libpcre3 libpcre3-dbg libpcre3-dev libsqlite3-dev libssl-dev liburcu-dev libyaml-0-2 libyaml-dev liblzo2-dev openssl pkg-config python-dev python-docutils sqlite3 swig git-core libglib2.0-dev libtool tcpslice tcpick tshark tcpflow ethtool

Fuentes Emerge

autoconf automake binutils bison libtool byacc ccache cmake flex gawk gcc dev-util/cmake sys-libs/libcap-ng dev-perl/glib-perl dev-libs/jansson dev-libs/lzo net-libs/libnet dev-libs/libnl virtual/perl-libnet dev-libs/geoip net-libs/libnetfilter_queue net-libs/libnetfilter_conntrack perl-core/libnet dev-perl/Net-PcapUtils dev-perl/Net-Pcap net-libs/libnfnetlink dev-db/sqlite dev-libs/libyaml dev-lang/swig net-analyzer/tcpflow dev-libs/libcli net-analyzer/dsniff dev-perl/DateTime ethtool
Adicionalmente necesitas instalar los siguientes Módulos de Perl
Config::Auto Pod::Usage  Proc::Daemon IO::CaptureOutput JSON:XS Cwd JSON::Parse Time::Piece Exception::Class Test::Warn Test::Differences Test::Deep Test::Most HTTP::BrowserDetect Getopt::Long String::Tokenizer URI::Encode Devel::Hexdump  Digest::MD5 Data::Dumper YAML NetPacket::Ethernet Net::Subnet

INSTALACIÓN

Instalador

Puedes instalar el framework completo (incluyendo las herramientas) usando el script instalador. Ha sido probado en sistemas basados en Debian 7.x / Gentoo Stage 3 (instalación limpia, sistema base, chrooted)

./install.sh

Alternativamente puedes instalar el Core del Framework (sin herramientas) usando el Makefile. En ese caso necesitas especificar varias opciones dentro del archivo de configuración de PNAF (archivos binarios, archivos de configuración, directorios de logs, …). Para más información revisa el archivo ‘build/pnaf/etc/pnaf.conf’.

Para instalar este módulo, escribe lo siguiente:

$ cd build/pnaf/Pnaf
$ perl Makefile.PL
$ make
$ make test
# make install 	// (como root)

Chroot

Para usar la vía CHROOT, simplemente descarga el directorio chroot, descomprímelo en tu sistema de archivos local y ejecuta lo siguiente:

# chroot chroot_pnaf

(Este archivo README se mostrará al cambiar a ese directorio)

NOTA: Esta vía solo funciona usando Debian 8 amd64.

Máquina Virtual

Importa la imagen OVA usando VirtualBox o Vmware. Las credenciales de acceso se muestran en la pantalla de bienvenida. (Es posible que necesites cambiar/agregar interfaces de red virtuales para cumplir con los requisitos de configuración local)

USO

$ pnaf_auditor [opciones]

Opciones:

Ejecución:
--debug                 : Habilitar modo debug
--conf                  : Especificar archivo de configuración (yaml)
--help                  : Mostrar esta ayuda
--version               : Mostrar versiones de herramientas
--parser arg1[,arg2]    : Especificar parsers a cargar
    'p0f'               : Procesar datos de enumeración
    'prads'             : Procesar datos de enumeración
    'argusFlow'         : Procesar datos NFA (análisis de flujo)
    'snortAppId'        : Procesar datos de enumeración (identificación de App)
    'httpry'            : DPI sobre HTTP (URLs, UA, etc)
    'tcpdstat'          : Procesar datos de enumeración (distribución de protocolo)
    'suricataEve'       : Procesar datos de IDS (alertas y payloads)
    'bro'               : DPI sobre diferentes protocolos
    'tcpflow'           : Procesar datos NFA (seguimiento de sesión)
--out_dataset           : Especificar el tipo de datos de salida a generar
    'all'               : Generar todos los datasets
    'audit'             : Generar solo el dataset de auditoría
--home_net              : Especificar la 'homenet' en formato CIDR
--payload               : Bandera para habilitar decodificación de payload (datos IDS)

Entradas:
--cap_file              : Definir archivo de captura de entrada (pcap)
--audit_dict            : Ruta al diccionario de vulnerabilidades
--instance_dir          : Ruta al directorio con el 'dataset crudo inicial'

Logging:
--log_dir  		: Ruta al directorio de logs
--log_file 		: Ruta al directorio de salida

Ejemplos

Realizar una ejecución básica: Todos los parsers/herramientas habilitados
    $ pnaf_auditor --cap_file test1.cap --log_dir /pnaf/www/test1
Realizar análisis de “logs crudos” existentes de herramientas

Nota: el directorio de entrada debe contener logs crudos reales generados por las herramientas (p. ej. archivos unified2 de Snort, salida JSON de Suricata, logs de p0f, etc.)

$ pnaf_auditor --instance_dir existinglogs --log_dir /pnaf/www/exlogs
Realizar análisis solo de herramientas IDS
$pnaf_auditor --cap_file test2.cap --log_dir /pnaf/www/test2 --parser bro,snort,suricataEve
Realizar análisis con homenet: Cuando se especifica una homenet, la auditoría se enfoca solo en las direcciones/redes IP de la homenet, y los datos de Flow (estadísticas) se separan de las redes externas (útil para identificar uso y filtrar dispositivos)
$pnaf_auditor --cap_file test3.cap --log_dir /pnaf/www/test3 --homenet 192.168.1.0/14,192.168.2.30/27
Realizar análisis decodificando payloads de un archivo unified2 (Snort) almacenado dentro de cierto directorio existente.
$pnaf_auditor --instance_dir mysnortfiles --payload

VISUALIZACIÓN WEB

Se puede usar una visualización Web (muy) básica dentro de PNAF.

Primero, para iniciar el daemon HTTP:

# /pnaf/bin/apachectl

Luego, al ejecutar pnaf_auditor, coloca los directorios de salida dentro de /pnaf/www/. Si ya tienes algunos directorios de salida, cópialos a esta ruta.

Los datos de salida almacenados en ‘–log_dir’ contienen un árbol como el siguiente:

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)
|       |
|       |-------VIEWs/          (Obsoleto)

Copyright (C) 2014 por Javier Santillán


Este framework contiene herramientas externas que tienen sus propias licencias. Para más información sobre licenciamiento, puedes leer los archivos de licencia correspondientes incluidos dentro de los tarballs que este framework usa para la instalación automatizada. Dichos paquetes no han sido modificados y cualquier información sobre licencias/autores es tal como se encuentra en los lanzamientos correspondientes (sitios oficiales, github, etc). Para más información sobre las versiones usadas por este framework, puedes revisar la opción ‘–version’ de pnaf_auditor.

PNAF no reclama ningún derecho, modificación ni propiedad. El núcleo de PNAF (módulo Perl incluido en este tarball dentro de build/pnaf) es autoría de -Javier Santillán- y la licencia citada abajo aplica únicamente al propio PNAF.


PNAF core is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/. Also add information on how to contact you by electronic and paper mail.

PNAF v0.1.2 Copyright (C) 2014 Javier Santillán This program comes with ABSOLUTELY NO WARRANTY; for details type `–help’ option on pnaf_auditor. This is free software, and you are welcome to redistribute it under certain conditions.

(Texto de licencia GNU GPL v3 se mantiene en su idioma original en inglés, conforme a la práctica estándar de distribución de software libre.)

PENDIENTES

  • Proporcionar una instalación completa independiente de la plataforma (Docker)
  • Agregar parsers adicionales (para todas las herramientas del framework)
  • ¿Frontend?
  • Versión prototipo 0.1.2. Algunos parsers/funcionalidades del prototipo original aún no están incluidos… La próxima versión contendrá parsers/funcionalidades adicionales

Referencia Académica

Este navegador no soporta PDFs. Descarga el PDF para verlo: Descargar PDF >