Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
fwknop — Autorización de un solo paquete > Golpeo de puertos | Kitploit
Herramientas/GitHubGitHub/mrash/fwknop
Autenticación y AutorizaciónHerramientas DefensivasHerramientas de Cifrado/DescifradoSeguridad de RedesCriptografíaAutenticación
GitHubmrash/fwknop

fwknop

Autorización de un solo paquete > Golpeo de puertos

Ver Repositorio
1.4k2536hace 3 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Sitio web

fwknop - Autorización de Paquete Único

Introducción

fwknop implementa un esquema de autorización conocido como Autorización de Paquete Único (SPA, por sus siglas en inglés) para un fuerte ocultamiento de servicios. SPA requiere solo un único paquete que está cifrado, no reproducible y autenticado mediante un HMAC para comunicar el acceso deseado a un servicio que está oculto detrás de un cortafuegos en una postura de filtrado por defecto de denegar. La aplicación principal de SPA es utilizar un cortafuegos para denegar todos los intentos de conexión a servicios como SSH con el fin de dificultar la explotación de vulnerabilidades (tanto de día cero como código sin parchear). Debido a que no hay puertos abiertos, cualquier servicio oculto por SPA naturalmente no puede ser escaneado con Nmap. El proyecto fwknop es compatible con cuatro cortafuegos diferentes: iptables, firewalld, PF e ipfw en Linux, OpenBSD, FreeBSD y Mac OS X. También hay soporte para scripts personalizados para que fwknop pueda adaptarse a otras infraestructuras como ipset o nftables.

SPA es esencialmente la siguiente generación de Port Knocking (PK), pero resuelve muchas de las limitaciones mostradas por PK mientras conserva sus beneficios principales. Las limitaciones de PK incluyen una dificultad general para protegerse contra ataques de repetición, los cifrados asimétricos y esquemas HMAC generalmente no son posibles de soportar de manera confiable, y es trivialmente fácil montar un ataque DoS contra un servidor PK simplemente falsificando un paquete adicional en una secuencia PK mientras atraviesa la red (convenciendo así al servidor PK de que el cliente no conoce la secuencia adecuada). Todas estas deficiencias son resueltas por SPA. Al mismo tiempo, SPA oculta servicios detrás de una política de cortafuegos de denegar por defecto, adquiere datos SPA de forma pasiva (generalmente a través de libpcap u otros medios) e implementa operaciones criptográficas estándar para la autenticación y el cifrado/descifrado de paquetes SPA.

Los paquetes SPA generados por fwknop aprovechan HMAC para el cifrado autenticado en el modelo de cifrar-luego-autenticar. Aunque el uso de HMAC es actualmente opcional (habilitado mediante la opción de línea de comandos --use-hmac), es altamente recomendado por tres razones:

  1. Sin HMAC, no es posible una autenticación criptográficamente fuerte con fwknop a menos que se use GnuPG, pero incluso entonces se debería aplicar un HMAC.
  2. Un HMAC aplicado después del cifrado protege contra ataques de oráculo de relleno CBC, como el ataque Vaudenay y trucos relacionados (como el ataque "Lucky 13" más reciente contra SSL).
  3. El código requerido por el demonio fwknopd para verificar un HMAC es mucho más simple que el código requerido para descifrar un paquete SPA, por lo que un paquete SPA sin un HMAC adecuado ni siquiera se envía a través de las rutinas de descifrado.

La razón final anterior es por qué se debería seguir usando HMAC incluso cuando los paquetes SPA se cifran con GnuPG, debido a que los datos SPA no se envían a través de las funciones de libgpgme a menos que el HMAC se verifique primero. GnuPG y libgpgme son cuerpos de código relativamente complejos, y por lo tanto limitar la capacidad de un posible atacante para interactuar con este código a través de una operación HMAC ayuda a mantener una postura de seguridad más sólida. Generar un HMAC para comunicaciones SPA requiere una clave dedicada además de la clave de cifrado normal, y ambas pueden generarse con la opción --key-gen.

fwknop cifra los paquetes SPA ya sea con el cifrado de bloque Rijndael o mediante GnuPG y su cifrado asimétrico asociado. Si se elige el método de cifrado simétrico, como es habitual, la clave de cifrado se comparte entre el cliente y el servidor (consulte el archivo /etc/fwknop/access.conf para más detalles). La clave de cifrado real utilizada para el cifrado Rijndael se genera mediante el algoritmo estándar de derivación de claves PBKDF1, y se establece el modo CBC. Si se elige el método GnuPG, las claves de cifrado se derivan de los anillos de claves de GnuPG.

Casos de Uso

Las personas que utilizan Autorización de Paquete Único (SPA) o su primo con problemas de seguridad Port Knocking (PK) suelen acceder a SSHD ejecutándose en el mismo sistema donde está desplegado el software SPA/PK. Es decir, un cortafuegos en un host tiene una política de denegar por defecto contra todas las conexiones SSH entrantes para que SSHD no pueda ser escaneado, pero un demonio SPA reconfigura el cortafuegos para otorgar acceso temporal a un cliente SPA autenticado pasivamente:

SPA-basic-access-SSHD "Uso básico de SPA para acceder a SSHD"

fwknop soporta lo anterior, pero también va mucho más allá y hace un uso robusto de NAT (para cortafuegos iptables/firewalld). Después de todo, los cortafuegos importantes suelen ser pasarelas entre redes, en lugar de estar simplemente desplegados en hosts independientes. NAT se usa comúnmente en tales cortafuegos (al menos para comunicaciones IPv4) para proporcionar acceso a Internet a redes internas que están en el espacio de direcciones RFC 1918, y también para permitir que hosts externos accedan a servicios alojados en sistemas internos.

Debido a que fwknop se integra con NAT, SPA puede aprovecharse para acceder a servicios internos a través del cortafuegos por parte de usuarios en Internet externo. Aunque esto tiene muchas aplicaciones en redes tradicionales modernas, también permite que fwknop soporte entornos de computación en la nube como Amazon AWS:

SPA-Amazon-AWS-cloud "Uso de SPA en entornos de nube Amazon AWS"

Interfaz de Usuario

La interfaz de usuario oficial multiplataforma del cliente fwknop fwknop-gui (descarga, github) es desarrollada por Jonathan Bennett. Se soportan la mayoría de los modos SPA del lado del cliente, incluyendo solicitudes NAT, claves HMAC y Rijndael (GnuPG aún no es compatible), guardado de estrofas fwknoprc y más. Actualmente fwknop-gui funciona en Linux, Mac OS X y Windows. Aquí hay una captura de pantalla desde OS X: fwknop-gui-OS-X-screenshot "fwknop-gui en Mac OS X" De manera similar, un cliente Android actualizado también está disponible.

Tutorial

Se puede encontrar un tutorial completo sobre fwknop aquí:

http://www.cipherdyne.org/fwknop/docs/fwknop-tutorial.html

Características

La siguiente es una lista completa de características compatibles con el proyecto fwknop:

  • Implementa Autorización de Paquete Único en torno a cortafuegos iptables y firewalld en Linux, cortafuegos ipfw en *BSD y Mac OS X, y PF en OpenBSD.
  • El cliente fwknop funciona en Linux, Mac OS X, *BSD y Windows bajo Cygwin. Además, hay una aplicación Android para generar paquetes SPA.
  • Soporta métodos Rijndael y GnuPG para el cifrado/descifrado de paquetes SPA.
  • Soporta cifrado autenticado con HMAC tanto para Rijndael como para GnuPG. El orden de operación es cifrar-luego-autenticar para evitar varios problemas criptoanalíticos.
  • Los ataques de repetición se detectan y frustran mediante comparación de resumen SHA-256 de paquetes SPA entrantes válidos. También se soportan otros algoritmos de resumen, pero SHA-256 es el predeterminado.
  • Los paquetes SPA se capturan pasivamente de la red mediante libpcap. El servidor fwknopd también puede adquirir datos de paquetes desde un archivo que es escrito por un sniffer Ethernet separado (como con tcpdump -w <file>), desde el escritor pcap de iptables ULOG, o directamente mediante un socket UDP en modo --udp-server.
  • Para cortafuegos iptables, las reglas ACCEPT añadidas por fwknop se agregan y eliminan (después de un tiempo de espera configurable) desde cadenas iptables personalizadas para que fwknop no interfiera con ninguna política iptables existente que ya pueda estar cargada en el sistema.
  • Soporta conexiones NAT entrantes para comunicaciones SPA autenticadas (solo cortafuegos iptables por ahora). Esto significa que fwknop puede configurarse para crear reglas DNAT para que puedas alcanzar un servicio (como SSH) ejecutándose en un sistema interno con una dirección IP RFC 1918 desde Internet abierto. También se soportan reglas SNAT, lo que esencialmente convierte a fwknopd en una pasarela de autenticación SPA para acceder a Internet desde una red interna.
  • El servidor fwknop soporta múltiples usuarios, y a cada usuario se le puede asignar su propia clave de cifrado simétrica o asimétrica a través del archivo /etc/fwknop/access.conf.
  • Resolución automática de la dirección IP externa mediante https://www.cipherdyne.org/cgi-bin/myip (esto es útil cuando el cliente fwknop se ejecuta detrás de un dispositivo NAT). Debido a que la dirección IP externa se cifra dentro de cada paquete SPA en este modo, se frustran los ataques Man-in-the-Middle (MITM) donde un dispositivo en línea intercepta un paquete SPA y solo lo reenvía desde una IP diferente en un intento de obtener acceso.

Licencia

El proyecto fwknop se publica como software de código abierto bajo los términos de la GNU General Public License (GPL v2) o (a su opción) cualquier versión posterior. La última versión se puede encontrar en http://www.cipherdyne.org/fwknop/

Estado Actual

Este archivo README describe el estado actual del proyecto fwknop a partir de la versión 2.5 publicada en julio de 2013. En la actualidad, tenemos una implementación de la biblioteca Firewall Knock Operator; libfko, así como las aplicaciones cliente y servidor de fwknop. La biblioteca proporciona la API y la funcionalidad de back-end para gestionar los datos de Autorización de Paquete Único (SPA) que emplean los otros componentes de fwknop. También puede ser utilizada por otros programas que necesiten funcionalidad SPA (consulte el directorio perl para el módulo perl FKO como ejemplo, y también hay enlaces de python en el directorio python).

Actualización

Si está actualizando desde una versión anterior de fwknop (y esto incluye la implementación original en perl), entonces querrá leer el siguiente enlace para garantizar una transición fluida a fwknop-2.5 o posterior:

http://www.cipherdyne.org/fwknop/docs/fwknop-tutorial.html#backwards-compatibility

Miscelánea

  • Las preguntas o comentarios sobre fwknop serán atendidos en la lista de correo de fwknop.
  • Para análisis estático, fwknop utiliza el analizador estático CLANG y también la potente herramienta Coverity Scan:

Construcción de fwknop

Esta distribución utiliza GNU autoconf para configurar la construcción. Consulte el archivo INSTALL para conocer los conceptos básicos generales sobre el uso de autoconf.

Hay algunas opciones de "configure" que son específicas de fwknop. Son (extraídas de ./configure --help):

root@kitploit:~
  --disable-client        No construir el componente cliente de fwknop. El
                          valor predeterminado es construir el cliente.
  --disable-server        No construir el componente servidor de fwknop. El
                          valor predeterminado es construir el servidor.
  --with-gpgme            soporte para cifrado gpg usando libgpgme
                          [predeterminado=check]
  --with-gpgme-prefix=PFX prefijo donde está instalado GPGME (opcional)
  --with-gpg=/path/to/gpg Especificar la ruta al ejecutable gpg que usará gpgme
                          [predeterminado=check path]
  --with-firewalld=/path/to/firewalld
                          Especificar la ruta al ejecutable de firewalld
                          [predeterminado=check path]
  --with-iptables=/path/to/iptables
                          Especificar la ruta al ejecutable de iptables
                          [predeterminado=check path]
  --with-ipfw=/path/to/ipfw
                          Especificar la ruta al ejecutable de ipfw [predeterminado=check
                          path]
  --with-pf=/path/to/pfctl
                          Especificar la ruta al ejecutable de pf [predeterminado=check
                          path]
  --with-ipf=/path/to/ipf Especificar la ruta al ejecutable de ipf [predeterminado=check
                          path]

Ejemplos:

./configure --disable-client --with-firewalld=/bin/firewall-cmd
./configure --disable-client --with-iptables=/sbin/iptables --with-firewalld=no

Notas

Migración desde la versión Perl de fwknop

Para aquellos que actualmente usan la versión Perl y planean migrar a esta versión, hay algunas cosas a tener en cuenta:

  • No todas las características y funcionalidades del fwknop basado en Perl se trasladaron a esta implementación. Consideramos importante mantener la versión C lo más ágil y ligera posible. La mayoría de las funciones/características omitidas (como las alertas por correo electrónico) se pueden lograr por otros medios (por ejemplo, usar un script externo para monitorear archivos de registro y alertar basándose en mensajes de registro apropiados).

  • Hay algunas diferencias en las directivas y valores de los archivos de configuración y acceso de fwknop. Algunas de estas son bastante sutiles. Debe prestar atención cuidadosa a la documentación y los comentarios en esos archivos.

Para desarrolladores de fwknop

Si está obteniendo esta distribución desde git, debe ejecutar el script autogen.sh para generar los archivos autoconf. Si obtiene errores sobre directorios o archivos faltantes, intente ejecutar autogen.sh nuevamente. Después de eso, puede ejecutar autoreconf -i cuando desee regenerar la configuración. Si, por alguna razón, autoreconf no funciona para usted, el script autogen.sh debería ser suficiente.

Las fuentes nroff de las páginas de manual de fwknop y fwknopd están incluidas en sus respectivos directorios (cliente y servidor). Estos archivos nroff se derivan de las fuentes asciidoc en el directorio 'docs'. Consulte el README en docs para obtener más detalles.

Descargar herramienta
  • Se soporta aleatorización de puertos para el puerto de destino de los paquetes SPA, así como para el puerto sobre el cual se realiza la conexión posterior a través de las capacidades NAT de iptables. Esto último se aplica a conexiones reenviadas a servicios internos y al acceso otorgado a sockets locales en el sistema que ejecuta fwknopd.
  • Integración con Tor (como se describe en esta presentación de DefCon 14). Tenga en cuenta que debido a que Tor usa TCP para el transporte, enviar paquetes SPA a través de la red Tor requiere que cada paquete SPA se envíe sobre una conexión TCP establecida, por lo que técnicamente esto rompe el aspecto de "único" de "Autorización de Paquete Único". Sin embargo, Tor proporciona beneficios de anonimato que pueden superar esta consideración en algunos despliegues.
  • Implementa un protocolo versionado para comunicaciones SPA, por lo que es fácil extender el protocolo para ofrecer nuevos tipos de mensajes SPA y mantener la compatibilidad con versiones anteriores de clientes fwknop más antiguos al mismo tiempo.
  • Soporta la ejecución de comandos shell en nombre de paquetes SPA válidos.
  • El servidor fwknop puede configurarse para imponer múltiples restricciones sobre paquetes SPA entrantes más allá de las impuestas por las claves de cifrado y la detección de ataques de repetición. Es decir, antigüedad del paquete, dirección IP de origen, usuario remoto, acceso a puertos solicitados y más.
  • Incluido con fwknop hay un conjunto de pruebas exhaustivo que emite una serie de pruebas diseñadas para verificar que tanto el cliente como el servidor de fwknop funcionen correctamente. Estas pruebas implican capturar paquetes SPA a través de la interfaz de loopback local, construir reglas de cortafuegos temporales que se verifican para el acceso apropiado según la configuración de prueba, y analizar la salida tanto del cliente fwknop como del servidor fwknopd en busca de marcadores esperados para cada prueba. La salida del conjunto de pruebas puede anonimizarse fácilmente para la comunicación a terceros para su análisis.
  • fwknop fue el primer programa en integrar port knocking con huellas dactilares pasivas del sistema operativo. Sin embargo, la Autorización de Paquete Único ofrece muchos beneficios de seguridad más allá del port knocking, por lo que el modo de operación de port knocking está generalmente en desuso.