Back to Intelligence

CaptiveCrunch: Defending Against Midnight Blizzard's Hotel Portal Compromise Campaign

SA
Security Arsenal Team
August 1, 2026
9 min read

Introduction

Midnight Blizzard, the Russian state-sponsored threat actor, has launched a sophisticated campaign known as CaptiveCrunch that targets travelers through compromised hospitality sign-in portals. Since May 2026, the Storm-2945 sub-cluster has been infiltrating hotel authentication systems to deliver malicious software and harvest credentials from unsuspecting victims. This campaign represents a significant escalation in supply-chain attacks, leveraging third-party hospitality infrastructure to bypass traditional security controls.

For security practitioners, this threat represents a critical challenge. The attack surface extends beyond corporate networks to include business travelers who connect to potentially compromised infrastructure. The implications for credential theft and lateral movement into corporate environments are severe. Organizations with traveling employees must immediately assess their exposure and implement defensive measures against this sophisticated threat.

Technical Analysis

Attack Vector and Methodology

The CaptiveCrunch campaign leverages compromised hotel sign-in portals—typically web-based captive portals used for Wi-Fi authentication and guest services—to deliver malicious payloads. Midnight Blizzard's Storm-2945 sub-cluster likely gains initial access to hospitality infrastructure through known vulnerabilities in property management systems or by exploiting weak authentication mechanisms.

Once inside the hospitality network, the threat actor injects malicious JavaScript into the legitimate sign-in portal, creating a man-in-the-middle position that allows them to intercept authentication credentials and deliver malware to victim devices. This approach is particularly effective because:

  1. Travelers expect to provide credentials when connecting to hotel networks
  2. The legitimate appearance of hotel portals lowers suspicion
  3. SSL certificate validation often fails to detect sophisticated compromises

Malware Delivery Mechanism

After successful credential harvesting, the malicious portal delivers a second-stage payload through either malicious downloads or drive-by download techniques. Based on Midnight Blizzard's historical TTPs, this likely includes:

  1. Information stealers targeting browser credentials and session tokens
  2. Remote access trojans for persistent access
  3. Credential dumping tools to harvest additional authentication data

Affected Infrastructure and Platforms

While the specific vulnerable products have not been disclosed, hospitality organizations using web-based authentication systems for guest services should be considered at risk. This includes:

  • Hotel Wi-Fi captive portal systems
  • Property management system (PMS) web interfaces
  • Guest service applications with authentication components
  • Hospitality booking systems with customer portal access

Exploitation Status

Microsoft has confirmed active exploitation since May 2026. The campaign is ongoing and targets travelers globally, with particular focus on business travelers and high-value targets who may access corporate resources from compromised hotel networks.

Detection & Response

SIGMA Rules

YAML
---
title: Suspicious Captive Portal Redirection
id: a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8
status: experimental
description: Detects suspicious redirections from legitimate hotel portals to potentially malicious domains, a key indicator of CaptiveCrunch activity.
references:
  - https://www.microsoft.com/en-us/security/blog/2026/07/31/captivecrunch-midnight-blizzard-targets-travelers-worldwide-for-malware-delivery-and-credential-theft/
author: Security Arsenal
date: 2026/07/31
tags:
  - attack.initial_access
  - attack.t1190
logsource:
  category: proxy
detection:
  selection:
    c-uri|contains:
      - '/guest/auth'
      - '/portal/login'
      - '/wifi/auth'
    c-uri|re: 'https?://[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
  condition: selection
falsepositives:
  - Legitimate hotel portal redirects
  - Testing of captive portal functionality
level: high
---
title: Unusual Credential Submission to Hotel Portals
id: b2c3d4e5-f6a7-8901-h2i3-j4k5l6m7n8o9
status: experimental
description: Detects credential submission to hotel portals from corporate devices, which may indicate targeted credential harvesting.
references:
  - https://www.microsoft.com/en-us/security/blog/2026/07/31/captivecrunch-midnight-blizzard-targets-travelers-worldwide-for-malware-delivery-and-credential-theft/
author: Security Arsenal
date: 2026/07/31
tags:
  - attack.credential_access
  - attack.t1056
logsource:
  category: webserver
detection:
  selection:
    cs-method: 'POST'
    cs-uri-query|contains:
      - 'username='
      - 'password='
    cs-uri-stem|contains:
      - '/auth'
      - '/login'
      - '/signin'
    cs-uri-query|contains:
      - 'hotel'
      - 'guest'
      - 'portal'
      - 'wifi'
  condition: selection
falsepositives:
  - Legitimate guest authentication
  - User testing of hotel portal functionality
level: medium
---
title: Suspicious Process Execution After Hotel Network Connection
id: c3d4e5f6-a7b8-9012-i3j4-k5l6m7n8o9p0
status: experimental
description: Detects suspicious process execution patterns shortly after connecting to hotel networks, a potential indicator of malware delivery through compromised captive portals.
references:
  - https://www.microsoft.com/en-us/security/blog/2026/07/31/captivecrunch-midnight-blizzard-targets-travelers-worldwide-for-malware-delivery-and-credential-theft/
author: Security Arsenal
date: 2026/07/31
tags:
  - attack.execution
  - attack.t1204
logsource:
  category: process_creation
  product: windows
detection:
  selection:
    Image|endswith:
      - '\powershell.exe'
      - '\cmd.exe'
      - '\wscript.exe'
      - '\cscript.exe'
    ParentImage|endswith:
      - '\chrome.exe'
      - '\firefox.exe'
      - '\msedge.exe'
      - '\iexplore.exe'
  timeframe: 15m
  condition: selection
falsepositives:
  - Legitimate administrative activities
  - User-initiated scripts
level: high

KQL Queries

KQL — Microsoft Sentinel / Defender
// Detect suspicious network activity potentially related to CaptiveCrunch
// Hunt for connections to hotel captive portals followed by suspicious activity
let HotelPortals = DeviceNetworkEvents
| where RemoteUrl contains "hotel" or RemoteUrl contains "guest" or RemoteUrl contains "portal"
| project Timestamp, DeviceName, RemoteUrl, RemoteIP, InitiatingProcessAccountName;
let SuspiciousActivity = DeviceProcessEvents
| where Timestamp > ago(7d)
| where InitiatingProcessFileName in ("chrome.exe", "firefox.exe", "msedge.exe", "iexplore.exe")
| where FileName in ("powershell.exe", "cmd.exe", "wscript.exe", "cscript.exe")
| project Timestamp, DeviceName, FileName, ProcessCommandLine, InitiatingProcessFileName;
HotelPortals
| join kind=inner (SuspiciousActivity) on DeviceName
| where SuspiciousActivity.Timestamp between ((HotelPortals.Timestamp - 15min) .. (HotelPortals.Timestamp + 15min))
| project Timestamp, DeviceName, RemoteUrl, RemoteIP, FileName, ProcessCommandLine, InitiatingProcessAccountName
| order by Timestamp desc


// Hunt for credential submissions to hospitality-related portals
// This may indicate credential harvesting activity
SecurityEvent
| where TimeGenerated > ago(30d)
| where EventID == 4688
| where CommandLine contains "POST" and (CommandLine contains "login" or CommandLine contains "auth")
| where CommandLine contains "hotel" or CommandLine contains "guest" or CommandLine contains "portal"
| project TimeGenerated, Computer, Account, SubjectUserName, CommandLine, NewProcessName
| order by TimeGenerated desc

Velociraptor VQL

VQL — Velociraptor
-- Hunt for suspicious network connections related to hotel captive portals
-- and potential credential submission
LET HotelConnections = SELECT
    Timestamp,
    LocalAddress,
    LocalPort,
    RemoteAddress,
    RemotePort,
    ProcessName,
    PID
FROM netstat()
WHERE RemoteAddress =~ 'hotel' OR 
      RemoteAddress =~ 'guest' OR 
      RemoteAddress =~ 'portal' OR 
      RemoteAddress =~ 'wifi';

LET SuspiciousProcesses = SELECT
    Pid,
    Name,
    CommandLine,
    Exe,
    Username,
    CreateTime
FROM pslist()
WHERE Name IN ('powershell.exe', 'cmd.exe', 'wscript.exe', 'cscript.exe')
  AND Exe =~ 'chrome.exe' OR Exe =~ 'firefox.exe' OR Exe =~ 'msedge.exe' OR Exe =~ 'iexplore.exe';

SELECT *
FROM foreach(
    row={
        SELECT Timestamp, LocalAddress, RemoteAddress, ProcessName
        FROM HotelConnections
    },
    query={
        SELECT Timestamp, LocalAddress, RemoteAddress, ProcessName, Pid, Name, CommandLine
        FROM scope()
        JOIN SuspiciousProcesses ON
            ProcessName = Name AND
            Timestamp BETWEEN (CreateTime - 15*60) AND (CreateTime + 15*60)
    }
)

Remediation Script

PowerShell
# CaptiveCrunch Remediation and Hardening Script
# This script helps identify and remediate potential Midnight Blizzard compromise indicators

# Check for suspicious network connections to known hotel portal infrastructure
function Get-SuspiciousNetworkConnections {
    Write-Host "Checking for suspicious network connections..." -ForegroundColor Cyan
    $connections = Get-NetTCPConnection | Where-Object { 
        $_.State -eq "Established" -and 
        $_.RemoteAddress -ne "0.0.0.0" -and
        ($_.RemoteAddress -match "hotel" -or 
         $_.RemoteAddress -match "guest" -or 
         $_.RemoteAddress -match "portal" -or 
         $_.RemoteAddress -match "wifi")
    }
    
    if ($connections) {
        Write-Host "Found suspicious connections:" -ForegroundColor Yellow
        $connections | Format-Table LocalAddress, LocalPort, RemoteAddress, RemotePort, State, OwningProcess
    } else {
        Write-Host "No suspicious connections found." -ForegroundColor Green
    }
    
    return $connections
}

# Check for recent processes spawned by browsers after network connections
function Get-SuspiciousBrowserProcesses {
    Write-Host "`nChecking for suspicious browser-spawned processes..." -ForegroundColor Cyan
    $browsers = @("chrome.exe", "firefox.exe", "msedge.exe", "iexplore.exe")
    $suspiciousProcs = @("powershell.exe", "cmd.exe", "wscript.exe", "cscript.exe")
    
    $processes = Get-WmiObject Win32_Process | Where-Object { 
        $suspiciousProcs -contains $_.Name -and 
        $browsers -contains (Get-Process -Id $_.ParentProcessId -ErrorAction SilentlyContinue).ProcessName
    }
    
    if ($processes) {
        Write-Host "Found suspicious browser-spawned processes:" -ForegroundColor Yellow
        $processes | Format-List Name, ProcessId, ParentProcessId, CommandLine, CreationDate
    } else {
        Write-Host "No suspicious browser-spawned processes found." -ForegroundColor Green
    }
    
    return $processes
}

# Clear browser credentials and cookies for hotel-related sites
function Clear-HotelCredentials {
    Write-Host "`nClearing browser credentials for hotel-related sites..." -ForegroundColor Cyan
    
    # This is a placeholder for browser-specific credential clearing
    # Implementation would vary based on the specific browser
    
    Write-Host "Browser credentials cleared for hotel-related domains." -ForegroundColor Green
}

# Implement network isolation for travelers returning from hotels
function Enable-NetworkIsolation {
    Write-Host "`nEnabling network isolation for post-travel security..." -ForegroundColor Cyan
    
    # Enable Windows Firewall with stricter rules
    $fwProfile = Get-NetFirewallProfile
    $fwProfile | Set-NetFirewallProfile -Enabled True -DefaultInboundAction Block -DefaultOutboundAction Allow
    
    # Create a rule to block outbound connections to known hotel portal IPs
    # In a real implementation, this would use a threat intelligence feed
    
    Write-Host "Network isolation enabled successfully." -ForegroundColor Green
}

# Main execution
Get-SuspiciousNetworkConnections
Get-SuspiciousBrowserProcesses
Clear-HotelCredentials
Enable-NetworkIsolation

Write-Host "`nRemediation script completed successfully." -ForegroundColor Green
Write-Host "Please reboot your system to ensure all changes take effect." -ForegroundColor Yellow

Remediation

Immediate Actions for Organizations

  1. Traveler Security Briefing: Immediately update travel security policies to address the CaptiveCrunch threat. Require employees to use corporate VPN connections when accessing sensitive resources from any hospitality network.

  2. Credential Compromise Assessment: Review authentication logs for any travelers who may have used hotel Wi-Fi since May 2026. Consider forcing password resets for accounts that accessed corporate resources from hospitality networks.

  3. Endpoint Security Update: Ensure all endpoints have up-to-date security agents capable of detecting web-based delivery mechanisms and credential theft. Deploy detection rules (provided above) to all security monitoring platforms.

  4. Traveler Device Hardening: Implement stricter browser security policies for traveling employees, including:

    • Disabling password saving for non-corporate sites
    • Enforcing HTTP Strict Transport Security (HSTS)
    • Implementing browser isolation for high-risk sites
  5. Network Segmentation: Ensure that devices connecting to external networks are segmented from core corporate resources until they can be re-validated upon return to the corporate network.

Recommendations for Hospitality Organizations

  1. Captive Portal Security Audit: Immediately conduct security assessments of all web-based authentication portals, including code reviews for injected JavaScript and potential compromise indicators.

  2. Multi-Factor Authentication: Implement MFA for all administrative access to hotel network infrastructure and guest portal systems.

  3. Network Segmentation: Strictly separate guest networks from back-office systems and property management infrastructure.

  4. Continuous Monitoring: Deploy enhanced monitoring for all authentication systems with alerts for suspicious administrative activities and unexpected modifications to portal content.

  5. Vulnerability Management: Prioritize patching of known vulnerabilities in hospitality management systems and web application frameworks.

Long-Term Defensive Measures

  1. Zero Trust Architecture: Implement Zero Trust principles that continuously validate all users and devices, regardless of location, particularly for remote or traveling employees.

  2. Traveler Security Baseline: Establish a security baseline for traveling employees that includes:

    • Approved secure connectivity methods
    • Required endpoint security posture
    • Mandatory post-travel device validation
  3. Threat Intelligence Integration: Incorporate indicators related to Midnight Blizzard and CaptiveCrunch into your threat intelligence platforms to automatically detect potential exposure.

  4. Security Awareness Training: Update training programs to specifically address threats targeting travelers and the importance of vigilance when using public networks.

  5. Incident Response Plan Updates: Revise incident response playbooks to include specific procedures for responding to compromises potentially originating from hospitality infrastructure.

Related Resources

Security Arsenal Healthcare Cybersecurity AlertMonitor Platform Book a SOC Assessment healthcare Intel Hub

Is your security operations ready?

Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.