This action executes Atomic Red Team tests and adversary emulation schedules directly on GitHub Actions runners with the help of the Invoke-AtomicRedTeam PowerShell framework. Linux, macOS, and Windows runners are supported.
Currently, the action exposes minimal configuration options for the Invoke-AtomicTest and Invoke-AtomicRunner
cmdlets used to execute tests and schedules. It primarily relies on the default settings and the default atomics
location (C:\AtomicRedTeam\atomics on Windows and ~/AtomicRedTeam/atomics on Linux/macOS). The action installs
Invoke-AtomicRedTeam from the PowerShell Gallery and downloads atomics from the Atomic Red Team GitHub repository if
they are not already present on the runner.
It's possible to customize the behavior of Invoke-AtomicRunner by placing a privateConfig.ps1 script in the
directory where the Invoke-AtomicRedTeam module is installed, as described in the
Invoke-AtomicRedTeam documentation.
Execution logs are uploaded to the GitHub Actions workflow run as artifacts upon successful completion.
-
techniqueID of the MITRE ATT&CK technique to execute. For example:
with: technique: T1033
- Type: string
- Optional (must be provided if the
adversary-emulationinput parameter is set to "false")
-
test-namesComma-separated list of Atomic Red Team test names to execute. For example:
with: technique: T1033 test-names: User Discovery With Env Vars PowerShell Script,GetCurrent User with PowerShell Script
- Type: string
- Optional
-
test-numbersComma-separated list of Atomic Red Team test numbers to execute. For example:
with: technique: T1033 test-numbers: 4,5
- Type: string
- Optional
-
test-guidsComma-separated list of Atomic Red Team test GUIDs to execute. For example:
with: technique: T1033 test-guids: dcb6cdee-1fb0-4087-8bf8-88cfd136ba51,1392bd0f-5d5a-429e-81d9-eb9d4d4d5b3b
- Type: string
- Optional
-
test-input-argsStringified JSON object containing the input arguments for the Atomic Red Team test. For example:
with: technique: T1140 test-guids: 356dc0e8-684f-4428-bb94-9313998ad608 test-input-args: '{"message":"hello world"}'
- Type: string
- Optional
-
logging-moduleName of the logging module to use for the Atomic Red Team test execution. For example:
with: technique: T1033 logging-module: Attire-ExecutionLogger
- Type: string
- Optional
- Default:
Default-ExecutionLogger
-
upload-log-artifactFlag to indicate whether to upload the execution logs as an artifact. For example:
with: technique: T1033 upload-log-artifact: false
- Type: string
- Optional
- Default:
true
-
log-artifact-nameName of the artifact containing the execution logs. For example:
with: technique: T1033 log-artifact-name: T1033-logs
If the action is executed more than once in the same workflow run, ensure this argument is set to a unique value for each execution to prevent artifact upload failures.
- Type: string
- Optional
- Default:
invoke-atomic-execution-logs
-
get-prereqsFlag to indicate whether to try to install the prerequisites for the Atomic Red Team tests. For example:
with: technique: T1033 get-prereqs: false
- Type: string
- Optional
- Default:
true
-
cleanupFlag to indicate whether to clean up the Atomic Red Team test artifacts after execution. For example:
with: technique: T1033 cleanup: false
- Type: string
- Optional
- Default:
true
-
adversary-emulationFlag to indicate whether to execute an adversary emulation schedule instead of a single Atomic Red Team test.
- Type: string
- Optional
- Default:
false
-
list-of-atomicsPath to the CSV schedule file containing the list of Atomic Red Team tests to execute. For example:
with: adversary-emulation: true list-of-atomics: ./IcedID.csv
- Type: string
- Optional (must be provided if the
adversary-emulationinput parameter is set to "true")
name: Run Atomic Red Team Test
on:
pull_request:
branches:
- main
workflow_dispatch:
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: smolse/invoke-atomic-action@main
with:
technique: T1033
test-numbers: 2name: Run Adversary Emulation
on:
pull_request:
branches:
- main
workflow_dispatch:
jobs:
adversary-emulation:
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: smolse/invoke-atomic-action@main
with:
adversary-emulation: true
list-of-atomics: ./IcedID.csv