Sponsored by Hudson Rock Use Hudson Rock's free cybercrime intelligence tools to learn how Infostealer infections are leading to ransomware attacks

Enjoying ransomware.live? Help us keep tracking ransomware gangs and shipping new features. Support us

Correlates edge-access events with lateral movement

Emperador Lateral Movement Sentinel
MITRE ATT&CK
Data Source
Date Added
2026-09-05
Last Updated
2026-09-05
Source
securityarsenal.com
What This Detects
Correlates edge-access events with lateral movement and staging behavior over a 14-day dwell-time window
Query
// EMPERADOR Hunt: Edge access -> internal lateral movement -> archive staging
// Lookback aligned to assessed 5-14 day dwell time
let Lookback = 14d;
let SuspectExternal = dynamic(["vpn-gateway", "checkpoint", "screenconnect", "rdp-brute"]);
let EdgeHits =
    SigninLogs
    | where TimeGenerated > ago(Lookback)
    | where ResultType == 0
    | where AppDisplayName has_any (SuspectExternal) or IPAddress in (externaldata(string)[h"https://ti-feed.example/iocs.csv"] with (format="csv"))
    | summarize FirstSeen=min(TimeGenerated) by UserPrincipalName, IPAddress;
let Lateral =
    SecurityEvent
    | where TimeGenerated > ago(Lookback)
    | where EventID in (4624, 4672, 7045)
    | where LogonType in (3, 10)
    | where Process has_any ("PSEXESVC", "wmiprvse") or ServiceName has_any ("PSEXESVC", "paexec", "remcom")
    | summarize LateralEvents=count(), Hosts=dcount(Computer), FirstLat=min(TimeGenerated) by Account;
let Staging =
    DeviceProcessEvents
    | where TimeGenerated > ago(Lookback)
    | where FileName in~ ("rar.exe","7z.exe","7za.exe")
    | where ProcessCommandLine has_any (".bak", ".sql", ".mdf", "backup", "ProgramData")
    | summarize StagingHosts=dcount(DeviceName), FirstStage=min(TimeGenerated) by InitiatingProcessAccountName;
EdgeHits
| join kind=inner (Lateral) on $left.UserPrincipalName == $right.Account
| join kind=leftouter (Staging) on $left.UserPrincipalName == $right.InitiatingProcessAccountName
| project UserPrincipalName, EdgeIP=IPAddress, FirstSeen, LateralEvents, Hosts, StagingHosts, FirstStage
| where FirstLat > FirstSeen
| sort by FirstSeen asc

Hunting queries are starting points for threat hunting & detection engineering — validate table/column names against your own workspace schema and tune thresholds before turning any of these into a production alert rule.