Skip to content

Tareas programadas: dónde se guardan y cómo adquirirlas

Dónde guarda Windows las tareas programadas: System32\Tasks, SysWOW64\Tasks, C:\Windows\Tasks y TaskCache, y cómo recopilarlas con KAPE o Velociraptor.

Publicado el 6 min de lectura

Resumen. Recopile cuatro cosas: C:\Windows\System32\Tasks (de forma recursiva), C:\Windows\SysWOW64\Tasks, C:\Windows\Tasks y el hive SOFTWARE con SOFTWARE.LOG1 y SOFTWARE.LOG2. Añada Security.evtx y el log TaskScheduler/Operational. KAPE con --target ScheduledTasks,RegistryHivesSystem, o el artefacto Windows.Triage.Targets de Velociraptor con esos mismos dos targets, lo hace en una sola pasada. Conserve las rutas originales: la estructura de carpetas bajo Tasks es la ruta de la tarea.

Este artículo es el complemento sobre adquisición de la guía completa de análisis forense de tareas programadas.

Las ubicaciones, artefacto por artefacto

ArtefactoRutaFormatoVersiones de Windows
XML de tareasC:\Windows\System32\Tasks\ y subcarpetasXML sin extensión, normalmente UTF-16LE con marca de orden de bytes (BOM)Vista y posteriores
XML de tareas (WOW64)C:\Windows\SysWOW64\Tasks\IgualSistemas de 64 bits; a menudo vacía, recójala de todos modos
Trabajos heredadosC:\Windows\Tasks\*.job.job binario, MS-TSCHAlmacén principal hasta XP / 2003; después, solo heredado
Log heredado del programadorC:\Windows\SchedLgU.txtTextoSobre todo sistemas antiguos
TaskCacheC:\Windows\System32\config\SOFTWARE, clave Microsoft\Windows NT\CurrentVersion\Schedule\TaskCacheHive del registroVista y posteriores
Logs de transacciones del hiveC:\Windows\System32\config\SOFTWARE.LOG1, SOFTWARE.LOG2Log del registroVista y posteriores
Logs de eventosC:\Windows\System32\winevt\Logs\Security.evtx, Microsoft-Windows-TaskScheduler%4Operational.evtxEVTXVista y posteriores

El target ScheduledTasks de KapeFiles enumera las mismas carpetas de XML, C:\Windows\Tasks\*.job, SchedLgU.txt, sus equivalentes en Windows.old y las carpetas ScheduledJobs de PowerShell de cada perfil. Si el sistema se actualizó in situ, C:\Windows.old puede contener definiciones de tareas anteriores a la actualización: recójala cuando exista.

Cómo se organiza la carpeta de XML

Cada carpeta de la biblioteca del Programador de tareas es una carpeta real en disco. Una tarea registrada como \Microsoft\Windows\Defrag\ScheduledDefrag corresponde al archivo C:\Windows\System32\Tasks\Microsoft\Windows\Defrag\ScheduledDefrag. El archivo no tiene extensión y su elemento <URI> suele repetir la misma ruta. Esa ruta es también el nombre de la clave bajo TaskCache\Tree, y así es como se emparejan el XML y el registro.

Las tareas en la raíz (C:\Windows\System32\Tasks\<name>) merecen atención: la guía de supervisión del evento 4698 de Microsoft señala que las tareas creadas manualmente y las maliciosas suelen colocarse en el nodo raíz. Muchos actualizadores legítimos de terceros también viven ahí, así que estar en la raíz es un criterio para ordenar, no un hallazgo.

TaskCache en el hive SOFTWARE

En un sistema en vivo, la clave es HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache. En análisis offline, está dentro del archivo C:\Windows\System32\config\SOFTWARE. Sus subclaves son Tree, Tasks, Boot, Logon, Plain y Maintenance (cyber.wtf). El significado de cada valor se explica en análisis forense del registro TaskCache.

Por qué importan los logs de transacciones

Desde Windows 8.1, los cambios en el registro se escriben primero en los logs de transacciones del hive (.LOG1, .LOG2) y se vuelcan al archivo principal de forma diferida (notas de Maxim Suhanov sobre el formato del registro). Por eso, una copia de SOFTWARE tomada de una máquina en marcha suele estar sucia (dirty): los números de secuencia de su cabecera no coinciden y los cambios más recientes solo existen en los logs. En el caso de las tareas programadas, esos son precisamente los datos que interesan: una tarea registrada diez minutos antes de la recogida, o un valor SD borrado para ocultarla, puede no haber llegado todavía al archivo principal.

Recoja los logs junto con el hive. Después, aplíquelos con una herramienta que lo admita antes de dar por buena una "ausencia" en TaskCache. El Scheduled Tasks Parser lee el hive principal y avisa cuando está sucio; no aplica los logs por sí mismo, así que un aviso de hive sucio significa "vuelva a revisar este hive con una herramienta que tenga en cuenta los logs".

Opciones de recogida

KAPE

kape.exe --tsource C: --tdest C:\triage\kape --target ScheduledTasks,RegistryHivesSystem

ScheduledTasks trae las carpetas de tareas, los archivos .job y SchedLgU.txt; RegistryHivesSystem trae SOFTWARE con SOFTWARE.LOG*, además del resto de hives del sistema. Añada un target de logs de eventos si también quiere los archivos EVTX. KAPE lee los archivos bloqueados mediante acceso directo al disco, de modo que la copia del hive es coherente con sus logs en el momento de la recogida.

Velociraptor

Ejecute el artefacto Windows.Triage.Targets (con un hunt desde la GUI o con el colector offline) seleccionando los targets ScheduledTasks y RegistryHivesSystem. El artefacto se basa en las reglas de KapeFiles (documentación de triage de Velociraptor), así que el conjunto de archivos coincide con el de KAPE. El ZIP resultante se puede soltar tal cual en el parser: este gestiona las rutas con codificación porcentual de Velociraptor y los nombres de entrada con barras invertidas.

Comandos integrados, cuando no hay otra cosa

Desde un símbolo del sistema con privilegios elevados en el sistema en vivo:

reg save HKLM\SOFTWARE C:\triage\SOFTWARE /y
robocopy C:\Windows\System32\Tasks C:\triage\Tasks /E
robocopy C:\Windows\SysWOW64\Tasks C:\triage\SysWOW64Tasks /E
robocopy C:\Windows\Tasks C:\triage\LegacyTasks /E

reg save genera un hive limpio y coherente (no hacen falta logs aparte), pero funciona a través de la API del registro, así que es una acción sobre el sistema en vivo: anote la hora en el registro del caso. Robocopy conserva el árbol de carpetas, que necesita para las rutas de las tareas. Este método sirve para un triage; para evidencias que vaya a presentar, prefiera una imagen forense o un colector con acceso directo al disco.

Imágenes de disco

Monte la imagen en modo de solo lectura y exporte las mismas rutas. Busque también las Volume Shadow Copies: versiones anteriores de SOFTWARE y de la carpeta Tasks pueden mostrar cuándo apareció una tarea o qué aspecto tenía antes de ser modificada.

Problemas de acceso y ocultación en sistemas en vivo

  • Consultar con schtasks /query o con la consola no mostrará una tarea cuyo valor SD se haya eliminado, y puede no mostrar una con un descriptor restrictivo. Esa es precisamente la gracia de la técnica de Tarrask. La recogida de archivos y hives evita el problema.
  • Los administradores pueden leer los archivos XML, pero algunos tienen ACL restrictivas. Los colectores con acceso directo al disco evitan los huecos por acceso denegado; un simple copy puede omitir archivos sin avisar.
  • No abra la tarea en la consola "para echar un vistazo": guardar desde la consola reescribe el XML y la entrada de TaskCache.

Después de la recogida

Calcule el hash de todo, conserve el árbol original y anote la zona horaria de la máquina si puede obtenerla (de la clave TimeZoneInformation del hive SYSTEM o de sus notas de recogida). La necesitará para las horas XML sin zona, como se explica en anatomía del XML de una tarea. Después, pase al análisis: cómo analizar tareas programadas en el navegador.

Preguntas frecuentes

¿Dónde están los archivos de las tareas programadas en Windows 10 y 11?

Las definiciones de las tareas son archivos XML sin extensión en C:\Windows\System32\Tasks, dentro de subcarpetas que reproducen la ruta de la tarea. La copia en el registro está en el hive SOFTWARE, bajo Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache. Los archivos .job heredados, si los hay, están en C:\Windows\Tasks.

¿Necesito los logs de transacciones del registro?

Sí. Un hive SOFTWARE copiado de un sistema en marcha suele estar sucio (dirty): los cambios recientes, como una tarea recién registrada u ocultada, pueden seguir en SOFTWARE.LOG1 o SOFTWARE.LOG2. Recójalos junto con el hive y aplíquelos antes de sacar conclusiones.

¿Qué targets de KAPE recopilan las tareas programadas?

ScheduledTasks recopila las carpetas de XML, los archivos .job y SchedLgU.txt; RegistryHivesSystem recopila el hive SOFTWARE y sus logs de transacciones. Use ambos.

Artículos relacionados

Paso a paso: cargue XML de tareas, archivos .job y el hive SOFTWARE en un parser gratuito en el navegador, lea tareas ocultas, ajuste la zona horaria y exporte.
Lista práctica para detectar tareas programadas maliciosas: rutas escribibles, PowerShell codificado, LOLBins, SYSTEM, tareas ocultas y discrepancias XML/registro.
Cómo Tarrask ocultaba tareas programadas borrando el valor SD de TaskCache, las variantes con ACL de denegación e Index, y cómo hallarlas offline en el hive SOFTWARE.