Detection: Internal Vulnerability Scan

EXPERIMENTAL DETECTION

This detection status is set to experimental. The Splunk Threat Research team has not yet fully tested, simulated, or built comprehensive datasets for this detection. As such, this analytic is not officially supported. If you have any questions or concerns, please reach out to us at research@splunk.com.

Description

This analytic detects internal hosts triggering multiple IDS signatures, which may include either more than 25 signatures against a single host or a single signature across over 25 destination IP addresses. Such patterns can indicate active vulnerability scanning activities within the network. By monitoring IDS logs, this detection helps identify and respond to potential vulnerability scanning attempts, enhancing the network's security posture and preventing potential exploits.

 1
 2| tstats `security_content_summariesonly` values(IDS_Attacks.action) as action values(IDS_Attacks.src_category) as src_category values(IDS_Attacks.dest_category) as dest_category count from datamodel=Intrusion_Detection.IDS_Attacks where IDS_Attacks.src IN (10.0.0.0/8,192.168.0.0/16,172.16.0.0/12) IDS_Attacks.severity IN (critical, high, medium) by IDS_Attacks.src IDS_Attacks.severity IDS_Attacks.signature IDS_Attacks.dest IDS_Attacks.dest_port IDS_Attacks.transport span=1s _time 
 3| `drop_dm_object_name("IDS_Attacks")` 
 4| eval gtime=_time 
 5| bin span=1h gtime 
 6| eventstats count as sevCount by severity src 
 7| eventstats count as sigCount by signature src 
 8| eval severity=severity +"("+sevCount+")" 
 9| eval signature=signature +"("+sigCount+")" 
10| eval dest_port=transport + "/" + dest_port 
11| stats min(_time) as _time values(action) as action dc(dest) as destCount dc(signature) as sigCount values(signature) values(src_category) as src_category values(dest_category) as dest_category values(severity) as severity values(dest_port) as dest_ports by src gtime 
12| fields - gtime 
13| where destCount>25 OR sigCount>25 
14| `internal_vulnerability_scan_filter`

Data Source

Name Platform Sourcetype Source Supported App
N/A N/A N/A N/A N/A

Macros Used

Name Value
security_content_summariesonly summariesonly=summariesonly_config allow_old_summaries=oldsummaries_config fillnull_value=fillnull_config``
internal_vulnerability_scan_filter search *
internal_vulnerability_scan_filter is an empty macro by default. It allows the user to filter out any results (false positives) without editing the SPL.

Annotations

- MITRE ATT&CK
+ Kill Chain Phases
+ NIST
+ CIS
- Threat Actors
ID Technique Tactic
T1595.002 Vulnerability Scanning Reconnaissance
T1046 Network Service Discovery Discovery
KillChainPhase.EXPLOITAITON
KillChainPhase.RECONNAISSANCE
NistCategory.DE_CM
Cis18Value.CIS_13
APT28
APT29
APT41
Aquatic Panda
Dragonfly
Earth Lusca
Magic Hound
Sandworm Team
TeamTNT
Volatile Cedar
APT32
APT39
APT41
BackdoorDiplomacy
BlackTech
Chimera
Cobalt Group
DarkVishnya
FIN13
FIN6
Fox Kitten
Lazarus Group
Leafminer
Magic Hound
Naikon
OilRig
Rocke
Suckfly
TeamTNT
Threat Group-3390
Tropic Trooper
menuPass

Default Configuration

This detection is configured by default in Splunk Enterprise Security to run with the following settings:

Setting Value
Disabled true
Cron Schedule 0 * * * *
Earliest Time -70m@m
Latest Time -10m@m
Schedule Window auto
Creates Notable Yes
Rule Title %name%
Rule Description %description%
Notable Event Fields user, dest
Creates Risk Event True
This configuration file applies to all detections of type TTP. These detections will use Risk Based Alerting and generate Notable Events.

Implementation

For this detection to function effectively, it is essential to ingest IDS/IPS logs that are mapped to the Common Information Model (CIM). These logs provide the necessary security-related telemetry and contextual information needed to accurately identify and analyze potential threats.

Known False Positives

Internal vulnerability scanners will trigger this detection.

Associated Analytic Story

Risk Based Analytics (RBA)

Risk Message Risk Score Impact Confidence
Large volume of IDS signatures triggered by $src$ 64 80 80
The Risk Score is calculated by the following formula: Risk Score = (Impact * Confidence/100). Initial Confidence and Impact is set by the analytic author.

Detection Testing

Test Type Status Dataset Source Sourcetype
Validation Not Applicable N/A N/A N/A
Unit ❌ Failing N/A N/A N/A
Integration ❌ Failing N/A N/A N/A

Replay any dataset to Splunk Enterprise by using our replay.py tool or the UI. Alternatively you can replay a dataset into a Splunk Attack Range


Source: GitHub | Version: 1