# T1053.003 - Scheduled Task/Job: Cron ## Description from ATT&CK > Adversaries may abuse the cron utility to perform task scheduling for initial or recurring execution of malicious code.(Citation: 20 macOS Common Tools and Techniques) The cron utility is a time-based job scheduler for Unix-like operating systems. The crontab file contains the schedule of cron entries to be run and the specified times for execution. Any crontab files are stored in operating system-specific file paths. > > An adversary may use cron in Linux or Unix environments to execute programs at system startup or on a scheduled basis for [Persistence](https://attack.mitre.org/tactics/TA0003). In ESXi environments, cron jobs must be created directly via the crontab file (e.g., `/var/spool/cron/crontabs/root`).(Citation: CloudSEK ESXiArgs 2023) [Source](https://attack.mitre.org/techniques/T1053/003) ## Atomic Tests - [Atomic Test #1: Cron - Replace crontab with referenced file](#atomic-test-1-cron---replace-crontab-with-referenced-file) - [Atomic Test #2: Cron - Add script to all cron subfolders](#atomic-test-2-cron---add-script-to-all-cron-subfolders) - [Atomic Test #3: Cron - Add script to /etc/cron.d folder](#atomic-test-3-cron---add-script-to-etccrond-folder) - [Atomic Test #4: Cron - Add script to /var/spool/cron/crontabs/ folder](#atomic-test-4-cron---add-script-to-varspoolcroncrontabs-folder) ### Atomic Test #1: Cron - Replace crontab with referenced file This test replaces the current user's crontab file with the contents of the referenced file. This technique was used by numerous IoT automated exploitation attacks. **Supported Platforms:** Linux, macOS **auto_generated_guid:** `435057fb-74b1-410e-9403-d81baf194f75` #### Inputs | Name | Description | Type | Default Value | |------|-------------|------|---------------| | command | Command to execute | string | /tmp/evil.sh| | tmp_cron | Temporary reference file to hold evil cron schedule | path | /tmp/persistevil| #### Attack Commands: Run with `sh`! ```sh crontab -l > /tmp/notevil echo "* * * * * #{command}" > #{tmp_cron} && crontab #{tmp_cron} ``` #### Cleanup Commands ```sh crontab /tmp/notevil ``` ### Atomic Test #2: Cron - Add script to all cron subfolders This test adds a script to /etc/cron.hourly, /etc/cron.daily, /etc/cron.monthly and /etc/cron.weekly folders configured to execute on a schedule. This technique was used by the threat actor Rocke during the exploitation of Linux web servers. **Supported Platforms:** macOS, Linux **auto_generated_guid:** `b7d42afa-9086-4c8a-b7b0-8ea3faa6ebb0` #### Inputs | Name | Description | Type | Default Value | |------|-------------|------|---------------| | command | Command to execute | string | echo 'Hello from Atomic Red Team' > /tmp/atomic.log| | cron_script_name | Name of file to store in cron folder | string | persistevil| #### Attack Commands: Run with `bash`! Elevation Required (e.g. root or admin) ```bash echo "#{command}" > /etc/cron.daily/#{cron_script_name} echo "#{command}" > /etc/cron.hourly/#{cron_script_name} echo "#{command}" > /etc/cron.monthly/#{cron_script_name} echo "#{command}" > /etc/cron.weekly/#{cron_script_name} ``` #### Cleanup Commands ```bash rm /etc/cron.daily/#{cron_script_name} -f rm /etc/cron.hourly/#{cron_script_name} -f rm /etc/cron.monthly/#{cron_script_name} -f rm /etc/cron.weekly/#{cron_script_name} -f ``` ### Atomic Test #3: Cron - Add script to /etc/cron.d folder This test adds a script to /etc/cron.d folder configured to execute on a schedule. **Supported Platforms:** Linux **auto_generated_guid:** `078e69eb-d9fb-450e-b9d0-2e118217c846` #### Inputs | Name | Description | Type | Default Value | |------|-------------|------|---------------| | command | Command to execute | string | echo '*/5 * * * * root echo "Hello from Atomic Red Team"' > /tmp/atomic.log| | cron_script_name | Name of file to store in cron folder | string | persistevil| #### Attack Commands: Run with `sh`! Elevation Required (e.g. root or admin) ```sh echo "#{command}" > /etc/cron.d/#{cron_script_name} ``` #### Cleanup Commands ```sh rm /etc/cron.d/#{cron_script_name} -f ``` ### Atomic Test #4: Cron - Add script to /var/spool/cron/crontabs/ folder This test adds a script to a /var/spool/cron/crontabs folder configured to execute on a schedule. This technique was used by the threat actor Rocke during the exploitation of Linux web servers. **Supported Platforms:** Linux **auto_generated_guid:** `2d943c18-e74a-44bf-936f-25ade6cccab4` #### Inputs | Name | Description | Type | Default Value | |------|-------------|------|---------------| | command | Command to execute | string | echo 'Hello from Atomic Red Team' > /tmp/atomic.log| | cron_script_name | Name of file to store in /var/spool/cron/crontabs folder | string | persistevil| #### Attack Commands: Run with `bash`! Elevation Required (e.g. root or admin) ```bash echo "#{command}" >> /var/spool/cron/crontabs/#{cron_script_name} ``` #### Cleanup Commands ```bash rm /var/spool/cron/crontabs/#{cron_script_name} -f ```