COOKIES DB
SESSION REPLAY
DEBUG PORT
MFA BYPASS
DetectionBlue TeamSOCOctober 12, 2026•9 min read

Detecting Browser Cookie and Session Theft

A stolen session cookie is a pre-authenticated login. MFA already happened, which is exactly why stealers go after it.

Scroll

Session cookies let an attacker walk straight past passwords and multi-factor prompts, so cookie theft is now a core stealer capability. Detection has two halves: the host, where something reads the Cookies database or drives the browser remotely, and the identity provider, where the stolen session is replayed from infrastructure the user has never used. The second half still works when the first is missed.

Signals at a Glance

SignalWhereATT&CK
Non-browser process reads the Cookies database (Network/Cookies on current Chromium)EDR file access, Security 4663T1539
Browser started with a remote-debugging port or pipe by an unexpected parentProcess creationT1539
Headless browser spawned from a user-writable binaryProcess creationT1539
Same session identifier used from a second IP, country or user agentEntra / IdP sign-in logsT1550.004
Local State and Cookies read in the same short window by one processEDRT1555.003

Host Side: Database Reads and Debug Ports

Stealers either copy the Cookies database and decrypt it offline, or attach to a live browser through the DevTools protocol and ask for cookies directly. The second route needs a browser launched with a debugging flag, which is rare on real endpoints:

// Microsoft Defender (KQL) - browser launched with debugging or headless flags
let Browsers = dynamic(["chrome.exe","msedge.exe","brave.exe"]);
DeviceProcessEvents
| where FileName in~ (Browsers)
| where ProcessCommandLine has_any ("--remote-debugging-port", "--remote-debugging-pipe", "--headless")
| where InitiatingProcessFileName !in~ (Browsers)
| project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine,
          InitiatingProcessFileName, InitiatingProcessFolderPath
// tune/validate: exclude QA, RPA and developer tooling by device group or parent path

For the copy-and-decrypt route, reuse the file-access audit from the browser credential page, extending the path match to Network\Cookies and the equivalent Firefox cookies.sqlite file.

Identity Side: Session Replay

Once a cookie leaves the host, it is replayed from attacker infrastructure. The same session now appears from two places. Group sign-ins by session and look for a change of network or geography:

// Microsoft Sentinel (KQL) - one session seen from multiple IPs and countries
AADNonInteractiveUserSignInLogs
| where TimeGenerated > ago(1d)
| where ResultType == 0
| extend Country = tostring(LocationDetails.countryOrRegion)
| summarize ips=make_set(IPAddress, 10), countries=make_set(Country, 10),
            agents=make_set(UserAgent, 10), first=min(TimeGenerated), last=max(TimeGenerated)
          by UserPrincipalName, SessionId
| where array_length(ips) > 1 and array_length(countries) > 1
// tune/validate: column names vary by workspace schema; exclude known VPN egress ranges
Vetted sources

Use SigmaHQ and Elastic rules for browser launches with remote debugging, Microsoft documentation for token protection and continuous access evaluation, and your identity provider’s native risk detections for anomalous token use. Baseline legitimate multi-IP sessions (mobile roaming, corporate VPN) before alerting.

Build Detections That Fire

Mjolnir Security helps blue teams turn threat intelligence into high-fidelity detections across endpoint, network, identity and cloud telemetry.

Detection EngineeringManaged Detection & ResponseThreat HuntingIncident ResponsePurple Teaming
  • Detection Engineering We build and tune detections mapped to ATT&CK from your own telemetry.
  • Threat Hunting as a Service Hypothesis-driven hunts for the behaviours on this page.
  • 24/7 Incident Response Containment when a detection fires. Call +1 833 403 5875.
Written by: Mjolnir Threat Research (MTAC)  |  Published: October 12, 2026  |  Last reviewed: October 12, 2026