Detection rules › Sigma

External Remote SMB Logon from Public IP

Status
test
Severity
high
Log source
product windows, service security
Author
Micah Babinski (@micahbabinski), Zach Mathis (@yamatosecurity)
Source
github.com/SigmaHQ/sigma

Detects successful logon from public IP address via SMB. This can indicate a publicly-exposed SMB port.

MITRE ATT&CK coverage

Event coverage

Rule body yaml

title: External Remote SMB Logon from Public IP
id: 78d5cab4-557e-454f-9fb9-a222bd0d5edc
related:
    - id: 259a9cdf-c4dd-4fa2-b243-2269e5ab18a2
      type: derived
status: test
description: Detects successful logon from public IP address via SMB. This can indicate a publicly-exposed SMB port.
references:
    - https://www.inversecos.com/2020/04/successful-4624-anonymous-logons-to.html
    - https://twitter.com/Purp1eW0lf/status/1616144561965002752
author: Micah Babinski (@micahbabinski), Zach Mathis (@yamatosecurity)
date: 2023-01-19
modified: 2024-03-11
tags:
    - attack.privilege-escalation
    - attack.persistence
    - attack.initial-access
    - attack.credential-access
    - attack.stealth
    - attack.t1133
    - attack.t1078
    - attack.t1110
logsource:
    product: windows
    service: security
detection:
    selection:
        EventID: 4624
        LogonType: 3
    filter_main_local_ranges:
        IpAddress|cidr:
            - '::1/128'  # IPv6 loopback
            - '10.0.0.0/8'
            - '127.0.0.0/8'
            - '172.16.0.0/12'
            - '192.168.0.0/16'
            - '169.254.0.0/16'
            - 'fc00::/7'  # IPv6 private addresses
            - 'fe80::/10'  # IPv6 link-local addresses
    filter_main_empty:
        IpAddress: '-'
    condition: selection and not 1 of filter_main_*
falsepositives:
    - Legitimate or intentional inbound connections from public IP addresses on the SMB port.
level: high

Stages and Predicates

Stage 0: condition

selection and not 1 of filter_main_*

Stage 1: selection

selection:
    EventID: 4624
    LogonType: 3

Stage 2: not filter_main_*

filter_main_local_ranges:
    IpAddress|cidr:
        - '::1/128'
        - '10.0.0.0/8'
        - '127.0.0.0/8'
        - '172.16.0.0/12'
        - '192.168.0.0/16'
        - '169.254.0.0/16'
        - 'fc00::/7'
        - 'fe80::/10'
filter_main_empty:
    IpAddress: '-'

Exclusions

Top-level NOT(...) conjuncts: predicates this rule actively suppresses.

FieldKindExcluded values
IpAddresscidr_match10.0.0.0/8
IpAddresscidr_match127.0.0.0/8
IpAddresscidr_match169.254.0.0/16
IpAddresscidr_match172.16.0.0/12
IpAddresscidr_match192.168.0.0/16
IpAddresscidr_match::1/128
IpAddresscidr_matchfc00::/7
IpAddresscidr_matchfe80::/10
IpAddresseq-

Indicators

Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.

FieldKindValues
LogonTypeeq
  • 3 corpus 40 (splunk 13, sigma 12, elastic 9, kusto 6)