Tu Mac ejecuta cientos de procesos en cualquier momento. La mayoría son servicios del sistema legítimos y apps que instalaste tú mismo. Pero un único proceso malicioso —sin firmar, ejecutándose desde una ruta inusual o abriendo conexiones de red en silencio— puede comprometer toda tu máquina. Saber distinguir entre un daemon del sistema sano y un intruso sospechoso es una de las habilidades de seguridad más prácticas que un usuario de macOS puede desarrollar.
Respuesta rápida
Para detectar procesos sospechosos en macOS, comprueba si faltan firmas de código o si son inválidas con codesign -dvvv, verifica la aprobación de Gatekeeper con spctl --assess e inspecciona la ruta de lanzamiento, el proceso padre, la actividad de red y los entitlements de cada proceso. Los procesos que se ejecutan desde /tmp, /var/folders o ubicaciones con permiso de escritura de usuario sin firmas de Apple o de un desarrollador merecen una investigación inmediata.
Señales de alerta: indicios de un proceso sospechoso
No todo proceso desconocido es malware, pero ciertos patrones deberían elevar tu nivel de alerta:
- Sin firma de código o con firma ad-hoc. Las apps legítimas de macOS están firmadas por un desarrollador identificado o por Apple. Un binario sin firmar que se ejecuta de forma persistente es una señal de alerta.
- Ruta de lanzamiento en un directorio temporal u oculto. Los procesos que se ejecutan desde
/tmp,/private/var,/var/folderso directorios con prefijo de punto (.hidden/) merecen ser examinados. Las apps legítimas viven en/Applications,/Systemo/usr. - Proceso padre inusual. Un proceso
curlopython3generado porbash, que a su vez fue generado porlaunchdal iniciar sesión —sin un LaunchAgent reconocible que coincida— es sospechoso. - Conexiones de red salientes inesperadas. Un proceso que no reconoces y que establece conexiones con direcciones IP desconocidas, especialmente en puertos no estándar, justifica una investigación.
- Uso elevado de recursos sin un propósito claro. Los cryptominers y las herramientas de exfiltración de datos a menudo muestran un uso sostenido de CPU o de E/S de red que no se corresponde con nada de lo que estés haciendo.
- Entitlements ausentes o excesivamente amplios. Una utilidad simple que reclama
com.apple.security.cs.disable-library-validationocom.apple.security.cs.allow-unsigned-executable-memoryes algo inusual.
Paso a paso: investigar un proceso sospechoso
Cuando detectes algo desconocido en tu lista de procesos, recorre estas comprobaciones de forma sistemática.
1. Verificar la firma de código
La comprobación individual más importante. Ejecuta codesign contra el binario:
codesign -dvvv /path/to/suspicious-binary
Busca la cadena de Authority. Una app sana muestra algo como:
Authority=Developer ID Application: Company Name (TEAMID)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Si ves code object is not signed at all o falta la cadena de autoridad, ese binario nunca fue firmado por un desarrollador identificado.
2. Comprobar el estado de Gatekeeper y de notarización
Gatekeeper de Apple verifica que el software está notarizado, es decir, que se ha enviado a Apple para un análisis automatizado de malware:
spctl --assess --verbose /path/to/suspicious-binary
Una app notarizada devuelve accepted, source=Notarized Developer ID. Cualquier otra cosa significa que el binario eludió el requisito de notarización de Apple o es anterior a él.
3. Inspeccionar la ruta de lanzamiento y los argumentos
Averigua dónde reside realmente el binario del proceso:
ps -eo pid,comm,args | grep <process-name>
Los procesos legítimos del sistema se ejecutan desde /usr/libexec, /System/Library o /Applications. Un proceso llamado com.apple.something que se ejecuta desde /Users/you/Library/LaunchAgents/ con un binario en /tmp está imitando un servicio del sistema.
4. Comprobar los mecanismos de persistencia
El malware suele instalar un LaunchAgent o LaunchDaemon para sobrevivir a los reinicios:
# User-level persistence
ls ~/Library/LaunchAgents/
# System-level persistence
ls /Library/LaunchDaemons/
ls /Library/LaunchAgents/
Abre cualquier archivo .plist desconocido y comprueba la clave ProgramArguments para ver qué binario lanzan.
5. Examinar las conexiones de red
Mira con qué está hablando el proceso:
lsof -i -n -P | grep <PID>
Busca conexiones con IPs desconocidas, especialmente en puertos como 4444, 8080 u otros puertos no estándar que los servidores C2 (mando y control) suelen utilizar.
6. Revisar los entitlements
Los entitlements definen a qué recursos del sistema puede acceder un proceso:
codesign -d --entitlements - /path/to/binary
Un visor de PDF legítimo no debería necesitar com.apple.security.device.camera ni com.apple.security.network.server.
Procesos legítimos comunes que parecen sospechosos
Antes de entrar en pánico, revisa esta lista. Estos procesos del sistema de Apple confunden a los usuarios con regularidad:
| Proceso | Lo que realmente hace |
|---|---|
kernel_task | Kernel de macOS; una CPU alta suele significar limitación térmica, no malware |
mds / mds_stores | Motor de indexación de Spotlight; picos tras instalar apps o copiar archivos |
WindowServer | Compositor de toda la GUI; una CPU alta suele indicar problemas de escalado de pantalla |
nsurlsessiond | Descargas en segundo plano para actualizaciones de App Store y sincronización de iCloud |
trustd | Daemon de evaluación de certificados y confianza |
syspolicyd | Aplicación de la política de Gatekeeper |
cloudd | Daemon de sincronización de iCloud Drive |
bird | Asistente de sincronización de documentos de iCloud |
mediaanalysisd | Procesamiento de ML de la app Fotos para reconocimiento de rostros/objetos |
suggestd | Sugerencias de Siri e indexación de conocimiento de Spotlight |
Si alguno de estos aparece con firmas de Apple válidas y se ejecuta desde /usr/libexec o /System/Library, casi con seguridad es legítimo.
Herramientas para la auditoría de seguridad de procesos
Activity Monitor
Activity Monitor muestra CPU, memoria e información básica de los procesos, pero no puede mostrar firmas de código, entitlements, árboles de procesos padre-hijo ni rutas de lanzamiento de una forma útil. Para el trabajo de seguridad, es un punto de partida en el mejor de los casos.
Terminal: codesign y spctl
Las herramientas de línea de comandos codesign y spctl son la verdad de referencia para la verificación de firmas y notarización. Son esenciales pero tediosas cuando necesitas auditar decenas de procesos: cada una requiere que encuentres la ruta del binario manualmente.
ProcXray
ProcXray lleva la verificación de firmas de código y la inspección de entitlements directamente a una interfaz de monitorización de procesos. Para cada proceso en ejecución puedes ver:
- Estado de la firma de un vistazo —firmado, sin firmar o inválido— sin ejecutar comandos en el terminal.
- Lista completa de entitlements —inspecciona qué capacidades del sistema reclama cada proceso.
- Vista de árbol de procesos —rastrea de inmediato qué proceso padre generó un hijo sospechoso.
- Ruta de lanzamiento y argumentos —ve exactamente dónde reside el binario y cómo se invocó.
En lugar de ejecutar manualmente codesign -dvvv en cada binario, ProcXray expone el contexto de seguridad de cada proceso en tiempo real. Cuando detectas algo sin firmar o ejecutándose desde una ubicación inesperada, puedes investigar su linaje y su contexto de red sin cambiar al Terminal.
Preguntas frecuentes
¿Cómo sé si un proceso es malware o un servicio legítimo del sistema?
Comprueba tres cosas: (1) firma de código —ejecuta codesign -dvvv y busca una cadena de autoridad de Apple o de un desarrollador identificado, (2) ruta de lanzamiento —los servicios legítimos se ejecutan desde /System o /usr/libexec, no desde /tmp ni directorios ocultos, y (3) persistencia —revisa ~/Library/LaunchAgents y /Library/LaunchDaemons por si hay archivos plist desconocidos que apunten al binario.
¿Puede el malware ocultarse de Activity Monitor?
Sí. Los rootkits pueden interceptar llamadas al sistema para ocultar procesos a las herramientas de espacio de usuario. La protección de integridad del sistema (SIP) de macOS lo dificulta considerablemente: si SIP está activado (csrutil status), la ocultación a nivel de kernel está bloqueada en macOS moderno. Aun así, el malware todavía puede disfrazarse usando nombres con apariencia legítima o inyectándose en procesos firmados.
¿Protege Gatekeeper contra todo el malware?
No. Gatekeeper y la notarización proporcionan una primera capa sólida: bloquean por defecto la ejecución de software sin firmar y sin notarizar. Pero si un usuario anula Gatekeeper explícitamente (clic derecho > Abrir), o si el malware se entrega a través de un proceso que ya se está ejecutando (p. ej., un exploit del navegador), Gatekeeper queda eludido. La defensa en profundidad —comprobar firmas, monitorizar el comportamiento de los procesos y auditar los mecanismos de persistencia— sigue siendo esencial.
Fuentes y referencias
- Apple: About Gatekeeper
- Apple: Notarizing macOS Software Before Distribution
- Apple: System Integrity Protection
- Apple:
codesignman page - Apple:
spctlman page - Apple: Entitlements Documentation
Descargar ProcXray → — verificación de firma de código integrada, macOS Sonoma+.