Two OTX pulses published in late October 2026 illuminate a converging threat landscape: opportunistic infrastructure exploitation and high-volume social engineering converging on credential theft.
CARBONATO represents a novel evolution in botnet architecture. Threat actors are systematically scanning for and compromising exposed Docker daemons on TCP/2375 — an unauthenticated API endpoint that grants full container management capabilities. Once access is gained, the operators deploy Hermes Agent, an MIT-licensed open-source AI framework repurposed as a command-and-control abstraction layer. This is not merely a cryptocurrency miner or DDoS bot; CARBONATO leverages AI-driven task orchestration to manage infected containers, distribute trojanized cryptocurrency wallet applications, and execute credential harvesting operations. The discovery of an unauthenticated Docker registry exposed since May 2026 reveals a mature, parallelized operation: one track distributing fake wallet software to end users, another managing containerized botnet infrastructure.
2026 Year End Phishing Lures documents a seasonal surge in credential phishing campaigns exploiting Q4 business processes. Threat actors impersonate SharePoint and DocuSign to deliver lures themed around compensation adjustments, Q4 invoices, year-end access reviews, and benefits statements. The targeted industries — finance, technology, telecommunications, manufacturing, real estate, and aviation — align with sectors experiencing peak fiscal-year administrative load. The phishing infrastructure leverages compromised Japanese ISP address space (GMO Internet, NTT Communications, J:COM) to host credential harvesting pages, suggesting either bulletproof hosting arrangements or compromised residential/business endpoints repurposed as phishing relays.
Collective assessment: Both campaigns share a common objective — credential theft at scale. CARBONATO targets infrastructure operators and cryptocurrency users through supply-chain-style trojanization; the year-end phishing operation targets enterprise employees through business process impersonation. The convergence suggests threat actors are diversifying credential acquisition vectors ahead of Q4 monetization cycles (fraud, account takeover, initial access brokerage).
Threat Actor / Malware Profile
CARBONATO Botnet
Distribution Method:
CARBONATO propagates via opportunistic exploitation of exposed Docker daemons. The Docker Remote API on TCP/2375 is designed for localhost-only or TLS-authenticated remote management. When exposed to the internet without authentication, it allows unauthenticated remote code execution via container creation. Threat actors scan for open 2375/tcp, then issue API calls to pull malicious images and instantiate containers running the CARBONATO payload.
Payload Behavior:
The botnet deploys Hermes Agent, an AI framework that functions as an intelligent task scheduler. Rather than static C2 commands, Hermes Agent can dynamically interpret high-level instructions, generate execution plans, and adapt behavior based on environmental context. This allows CARBONATO operators to issue natural-language or semi-structured objectives (e.g., "harvest browser credentials and exfiltrate via Telegram") without hardcoding logic into each bot. The payload also distributes trojanized cryptocurrency wallet applications through the compromised registry, targeting users who pull images from untrusted sources.
C2 Communication:
Primary C2 leverages Telegram as a dead-drop and command channel. Infected containers beacon to Telegram bot API endpoints, retrieve instructions from private channels or direct messages, and exfiltrate stolen data back through the same channel. Telegram's encrypted transport and widespread availability make it resilient to traditional domain takedowns.
Persistence Mechanism:
Persistence is achieved through Docker's restart policies. Malicious containers are instantiated with --restart=always or equivalent API parameters, ensuring automatic respawn on container stop or host reboot. Additionally, the compromised Docker daemon itself becomes a foothold: as long as port 2375 remains exposed, reinfection is trivial.
Anti-Analysis Techniques:
- Containerization as obfuscation: Running inside Docker containers isolates the malware from host-based EDR visibility unless container runtime auditing is enabled.
- AI-driven polymorphism: Hermes Agent can dynamically generate execution plans, making static signature detection unreliable.
- Legitimate framework abuse: By building on an MIT-licensed open-source AI agent, CARBONATO blends into legitimate AI/ML development activity.
Year-End Phishing Campaign
Distribution Method:
Email-based phishing using impersonation of SharePoint and DocuSign. Lures reference compensation adjustments, Q4 invoices, access reviews, and benefits enrollment — all high-urgency, high-legitimacy business processes during year-end. The phishing pages are hosted on compromised or bulletproof-hosted infrastructure, primarily Japanese ISP address space.
Payload Behavior:
The phishing pages function as credential harvesters. Victims are presented with pixel-perfect replicas of SharePoint or DocuSign login portals. Entered credentials are exfiltrated to attacker-controlled endpoints, likely via HTTP POST to the same hosting infrastructure or third-party webhook services (Telegram bots, Discord webhooks, or paste sites).
C2 Communication:
Phishing infrastructure relies on compromised web servers and residential IP space. The use of Japanese ISPs (GMO Internet AS7506, NTT AS4713, J:COM AS4721) suggests either: (1) compromised legitimate websites injected with phishing kits, or (2) virtual private servers rented with stolen payment methods.
Persistence Mechanism:
N/A — phishing is a one-shot credential harvesting operation. However, stolen credentials enable persistent access via valid account abuse (T1078).
Anti-Analysis Techniques:
- Geofencing: Some phishing kits restrict access based on IP geolocation to evade sandbox analysis.
- URL shorteners and redirect chains: Multi-hop redirects obscure final phishing domains.
- Compromised legitimate domains: Using real domains (e.g., rsfashionsdesignbd.com, bvlbetonvloeren.be) complicates domain reputation filtering.
IOC Analysis
Indicator Types Present
The year-end phishing pulse includes 21 indicators comprising IPv4 addresses and domain names. The CARBONATO pulse indicators are restricted but reference Docker registry endpoints and Telegram infrastructure.
IPv4 Addresses (phishing infrastructure):
157.7.189.101— GMO Internet (AS7506, Japan)157.7.44.119— GMO Internet (AS7506, Japan)118.20.84.128— NTT Communications (AS4713, Japan)123.98.253.31— J:COM (AS4721, Japan)
These IPs are likely compromised web servers, VPS instances, or residential gateways. SOC teams should immediately block outbound connections to these IPs at the network perimeter and investigate any historical connections for potential credential exposure.
Domain Names (phishing landing pages):
rsfashionsdesignbd.combvlbetonvloeren.beenglaus.sbstropical100.com.do
These domains appear to be compromised legitimate sites (e.g., fashion design, concrete flooring, tropical music radio) rather than attacker-registered throwaway domains. This complicates blocklisting and requires URL-path-level analysis in web proxy logs.
Operationalization Strategy
Immediate blocking:
- Add all IPs to firewall egress blocklists.
- Add domains to DNS sinkhole or web proxy category-based blocks ("Phishing" or "Newly Observed Domains").
Retroactive hunting:
- Query proxy and DNS logs for the past 30-90 days for connections to these indicators.
- If connections are found, isolate affected endpoints and force credential resets for users who may have entered credentials.
Tooling for IOC decoding:
- Network indicators: Use
whois,shodan, orcensysto fingerprint hosting infrastructure. Enrich IPs with passive DNS (RiskIQ, SecurityTrails) to identify additional domains on the same infrastructure. - Domain analysis: Check domain registration age via
whoisand passive DNS to determine if newly registered or long-held (compromised). Use URLScan.io or VirusTotal to retrieve historical screenshots and page structure.
Detection Engineering
Sigma Rules
---
title: CARBONATO Botnet - Exposed Docker Daemon Exploitation
id: 8f3a9d2e-1b4c-4e8a-9c6d-3f7e2a1b5c9d
status: experimental
description: Detects suspicious Docker daemon activity indicative of CARBONATO botnet compromise, including unauthenticated API access and malicious container creation
author: Security Arsenal Threat Intelligence
references:
- https://www.threatdown.com/blog/carbonato/
date: 2026/10/24
modified: 2026/10/24
tags:
- attack.initial_access
- attack.t1190
- attack.execution
- attack.t1610
logsource:
category: network_connection
product: linux
detection:
selection_docker_api:
DestinationPort: 2375
Initiated: 'true'
selection_external_source:
SourceIp|cidr:
- '0.0.0.0/0'
filter_localhost:
SourceIp:
- '127.0.0.1'
- '::1'
filter_rfc1918:
SourceIp|cidr:
- '10.0.0.0/8'
- '172.16.0.0/12'
- '192.168.0.0/16'
condition: selection_docker_api and selection_external_source and not (filter_localhost or filter_rfc1918)
falsepositives:
- Legitimate remote Docker management (should use TLS on port 2376)
level: high
---
title: Suspicious Docker Container Creation via API
id: 4b8e1f3a-2c5d-4a9b-8e7f-1d6c3b2a9e8f
status: experimental
description: Detects Docker container creation events with suspicious characteristics associated with CARBONATO botnet deployment
author: Security Arsenal Threat Intelligence
references:
- https://www.threatdown.com/blog/carbonato/
date: 2026/10/24
modified: 2026/10/24
tags:
- attack.execution
- attack.t1610
- attack.persistence
- attack.t1053
logsource:
product: linux
service: docker
detection:
selection_container_create:
ContainerCreate: 'true'
selection_suspicious_restart:
RestartPolicy: 'always'
selection_suspicious_images:
ImageName|contains:
- 'hermes'
- 'carbonato'
- 'wallet'
selection_privileged:
Privileged: 'true'
condition: selection_container_create and (selection_suspicious_restart or selection_suspicious_images or selection_privileged)
falsepositives:
- Legitimate containerized applications with restart policies
- Development/testing environments
level: medium
---
title: Year-End Phishing - SharePoint/DocuSign Impersonation Credential Harvest
id: 7c2d4e9a-3f1b-4d8c-9a5e-2f6b8c1d4e7a
status: experimental
description: Detects network connections to known year-end phishing infrastructure impersonating SharePoint and DocuSign for credential theft
author: Security Arsenal Threat Intelligence
references:
- https://www.netcraft.com/blog/year-end-phishing-lures-fake-raises-q4-invoices-and-access-reviews
date: 2026/10/24
modified: 2026/10/24
tags:
- attack.credential_access
- attack.t1557
- attack.initial_access
- attack.t1566
logsource:
category: network_connection
detection:
selection_phishing_ips:
DestinationIp:
- '157.7.189.101'
- '157.7.44.119'
- '118.20.84.128'
- '123.98.253.31'
selection_phishing_domains:
DestinationHostname:
- 'rsfashionsdesignbd.com'
- 'bvlbetonvloeren.be'
- 'englaus.sbs'
- 'tropical100.com.do'
condition: selection_phishing_ips or selection_phishing_domains
falsepositives:
- None expected; these are active phishing indicators
level: critical
KQL (Microsoft Sentinel)
// Hunt for year-end phishing infrastructure connections and credential exposure
// Query covers both network connections to known IOCs and process execution patterns
let phishing_ips = dynamic(["157.7.189.101", "157.7.44.119", "118.20.84.128", "123.98.253.31"]);
let phishing_domains = dynamic(["rsfashionsdesignbd.com", "bvlbetonvloeren.be", "englaus.sbs", "tropical100.com.do"]);
// Part 1: Identify network connections to phishing infrastructure
let NetworkConnections = DeviceNetworkEvents
| where TimeGenerated > ago(30d)
| where RemoteIP in (phishing_ips) or RemoteUrl has_any (phishing_domains)
| project
Timestamp = TimeGenerated,
DeviceName,
DeviceId,
InitiatingProcessAccountName,
InitiatingProcessFileName,
InitiatingProcessCommandLine,
RemoteIP,
RemoteUrl,
RemotePort,
Protocol,
ActionType;
// Part 2: Correlate with browser processes (credential entry likely)
let BrowserActivity = DeviceProcessEvents
| where TimeGenerated > ago(30d)
| where FileName in~ ("chrome.exe", "msedge.exe", "firefox.exe", "iexplore.exe", "brave.exe")
| project
DeviceId,
ProcessTimestamp = TimeGenerated,
ProcessAccountName = AccountName,
ProcessFileName = FileName,
ProcessCommandLine = ProcessCommandLine;
// Part 3: Check for exposed Docker daemon (CARBONATO vector)
let DockerExposure = DeviceNetworkEvents
| where TimeGenerated > ago(7d)
| where LocalPort == 2375
| where ActionType == "ListeningConnection"
| project
DockerTimestamp = TimeGenerated,
DeviceName,
DeviceId,
LocalPort,
RemoteIP;
// Union and enrich
NetworkConnections
| join kind=leftouter (BrowserActivity) on DeviceId
| extend AlertSeverity = case(
RemoteIP in (phishing_ips), "Critical - Known Phishing IP",
RemoteUrl has_any (phishing_domains), "Critical - Known Phishing Domain",
"Medium"
)
| extend RecommendedAction = case(
AlertSeverity contains "Critical", "Isolate device, reset user credentials, review browser history",
"Investigate connection context"
)
| union (DockerExposure | extend AlertSeverity="High - Exposed Docker Daemon", RecommendedAction="Disable Docker API on 2375 or enable TLS authentication")
| order by Timestamp desc
PowerShell Hunt Script
<#
.SYNOPSIS
CARBONATO Botnet and Year-End Phishing IOC Hunt Script
.DESCRIPTION
Hunts for indicators of CARBONATO botnet compromise (exposed Docker daemon) and
connections to year-end phishing infrastructure. Checks for suspicious Docker
containers, network connections to phishing IOCs, and browser artifacts.
.NOTES
Author: Security Arsenal Threat Intelligence
Date: 2026-10-24
Requires: Administrative privileges, PowerShell 5.1+
#>
# Requires -RunAsAdministrator
Write-Host "[+] CARBONATO & Year-End Phishing IOC Hunt" -ForegroundColor Cyan
Write-Host "[+] Timestamp: $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')`n" -ForegroundColor Cyan
# IOC Definitions
$phishingIPs = @("157.7.189.101", "157.7.44.119", "118.20.84.128", "123.98.253.31")
$phishingDomains = @("rsfashionsdesignbd.com", "bvlbetonvloeren.be", "englaus.sbs", "tropical100.com.do")
$suspiciousDockerImages = @("hermes", "carbonato", "wallet", "crypto")
# Part 1: Check for Docker daemon exposure
Write-Host "[1] Checking for exposed Docker daemon (TCP 2375)..." -ForegroundColor Yellow
try {
$dockerListening = Get-NetTCPConnection -LocalPort 2375 -State Listen -ErrorAction SilentlyContinue
if ($dockerListening) {
Write-Host " [!] ALERT: Docker daemon listening on port 2375" -ForegroundColor Red
$dockerListening | ForEach-Object {
Write-Host " Local Address: $($_.LocalAddress):$($_.LocalPort)" -ForegroundColor Red
Write-Host " Owning Process: $(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue | Select-Object -ExpandProperty ProcessName)" -ForegroundColor Red
}
Write-Host " [ACTION REQUIRED] Disable unauthenticated Docker API or enable TLS on port 2376`n" -ForegroundColor Red
} else {
Write-Host " [OK] Docker daemon not exposed on port 2375`n" -ForegroundColor Green
}
} catch {
Write-Host " [INFO] Unable to check Docker port: $($_.Exception.Message)`n" -ForegroundColor Gray
}
# Part 2: Check running Docker containers (if Docker is installed)
Write-Host "[2] Checking for suspicious Docker containers..." -ForegroundColor Yellow
try {
$dockerInstalled = Get-Command docker -ErrorAction SilentlyContinue
if ($dockerInstalled) {
$containers = docker ps --format "{{.ID}}|{{.Image}}|{{.Names}}|{{.Status}}" 2>$null
if ($containers) {
$suspiciousFound = $false
foreach ($container in $containers) {
$parts = $container -split '\|'
$imageName = $parts[1]
foreach ($suspicious in $suspiciousDockerImages) {
if ($imageName -like "*$suspicious*") {
Write-Host " [!] ALERT: Suspicious container detected" -ForegroundColor Red
Write-Host " Container ID: $($parts[0])" -ForegroundColor Red
Write-Host " Image: $imageName" -ForegroundColor Red
Write-Host " Name: $($parts[2])" -ForegroundColor Red
Write-Host " Status: $($parts[3])" -ForegroundColor Red
$suspiciousFound = $true
}
}
}
if (-not $suspiciousFound) {
Write-Host " [OK] No obviously suspicious containers found`n" -ForegroundColor Green
} else {
Write-Host " [ACTION REQUIRED] Investigate suspicious containers and consider quarantine`n" -ForegroundColor Red
}
} else {
Write-Host " [INFO] No running containers`n" -ForegroundColor Gray
}
} else {
Write-Host " [INFO] Docker not installed on this system`n" -ForegroundColor Gray
}
} catch {
Write-Host " [ERROR] Unable to enumerate containers: $($_.Exception.Message)`n" -ForegroundColor Red
}
# Part 3: Check active network connections to phishing IOCs
Write-Host "[3] Checking for active connections to phishing infrastructure..." -ForegroundColor Yellow
$connectionsFound = $false
foreach ($ip in $phishingIPs) {
$connections = Get-NetTCPConnection -RemoteAddress $ip -ErrorAction SilentlyContinue
if ($connections) {
foreach ($conn in $connections) {
$process = Get-Process -Id $conn.OwningProcess -ErrorAction SilentlyContinue
Write-Host " [!] ALERT: Active connection to known phishing IP" -ForegroundColor Red
Write-Host " Remote IP: $($conn.RemoteAddress):$($conn.RemotePort)" -ForegroundColor Red
Write-Host " Local Port: $($conn.LocalPort)" -ForegroundColor Red
Write-Host " State: $($conn.State)" -ForegroundColor Red
Write-Host " Process: $($process.ProcessName) (PID: $($conn.OwningProcess))" -ForegroundColor Red
$connectionsFound = $true
}
}
}
if (-not $connectionsFound) {
Write-Host " [OK] No active connections to known phishing IPs`n" -ForegroundColor Green
} else {
Write-Host " [ACTION REQUIRED] Isolate host and reset credentials for affected users`n" -ForegroundColor Red
}
# Part 4: Check DNS cache for phishing domains
Write-Host "[4] Checking DNS cache for phishing domain lookups..." -ForegroundColor Yellow
$dnsFound = $false
foreach ($domain in $phishingDomains) {
$dnsCache = Get-DnsClientCache -Name $domain -ErrorAction SilentlyContinue
if ($dnsCache) {
Write-Host " [!] ALERT: DNS cache entry found for phishing domain" -ForegroundColor Red
Write-Host " Domain: $domain" -ForegroundColor Red
Write-Host " Resolved IP: $($dnsCache.Data -join ', ')" -ForegroundColor Red
$dnsFound = $true
}
}
if (-not $dnsFound) {
Write-Host " [OK] No phishing domains found in DNS cache`n" -ForegroundColor Green
} else {
Write-Host " [ACTION REQUIRED] Review proxy logs and identify users who accessed these domains`n" -ForegroundColor Red
}
# Part 5: Check browser history artifacts (Chrome/Edge)
Write-Host "[5] Checking browser history for phishing domain access..." -ForegroundColor Yellow
$browserPaths = @(
"$env:LOCALAPPDATA\Google\Chrome\User Data\Default\History",
"$env:LOCALAPPDATA\Microsoft\Edge\User Data\Default\History"
)
$browserFound = $false
foreach ($path in $browserPaths) {
if (Test-Path $path) {
# Note: Direct SQLite parsing requires third-party module or System.Data.SQLite
# This is a simplified check for file existence and recent modification
$historyFile = Get-Item $path
if ($historyFile.LastWriteTime -gt (Get-Date).AddDays(-7)) {
Write-Host " [INFO] Recent browser history detected: $path" -ForegroundColor Gray
Write-Host " Last Modified: $($historyFile.LastWriteTime)" -ForegroundColor Gray
Write-Host " Manual review recommended (requires SQLite browser history parser)" -ForegroundColor Gray
}
}
}
Write-Host ""
# Part 6: Summary and recommendations
Write-Host "===== HUNT SUMMARY =====" -ForegroundColor Cyan
if ($dockerListening -or $connectionsFound -or $dnsFound) {
Write-Host "[CRITICAL] Indicators of compromise detected. Immediate action required:" -ForegroundColor Red
Write-Host " 1. Isolate affected systems from network" -ForegroundColor Red
Write-Host " 2. Reset credentials for all users on affected systems" -ForegroundColor Red
Write-Host " 3. Review firewall/proxy logs for lateral movement" -ForegroundColor Red
Write-Host " 4. If Docker daemon exposed, audit all containers and images" -ForegroundColor Red
Write-Host " 5. File incident response ticket and preserve forensic evidence" -ForegroundColor Red
} else {
Write-Host "[OK] No immediate indicators detected on this system" -ForegroundColor Green
Write-Host " Continue monitoring for IOC updates" -ForegroundColor Green
}
Write-Host "`n[+] Hunt complete: $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')" -ForegroundColor Cyan
Response Priorities
Immediate (0-4 hours)
Network Blocking:
- Add all phishing IPs (157.7.189.101, 157.7.44.119, 118.20.84.128, 123.98.253.31) to perimeter firewall and web proxy blocklists.
- Add phishing domains (rsfashionsdesignbd.com, bvlbetonvloeren.be, englaus.sbs, tropical100.com.do) to DNS sinkhole and web content filtering under "Phishing" category.
- Audit external firewall rules to ensure TCP 2375 (Docker API) is NOT exposed to the internet. If exposure is detected, immediately block or implement firewall rules restricting access to trusted management IPs only.
Threat Hunting:
- Run the provided PowerShell hunt script on all Docker hosts and container orchestration nodes.
- Execute the KQL query in Microsoft Sentinel (or equivalent SIEM) to identify connections to phishing infrastructure over the past 30 days.
- Query proxy and DNS logs for requests to the phishing domains.
IOC Distribution:
- Push IOCs to threat intelligence platform (TIP) and ensure bidirectional integration with firewalls, proxies, EDR, and SIEM.
- Subscribe to OTX pulse updates for the CARBONATO and year-end phishing campaigns to receive new indicators as they're published.
24 Hours
Identity Verification and Credential Resets:
- For any users who accessed phishing domains or whose devices connected to phishing IPs: force password resets for all corporate accounts (Active Directory, cloud identity providers, SaaS applications).
- Review authentication logs for the affected users to detect unauthorized access using stolen credentials. Check for impossible travel, unusual login times, and access from unexpected geographies.
- Enable or enforce multi-factor authentication (MFA) for all remote access, privileged accounts, and cloud applications if not already in place.
Container Security Audit:
- If any Docker daemons were found exposed on port 2375: conduct a full audit of running containers, images, and Docker API logs.
- Check for unauthorized container creation, privileged containers, or containers with suspicious restart policies.
- Review Docker registry access logs for unauthorized image pulls or pushes.
Email Security:
- Review email gateway logs for messages containing links to the phishing domains.
- Search for emails with subject lines referencing compensation, Q4 invoices, access reviews, or benefits statements from external senders.
- Implement email banner warnings for external emails impersonating internal HR, finance, or IT processes.
1 Week
Docker Security Hardening:
- Disable unauthenticated Docker API: If remote Docker management is required, migrate from TCP 2375 to TCP 2376 with TLS client certificate authentication. Refer to Docker's official security documentation for implementation.
- Implement Docker Bench Security: Run the Docker Bench for Security script to identify and remediate misconfigurations.
- Enable runtime security monitoring: Deploy container runtime security tools (e.g., Falco, Sysdig, Aqua Security) to detect anomalous container behavior.
- Restrict container capabilities: Implement Pod Security Policies (Kubernetes) or Docker security profiles to drop unnecessary Linux capabilities, enforce read-only root filesystems, and prevent privilege escalation.
Phishing Awareness and Controls:
- Conduct targeted phishing awareness training for finance, HR, and IT staff emphasizing year-end scam tactics.
- Implement email authentication controls: enforce DMARC policy to "reject," enable SPF and DKIM validation, and configure anti-spoofing rules to block external senders impersonating internal domains.
- Deploy browser isolation or URL rewriting for email links to inspect destination pages in a sandboxed environment before user access.
Architecture Review:
- Evaluate whether Docker daemon API exposure is required at all. In most enterprise environments, container orchestration (Kubernetes, Docker Swarm) should be managed via authenticated APIs with RBAC, not direct Docker socket access.
- Implement network segmentation to isolate container infrastructure from general corporate networks.
- Deploy deception technology (honeypots) simulating exposed Docker daemons to detect and alert on scanning activity.
Threat Intelligence Integration:
- Establish automated ingestion of AlienVault OTX pulses into your TIP.
- Configure threat intelligence feeds to auto-populate firewall and proxy blocklists.
- Subscribe to sector-specific ISACs (Information Sharing and Analysis Centers) for finance, technology, and other targeted industries.
Related Resources
Security Arsenal Incident Response
Managed SOC & MDR Services
AlertMonitor Threat Detection
From The Dark Side Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.