Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Ejecució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.

0 de 5 · 0%

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.

Conectando con la base…

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.

Conectando con la base…

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.

Conectando con la base…

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.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Conectando con la base…

SIEM · Aluminios del Sinú — trabajos de launchd y elementos de fondo de asi-mac-014
KQL · consultas previstas

Tablas

plists

  • carpeta
  • archivo
  • label
  • programa
  • run_at_load
  • keep_alive
  • intervalo_s
  • cambio

elementos_de_fondo

  • hora
  • evento
  • tipo
  • elemento
  • gestionado
Ctrl + Enter
Consola de consultas v1.0 · build b77233

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