Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitHubGitHub/netero1010/schedulerunner
Mecanismos de PersistenciaEvasión de IDS/IPSMovimiento LateralPost-ExplotaciónRed Teaming
GitHubnetero1010/schedulerunner

ScheduleRunner

Una herramienta en C# con mayor flexibilidad para personalizar tareas programadas tanto para persistencia como para movimiento lateral en operaciones de equipo rojo.

Ver Repositorio
347485hace 1 añoRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

ScheduleRunner - Una herramienta C# con mayor flexibilidad para personalizar tareas programadas tanto para persistencia como para movimiento lateral en operaciones de red team


La tarea programada es una de las técnicas de ataque más populares en la última década y aún hoy es utilizada comúnmente por hackers/red teamers para persistencia y movimiento lateral.

Ya se han desarrollado varias herramientas en C# para simular el ataque mediante tareas programadas. He estado probando algunas de ellas, pero cada una tiene sus propias limitaciones a la hora de personalizar la tarea programada. Por lo tanto, este proyecto pretende ofrecer una herramienta en C# (compatible con execute-assembly de CobaltStrike) que incluya las funcionalidades que necesito y proporcione suficiente flexibilidad para personalizar la tarea programada.

Screenshot:

HowTo

Métodos (/method):

MétodoFunción
createCrear una nueva tarea programada
deleteEliminar una tarea programada existente
runEjecutar una tarea programada existente
queryConsultar detalles de una tarea programada o de todas las tareas programadas bajo una carpeta
queryfoldersConsultar todas las subcarpetas en la tarea programada
moveRealizar movimiento lateral usando tarea programada (crear, ejecutar y eliminar automáticamente)

Opciones para la creación de tareas programadas (/method:create):

[*] son campos obligatorios.

Opciones para la eliminación de tareas programadas (/method:delete):

[*] son campos obligatorios.

Opciones para la ejecución de tareas programadas (/method:run):

MétodoFunción
[*] /tasknameEspecificar el nombre de la tarea programada
/folderEspecificar la carpeta donde se almacena la tarea programada (predeterminado: \)
/remoteserverEspecificar el nombre de host o dirección IP de un equipo remoto

[*] son campos obligatorios.

Opciones para la consulta de tareas programadas (/method:query):

MétodoFunción
/tasknameEspecificar el nombre de la tarea programada
/folderEspecificar la carpeta donde se almacena la tarea programada (predeterminado: \)
/remoteserverEspecificar el nombre de host o dirección IP de un equipo remoto

[*] son campos obligatorios.

Opciones para el movimiento lateral mediante tareas programadas (/method:move):

[*] son campos obligatorios.

Ejemplo

Crear una tarea programada llamada "Cleanup" que se ejecutará todos los días a las 23:30.

ScheduleRunner.exe /method:create /taskname:Cleanup /trigger:daily /starttime:23:30 /program:calc.exe /description:"Some description" /author:netero1010

Crear una tarea programada llamada "Cleanup" que se ejecutará cada 4 horas en un servidor remoto

ScheduleRunner.exe /method:create /taskname:Cleanup /trigger:hourly /modifier:4 /program:rundll32.exe /argument:c:\temp\payload.dll /remoteserver:TARGET-PC01

Eliminar una tarea programada llamada "Cleanup"

ScheduleRunner.exe /method:delete /taskname:Cleanup

Ejecutar una tarea programada llamada "Cleanup"

ScheduleRunner.exe /method:run /taskname:Cleanup

Consultar detalles de una tarea programada llamada "Cleanup" bajo la carpeta "\Microsoft\Windows\CertificateServicesClient" en un servidor remoto

ScheduleRunner.exe /method:query /taskname:Cleanup /folder:\Microsoft\Windows\CertificateServicesClient /remoteserver:TARGET-PC01

Consultar todas las tareas programadas bajo una carpeta específica "\Microsoft\Windows\CertificateServicesClient" en un servidor remoto

ScheduleRunner.exe /method:query /folder:\Microsoft\Windows\CertificateServicesClient /remoteserver:TARGET-PC01

Consultar todas las subcarpetas en la tarea programada

ScheduleRunner.exe /method:queryfolders

Realizar movimiento lateral mediante tarea programada a un servidor remoto usando una cuenta de usuario específica

ScheduleRunner.exe /method:move /taskname:Demo /remoteserver:TARGET-PC01 /program:rundll32.exe /argument:c:\temp\payload.dll /user:netero1010

Crear una tarea programada llamada "Cleanup" usando la técnica de ocultar tarea programada:

ScheduleRunner.exe /method:create /taskname:Cleanup /trigger:daily /starttime:23:30 /program:calc.exe /description:"Some description" /author:netero1010 /technique:hide

Eliminar una tarea programada llamada "Cleanup" que usó la técnica de ocultar tarea programada:

ScheduleRunner.exe /method:delete /taskname:Cleanup /technique:hide

Técnica de ocultar tarea programada

Esta técnica fue utilizada por el actor de amenazas HAFNIUM y descubierta recientemente por Microsoft. Su objetivo es hacer que la tarea programada no se pueda consultar mediante herramientas y que no sea visible en el Programador de tareas.

Para usar esta técnica, se requiere tener "NT AUTHORITY/SYSTEM" y ScheduleRunner hará lo siguiente por usted:

  1. Eliminar el valor "SD" de "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\[nombre de la tarea]"
  2. Eliminar el archivo XML de la tarea programada "C:\Windows\System32\Tasks\[nombre de la tarea]"

Para eliminar una tarea programada creada con esta técnica, es necesario agregar "/technique:hide" en el método de eliminación para eliminarla correctamente.

Desventaja de esta técnica:

La tarea continuará ejecutándose hasta el próximo reinicio del sistema incluso si se elimina mediante el registro. Por lo tanto, es mejor no usar esta técnica en servidores para su operación.

Demo

HowTo

Biblioteca y referencias utilizadas:

BibliotecaEnlace
TaskSchedulerhttps://github.com/dahall/TaskScheduler
ReferenciaEnlace
SharpPersisthttps://github.com/mandiant/SharPersist
Técnica de ocultar tarea programadahttps://www.microsoft.com/security/blog/2022/04/12/tarrask-malware-uses-scheduled-tasks-for-defense-evasion/
Descargar herramienta
MétodoFunción
[*] /tasknameEspecificar el nombre de la tarea programada
[*] /programEspecificar el programa que ejecuta la tarea
[*] /triggerEspecificar el tipo de programación. Los valores válidos incluyen: "minute", "hourly", "daily", "weekly", "onstart", "onlogon" y "onidle"
/modifierEspecificar la frecuencia con la que se ejecuta la tarea dentro de su tipo de programación. Aplicable solo para tipos de programación como "minute" (ej., 1-1439 minutos), "hourly" (ej., 1-23 horas) y "weekly" (ej., lun,sáb,dom)
/starttimeEspecificar la hora de inicio para el tipo de programación diaria (ej., 23:30)
/argumentEspecificar el argumento de línea de comandos para el programa
/folderEspecificar la carpeta donde se almacena la tarea programada (predeterminado: \)
/workingdirEspecificar el directorio de trabajo en el que se ejecutará la tarea programada
/authorEspecificar el autor de la tarea programada
/descriptionEspecificar la descripción de la tarea programada
/remoteserverEspecificar el nombre de host o dirección IP de un equipo remoto
/userEjecutar la tarea con una cuenta de usuario especificada
/techniqueEspecificar técnica de evasión:
- "hide": Una técnica utilizada por el malware HAFNIUM que oculta la tarea programada de la consulta de tareas

[!] https://www.microsoft.com/security/blog/2022/04/12/tarrask-malware-uses-scheduled-tasks-for-defense-evasion/
[!] Esta técnica no soporta ejecución remota debido a privilegios del registro remoto. Requiere "NT AUTHORITY\SYSTEM" y la tarea continuará ejecutándose hasta el reinicio del sistema incluso después de eliminar la tarea
MétodoFunción
[*] /tasknameEspecificar el nombre de la tarea programada
/folderEspecificar la carpeta donde se almacena la tarea programada (predeterminado: \)
/remoteserverEspecificar el nombre de host o dirección IP de un equipo remoto
/techniqueEspecificar si la tarea programada fue creada usando técnica de evasión:
- "hide": Eliminar tarea programada que usó la técnica de "ocultar tarea programada"

[!] La eliminación requiere "NT AUTHORITY\SYSTEM" y la tarea continuará ejecutándose hasta el reinicio del sistema incluso después de eliminar la tarea
MétodoFunción
[*] /tasknameEspecificar el nombre de la tarea programada
[*] /programEspecificar el programa que ejecuta la tarea
[*] /remoteserverEspecificar el nombre de host o dirección IP de un equipo remoto
/triggerEspecificar el tipo de programación. Los valores válidos incluyen: "minute", "hourly", "daily", "weekly", "onstart", "onlogon" y "onidle"
/modifierEspecificar la frecuencia con la que se ejecuta la tarea dentro de su tipo de programación. Aplicable solo para tipos de programación como "minute" (ej., 1-1439 minutos), "hourly" (ej., 1-23 horas) y "weekly" (ej., lun,sáb,dom)
/starttimeEspecificar la hora de inicio para el tipo de programación diaria (ej., 23:30)
/argumentEspecificar el argumento de línea de comandos para el programa
/folderEspecificar la carpeta donde se almacena la tarea programada (predeterminado: \)
/workingdirEspecificar el directorio de trabajo en el que se ejecutará la tarea programada
/authorEspecificar el autor de la tarea programada
/descriptionEspecificar la descripción de la tarea programada
/userEjecutar la tarea con una cuenta de usuario especificada