Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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
wolfGuard — Módulo de kernel VPN y herramienta de usuario compatibles con FIPS 140-3, reemplazo directo de WireGuard con criptografía AES-256-GCM, SHA2-256 y SECP256R1 para túneles seguros. | Kitploit
Herramientas/GitHubGitHub/wolfssl/wolfguard
Herramientas de Cifrado/DescifradoSeguridad de RedesCriptografíaAutenticación
GitHubwolfssl/wolfguard

wolfGuard

Módulo de kernel VPN y herramienta de usuario compatibles con FIPS 140-3, reemplazo directo de WireGuard con criptografía AES-256-GCM, SHA2-256 y SECP256R1 para túneles seguros.

Ver Repositorio
1241856hace 4 díasRevisado 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

WolfGuard VPN con criptografía FIPS 140-3

WolfGuard es la refactorización compatible con FIPS de wolfSSL del WireGuard basado en el kernel de Linux, originalmente diseñado y escrito por Jason Donenfeld. El uso es esencialmente idéntico. Hay dos componentes principales de WolfGuard: el módulo del kernel wolfguard.ko y la herramienta de configuración wg-fips. wolfguard.ko depende del módulo del kernel libwolfssl.ko, y wg-fips depende de la biblioteca libwolfssl.so — estas dependencias se construyen a partir de la misma fuente de wolfSSL, con configuración de módulo del kernel y biblioteca de usuario respectivamente. El script wg-fips-quick funciona exactamente como wg-quick en WireGuard, pero con scripts de configuración en /etc/wolfguard que contienen claves públicas y privadas SECP256R1.

Se instalan enlaces simbólicos en el directorio bin de instalación desde wg a wg-fips, y desde wg-quick a wg-fips-quick, para un reemplazo directo transparente de WireGuard. Si se encuentran ejecutables de WireGuard durante la instalación, se renombran a wg-wireguard y wg-wireguard-quick, con wg-wireguard-quick modificado para llamar a wg-wireguard, y con una copia de seguridad dejada como wg-wireguard-quick.unpatched.

WolfGuard reasigna la criptografía de WireGuard de la siguiente manera:

Tenga en cuenta que WolfGuard y WireGuard pueden coexistir en el mismo sistema, estableciendo túneles WolfGuard y WireGuard simultáneamente.

Si libwolfssl.ko está configurado con --enable-intelasm, el rendimiento de WolfGuard iguala o supera al de WireGuard acelerado por CPU, gracias a la aceleración de CPU de las operaciones AES-256-GCM y SHA2-256. Sin --enable-intelasm, WolfGuard es ligeramente más lento que WireGuard acelerado por CPU, pero aún es capaz de saturar gigabit ethernet en CPUs modernas.

Construcción e Instalación

A continuación se presentan dos conjuntos de instrucciones, el primero para construir a partir de fuentes no FIPS, y el segundo para construir a partir de fuentes certificadas FIPS. En ambos casos, la herramienta de usuario y el script de WolfGuard se denominan wg-fips y wg-fips-quick, reflejando su uso de algoritmos aprobados por FIPS independientemente del estado de certificación FIPS. Las compilaciones certificadas FIPS y no certificadas de WolfGuard son completamente interoperables entre sí, pero no pueden interoperar con WireGuard.

La opción --enable-intelasm solo debe usarse con objetivos de CPU x86, y para FIPS, solo en fuentes FIPS que lo soporten. Contáctenos en [email protected] para más información.

La opción --enable-wolfguard habilita el conjunto mínimo de características de biblioteca/módulo requerido para WolfGuard. Para un conjunto de características más completo, use --enable-all-crypto en su lugar.

Los comandos precedidos por $ deben ser ejecutados por un usuario sin privilegios, mientras que aquellos con # deben ejecutarse con privilegios de root, pero en el mismo contexto de directorio de trabajo establecido.

Tenga en cuenta que si se utiliza un archivo de lanzamiento de wolfSSL en lugar de las fuentes git, el lanzamiento debe ser la versión 5.8.4 o más reciente.

Construcción e instalación de fuentes git no FIPS

(1) Cree un directorio de nivel superior para las fuentes y complételo:

root@kitploit:~
$ mkdir wolf-sources
$ cd wolf-sources
$ git clone https://github.com/wolfssl/wolfssl --branch nightly-snapshot
$ git clone https://github.com/wolfssl/wolfguard
$ (cd wolfssl && ./autogen.sh)

(2) Construya e instale la biblioteca de usuario libwolfssl:

Nota: este paso es opcional en Linux, donde por defecto wg-fips descarga las operaciones de generación y conversión de claves al módulo del kernel, en lugar de realizarlas internamente.

root@kitploit:~
$ cd wolfssl
$ ./configure --quiet --enable-wolfguard --enable-all-asm
$ make -j
$ ./wolfcrypt/test/testwolfcrypt
# make install
$ cd ..

(3) Construya e instale la herramienta de usuario wg-fips -- tenga en cuenta que la instalación moverá los ejecutables y páginas man existentes de WireGuard wg y wg-quick en los directorios de destino (si están presentes) a wg-wireguard y wg-wireguard-quick respectivamente, e instalará enlaces simbólicos para wg y wg-quick que apunten a las versiones de WolfGuard.

root@kitploit:~
$ cd wolfguard/user-src
$ make -j
# make install
$ cd ../..

Para forzar el uso de operaciones de clave internas en Linux, en lugar de la descarga predeterminada al módulo del kernel, reemplace make -j con make -j NO_IPC_LLCRYPTO=1.

Hay soporte disponible para claves públicas comprimidas, cuyas longitudes exportadas en base64 son las mismas que las claves públicas Curve25519 de WireGuard. Esto se puede habilitar sustituyendo

root@kitploit:~
$ make -j EXTRA_CFLAGS=-DWG_USE_PUBLIC_KEY_COMPRESSION

en lo anterior. Sin embargo, tenga en cuenta que WolfGuard con WG_USE_PUBLIC_KEY_COMPRESSION es incompatible con la configuración predeterminada de WolfGuard -- cuando se establece, se suministran y esperan claves públicas comprimidas, tanto en la configuración local como en las negociaciones a través de la red.

(4) Construya e instale el módulo del kernel libwolfssl. Reemplace /usr/src/linux con la ruta a su árbol de fuentes del kernel de destino real, que debe estar completamente configurado y construido, y coincidir exactamente con el kernel que arrancará en su sistema de destino. El modprobe al final asume que está apuntando al sistema nativo en ejecución.

root@kitploit:~
$ cd wolfssl
$ ./configure --quiet --enable-wolfguard --enable-cryptonly --enable-intelasm \
   --enable-linuxkm --with-linux-source=/usr/src/linux \
   --prefix=$(pwd)/linuxkm/build
$ make -j module
# make install
# modprobe libwolfssl

Antes de poner el módulo del kernel libwolfssl en producción, debe construirlo y cargarlo con la autocomprobación extendida habilitada. Reemplace la receta ./configure anterior con lo siguiente:

root@kitploit:~
$ ./configure --quiet --enable-wolfguard --enable-cryptonly --enable-intelasm \
   --enable-linuxkm --with-linux-source=/usr/src/linux \
   --prefix=$(pwd)/linuxkm/build --enable-crypttests \
   CFLAGS=-DWOLFSSL_LINUXKM_VERBOSE_DEBUG

Las opciones adicionales no son apropiadas para producción, pero un módulo configurado con ellas debe cargarse en un entorno de ejecución representativo para confirmar que todos los algoritmos funcionan correctamente.

(5) Construya e instale el módulo del kernel de WolfGuard. Nuevamente, reemplace /usr/src/linux con la ruta a su árbol de fuentes del kernel de destino real, y reemplace 6.16.5-gentoo con el valor real devuelto por uname -r en el sistema de destino. Y nuevamente, el modprobe después de la construcción asume que está apuntando al sistema nativo en ejecución.

root@kitploit:~
$ cd ../wolfguard/kernel-src
$ make -j KERNELDIR=/usr/src/linux KERNELRELEASE=6.16.5-gentoo
# make install
# modprobe wolfguard
$ ../user-src/wg-fips genkey | ../user-src/wg-fips pubkey

El valor KERNELRELEASE es, efectivamente, el nombre exacto del directorio bajo /lib/modules/ donde están instalados los módulos del kernel de destino.

Las operaciones genkey y pubkey en la línea final son pruebas de funcionalidad básica. Si todo está bien, tendrá éxito e imprimirá una clave pública aleatoria.

Al igual que con la construcción de wg-fips anterior, el soporte de clave pública comprimida se puede habilitar agregando EXTRA_CFLAGS=-DWG_USE_PUBLIC_KEY_COMPRESSION a la receta make anterior. La configuración WG_USE_PUBLIC_KEY_COMPRESSION debe coincidir en todo el ecosistema.

Si todo lo anterior tiene éxito, entonces ya está listo para levantar túneles WolfGuard. Los manuales y scripts existentes para WireGuard se pueden usar directamente, siempre que sustituya /etc/wolfguard por /etc/wireguard, y genere todas las claves usando la herramienta WolfGuard wg-fips (wg en este punto será un enlace a wg-fips).

Construcción e instalación de fuentes FIPS

Las versiones certificadas FIPS del archivo fuente wolfssl se proporcionan por separado. Contacte a [email protected].

(1) Cree un directorio de nivel superior para las fuentes y complételo. Este procedimiento asume un archivo wolfssl en formato 7z -- sustituya tar -xf si el archivo es un .tar.gz. En cualquier caso, ajuste la receta ln -s para asegurar que wolfssl sea un enlace simbólico al directorio wolfssl extraído. También tenga en cuenta que los archivos del módulo del kernel FIPS son distintos de los archivos que no son del kernel, aunque son seguros de usar para construir la biblioteca de usuario FIPS, como se muestra a continuación.

root@kitploit:~
$ mkdir wolf-sources
$ cd wolf-sources
$ 7z x ~/Downloads/wolfssl-X-fips-linuxvX-kernel.7z
$ ln -s wolfssl-X-fips-linuxvX-kernel wolfssl
$ git clone https://github.com/wolfssl/wolfguard

(2) Construya e instale la biblioteca de usuario libwolfssl.

Nota: este paso es opcional en Linux, donde por defecto wg-fips descarga las operaciones de generación y conversión de claves al módulo del kernel, en lugar de realizarlas internamente.

root@kitploit:~
$ cd wolfssl
$ ./configure --quiet --enable-fips=vX --enable-wolfguard
$ make -j
$ ./fips-hash.sh
$ make -j
$ ./wolfcrypt/test/testwolfcrypt
# make install
$ cd ..

Nota: el argumento para --enable-fips debe coincidir con la variante FIPS del archivo. Actualmente, los argumentos más adecuados para el uso de WolfGuard son v5.2.4 y v6.

(3) Construya e instale la herramienta de usuario wg-fips -- tenga en cuenta que la instalación moverá los ejecutables y páginas man existentes de WireGuard wg y wg-quick en los directorios de destino (si están presentes) a wg-wireguard y wg-wireguard-quick respectivamente, e instalará enlaces simbólicos para wg y wg-quick que apunten a las versiones de WolfGuard.

root@kitploit:~
$ cd wolfguard/user-src
$ make -j
# make install
$ cd ../..

Para forzar el uso de operaciones de clave internas en Linux, en lugar de la descarga predeterminada al módulo del kernel, reemplace make -j con make -j NO_IPC_LLCRYPTO=1.

(4) Construya e instale el módulo del kernel libwolfssl. Reemplace /usr/src/linux con la ruta a su árbol de fuentes del kernel de destino real, que debe estar completamente configurado y construido, y coincidir exactamente con el kernel que arrancará en su sistema de destino.

Este es un proceso de dos pasos. Primero construirá e instalará el módulo con un hash de integridad incorrecto. Luego lo cargará para capturar el hash correcto, que saldrá temprano con un error esperado de "Operación cancelada". Luego reconstruirá y cargará el módulo con el hash correcto. Tenga en cuenta que estas instrucciones asumen que apunta al sistema nativo. También tenga en cuenta que la versión más baja de libwolfssl FIPS compatible con el modo de kernel de Linux es v5.2.4.

root@kitploit:~
$ cd wolfssl
$ ./configure --quiet --enable-fips=vX --enable-wolfguard --enable-cryptonly \
   --enable-linuxkm --with-linux-source=/usr/src/linux \
   --prefix=$(pwd)/linuxkm/build
$ make -j module
# make install
# modprobe libwolfssl

(Espere una salida temprana del modprobe anterior, con un mensaje de "Operación cancelada".)

root@kitploit:~
$ NEWHASH=$(dmesg | awk '{if (match($0, " new hash \"([^\"]+)\" ", hash_a)) { hash = hash_a[1]; }} END {print hash}')
$ sed --in-place=.bak "s/^\".*\";/\"${NEWHASH}\";/" wolfcrypt/src/fips_test.c
$ make -j module
# make install
# modprobe libwolfssl

Si el segundo modprobe falla como el primero, con otro mensaje "Update verifyCore[] in fips_test.c with new hash ..." en el registro del kernel, entonces su cadena de herramientas y/o la configuración del kernel de destino están impidiendo una compilación reproducible. En ese caso, debe usar esta estrategia alternativa, reemplazando los pasos después del comando NEWHASH= anterior:

root@kitploit:~
$ make module-update-fips-hash FIPS_HASH="$NEWHASH"
# make install
# modprobe libwolfssl

Antes de poner el módulo del kernel libwolfssl en producción, debe construirlo y cargarlo con la autocomprobación extendida habilitada. Para hacer esto, reemplace la receta ./configure anterior con lo siguiente:

root@kitploit:~
$ ./configure --quiet --enable-fips=vX --enable-wolfguard --enable-cryptonly \
   --enable-linuxkm --with-linux-source=/usr/src/linux \
   --prefix=$(pwd)/linuxkm/build --enable-crypttests \
   CFLAGS=-DWOLFSSL_LINUXKM_VERBOSE_DEBUG

Las opciones adicionales no son apropiadas para producción, pero un módulo configurado con ellas debe cargarse en un entorno de ejecución representativo para confirmar que todos los algoritmos funcionan correctamente.

(5) Construya e instale el módulo del kernel de WolfGuard. Nuevamente, reemplace /usr/src/linux con la ruta a su árbol de fuentes del kernel de destino real, y reemplace 6.16.5-gentoo con el valor real devuelto por uname -r en el sistema de destino.

root@kitploit:~
$ cd ../wolfguard/kernel-src
$ make -j KERNELDIR=/usr/src/linux KERNELRELEASE=6.16.5-gentoo
# make install
# modprobe wolfguard
$ ../user-src/wg-fips genkey | ../user-src/wg-fips pubkey

Las operaciones genkey y pubkey en la línea final son pruebas de funcionalidad básica. Si todo está bien, tendrá éxito e imprimirá una clave pública aleatoria.

Al igual que con el procedimiento no certificado FIPS, si todo lo anterior tiene éxito, entonces ya está listo para levantar túneles WolfGuard. Los manuales y scripts existentes para WireGuard se pueden usar directamente, siempre que sustituya /etc/wolfguard por /etc/wireguard, y genere todas las claves usando la herramienta WolfGuard wg-fips (wg en este punto será un enlace a wg-fips). Sin embargo, tenga en cuenta que algunas aplicaciones cliente y marcos de automatización de WireGuard esperan que las claves públicas de WireGuard se exporten con exactamente 44 caracteres de base64. Las claves públicas de WolfGuard son aproximadamente el doble de esa longitud, a menos que se construyan con WG_USE_PUBLIC_KEY_COMPRESSION, que actualmente no es compatible con FIPS v5, pero sí con FIPS v6 y posteriores.

Descargar herramienta
Categoría de algoritmoWireGuardWolfGuard
ECDHCurve25519SECP256R1
AEADXChaCha20-Poly1305AES-256-GCM
digestBlake2sSHA2-256
digest autenticanteBlake2s-HMACSHA2-256-HMAC
hash internoSipHashSHA2-256
DRBGChaCha20 DRBGSHA2-256 Hash-DRBG