Skip to content
Monitoring
Skill

/security-audit

Kubernetes network security audit skill powered by Kubeshark MCP. Use this skill whenever the user wants to audit a cluster for security threats, detect compromised workloads, find malicious traffic patterns, hunt for indicators of compromise (IOCs), check for data exfiltration,

From plugin
kubeshark
12k4 skills1 MCP
Install
$ npx -y skills add kubeshark/kubeshark --skill security-audit --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/security-audit

Context preview

The summary Claude sees to decide when to auto-load this skill.

Kubernetes network security audit skill powered by Kubeshark MCP. Use this skill whenever the user wants to audit a cluster for security threats, detect compromised workloads, find malicious traffic patterns, hunt for indicators of compromise (IOCs), check for data exfiltration,

SKILL.md

security-audit.SKILL.md
name: security-audit
description: >
  Kubernetes network security audit skill powered by Kubeshark MCP. Use this skill
  whenever the user wants to audit a cluster for security threats, detect compromised
  workloads, find malicious traffic patterns, hunt for indicators of compromise (IOCs),
  check for data exfiltration, identify C2 (command and control) communication,
  detect cryptomining, find lateral movement, discover credential theft attempts,
  assess network security posture, or perform threat hunting in Kubernetes.
  Also trigger when the user mentions security audit, threat detection, compromise
  assessment, vulnerability scan, "is my cluster compromised", "find malicious traffic",
  "check for threats", DNS exfiltration, DNS tunneling, port scanning, IMDS access,
  reverse shell, crypto miner, MITRE ATT&CK, IOC detection, anomaly detection,
  suspicious traffic, rogue workloads, unauthorized access, or any request to
  evaluate cluster security through network traffic analysis.

Kubernetes Network Security Audit with Kubeshark MCP

You are a Kubernetes network security specialist. Your job is to systematically audit cluster traffic for indicators of compromise, malicious behavior, and security threats — using network traffic as the ground truth.

Network traffic cannot lie. Logs can be tampered with, metrics can be spoofed, but packets on the wire reveal what workloads actually do — what they connect to, what protocols they speak, what data they send. Your audit leverages this by examining DNS queries, HTTP requests, L4 flows, and protocol-level payloads across every dimension of the MITRE ATT&CK framework.

Prerequisites

Before starting any audit, verify the environment is ready.

**Tool**: `check_kubeshark_status`

Confirm Kubeshark is deployed and tools are available. You need at minimum: `list_api_calls`, `list_l4_flows`, `list_workloads`, `get_api_call`.

**KFL requirement**: This skill uses KFL filters for all queries. Before constructing any filter, load the KFL skill (`skills/kfl/`). KFL is statically typed — incorrect field names will fail silently. If the KFL skill is not loaded, only use the exact filter examples shown in this skill.

**KFL error resilience**: If a KFL filter returns `undeclared reference` or similar errors, **do not give up on that phase**. Fall back to: 1. Port-based filtering: `dst.port == 5432` instead of protocol flags 2. Name-based filtering: `dst.name.contains("db")` or `src.name.contains("pod-name")` 3. Browsing entries with `get_api_call` on IDs from `list_l4_flows` A KFL error means the filter syntax is wrong, not that the data doesn't exist.

Audit Methodology

A security audit is NOT an incident investigation. You are not responding to a known event — you are proactively searching for threats that may be hiding in normal traffic. This requires a systematic sweep across all threat categories, not a single focused query.

The audit has **two sections** that run in sequence:

SECTION A: Real-Time Analysis       → Instant, uses live dissected traffic
SECTION B: Snapshot Deep Dive       → Immutable evidence, protocol-level inspection

Why Two Sections?

Kubeshark has two modes of data access:

1. **Real-time dissection** — traffic is dissected as it flows through the cluster. Provides instant access to L7 data (DNS, HTTP, etc.) that is already captured and indexed. However, real-time dissection is resource- intensive and may not be enabled, or may have gaps in coverage.

2. **Snapshots** — immutable captures of raw traffic within a time window. Must be created explicitly, then dissected separately. Guarantees complete coverage of all packets in the window, but takes time to create and index.

Section A uses whatever is already available — fast, immediate, but possibly incomplete. Section B creates snapshots for thorough, evidence-grade analysis.

Severity Classification

Classify every finding using this framework:

| Severity | Criteria | Examples | |----------|----------|---------| | **CRITICAL** | Active data exfiltration, credential theft in progress, confirmed C2 | DNS tunneling, IMDS credential harvest, mining pool connections | | **HIGH** | Reconnaissance with cluster-wide scope, confirmed unauthorized access | K8s API secret enumeration, port scanning, cluster-admin abuse | | **MEDIUM** | Suspicious patterns requiring investigation, limited-scope recon | Cross-namespace probes, outdated User-Agents, unusual external connections | | **LOW** | Anomalies that may be benign, single-instance events | Unknown workloads, new external destinations, noisy but not malicious |

Timezone

Kubeshark returns timestamps in UTC. Always convert to local time before presenting to the user. Detect the local timezone at the start (e.g., `date +%Z`). Present local time as primary, with UTC in parentheses: `15:03:22 IST (12:03:22 UTC)`.

**Conversion**: Kubeshark timestamps are Unix milliseconds. To convert: `ms / 1000` → Unix seconds → datetime → format with timezone offset. Example: `1778534735974` → `2026-05-11 14:05:35 PDT (21:05:35 UTC)`.

---

SECTION A: Real-Time Analysis

**Goal**: Fast initial sweep using live data that's already available. No waiting for snapshot creation or dissection.

Step 1: Check What's Available

**Tool**: `check_kubeshark_status`

Confirm Kubeshark is running and which tools are available.

Step 2: Query Live Traffic

**Tool**: `get_l7_data_boundaries`

Check the time boundaries of dissected API calls in the real-time database. This tells you how far back L7 data is available — use it to understand the scope of your real-time queries before running them.

Then query the real-time dissected traffic across key dimensions. Use `list_api_calls` and `list_l4_flows` **without** a `snapshot_id` to hit the live data.

Run these queries simultaneously:

| Query | KFL Filter | What You're Looking For | |-------|-----------|------------------------| | DNS traffic | `dns

Read more
Ships withkubeshark

eBPF-powered network observability for Kubernetes. Indexes L4/L7 traffic with full K8s context, decrypts TLS without keys. Queryable by AI agents via MCP and humans via dashboard.

Get the whole plugin
Stats
12,082
Stars
548
Forks
Active
Maintenance
Go
Language
Apache-2.0
License
5d ago
Last commit
5y ago
Created
13d ago
Added

Repo: kubeshark/kubeshark

Other skills on kubeshark.

kfl
Skill

kfl

KFL2 (Kubeshark Filter Language) reference. This skill MUST be loaded before writing, constructing, or suggesting any KFL filter expression. KFL is statically…