Skip to content

Services, Wiki-Artikel, Blog-Beiträge und Glossar-Einträge durchsuchen

↑↓NavigierenEnterÖffnenESCSchließen

SOAR: Security Orchestration, Automation and Response implementieren

Security Orchestration, Automation, and Response (SOAR) automates repetitive SOC tasks and reduces the Mean Time to Respond (MTTR) from hours to minutes. This guide explains SOAR architecture and platforms (Splunk SOAR, Microsoft Sentinel, Palo Alto XSOAR, TheHive), how to create playbooks for common incidents (phishing, malware, credential compromise), and how to integrate SOAR with SIEM, EDR, and ticketing systems.

Table of Contents (4 sections)

A well-functioning SOC team is inundated with alerts every day—phishing reports, EDR alerts, SIEM correlations. SOAR (Security Orchestration, Automation, and Response) automates the repetitive tasks: analyzing email headers, checking reputation, creating tickets, and notifying users. What used to take 45 minutes now takes 45 seconds with SOAR. The SOC team can focus on real threats.

SOAR Architecture

SOAR System Components:

Orchestration (connection layer):
  → Connects all security tools via APIs
  → Normalization: various formats → unified data model
  → Bidirectional: SOAR can control tools (not just read them)
  Integrations: SIEM, EDR, firewall, email gateway, TI feeds, CMDB, ITSM

Automation (Playbooks):
  → Predefined workflows for common incidents
  → Triggers: SIEM alert, incoming email, manual start
  → Actions: Analyze files, block IP, deactivate user, create ticket

Response:
  → Automated Response: automatic actions without an analyst
  → Analyst-in-the-Loop: System makes a recommendation → Analyst approves
  → Case Management: all incident data collected in a single case

Typical SOAR data flow:
  Alert (SIEM/EDR) → SOAR trigger
    → Enrichment (TI, WHOIS, GeoIP, CMDB)
    → Triage (severity, asset criticality)
    → Auto-response OR analyst task
    → Ticket (ServiceNow/Jira) + Documentation
    → Closure + Lessons-Learned Feed

SOAR Platforms

Microsoft Sentinel (Azure Playbooks):

  Basis: Azure Logic Apps (Low-Code/No-Code Workflows)
  Strengths: Native M365 integration, affordable for Azure customers
  Price: Pay-per-execution (cost-effective for low to medium usage)

  Playbook example (JSON Logic App):
  {
    "triggers": {
      "When_a_response_to_an_Azure_Sentinel_alert_is_triggered": {}
    },
    "actions": {
      "Get_account_info": {
        "type": "ApiConnection",
        "inputs": {
          "host": {"connection": {"name": "@parameters('$connections')['azuread']"}},
          "method": "get",
          "path": "/v1.0/users/@{triggerBody()?['Entities']?[0]?['Name']}"
        }
      },
      "Condition_high_severity": {
        "type": "If",
        "expression": {
          "equals": ["@triggerBody()?['Severity']", "High"]
        },
        "actions": {
          "Disable_user": {...},
          "Create_incident": {...},
          "Notify_security_team": {...}
        }
      }
    }
  }

  Ready-made playbooks (Community):
  → Azure Sentinel GitHub: 400+ ready-made playbooks
  → Phishing: Automatically delete email from inbox
  → MDE: Isolate endpoint on critical alert
  → Entra ID: Disable user on credential compromise

---

Splunk SOAR (formerly Phantom):

  Strengths: Market leader, Python-based custom apps, most comprehensive integration
  Cost: Expensive (Enterprise), but free Community Edition
  Strengths: Code-first playbooks, 500+ connector apps

  Python playbook example:
  def phishing_triage(action=None, success=None, container=None,
                      results=None, handle=None, **kwargs):
      """Automatic phishing triage playbook"""

      # 1. Retrieve email headers from alert
      sender = container.get('data', {}).get('from_address')
      subject = container.get('data', {}).get('email_subject')
      urls = container.get('data', {}).get('urls', [])

      # 2. Check IP reputation
      phantom.act('ip reputation', parameters=[{'ip': sender_ip}],
                  assets=['virustotal'],
                  callback=check_reputation)

      # 3. Check URL reputation
      for url in urls:
          phantom.act('url reputation', parameters=[{'url': url}],
                      assets=['urlvoid'],
                      callback=check_url_rep)

      # 4. Header analysis
      phantom.act('analyze email headers', parameters=[{...}],
                  assets=['mail_listener'],
                  callback=header_analysis_callback)

  def check_reputation(action=None, success=None, results=None, **kwargs):
      score = results[0].get('data', {}).get('positives', 0)
      if score > 5:  # VirusTotal: > 5 engines flag IP
          # Critical: Auto-Block + High-Priority Alert
          phantom.act('block ip', parameters=[{'ip': results[0]['ip']}],
                      assets=['fortigate_firewall'])
          phantom.severity(container=container, severity='high')

---

Palo Alto XSOAR (Cortex XSOAR):

  Strengths: Most comprehensive out-of-the-box playbooks, powerful visualization
  Special feature: War Room – collaborative incident response interface
  Integrations: 1000+ pre-built integrations

  YAML Playbook Structure:
  id: phishing-investigation
  name: Phishing Investigation
  starttaskid: "0"
  tasks:
    "0":
      id: "0"
      taskid: start
      type: start
      nexttasks:
        '#none#': ["1"]
    "1":
      id: "1"
      task:
        id: get-indicators
        name: Extract Indicators from Email
        type: playbook
        playbookId: Extract Indicators - Generic v2
      nexttasks:
        '#none#': ["2"]
    "2":
      id: "2"
      task:
        id: check-reputation
        name: Check Reputation
        script: VirusTotal|||file
        scriptarguments:
          file: ${ExtractedIndicators.File}
      nexttasks:
        malicious: ["3"]
        clean: ["4"]

---

TheHive + Cortex (Open Source Stack):

  Cost: Free (Community), Enterprise support optional
  Strengths: FOSS, fully customizable, GDPR-compliant (on-premise)
  Stack: TheHive (Case Management) + Cortex (Automation) + MISP (TI)

  Python Cortex Analyzer:
  class VirusTotalAnalyzer(Analyzer):
      def run(self):
          data = self.get_data()
          vt = VirusTotal(api_key=self.get_param('config.key'))
          result = vt.get_file_report(data)

          if result['positives'] > 5:
              self.report({
                  'summary': f"{result['positives']}/{result['total']} detected",
                  'level': 'malicious',
                  'taxonomies': [
                      self.build_taxonomy('malicious', 'VirusTotal',
                                          'Score', str(result['positives']))
                  ]
              })
          else:
              self.report({'level': 'safe'})

Playbook Design for Common Incidents

Playbook 1: Phishing Response

Trigger: User reports suspicious email
(via "Report Phishing" button in Outlook → O365 API → SOAR)

Step 1 - Automatic Analysis (0-30 seconds):
  → Extract email headers (From, Reply-To, Received)
  → Check SPF/DKIM/DMARC → Fail = +Risk
  → Extract URLs → URLVoid/VirusTotal Reputation
  → Hash attachments → VirusTotal File Hash Check
  → Sender IP → AbuseIPDB + GeoIP
  → Domain age (whois) → New domain < 30 days = +Risk

Step 2 - Triage decision:
  Risk Score < 30: Benign → Notify user + Close
  Risk Score 30-70: Analyst review required (Ticket + Queue)
  Risk Score > 70: Malicious → Automated Response!

Step 3 - Automated Response (for Score > 70):
  □ Delete email from ALL mailboxes (O365: Remove-MailboxMessage)
  □ Block sender domain (Email Gateway API)
  □ Block URLs (proxy/DNS filter via API)
  □ Create ticket (ServiceNow/Jira) with all findings
  □ Notify analyst (Teams/email)
  □ SIEM correlation: other recipients of this email?
  □ Update TI feed: IOCs (domain, URL, hash) in MISP

Step 4 - Analyst Actions (for scores 30-70):
  □ War Room / Case: all data in a single view
  □ One-Click Actions: "Confirm Malicious" → Execute Step 3
  □ "Mark as Benign" → Close + Update training data

---

Playbook 2: Credential Compromise Response

Trigger: SIEM Alert: User login from an unknown country
         OR: EDR Alert: mimikatz/credential dumping

Step 1 - Risk Assessment (automatic):
  → User Profile: normal login locations, normal working hours
  → Asset Criticality: regular user vs. admin vs. service account
  → Concurrent Sessions: is the user logged in elsewhere at the same time?
  → Recent Indicators: has this user appeared in other alerts?

Step 2 - Automatic Actions (high risk):
  □ Entra ID: Revoke user session (Revoke-AzureADUserAllRefreshToken)
  □ MFA: Forced MFA re-enrollment
  □ Conditional Access: Temporary block until analyst approves
  □ AD: Optional - Temporarily disable account
  □ Teams notification: Security team + user’s manager

Step 3 - Analyst Approval:
  □ "Confirm + Lock Account" → AD deactivation + reset
  □ "Confirm + Normal Processes" → Session revocation alone is sufficient
  □ "False Positive" → Add to allowlist for this IP/region

---

Playbook 3: Ransomware Detection

Trigger: EDR Alert: Mass File Encryption
         OR: SIEM: Many file changes in a short period of time

Step 1 - Immediate Actions (AUTOMATED, < 60 seconds):
  □ Isolate endpoint (EDR API: Network Isolation)
  □ Disable user account (AD API)
  □ Notify CISO + Management (Email + SMS)
  □ Create incident ticket (P1 - highest priority)
  □ Activate business continuity plan (document link in ticket)

Step 2 - Forensic Support:
  □ Export EDR timeline (last 48 hours of activity)
  □ Back up endpoint network flows (last 24 hours)
  □ All other endpoints: Search for same indicators
  □ Check backup status: Last good backup? (CMDB API)

Step 3 - Containment Assessment:
  → Has ransomware moved laterally? (Network flows)
  → Which file servers did the endpoint access?
  → Isolate other affected endpoints (bulk action)

SOAR Integration and Metrics

Technical Integration:

API Webhooks (SIEM → SOAR):
  # Sentinel → Logic App Webhook:
  POST https://prod-XX.eastus.logic.azure.com:443/workflows/.../triggers/manual/paths/invoke
  {
    "AlertName": "Suspicious PowerShell",
    "Severity": "High",
    "Entities": [{
      "Type": "Account",
      "Name": "john.doe@firma.de"
    }],
    "Description": "Encoded Command detected"
  }

SOAR → ITSM (ServiceNow):
  # ServiceNow Table API:
  POST https://instance.service-now.com/api/now/table/incident
  Authorization: Basic base64(user:pass)
  {
    "short_description": "Security Incident: Phishing Campaign",
    "priority": "1",
    "category": "security",
    "assignment_group": "Security Operations",
    "work_notes": "Automated triage: Score=85, URLs blocked, Email deleted"
  }

Bidirectional SIEM integration:
  → Alert from SIEM → Launch SOAR playbook
  → SOAR actions → Write back to SIEM alert as notes
  → Closure in SOAR → Automatically close SIEM alert

---

SOAR success metrics:

Before SOAR implementation:
  MTTR (Phishing):        45 minutes (manual)
  Alerts per day:          200 (50% of which are false positives)
  Analyst time spent on triage: 30% of working hours

After SOAR implementation:
  MTTR (phishing):        < 2 minutes (automation)
  Alert processing rate:  +300% (more alerts processed in the same amount of time)
  Analyst focus:           critical incidents instead of routine triage

KPIs:
  Automation rate:         % of alerts fully automated
  False positive rate:     should decrease (SOAR learns from feedback)
  MTTR per incident type:   separate measurement per playbook
  Playbook coverage:       % of alert types with a playbook

---

SOAR Implementation - Project Plan:

Phase 1 - Foundation (Months 1-2):
  □ Select SOAR platform (Sentinel/XSOAR/Splunk SOAR)
  □ Connect key integrations (SIEM, EDR, AD)
  □ Implement phishing playbook (most common alert type)
  □ Create runbook documentation for all playbooks

Phase 2 - Expansion (Months 3-4):
  □ Cover the 5 most common alert types with playbooks
  □ ITSM integration (ticket automation)
  □ SOC team training (how to expand playbooks?)
  □ Build metrics dashboard

Phase 3 - Optimization (Month 5+):
  □ Feedback loop: Analyst feedback → Playbook improvement
  □ ML integration: Anomaly scoring improves triage
  □ New use cases: Cloud alerts, identity events
  □ Quarterly SOAR playbook review (remove outdated logic)

Questions about this topic?

Our experts advise you free of charge and without obligation.

Free Consultation

About the Author

Chris Wojzechowski
Chris Wojzechowski

Geschäftsführender Gesellschafter

E-Mail

Geschäftsführender Gesellschafter der AWARE7 GmbH mit langjähriger Expertise in Informationssicherheit, Penetrationstesting und IT-Risikomanagement. Absolvent des Masterstudiengangs Internet-Sicherheit an der Westfälischen Hochschule (if(is), Prof. Norbert Pohlmann). Bestseller-Autor im Wiley-VCH Verlag und Lehrbeauftragter der ASW-Akademie. Einschätzungen zu Cybersecurity und digitaler Souveränität erschienen u.a. in Welt am Sonntag, WDR, Deutschlandfunk und Handelsblatt.

10 Publikationen
  • Einsatz von elektronischer Verschlüsselung - Hemmnisse für die Wirtschaft (2018)
  • Kompass IT-Verschlüsselung - Orientierungshilfen für KMU (2018)
  • IT Security Day 2025 - Live Hacking: KI in der Cybersicherheit (2025)
  • Live Hacking - Credential Stuffing: Finanzrisiken jenseits Ransomware (2025)
  • Keynote: Live Hacking Show - Ein Blick in die Welt der Cyberkriminalität (2025)
  • Analyse von Angriffsflächen bei Shared-Hosting-Anbietern (2024)
  • Gänsehaut garantiert: Die schaurigsten Funde aus dem Leben eines Pentesters (2022)
  • IT Security Zertifizierungen — CISSP, T.I.S.P. & Co (Live-Webinar) (2023)
  • Sicherheitsforum Online-Banking — Live Hacking (2021)
  • Nipster im Netz und das Ende der Kreidezeit (2017)
IT-Grundschutz-Praktiker (TÜV) IT Risk Manager (DGI) § 8a BSIG Prüfverfahrenskompetenz Ausbilderprüfung (IHK)
This article was last edited on 04.03.2026. Responsible: Chris Wojzechowski, Geschäftsführender Gesellschafter at AWARE7 GmbH. License: CC BY 4.0 - free use with attribution: "AWARE7 GmbH, https://a7.de"

Cookielose Analyse via Matomo (selbst gehostet, kein Tracking-Cookie). Datenschutzerklärung