Detection rules › Sigma

Azure Kubernetes CronJob

Status
test
Severity
medium
Log source
product azure, service activitylogs
Author
Austin Songer @austinsonger
Source
github.com/SigmaHQ/sigma

Identifies when a Azure Kubernetes CronJob runs in Azure Cloud. Kubernetes Job is a controller that creates one or more pods and ensures that a specified number of them successfully terminate. Kubernetes Job can be used to run containers that perform finite tasks for batch jobs. Kubernetes CronJob is used to schedule Jobs. An Adversary may use Kubernetes CronJob for scheduling execution of malicious code that would run as a container in the cluster.

Known false positives

  • Azure Kubernetes CronJob/Job may be done by a system administrator.
  • If known behavior is causing false positives, it can be exempted from the rule.

MITRE ATT&CK coverage

Rule body

title: Azure Kubernetes CronJob
id: 1c71e254-6655-42c1-b2d6-5e4718d7fc0a
status: test
description: |
  Identifies when a Azure Kubernetes CronJob runs in Azure Cloud. Kubernetes Job is a controller that creates one or more pods and ensures that a specified number of them successfully terminate.
  Kubernetes Job can be used to run containers that perform finite tasks for batch jobs. Kubernetes CronJob is used to schedule Jobs.
  An Adversary may use Kubernetes CronJob for scheduling execution of malicious code that would run as a container in the cluster.
references:
    - https://learn.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftkubernetes
    - https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/
    - https://kubernetes.io/docs/concepts/workloads/controllers/job/
    - https://www.microsoft.com/security/blog/2020/04/02/attack-matrix-kubernetes/
author: Austin Songer @austinsonger
date: 2021-11-22
modified: 2022-12-18
tags:
    - attack.persistence
    - attack.t1053.003
    - attack.privilege-escalation
    - attack.execution
logsource:
    product: azure
    service: activitylogs
detection:
    selection:
        operationName|startswith:
            - 'MICROSOFT.KUBERNETES/CONNECTEDCLUSTERS/BATCH'
            - 'MICROSOFT.CONTAINERSERVICE/MANAGEDCLUSTERS/BATCH'
        operationName|endswith:
            - '/CRONJOBS/WRITE'
            - '/JOBS/WRITE'
    condition: selection
falsepositives:
    - Azure Kubernetes CronJob/Job may be done by a system administrator.
    - If known behavior is causing false positives, it can be exempted from the rule.
level: medium

Stages and Predicates

Stage 0: condition

selection

Stage 1: selection

selection:
    operationName|startswith:
        - 'MICROSOFT.KUBERNETES/CONNECTEDCLUSTERS/BATCH'
        - 'MICROSOFT.CONTAINERSERVICE/MANAGEDCLUSTERS/BATCH'
    operationName|endswith:
        - '/CRONJOBS/WRITE'
        - '/JOBS/WRITE'

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
operationNameends_with
  • /CRONJOBS/WRITE
  • /JOBS/WRITE
field:"operationName" kind:ends_with
operationNamestarts_with
  • MICROSOFT.CONTAINERSERVICE/MANAGEDCLUSTERS/BATCH
  • MICROSOFT.KUBERNETES/CONNECTEDCLUSTERS/BATCH
field:"operationName" kind:starts_with