Aracılığıyla paylaş


Gelişmiş avcılıkta Kubeaudit olayları

Kubernetes Kubeaudit olayları (ve Azure Resource Manager bulut denetimi) Microsoft Defender portalında gelişmiş tehdit avcılığında kullanılabilir.

Kubernetes kontrol düzlemi saldırı yüzeyinizde ve Azure Kaynak Yönetimi'nizde gerçekleşen olayları önceliklendirmek ve araştırmak için kullanabilirsiniz. Ayrıca gelişmiş avcılığı kullanarak tehditleri proaktif olarak avlayabilirsiniz.

Ayrıca, şüpheli Resource Manager ve Kubernetes (KubeAudit) denetim düzlemi etkinlikleri için özel algılamalar oluşturabilirsiniz.

Bu özellik şunları kapsar:

  • Azure (Azure Kubernetes Service), Amazon Web Services (Amazon Elastic Kubernetes Service), Google Cloud Platform (Google Kubernetes Engine) ve şirket içinden Kubernetes KubeAudit olayları

  • Resource Manager denetim düzlemi olayları

Başlamak için CloudAuditEvents adlı gelişmiş avlanmada Şema sekmesine eklenen yeni tabloya bakın.

Gelişmiş avlanmada Şema sekmesindeki CloudAuditEvents tablosunun ekran görüntüsü.

Yaygın kullanım örnekleri ve senaryolar

  • XDR gelişmiş avcılığında şüpheli Resource Manager ve Kubernetes (Kubeaudit) kontrol düzlemi etkinliklerini araştırma
  • Şüpheli Resource Manager ve Kubernetes (Kubeaudit) denetim düzlemi etkinlikleri için özel algılamalar oluşturma

Önkoşullar

  • Kubernetes olayları için: Kapsayıcılar için Defender planı etkinleştirilmiş en az bir aboneliğe ihtiyacınız vardır
  • Azure Resource Manager olayları için: Azure Resource Manager için Defender planı etkinleştirilmiş en az bir aboneliğe ihtiyacınız vardır

Örnek sorgular

Ayrıcalıklı bir podun dağıtımını ortaya çıkarabilmek için aşağıdaki örnek sorguyu kullanın:

CloudAuditEvents
| where Timestamp > ago(1d)
| where DataSource == "Azure Kubernetes Service"
| where OperationName == "create"
| where RawEventData.ObjectRef.resource == "pods" and isnull(RawEventData.ObjectRef.subresource)
| where RawEventData.ResponseStatus.code startswith "20"
| extend PodName = RawEventData.RequestObject.metadata.name
| extend PodNamespace = RawEventData.ObjectRef.namespace
| mv-expand Container = RawEventData.RequestObject.spec.containers
| extend ContainerName = Container.name
| where Container.securityContext.privileged == "true"
| extend Username = RawEventData.User.username
| project Timestamp, AzureResourceId , OperationName, IPAddress, UserAgent, PodName, PodNamespace, ContainerName, Username

kube-system ad alanında exec komutunu ortaya çıkarabilmek için aşağıdaki örnek sorguyu kullanın:

CloudAuditEvents
| where Timestamp > ago(1d)
| where DataSource == "Azure Kubernetes Service"
| where OperationName == "create"
| where RawEventData.ObjectRef.resource == "pods" and RawEventData.ResponseStatus.code == 101  
| where RawEventData.ObjectRef.namespace == "kube-system"
| where RawEventData.ObjectRef.subresource == "exec"
| where RawEventData.ResponseStatus.code == 101
| extend RequestURI = tostring(RawEventData.RequestURI)
| extend PodName = tostring(RawEventData.ObjectRef.name)
| extend PodNamespace = tostring(RawEventData.ObjectRef.namespace)
| extend Username = tostring(RawEventData.User.username)
| where PodName !startswith "tunnelfront-" and PodName !startswith "konnectivity-" and PodName !startswith "aks-link"
| extend Commands =  extract_all(@"command=([^\&]*)", RequestURI)
| extend ParsedCommand = url_decode(strcat_array(Commands, " "))
| project Timestamp, AzureResourceId , OperationName, IPAddress, UserAgent, PodName, PodNamespace,  Username, ParsedCommand

Küme yöneticisi rol bağlamasının oluşturulmasını belirlemek için aşağıdaki örnek sorguyu kullanın:

CloudAuditEvents
| where Timestamp > ago(1d)
| where OperationName == "create"
| where RawEventData.ObjectRef.resource == "clusterrolebindings"
| where RawEventData.ResponseStatus.code startswith "20"
| where RawEventData.RequestObject.roleRef.name == "cluster-admin"
| mv-expand Subject = RawEventData.RequestObject.subjects
| extend SubjectName = tostring(Subject.name)
| extend SubjectKind = tostring(Subject["kind"]) 
| extend BindingName = tostring(RawEventData.ObjectRef.name)
| extend ActionTakenBy = tostring(RawEventData.User.username)
| where ActionTakenBy != "acsService" //Remove FP
| project Timestamp, AzureResourceId , OperationName, ActionTakenBy, IPAddress, UserAgent, BindingName, SubjectName, SubjectKind