🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónEjecución y persistencia — agentes, demonios y elementos de inicio
5 tareas · 40 min · Principiante
Viernes 2 de octubre, 11:00. En asi-mac-014 apareció un programa que nadie instaló a propósito y que sigue corriendo después de cada reinicio. En Windows buscarías servicios y tareas programadas; en un Mac ese trabajo lo hace launchd, el programa que arranca y vigila casi todo lo demás. Aquí aprendes dónde se declara lo que arranca solo, qué claves leer en cada declaración y qué evento deja un elemento nuevo. Todo es lectura de un inventario de ejemplo.
Objetivo de la sala
Viernes 2 de octubre, 11:00. En asi-mac-014 apareció un programa que nadie instaló a propósito y que sigue corriendo después de cada reinicio. En Windows buscarías servicios y tareas programadas; en un Mac ese trabajo lo hace launchd, el programa que arranca y vigila casi todo lo demás. Aquí aprendes dónde se declara lo que arranca solo, qué claves leer en cada declaración y qué evento deja un elemento nuevo. Todo es lectura de un inventario de ejemplo.En macOS, launchd arranca los servicios y los trabajos programados a partir de archivos de propiedades (.plist). Hay dos clases de trabajo. Un demonio es del sistema: corre como root, sin depender de que alguien tenga la sesión abierta, y se declara en /Library/LaunchDaemons (o en /System/Library/LaunchDaemons, que es del sistema operativo). Un agente es de un usuario: corre solo mientras ese usuario tiene la sesión abierta, y se declara en /Library/LaunchAgents para todos los usuarios o en ~/Library/LaunchAgents para uno solo.
El formato del archivo es el mismo; lo que cambia su alcance es la carpeta donde está. Para el analista, la carpeta ya dice a quién afecta y con qué privilegios corre.
Responde para continuar
Encuentras un archivo de propiedades en la carpeta LaunchAgents dentro del directorio personal de una usuaria. ¿Qué alcance tiene ese trabajo?
Ver pista de ayuda
La carpeta personal y la palabra agente apuntan a un único usuario con sesión.
Un archivo de propiedades declara quién es el trabajo (Label, obligatoria y única), qué ejecuta (ProgramArguments) y cuándo. Tres claves de «cuándo» merecen atención: RunAtLoad, que lo arranca al cargarse; KeepAlive, que pide que esté siempre vivo y lo relanza si termina; e StartInterval, que lo lanza cada cierto número de segundos.
Abre la consola. La tabla plists es el inventario de trabajos declarados en asi-mac-014. La última columna dice qué cambio aprobado respalda el archivo: un guion es «ninguno». Ejecuta plists | where cambio == "-" para ver qué hay sin respaldo.
Esta tarea se hace en el laboratorio
Una consola para consultar la base de datos, aquí en la página. No instalas nada y no puedes romper nada.
Responde para continuar
¿Cuál es la etiqueta (label) del trabajo que no tiene ningún cambio aprobado detrás?
Ver pista de ayuda
Ejecuta `plists | where cambio == "-"` y lee la columna label.
Un trabajo con KeepAlive activo y un intervalo no pasa desapercibido: aunque alguien lo termine, vuelve. La suma de las dos claves es lo que hace persistente a un programa sin que nadie lo abra. Para medir el ritmo, el intervalo está en segundos y el analista suele pensar en minutos.
Con la misma consulta de antes, lee el intervalo del trabajo sin respaldo y conviértelo.
Esta tarea se hace en el laboratorio
Una consola para consultar la base de datos, aquí en la página. No instalas nada y no puedes romper nada.
Responde para continuar
¿Cada cuántos minutos lanza ese trabajo su programa? Escribe solo el número.
Ver pista de ayuda
Ejecuta `plists | where cambio == "-"`, mira la columna intervalo_s y divide entre 60.
Hay dos formas de programar un trabajo de launchd. StartInterval lo lanza cada cierto número de segundos desde que se carga. StartCalendarInterval lo lanza en momentos concretos del calendario, con minuto, hora, día, de forma parecida a cron. La diferencia importa al buscar: un trabajo por intervalo deja actividad constante; uno por calendario deja una actividad concentrada en la misma hora del día o de la semana.
Si el trabajo que investigas despierta siempre a las tres y media de la madrugada, lo que debes buscar en su archivo es el calendario, no el intervalo.
Responde para continuar
Un programa despierta todos los días a las 03:30 y duerme el resto del tiempo. ¿Qué clave de su archivo de propiedades explica ese patrón?
Ver pista de ayuda
Una hora fija del día es una declaración de calendario, no de intervalo.
Los trabajos de fondo y los elementos de inicio de sesión también se administran desde Configuración del Sistema, en General, Ítems de inicio y extensiones (Login Items & Extensions). El sistema lleva un registro interno de estos elementos y, cuando alguien añade uno, el marco de seguridad puede emitir el evento NOTIFY_BTM_LAUNCH_ITEM_ADD. Un agente EDR lo exporta como una fila con la hora, el tipo, el elemento y si está gestionado, es decir, si llegó por la gestión de dispositivos de la empresa.
Ejecuta elementos_de_fondo | where gestionado == "no" para ver lo que se añadió sin pasar por la empresa.
Esta tarea se hace en el laboratorio
Una consola para consultar la base de datos, aquí en la página. No instalas nada y no puedes romper nada.
Responde para continuar
¿A qué hora se anotó el elemento no gestionado? Escríbela con el formato de la tabla.
Ver pista de ayuda
Ejecuta `elementos_de_fondo | where gestionado == "no"` y lee la columna hora.
Conectando con la base…
Tablas
plists
- carpeta
- archivo
- label
- programa
- run_at_load
- keep_alive
- intervalo_s
- cambio
elementos_de_fondo
- hora
- evento
- tipo
- elemento
- gestionado
El resultado aparece aquí.
fila(s)
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.