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
secrets-manager-rs — Una herramienta de línea de comandos para respaldar, restaurar y verificar secretos de forma segura utilizando estándares interoperables como el cifrado age y coreutils, garantizando accesibilidad a largo plazo sin bloqueo de proveedor. | Kitploit
Herramientas/GitHubGitHub/fran314/secrets-manager-rs
Herramientas de Cifrado/DescifradoRecuperación de DatosSeguridad en la NubeDevSecOpsUtilidades y FrameworksAutenticación
GitHubfran314/secrets-manager-rs

secrets-manager-rs

Una herramienta de línea de comandos para respaldar, restaurar y verificar secretos de forma segura utilizando estándares interoperables como el cifrado age y coreutils, garantizando accesibilidad a largo plazo sin bloqueo de proveedor.

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
Ver Repositorio
212hace 1 mesRevisado por Kitploit

secs-man

secs-man es una herramienta para gestionar copias de seguridad de secretos pensando en la independencia de la herramienta: si cifras tus secretos con este software, deberías poder descifrarlos y restaurarlos sin este software. Incluso si secs-man desapareciera de la faz de la Tierra, tus datos seguirían siendo accesibles.

secs-man puede usarse para gestionar secretos de máquinas locales y remotas, y es ideal para crear copias de seguridad solo locales para datos demasiado sensibles como para respaldarlos en la nube.

Philosophy

La teoría

No deberías depender de ningún software específico para respaldar tus datos extremadamente importantes.

Cualquier software que te obligue a permanecer en su ecosistema después de su uso (como: "si lo cifras con este software, solo puedes descifrarlo con este software") te hace dependiente de él.

Por lo tanto, el cifrado, descifrado y restauración de tus datos importantes deberían estar desacoplados, es decir, si los cifraste con el software X, deberías poder descifrarlos sin el software X.

La práctica

En la práctica, no puedes crear una configuración donde tus secretos estén 100% a salvo de la pérdida de datos. Incluso si tu software X es compatible con Y, Z y W, seguirás perdiendo acceso a tus datos si X, Y, Z y W dejaran de funcionar al mismo tiempo.

Lo que haces en la práctica es asegurarte de depender solo de tecnologías que sean "estándares" o cercanas a ellos. No me importa depender de la existencia de intérpretes de bash, puertos USB y máquinas Linux.

El verdadero objetivo de secs-man entonces se convierte en ser perfectamente reproducible solo con:

  • un terminal
  • coreutils como cp, mv y sha256sum
  • age
  • trabajo manual y un poco de tiempo

La dependencia de age es la más delicada, pero la dependencia de alguna librería criptográfica es inevitable, y age tiene tanto una gran popularidad como buenos bindings en Rust.

Esto garantiza que incluso si algo le ocurriera a este software que te impidiera volver a usarlo, suponiendo que age siga existiendo y que estés dispuesto a dedicar 30 minutos de tu vida, podrías recuperar todos tus secretos.

La sección recuperación manual explica cómo importar los secretos exportados por este software sin usar este software, es decir, solo con coreutils, age y un terminal.

Installation

secs-man no está publicado en ningún sitio (no es un crate publicado, ni está en nixpkgs, el AUR o similar). Solo puede instalarse directamente desde este repositorio, de una de las siguientes maneras.

Con nix run

Si solo necesitas ejecutar secs-man ocasionalmente, puedes ejecutarlo directamente sin instalarlo (requiere flakes habilitadas)

root@kitploit:~
nix run github:Fran314/secrets-manager-rs -- export /path/to/secrets /path/to/export/endpoint

A través de tu configuración de Nix

Para que secs-man esté disponible en todo el sistema, puedes importar este repositorio en tu configuración de Nix con fetchGit y añadir el paquete resultante a environment.systemPackages (o home.packages con home-manager)

root@kitploit:~
let
  secs-man = pkgs.callPackage "${builtins.fetchGit {
    url = "https://github.com/Fran314/secrets-manager-rs.git";
    ref = "main";
    # rev = "<commit>"; # pin a specific commit for reproducibility
  }}/default.nix" { };
in
# add `secs-man` to environment.systemPackages or home.packages

Con cargo

Si no estás en NixOS, puedes instalar el binario secs-man apuntando cargo a este repositorio

root@kitploit:~
cargo install --git https://github.com/Fran314/secrets-manager-rs

ten en cuenta que ninguno de estos métodos instala el script secs-man-ssh necesario para máquinas remotas: es un script independiente que debe copiarse de este repositorio por separado

Usage

Esta herramienta permite exportar y cifrar archivos desde un directorio fuente determinado, y recuperarlos importándolos al mismo directorio. La forma recomendada de usar esta herramienta es tener todos tus "secretos" (claves, archivos, ...) en un directorio centralizado.

En la raíz del directorio de secretos debe haber un archivo de texto plano .secrets-manifest que contenga la lista de secretos a gestionar, en forma de rutas relativas al directorio de secretos. Las rutas de archivo no pueden contener espacios en blanco. Cada entrada también puede especificar un owner y un mode que se usarán para establecer los permisos correctos durante la importación. Consulta .secrets-manifest.example para ver la sintaxis.

Durante una exportación, los archivos listados en el manifiesto se cifran mediante age con una frase de contraseña solicitada a través de un prompt interactivo (secs-man nunca la lee de un archivo, un argumento o una variable de entorno). La misma frase de contraseña se solicita de nuevo en la importación, para descifrar los archivos. La integridad de los archivos está garantizada por un archivo *.sha256 acompañante, que se genera automáticamente si falta. Los archivos cifrados se exportan a un snapshot con marca de tiempo dentro del directorio de destino de la exportación.

Los archivos pueden descifrarse e importarse apuntando al directorio de destino de la exportación (para importar el snapshot más reciente) o a un snapshot específico dentro de este directorio.

Los siguientes comandos pueden ejecutarse sin sudo; sin embargo, fallarán si el manifiesto especifica un owner distinto del usuario que ejecuta el comando (ya que la llamada interna a chown fallará).

Para exportar tus secretos, ejecuta

root@kitploit:~
sudo secs-man export /path/to/secrets /path/to/export/endpoint

Para verificar la integridad de una exportación existente (consulta la nota a continuación), ejecuta

root@kitploit:~
# to verify the integrity of all the exported snapshots
sudo secs-man verify-export /path/to/export/endpoint

# to verify the integrity of a specific snapshot
sudo secs-man verify-export /path/to/export/endpoint/export-YYYY-MM-DD_HH-MM-SSZ

ten en cuenta que en cada exportación se realiza automáticamente una comprobación de integridad. Esto solo es necesario si quieres comprobar la integridad de una exportación antigua que podría haberse degradado y corrompido

Para importar tus secretos, ejecuta

root@kitploit:~
# to import the latest snapshot
sudo secs-man import /path/to/export/endpoint /path/to/secrets

# to import a specific snapshot
sudo secs-man import /path/to/export/endpoint/export-YYYY-MM-DD_HH-MM-SSZ /path/to/secrets

# to import only specific secrets
sudo secs-man import /path/to/export/endpoint /path/to/secrets --pick ssh/id_ed25519 wg/wg0.key

Uso con máquinas remotas

Esta herramienta también puede usarse para desplegar y respaldar secretos en máquinas remotas.

La forma más fácil de exportar secretos remotos es exportarlos en un directorio temporal en el host remoto, y luego copiar el snapshot exportado a una copia de seguridad local. Del mismo modo, para importar una copia de seguridad local, el enfoque más fácil es copiar el snapshot local en un directorio temporal del host remoto, y luego importarlos desde allí. Sin embargo, esto tiene el problema de que la frase de contraseña de cifrado/descifrado tiene que pasar por el host remoto, que podría considerarse no confiable.

Para desplegar en / respaldar desde hosts remotos no confiables sin pasar la frase de contraseña a través del remoto, puedes usar el script secs-man-ssh. Este script no asume inicio de sesión como root a través de SSH (ya que podría estar deshabilitado por razones de seguridad), pero asume que el usuario remoto tiene privilegios de sudo (para permitir que secs-man ejecute chown y chmod).

Para exportar desde un host remoto, ejecuta:

root@kitploit:~
secs-man-ssh export <user@host> <remote-secrets-dir> <local-backup>

# The flow is the following:
# 1. the script copies the remote secrets to a temporary directory on the remote host
# 2. the temporary directory gets chowned to the remote normal user, so that it can be sudo-less read and copied locally
# 3. the temporary directory is copied on the local host and deleted from the remote host
# 4. the local directory gets exported to the local backup, then deleted

Para importar a un host remoto, ejecuta:

root@kitploit:~
# secs-man has to be installed on the remote for the script import to work
secs-man-ssh import <user@host> <local-container> <remote-secrets-dir>

# The flow is the following:
# 1. the latest snapshot gets imported to a temporary local directory with the `--skip-chown-chmod` flag, so that it can be sudo-less read and copied to the remote host
# 2. the local directory gets copied to the remote host in a temporary directory, and deleted from the local host
# 3. the remote temporary directory gets imported to the remote secrets directory with `--from-plaintext`, as the files have already been decrypted
# 4. the remote temporary directory is deleted

Recuperación manual

Exportación

Los archivos exportados se cifran usando age con una frase de contraseña. El nombre del archivo exportado es el nombre original con la extensión adicional .age.

Para obtener el mismo comportamiento, puedes usar lo siguiente:

root@kitploit:~
age --passphrase --output filename.txt.age --encrypt filename.txt

Ten en cuenta que:

  • antes de exportar, se comprueba la suma de verificación del archivo fuente
  • durante la exportación, la suma de verificación existente del archivo de texto plano se exporta junto al archivo cifrado
  • después de la exportación, se crea otra suma de verificación para todos los archivos cifrados para permitir comprobar la integridad de la exportación en un momento posterior.

Verificar exportación

Verificar la integridad de una exportación consiste en comprobar que cada suma de verificación coincide. Para hacerlo, simplemente se puede ejecutar

root@kitploit:~
find . -name "sha256sums.txt" -execdir sha256sum -c sha256sums.txt \;

en el directorio del snapshot exportado

Importación

Los archivos importados se descifran usando age con una frase de contraseña. El nombre del archivo importado es el nombre exportado sin la extensión .age. Si se especifican owner y/o mode en el manifiesto para una entrada determinada, el archivo importado se establece con el owner y mode especificados. Si no se especifica ningún mode, el valor por defecto es 600.

Para obtener el mismo comportamiento, puedes usar lo siguiente:

root@kitploit:~
age --output filename.txt --decrypt filename.txt.age

# if no mode is specified, it defaults to 600
chmod <mode> filename.txt

# if no owner is specified, skip this step
chown <owner> filename.txt

Ten en cuenta que:

  • antes de la importación, se comprueba la suma de verificación del archivo fuente
  • después de la importación, se comprueba la suma de verificación de los archivos importados

Modelo de amenazas

Esta herramienta crea automáticamente snapshots durante la exportación que no se limpian por la propia herramienta. Esto significa que se debe tener cierto cuidado al exportar secretos con esta herramienta.

Al exportar secretos de "autenticación" (claves SSH/WireGuard, tokens), que pueden rotarse fácilmente, la existencia del snapshot no supone ningún riesgo adicional.

Sin embargo, al exportar secretos de "descifrado" (claves de disco, identidades age/PGP, clave maestra del gestor de contraseñas), la existencia de los snapshots significa que, si los secretos dentro de las exportaciones se filtraran y de algún modo se descifraran, un atacante podría tener acceso a las claves de descifrado actuales y pasadas. Por ello, al rotar secretos de "descifrado", sería seguro eliminar también los snapshots exportados antiguos (lo que puede hacerse fácilmente con rm -r /path/to/export/endpoint/export-YYYY-MM-DD_HH-MM-SSZ). Ten en cuenta que la ruta crítica que expone las claves de descifrado antiguas también implica el conocimiento de los secretos actuales, lo que probablemente sea una preocupación mayor.

Descargar herramienta