T1557 CrowdStrike LogScale · LogScale

Detect Adversary-in-the-Middle in CrowdStrike LogScale

Adversaries may attempt to position themselves between two or more networked devices using an adversary-in-the-middle (AiTM) technique to support follow-on behaviors such as Network Sniffing (T1040), Transmitted Data Manipulation (T1565.002), or replay attacks. By abusing features of common networking protocols (ARP, DNS, LLMNR, DHCP), adversaries force devices to communicate through an adversary-controlled system to harvest credentials, session tokens, and sensitive data. Sub-techniques include LLMNR/NBT-NS Poisoning and SMB Relay (T1557.001), ARP Cache Poisoning (T1557.002), DHCP Spoofing (T1557.003), and Evil Twin wireless attacks (T1557.004). Common attack frameworks include Responder, Bettercap, Ettercap, ntlmrelayx, mitmproxy, dnschef, and EvilGinx2. Threat groups including Kimsuky, Sea Turtle, and Mustang Panda have leveraged AiTM positioning for large-scale credential theft, session hijacking, and DNS record manipulation at service providers.

MITRE ATT&CK

Tactic
Credential Access Collection
Technique
T1557 Adversary-in-the-Middle
Canonical reference
https://attack.mitre.org/techniques/T1557/

LogScale Detection Query

CrowdStrike LogScale (LogScale)
cql
// CrowdStrike LogScale (CQL) — AiTM Tool Execution Detection T1557
#event_simpleName=ProcessRollup2
| eval cmd_lower = lower(CommandLine)
| eval img_lower = lower(ImageFileName)
| eval IsLLMNRRelay = if(
    match(field=cmd_lower, regex="(responder|ntlmrelayx|smbrelayx|multirelay|impacket-ntlmrelayx)") OR
    match(field=img_lower, regex="(responder\.exe|ntlmrelayx)"),
    "1", "0")
| eval IsARPPoison = if(
    match(field=cmd_lower, regex="(bettercap|ettercap|arpspoof|arp\s+-s)") OR
    match(field=img_lower, regex="(bettercap\.exe|ettercap\.exe)"),
    "1", "0")
| eval IsSSLIntercept = if(
    match(field=cmd_lower, regex="(mitmproxy|mitmdump|mitmweb|sslstrip)") OR
    match(field=img_lower, regex="(mitmproxy|mitmdump|mitmweb)"),
    "1", "0")
| eval IsDNSSpoof = if(
    match(field=cmd_lower, regex="(dnschef|mitm6|evilginx)") OR
    match(field=img_lower, regex="(dnschef|mitm6|evilginx)"),
    "1", "0")
| eval IsDNSConfig = if(
    match(field=cmd_lower, regex="(set-dnsclientserveraddress|netsh interface ip set dns|netsh int ip set dns)"),
    "1", "0")
| eval IsPythonAiTM = if(
    match(field=img_lower, regex="(python\.exe|python3\.exe|python3)") AND
    match(field=cmd_lower, regex="(ntlmrelayx|smbrelayx|responder|mitm6|dnschef|evilginx|bettercap)"),
    "1", "0")
| eval SuspicionScore = tonumber(IsLLMNRRelay) + tonumber(IsARPPoison) + tonumber(IsSSLIntercept) + tonumber(IsDNSSpoof) + tonumber(IsDNSConfig) + tonumber(IsPythonAiTM)
| where SuspicionScore > 0
| eval DetectionCategory = case(
    IsLLMNRRelay=="1", "LLMNR_NBT_NS_Relay",
    IsARPPoison=="1", "ARP_Poisoning",
    IsSSLIntercept=="1", "SSL_Interception",
    IsDNSSpoof=="1", "DNS_Spoofing",
    IsDNSConfig=="1", "DNS_Config_Modification",
    "AiTM_Tool_Other")
| table([timestamp, ComputerName, UserName, ImageFileName, CommandLine, ParentBaseFileName, ParentCommandLine, IsLLMNRRelay, IsARPPoison, IsSSLIntercept, IsDNSSpoof, IsDNSConfig, IsPythonAiTM, SuspicionScore, DetectionCategory])
| sort(field=timestamp, order=desc)
high severity high confidence

CrowdStrike LogScale (Falcon) CQL query detecting AiTM tool execution via ProcessRollup2 events. Matches known tool names and command-line indicators for Responder, Bettercap, Ettercap, mitmproxy, ntlmrelayx, dnschef, mitm6, and EvilGinx2. Includes Python-wrapped AiTM script detection and DNS configuration modification patterns. Outputs suspicion scoring and per-category classification.

Data Sources

CrowdStrike Falcon Endpoint ProtectionFalcon ProcessRollup2 telemetryCrowdStrike LogScale SIEM

Required Tables

ProcessRollup2 events via #event_simpleName

False Positives & Tuning

  • CrowdStrike Falcon sensor telemetry from authorized red team endpoints during penetration testing engagements
  • Network engineers using arp.exe with -s flag for legitimate static ARP entry management
  • DNS administrators running netsh or Set-DnsClientServerAddress as part of approved infrastructure changes
  • Development teams using mitmproxy or mitmdump for HTTP/HTTPS API traffic inspection in non-production environments
Download portable Sigma rule (.yml)

Other platforms for T1557


Testing Methodology

Validate this detection against 5 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.

  1. Test 1ARP Static Entry Manipulation (Windows)

    Expected signal: Sysmon Event ID 1: Process Create with Image=C:\Windows\System32\arp.exe, CommandLine='arp -s 192.168.100.254 00-AA-BB-CC-DD-EE'. Security Event ID 4688 (if command-line auditing is enabled). No network events expected as this is a local table modification.

  2. Test 2DNS Server Change via netsh (Windows)

    Expected signal: Sysmon Event ID 1: Process Create with Image=C:\Windows\System32\netsh.exe, CommandLine containing 'interface ip set dns'. Sysmon Event ID 13: Registry value set under HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{GUID}\NameServer with new value '127.0.0.1'.

  3. Test 3DNS Server Change via PowerShell (Windows)

    Expected signal: Sysmon Event ID 1: Process Create with Image=powershell.exe, CommandLine containing 'Set-DnsClientServerAddress'. Sysmon Event ID 13: Registry modification at HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{GUID}\NameServer. PowerShell ScriptBlock Log Event ID 4104 showing the Set-DnsClientServerAddress call.

  4. Test 4ARP Poisoning Tool Execution — arpspoof (Linux)

    Expected signal: Syslog or auditd process creation event for arpspoof. On systems with Sysmon for Linux (sysmonforlinux): Event ID 1 Process Create with Image path to arpspoof binary and CommandLine '-i lo -t 127.0.0.1 127.0.0.2'. Auditd syscall records for execve with the arpspoof arguments.

  5. Test 5mitmproxy SSL Interception Tool Invocation (Linux/macOS)

    Expected signal: Process creation event for mitmproxy binary (path varies by pip install location, typically ~/.local/bin/mitmproxy or /usr/local/bin/mitmproxy). Sysmon Event ID 1 (if Sysmon for Linux deployed) with Image containing 'mitmproxy' and CommandLine '--version'. Auditd EXECVE syscall record.

Unlock Pro Content

Get the full detection package for T1557 including response playbook, investigation guide, and atomic red team tests.

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections