Qué información recolecta NodeManageService, y cómo comprobarlo usted mismo
Este documento reemplaza "confíe en nosotros" por algo verificable: qué se recolecta campo por campo, qué explícitamente NO se recolecta, y los pasos exactos para que su propio equipo técnico lo confirme en un PC de prueba -- sin que tengamos que entregar el código fuente del agente.
El agente solo sale, nunca escucha
NodeManageService inicia siempre la conexión hacia nuestro servidor, nunca al revés. No abre puertos, no escucha conexiones entrantes, y no necesita VPN ni excepciones de firewall más allá de permitir la salida por HTTPS.
| Destino | Puerto | Protocolo | Frecuencia |
|---|---|---|---|
| api-inv.mispymes.cl | 443 | HTTPS (TLS) | Pulso: ~cada 10 min · Inventario completo: 1 vez al día (configurable) |
No hay un segundo endpoint, ni telemetría hacia terceros, ni llamadas a servicios de analítica. Todo el tráfico va a ese único destino, identificado por un token único por equipo (no reutilizable entre organizaciones).
Por categoría, con ejemplo y para qué se usa
Cada categoría es un módulo independiente que el administrador de NodeManage puede activar o desactivar por organización (ver "Control que usted tiene" más abajo). Esto es lo que recolecta cada uno hoy, verificado contra el código del colector correspondiente.
Sistema system
| Campo | Ejemplo | Para qué |
|---|---|---|
| hostname, dominio | PC-CONTABILIDAD-01 | Identificar el equipo |
| usuario con sesión iniciada | jperez | Saber quién lo usa |
| SO, versión, build, arquitectura | Windows 11 Pro, build 22631 | Inventario / soporte de SO |
| fabricante, modelo, tipo de equipo | Dell Latitude 5420, laptop | Inventario de activos |
| fecha instalación, último arranque, tiempo encendido | 2026-03-12 | Ciclo de vida / diagnóstico |
| estado de licencia de Windows, si está unido a dominio | Activado | Cumplimiento |
Hardware hardware
| Campo | Ejemplo | Para qué |
|---|---|---|
| BIOS, placa madre | fabricante, serial, versión | Garantía / inventario |
| CPU, memoria (por módulo) | Intel Core i5, 16 GB | Planificar recambio |
| discos físicos y lógicos | C: 512 GB, 61% libre | Alertar antes de que se llene |
| GPU, batería (si aplica) | modelo, % de carga | Inventario / salud |
Software software
| Campo | Ejemplo | Para qué |
|---|---|---|
| programas instalados | Google Chrome 140.0, Microsoft 365 | Cumplimiento, licenciamiento |
| nombre, versión, editor, fecha, ruta de instalación | — | Auditoría de software |
| servicios del sistema | nombre, estado, modo de inicio | Diagnóstico |
| elementos de inicio automático | nombre, comando | Diagnóstico de arranque lento |
Se lee el nombre y la versión del programa (Registro de Windows / gestor de paquetes en Linux). No se abre ni se lee el contenido de ningún archivo que ese programa haya creado.
Red network
| Campo | Ejemplo | Para qué |
|---|---|---|
| adaptador, MAC, IP(s), DNS, gateway | 192.168.1.25 | Identificación / diagnóstico de red |
| si usa DHCP, velocidad de enlace | 1 Gbps | Diagnóstico |
Usuarios users
| Campo | Ejemplo | Para qué |
|---|---|---|
| cuentas locales: nombre, SID, si es admin local, grupos | jperez, Administradores | Auditoría de accesos |
| si requiere/permite cambio de contraseña | Sí / No | Política de seguridad -- es un indicador booleano, no la contraseña |
| perfiles de Windows, último uso | — | Detectar cuentas sin uso |
| sesiones de logon (tipo, hora de inicio) | RemoteInteractive, 09:14 | Detectar accesos remotos |
Seguridad security
| Campo | Ejemplo | Para qué |
|---|---|---|
| estado de Windows Defender / antivirus de terceros | Activo y actualizado | Cumplimiento de seguridad |
| firewall (por perfil), BitLocker, TPM, Secure Boot | Activo | Postura de seguridad del equipo |
| UAC, SMBv1, certificados por vencer (30 días), SSH (Linux) | Habilitado | Detectar configuraciones de riesgo |
Módulos adicionales (Windows)
| Módulo | Qué recolecta |
|---|---|
| windowsupdate | Parches instalados (KB), fecha del último, si requiere reinicio, política de auto-actualización. |
| remoteaccess | Si RDP está habilitado y su puerto, sesiones remotas activas, y si hay AnyDesk / TeamViewer / RustDesk / VNC / Chrome Remote Desktop / Splashtop / LogMeIn / ScreenConnect / DWService / Supremo / Ammyy instalados -- por nombre del programa, nunca su contenido ni credenciales de esas herramientas. |
| diskhealth | Tipo de disco (HDD/SSD), indicadores SMART de salud/falla predicha. |
| batteryhealth | Capacidad de fábrica vs. capacidad actual de la batería (desgaste real, no solo % de carga). |
| licenses | Estado de activación de Windows y Office, y los últimos caracteres de la clave de producto (nunca la clave completa). |
| monitor | Monitores conectados: marca y modelo (identificador EDID). |
| printer | Impresoras instaladas: nombre y controlador. |
| agentruntime | Salud del propio agente: último envío exitoso, último error, latencia, tamaño de la cola local -- para diagnosticar el agente mismo, no el equipo. |
Explícitamente fuera del alcance del agente
Verificado revisando el código de los colectores de las tres plataformas: ninguno de estos existe en NodeManageService, no es que esté "desactivado".
Datos recolectados vs. lo que el proceso técnicamente podría hacer
En Windows, NodeManageService corre como LocalSystem (en Linux/macOS, como root) -- el mismo nivel de privilegio que cualquier servicio del sistema operativo. Eso le da, en teoría, acceso a todo el equipo. La tabla de abajo separa lo que hace del agente de lo que un proceso con ese privilegio podría hacer, para que la confianza se base en el código real y no en la ausencia de capacidad técnica.
| Acción | ¿La hace hoy? |
|---|---|
| Leer hardware, software instalado, configuración de seguridad | Sí -- es su función |
| Ejecutar un script cuando un administrador de NodeManage lo pide (instalar/desinstalar software, diagnóstico) | Solo bajo pedido explícito, con registro de quién lo pidió y cuándo |
| Leer el contenido de documentos, correos o archivos personales del usuario | No -- ningún colector abre ni lee contenido de archivos de usuario |
| Registrar teclas, capturar pantalla, activar cámara/micrófono | No -- no existe ese código en el agente |
| Modificar archivos o configuración sin que un script lo pida explícitamente | No -- el ciclo normal (pulso/inventario) es de solo lectura |
En un PC de prueba, sin depender de nuestra palabra
Su equipo técnico puede reproducir esto en una máquina limpia, antes de instalar en el resto del parque:
Confirmar qué proceso corre
Get-Service | Where-Object { $_.Name -like "*NodeManage*" }
Get-Process | Where-Object { $_.ProcessName -like "*NodeManage*" }
Confirmar con qué se conecta (antes / después de instalar)
Con Wireshark, o revisando las conexiones activas: capture el tráfico antes de instalar el agente, instálelo, y compare. Solo debería aparecer una conexión nueva hacia api-inv.mispymes.cl:443, cifrada (TLS).
Get-NetTCPConnection | Where-Object { $_.OwningProcess -eq (Get-Process NodeManageService).Id }
Probar con firewall restrictivo
Bloquee todo el tráfico saliente del equipo salvo api-inv.mispymes.cl:443. Si el agente sigue funcionando con esa única regla, queda demostrado que no tiene otras dependencias de red ocultas.
Ver exactamente qué se envió
El agente guarda una copia local del último reporte que mandó, en texto plano legible:
Get-Content "C:\ProgramData\NodeManageService\inventory-latest.json" | ConvertFrom-Json | Format-List
Ese archivo es exactamente lo que viajó al servidor -- nada se arma ni se transmite "por atrás".
Así llegó, hoy, el reporte de un equipo real
Esto no es un mockup: es un recorte del reporte que mandó un equipo real de nuestro propio parque (apodo interno "PC-LORENA", un HP ProBook usado como piloto). Para publicarlo acá reemplazamos IP, MAC, número de serie y SID por valores de ejemplo con el mismo formato (marcados EXJ…), y sacamos la lista completa de ~150 servicios de Windows y el detalle de seguridad puntual de ese equipo (información operativa, no hace falta para el ejemplo). Todo lo demás -- nombres de campo, estructura, tipo de dato -- es exactamente como lo recibió el servidor.
{
"agentId": "ninv_EXJ00000-0000-0000-0000-000000000000",
"platform": "windows",
"system": {
"hostname": "PC-LORENA",
"domain": "WORKGROUP",
"loggedOnUser": "PC-LORENA\\Lorena",
"manufacturer": "Hewlett-Packard",
"model": "HP ProBook 450 G2",
"chassisType": "Laptop",
"chassisSerialNumber": "EXJ0000001",
"osName": "Microsoft Windows 10 Pro",
"osVersion": "10.0.19045",
"osBuild": "19045",
"architecture": "64 bits",
"partOfDomain": false,
"isVirtualMachine": false,
"windowsLicenseStatus": "Licensed",
"languageRegion": "es-ES",
"uptimeSeconds": 73562
},
"hardware": {
"cpu": [{ "name": "Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz", "cores": 2, "logicalProcessors": 4 }],
"totalPhysicalMemoryBytes": 17179869184,
"bios": { "manufacturer": "Hewlett-Packard", "serialNumber": "EXJ0000001" },
"disks": [{ "model": "WDC WDS100T2G0A-00JH30", "sizeBytes": 1000202273280, "status": "OK", "serialNumber": "EXJ0000002" }]
},
"network": {
"adapters": [{
"description": "Realtek RTL8723BE 802.11 bgn Wi-Fi Adapter",
"macAddress": "EX:JA:MP:LE:00:01",
"ipAddresses": ["192.0.2.6"],
"dhcpEnabled": true,
"dhcpServer": "192.0.2.1",
"dnsServers": ["192.0.2.1"],
"linkSpeedMbps": 72
}],
"proxyEnabled": false
},
"users": {
"localAccounts": [{
"sid": "S-1-5-21-EXJ0000001-EXJ0000002-EXJ0000003-1001",
"name": "Lorena",
"domain": "PC-LORENA",
"disabled": false,
"lockout": false,
"isLocalAdministrator": true,
"localGroups": ["Administradores"]
}]
},
"software": {
"installedPrograms": [
{ "name": "Google Chrome", "version": "154.0.8037.59", "publisher": "Google LLC" },
{ "name": "Microsoft 365 Apps", "version": "16.0", "publisher": "Microsoft Corporation" },
{ "name": "OpenVPN Connect", "version": "3.5", "publisher": "OpenVPN Inc." },
{ "name": "EPSON Scan 2", "version": "6.7", "publisher": "Seiko Epson Corporation" }
]
},
"licenses": [
{ "product": "windows", "licenseStatus": "Licensed", "partialProductKey": "EXJ00" },
{ "product": "office", "licenseStatus": "Notification", "partialProductKey": "EXJ01" }
],
"monitors": [{ "manufacturer": "LGD", "friendlyName": "" }],
"errors": []
}
Cómo saber que el .exe instalado es el que su equipo revisó
Cada versión publicada tiene un hash SHA-256 fijo: si el archivo cambia un solo byte, el hash cambia por completo. Es una forma de "huella digital" verificable sin ver el código.
Get-FileHash "C:\Program Files\NodeManageService\NodeManageService.exe" -Algorithm SHA256