Agente de inventario para equipos Windows. Recopila información técnica del sistema, software instalado y componentes relevantes para análisis de vulnerabilidades, y envía el inventario a Firulai para su correlación con CVEs.
Este repositorio se usa como punto de descarga y documentación pública del agente Windows. El instalador oficial se publica como archivo adjunto en la sección Releases.
Descarga siempre la última versión desde:
O entra en la página de Releases del repositorio y descarga el archivo:
FirulaiAgent.exe
- Windows 10, Windows 11 o Windows Server 2019 o superior.
- .NET Framework 4.8 o compatible instalado en el sistema.
- Permisos de Administrador para instalar o desinstalar.
- Conectividad HTTPS hacia:
https://rsm1.redsauce.net
- UUID y token facilitados en Firulai para identificar y autorizar el equipo.
- Descarga el instalador desde Firulai. Segun tu idioma de usuario, el mismo binario puede descargarse como
FirulaiAgent-ca.exe,FirulaiAgent-en.exe,FirulaiAgent_ca.exe, etc. El instalador lee ese sufijo para elegir el idioma. - Ejecuta el instalador con doble clic.
- Acepta la solicitud de permisos de Administrador de Windows.
- Lee el Acuerdo de licencia y aviso de uso y marca la casilla de aceptación. No se puede continuar sin aceptarlo.
- Introduce el UUID y el token que se te han facilitado en Firulai.
- Finaliza la instalación.
Al terminar, el instalador crea y arranca automáticamente el servicio Windows RSAgent. A partir de ese momento, los datos del equipo se enviarán a Firulai y el inventario se actualizará automáticamente cada noche.
Antes de instalar, el asistente valida que no exista ya un agente en el equipo, que el token permite consultar Firulai y que el UUID existe y está disponible. Si detecta una instalación previa, el proceso se cancela y se debe desinstalar primero el agente actual.
El instalador FirulaiAgent.exe, tambien cuando se descarga con sufijo de idioma, realiza estas acciones:
- Solicita privilegios de Administrador mediante UAC.
- Muestra el Acuerdo de licencia y aviso de uso y exige su aceptación antes de solicitar credenciales.
- Valida el formato del UUID introducido y que el token no esté vacío.
- Comprueba que no exista una instalación local previa.
- Valida en Firulai que el UUID existe y está disponible para este equipo.
- Solicita al receptor que active el System asociado al UUID.
- Instala
RsAgent.exeenC:\Program Files\RSAgent\. - Crea los directorios de datos en
C:\ProgramData\RSAgent\. - Genera
config.jsoncon la configuración local del agente, incluyendo el token facilitado por Firulai. - Restringe los permisos de
config.jsonaSYSTEMyAdministrators. - Registra el servicio Windows
RSAgentcon inicio automático. - Registra el origen
RSAgenten el log Aplicación de Windows. - Configura la recuperación del servicio ante fallos.
- Arranca el servicio y ejecuta el primer inventario.
- Registra el desinstalador en "Aplicaciones instaladas" de Windows.
Si ya existe una instalación previa o el servicio está ejecutándose, el instalador lo detecta al inicio y cancela la instalación. Para reinstalar, primero hay que desinstalar el agente actual.
La instalación se considera existente si aparece cualquiera de estas señales: servicio RSAgent, RsAgent.exe, unins000.exe o C:\ProgramData\RSAgent\config.json.
El agente funciona como servicio Windows:
- Nombre del servicio:
RSAgent. - Nombre visible:
Firulai Inventory Agent. - Inicio: automático con Windows.
- Primera ejecución: al arrancar el servicio.
- Ejecución programada: una vez al día, por la noche, a las
03:00hora local del equipo. - Recuperación: si el equipo estaba suspendido a las
03:00, ejecuta el inventario al reanudarse Windows. - Comprobación de respaldo: mientras el equipo está activo, contrasta el reloj real como máximo cada cinco minutos para detectar ejecuciones vencidas aunque Windows no entregue el evento de reanudación.
- Reintentos: si falla la recopilación o el envío, reintenta cada 30 minutos.
El agente no despierta el equipo. Cuando pierde la ejecución de las 03:00, realiza una sola ejecución al volver a estar disponible, aunque se hayan perdido varias noches. La última ejecución correcta se guarda en state.json; solo se actualiza después de que Firulai confirme el envío. Un bloqueo interno evita que el temporizador, el arranque y la reanudación lancen inventarios simultáneos.
El agente genera un inventario JSON con cinco bloques principales.
Información básica del host:
- Hostname y FQDN.
- UUID asignado por Firulai.
- Nombre, versión, build y edición de Windows.
- Arquitectura del sistema.
- Zona horaria.
- Fecha de recopilación.
- Versión del agente.
Información de hardware necesaria para correlación técnica:
- Modelo de CPU.
- Discos detectados mediante WMI, incluyendo dispositivo y modelo.
Librerías y componentes instalados detectados desde varias fuentes:
| Manager | Fuente |
|---|---|
registry |
Componentes internos detectados en las claves Uninstall globales y de usuario |
file |
DLL con versión ubicadas bajo la raíz concreta de una aplicación descubierta |
appx |
Frameworks y recursos AppX/MSIX obtenidos con PowerShell nativo |
Cada componente incluye nombre, versión y origen. Cuando Windows ofrece
evidencias suficientes para reconocer el software padre, también incluye
source_package, source_version y upstream_version. Firulai usa esos campos
para enlazar el Componente con su Paquete mediante la propiedad RSM 1866.
El agente considera evidencias nativas ParentKeyName, ParentDisplayName,
SystemComponent, ProductName, Publisher, la instalación registrada y
expresiones explícitas como installed by. Además, una vez identificada la
raíz concreta de una aplicación, recorre sus DLL, conserva el nombre de archivo
y la versión nativa y las enlaza a ese paquete. La misma librería puede aparecer
varias veces si pertenece a aplicaciones diferentes.
Software principal instalado. Se obtiene mediante fuentes incluidas en Windows:
Registro global y de usuarios, Program Files, Program Files (x86), App Paths,
servicios, accesos directos y AppX/MSIX. También se siguen esas evidencias hacia
rutas de usuario o ubicaciones personalizadas. Cada Paquete contiene name y
version, obtenidos del registro o de los recursos de versión del ejecutable.
Los identificadores técnicos se presentan con espacios y palabras separadas:
Microsoft.YourPhone se guarda como Microsoft Your Phone, sin mantener un
catálogo de fabricantes o productos.
Ejemplo simplificado:
{
"components": [
{
"name": "Bitvise SSH Client - FlowSshNet (x64)",
"version": "9.63.0.0",
"manager": "registry",
"source_package": "Bitvise SSH Client",
"source_version": "9.63",
"upstream_version": "9.63"
}
],
"packages": [
{
"name": "Bitvise SSH Client",
"version": "9.63"
}
]
}| Ruta | Descripción |
|---|---|
C:\Program Files\RSAgent\RsAgent.exe |
Ejecutable principal del agente |
C:\Program Files\RSAgent\unins000.exe |
Desinstalador |
C:\ProgramData\RSAgent\config.json |
Configuración local del agente |
C:\ProgramData\RSAgent\state.json |
Fecha UTC de la última ejecución enviada correctamente |
C:\ProgramData\RSAgent\inventory.json |
Último inventario generado |
C:\ProgramData\RSAgent\logs\rs_agent.log |
Log principal |
C:\ProgramData\RSAgent\logs\rs_agent.log.1 |
Logs rotados |
El log rota automáticamente al superar 5 MB y conserva hasta tres ficheros rotados.
- Abre
services.msc. - Busca el servicio
RSAgent. - Comprueba que está iniciado y configurado con inicio automático.
Ver estado del servicio:
Get-Service RSAgentVer las últimas líneas del log:
Get-Content "C:\ProgramData\RSAgent\logs\rs_agent.log" -Tail 50Comprobar que existe el último inventario:
Get-Item "C:\ProgramData\RSAgent\inventory.json"Comprobar la última ejecución correcta guardada:
Get-Content "C:\ProgramData\RSAgent\state.json"El instalador registra el origen RSAgent en Visor de eventos > Registros de Windows > Aplicación. El agente publica estos eventos:
| ID | Nivel | Significado |
|---|---|---|
1000 |
Información | Servicio iniciado |
1001 |
Información | Servicio detenido o Windows apagándose |
1100 |
Información | Ejecución de inventario iniciada |
1101 |
Información | Ejecución y envío completados correctamente |
1102 |
Error | Ejecución fallida, incluyendo fase y excepción |
1200 |
Advertencia | Ejecución de las 03:00 perdida por suspensión; comienza la recuperación |
Consultar los últimos eventos desde PowerShell:
Get-WinEvent -FilterHashtable @{
LogName = 'Application'
ProviderName = 'RSAgent'
StartTime = (Get-Date).AddDays(-7)
} | Select-Object TimeCreated, Id, LevelDisplayName, MessageSeguir el fichero de log detallado en tiempo real:
Get-Content "C:\ProgramData\RSAgent\logs\rs_agent.log" -Tail 100 -WaitUna ejecución correcta deja en el log una línea similar a:
Ejecución completada correctamente.
Aunque normalmente se ejecuta como servicio, también puede lanzarse una ejecución puntual desde PowerShell con permisos de Administrador:
& "C:\Program Files\RSAgent\RsAgent.exe" --run-onceEsto genera inventory.json, intenta enviarlo a Firulai, actualiza state.json si el envío termina correctamente y escribe el resultado tanto en el fichero de log como en el registro Aplicación de Windows.
La desinstalación puede iniciarse desde Windows:
Configuración -> Apps -> Aplicaciones instaladas -> Firulai Inventory Agent -> Desinstalar
También puede iniciarse desde PowerShell con permisos de Administrador:
& "C:\Program Files\RSAgent\unins000.exe"Durante la desinstalación aparecerá una única confirmación indicando que solo se eliminarán los archivos locales del agente junto al instalador. No se borrarán los datos de Firulai. El sistema quedará como inactivo en Firulai y, desde Firulai, se podrán eliminar definitivamente sus datos o volver a instalar el agente más adelante enlazándolo al System y al inventario ya guardados.
Si confirmas la operación, el desinstalador:
- Lee el UUID configurado para este equipo.
- Detiene el servicio
RSAgent. - Envía
changeSystemStatuscon el UUID yaction=disconnectal receptor de Firulai. - El receptor localiza el System y aplica el estado desconectado mediante su configuración interna.
- Si Firulai confirma la actualización, informa de que los datos no se borrarán y elimina el servicio y los archivos locales del agente.
- Si el UUID ya no existe en Firulai, informa de que no hay ningún System enlazado y desinstala igualmente la aplicación local.
Por seguridad, si no se puede contactar con Firulai o la actualización de estado no se confirma correctamente, la desinstalación se cancela. En ese caso, los archivos locales se conservan para que puedas revisar la conectividad y volver a intentarlo.
Una desinstalación completada elimina:
C:\Program Files\RSAgent\
C:\ProgramData\RSAgent\
Ejecuta:
Get-Service RSAgentSi no existe, reinstala FirulaiAgent.exe como Administrador.
Revisa el log:
Get-Content "C:\ProgramData\RSAgent\logs\rs_agent.log" -Tail 100Comprueba especialmente:
- Que el UUID usado durante la instalación es válido.
- Que el token usado durante la instalación es válido y corresponde al UUID.
- Que el equipo tiene salida HTTPS hacia
rsm1.redsauce.net. - Que no hay proxy, firewall o inspección TLS bloqueando la conexión.
Si la desinstalación se cancela durante la actualización de estado en Firulai, revisa:
- Que el equipo tiene conexión a Internet.
- Que puede acceder por HTTPS a
https://rsm1.redsauce.net. - Que el UUID sigue asociado al sistema en Firulai.
Después de corregir el problema, vuelve a ejecutar la desinstalación.
La recopilación no requiere Winget, Chocolatey, pip, npm ni software adicional. Comprueba que la cuenta del servicio pueda leer la ruta donde reside la aplicación.
Versión del agente: 0.15.0
Nombre del instalador publicado:
FirulaiAgent.exe