T1498.002

Reflection Amplification

Adversaries may attempt to cause a denial of service (DoS) by reflecting a high-volume of network traffic to a target using third-party server intermediaries (reflectors). The attacker sends UDP packets to publicly accessible servers with the victim's spoofed source IP address, causing those servers to direct large responses at the victim. This technique exploits protocols whose responses are significantly larger than requests — known as amplification. Prominent amplification vectors include DNS (ANY queries, amplification factor ~28–54x), NTP (monlist command, up to 700x), memcached UDP (up to 51,200x), SSDP (up to 30x), CLDAP/LDAP (up to 70x), and CharGen (up to 358x). Because UDP allows source IP spoofing without a three-way handshake, attackers can direct enormous response volumes at a victim with minimal bandwidth cost. Multiple compromised systems (botnets) are commonly used to multiply the effect. Impacts include network link saturation, upstream provider congestion, and complete unavailability of internet-facing services.

Microsoft Sentinel / Defender
kusto
let AmplificationPorts = dynamic([53, 123, 11211, 1900, 389, 5353, 161, 19, 5683, 1434, 17, 520, 1194]);
let SamplingWindow = 5m;
let InboundFloodThreshold = 500;
let UniqueSourceThreshold = 25;
// Part 1: Victim-side detection — inbound flood from reflectors (CommonSecurityLog / firewall)
// Reflectors respond FROM amplification service ports TO the spoofed victim IP
let InboundFlood =
    CommonSecurityLog
    | where TimeGenerated > ago(1h)
    | where Protocol =~ "UDP"
    | where SourcePort in (AmplificationPorts)
    | summarize
        ConnectionCount = count(),
        UniqueSourceIPs = dcount(SourceIP),
        TotalBytesReceived = sum(ReceivedBytes),
        AmplificationPortsSeen = make_set(SourcePort, 10),
        SampleSourceIPs = make_set(SourceIP, 5)
      by DestinationIP, bin(TimeGenerated, SamplingWindow)
    | where ConnectionCount > InboundFloodThreshold or UniqueSourceIPs > UniqueSourceThreshold
    | extend
        DetectionType = "Inbound Reflection Flood (Victim)",
        AttackType = case(
            AmplificationPortsSeen has "53",    "DNS Amplification",
            AmplificationPortsSeen has "123",   "NTP Amplification",
            AmplificationPortsSeen has "11211", "Memcached Amplification",
            AmplificationPortsSeen has "1900",  "SSDP Amplification",
            AmplificationPortsSeen has "389",   "CLDAP Amplification",
            AmplificationPortsSeen has "1434",  "MSSQL/SSDP Amplification",
            AmplificationPortsSeen has "161",   "SNMP Amplification",
            AmplificationPortsSeen has "5683",  "CoAP Amplification",
            AmplificationPortsSeen has "17",    "CharGen Amplification",
            "Generic Reflection Amplification"
        ),
        GbReceived = round(toreal(TotalBytesReceived) / 1073741824.0, 3)
    | project TimeGenerated, AffectedIP = DestinationIP, AttackType, DetectionType, ConnectionCount, UniqueSourceIPs, GbReceived, AmplificationPortsSeen, SampleSourceIPs;
// Part 2: Attacker/Bot-side detection — endpoint making high-volume outbound UDP to many amplification-port IPs
// This catches compromised hosts participating in a DDoS botnet
let OutboundAttack =
    DeviceNetworkEvents
    | where Timestamp > ago(1h)
    | where Protocol =~ "Udp"
    | where RemotePort in (AmplificationPorts)
    | where RemoteIPType == "Public"
    | summarize
        ConnectionCount = count(),
        UniqueDestinations = dcount(RemoteIP),
        PortsTargeted = make_set(RemotePort, 10),
        SampleDestIPs = make_set(RemoteIP, 5)
      by DeviceName, LocalIP, InitiatingProcessFileName, bin(Timestamp, SamplingWindow)
    | where UniqueDestinations > 50 or ConnectionCount > 1000
    | extend
        DetectionType = "Outbound to Amplifiers (Bot/Attacker)",
        AttackType = case(
            PortsTargeted has "53",    "DNS Amplification Sender",
            PortsTargeted has "123",   "NTP Amplification Sender",
            PortsTargeted has "11211", "Memcached Amplification Sender",
            PortsTargeted has "1900",  "SSDP Amplification Sender",
            PortsTargeted has "389",   "CLDAP Amplification Sender",
            "Generic Amplification Sender"
        ),
        GbReceived = 0.0
    | project
        TimeGenerated = Timestamp,
        AffectedIP = LocalIP,
        AttackType,
        DetectionType,
        ConnectionCount,
        UniqueSourceIPs = UniqueDestinations,
        GbReceived,
        AmplificationPortsSeen = PortsTargeted,
        SampleSourceIPs = SampleDestIPs;
InboundFlood
| union OutboundAttack
| sort by ConnectionCount desc
high severity medium confidence

Data Sources

Network Traffic: Network Traffic Flow Network Traffic: Network Traffic Content Microsoft Defender for Endpoint Azure NSG Flow Logs / CommonSecurityLog

Required Tables

CommonSecurityLog DeviceNetworkEvents

False Positives

  • Legitimate high-traffic DNS or NTP servers receiving large volumes of resolution requests from many clients — an authoritative DNS server may see hundreds of unique source IPs per minute normally
  • CDN or load balancer nodes that legitimately receive high UDP traffic volumes from distributed clients
  • Network scanning tools (nmap, masscan) running authorized reconnaissance that contact many amplification-port hosts in bulk
  • Misconfigured or chatty IoT devices sending repeated SSDP or mDNS discovery packets that aggregate to threshold levels
  • Cloud environments during peak load where auto-scaling triggers many simultaneous DNS lookups from newly spawned instances

Unlock Pro Content

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

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections