Detection rules › Splunk
Windows Netspy Network Scanner Execution
Detects usage of the Netspy scanner on an endpoint. Netspy is a lightweight, fast, and cross-platform tool designed for internal network segment discovery. The tool supports various protocols, including ICMP, ARP, TCP, and UDP, allowing users to scan for active hosts and services within predefined IP ranges.
Known false positives
- Legitimate network administrators may use Netspy for authorized network discovery and maintenance. Filter alerts for approved internal network scanning activities.
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Reconnaissance | |
| Discovery |
Telemetry coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 1: Process creation |
| Security-Auditing | Event ID 4688: A new process has been created. |
Rule body
name: Windows Netspy Network Scanner Execution
id: f3ee1ff4-38ab-451e-8dfc-659dea57045f
version: 2
creation_date: '2021-05-07'
modification_date: '2026-05-13'
author: Raven Tait, Splunk
status: production
type: Anomaly
description: |-
Detects usage of the Netspy scanner on an endpoint.
Netspy is a lightweight, fast, and cross-platform tool designed for internal network segment discovery.
The tool supports various protocols, including ICMP, ARP, TCP, and UDP, allowing users to scan for active hosts and services within predefined IP ranges.
data_source:
- Sysmon EventID 1
- Windows Event Log Security 4688
- CrowdStrike ProcessRollup2
search: |-
| tstats `security_content_summariesonly`
count min(_time) as firstTime
max(_time) as lastTime
from datamodel=Endpoint.Processes where
Processes.process_name="netspy.exe"
Processes.process IN (
"*arpspy*",
"*as*",
"*icmpspy*",
"*is*",
"*pingspy*",
"*ps*",
"*tcpspy*",
"*ts*",
"*udpspy*",
"*us*"
)
by Processes.process Processes.process_name Processes.user_id Processes.process_hash
Processes.parent_process_name Processes.parent_process_exec Processes.action
Processes.dest Processes.process_current_directory Processes.process_path
Processes.process_integrity_level Processes.original_file_name Processes.parent_process
Processes.parent_process_path Processes.parent_process_guid Processes.parent_process_id
Processes.process_guid Processes.process_id Processes.user Processes.vendor_product
| `drop_dm_object_name(Processes)`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `windows_netspy_network_scanner_execution_filter`
how_to_implement: The detection is based on data that originates from Endpoint Detection and Response (EDR) agents. These agents are designed to provide security-related telemetry from the endpoints where the agent is installed. To implement this search, you must ingest logs that contain the process GUID, process name, and parent process. Additionally, you must ingest complete command-line executions. These logs must be processed using the appropriate Splunk Technology Add-ons that are specific to the EDR product. The logs must also be mapped to the `Processes` node of the `Endpoint` data model. Use the Splunk Common Information Model (CIM) to normalize the field names and speed up the data modeling process.
known_false_positives: Legitimate network administrators may use Netspy for authorized network discovery and maintenance. Filter alerts for approved internal network scanning activities.
references:
- https://www.securonix.com/blog/from-cobalt-strike-to-mimikatz-slowtempest/
- https://github.com/shmilylty/netspy
intermediate_findings:
entities:
- field: dest
type: system
score: 50
message: Potential Netspy Network Scanner activity observed on $dest$ via $process$.
threat_objects:
- field: parent_process_name
type: parent_process_name
analytic_story:
- Network Discovery
- Windows Discovery Techniques
asset_type: Endpoint
mitre_attack_id:
- T1595
- T1018
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: endpoint
security_domain: endpoint
Stages and Predicates
Stage 1: tstats
| tstats `security_content_summariesonly`
count min(_time) as firstTime
max(_time) as lastTime
from datamodel=Endpoint.Processes where
Processes.process_name="netspy.exe"
Processes.process IN (
"*arpspy*",
"*as*",
"*icmpspy*",
"*is*",
"*pingspy*",
"*ps*",
"*tcpspy*",
"*ts*",
"*udpspy*",
"*us*"
)
by Processes.process Processes.process_name Processes.user_id Processes.process_hash
Processes.parent_process_name Processes.parent_process_exec Processes.action
Processes.dest Processes.process_current_directory Processes.process_path
Processes.process_integrity_level Processes.original_file_name Processes.parent_process
Processes.parent_process_path Processes.parent_process_guid Processes.parent_process_id
Processes.process_guid Processes.process_id Processes.user Processes.vendor_product
Stage 2: search
| `drop_dm_object_name(Processes)`
Stage 3: search
| `security_content_ctime(firstTime)`
Stage 4: search
| `security_content_ctime(lastTime)`
Stage 5: search
| `windows_netspy_network_scanner_execution_filter`
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
Processes.process | in |
| field:"CommandLine" kind:in |
Processes.process_name | eq |
| field:"process_name" kind:eq |