Inventory blockchain RPC usage across endpoints
Finding
The first search establishes which endpoints and processes have normal blockchain RPC activity and which populations have no established Web3 baseline.
RPC infrastructure is legitimate shared infrastructure, so the hunt begins with environment context rather than IOC blocking.
View query
Q-01First searchInventory blockchain RPC usage across endpoints
What this checks
Establish which devices, users, and processes contact public blockchain RPC providers so unexpected RPC behavior can be separated from legitimate Web3 usage.
KQL
DeviceNetworkEvents
| where Timestamp >= ago(30d)
| where isnotempty(RemoteUrl)
| where (
RemoteUrl endswith "nodies.app"
or RemoteUrl endswith "tenderly.co"
or RemoteUrl endswith "1rpc.io"
or RemoteUrl endswith "drpc.org"
or RemoteUrl endswith "publicnode.com"
or RemoteUrl endswith "ankr.com"
or RemoteUrl endswith "quiknode.pro"
or RemoteUrl endswith "blastapi.io"
)
| summarize
FirstSeen=min(Timestamp),
LastSeen=max(Timestamp),
RpcEvents=count(),
RpcProviders=make_set(RemoteUrl, 50),
Processes=make_set(InitiatingProcessFileName, 30),
Users=make_set(InitiatingProcessAccountUpn, 30)
by DeviceId, DeviceName
| order by RpcEvents asc, LastSeen descSPL
index=<endpoint_network_index> sourcetype=<endpoint_network_events_sourcetype>
earliest=-30d
| eval
device=coalesce(device, dest, host, DeviceName),
user=lower(coalesce(user, AccountUpn, InitiatingProcessAccountUpn)),
process_name=lower(coalesce(process_name, InitiatingProcessFileName)),
remote_domain=lower(coalesce(remote_domain, RemoteUrl, dest_host))
| where match(
remote_domain,
"(?i)(nodies\.app|tenderly\.co|1rpc\.io|drpc\.org|publicnode\.com|ankr\.com|quiknode\.pro|blastapi\.io)$"
)
| stats
min(_time) as first_seen
max(_time) as last_seen
count as rpc_events
values(remote_domain) as rpc_providers
values(process_name) as processes
values(user) as users
by device
| convert ctime(first_seen) ctime(last_seen)
| sort rpc_events - last_seenWhat to look for
A baseline that distinguishes expected developer/wallet/monitoring populations from ordinary endpoints with rare RPC use.
Technical details
Tested signal
Environment-wide RPC usage grouped by device and initiating process.
Assumptions
- The RPC provider category is maintained as a defensive service list, not a malicious IOC list.
Data requirements and relevant fields
- network
Endpoint network telemetry with destination, initiating process, device, user, port, and stable initiating-process identity.
TimestampDeviceIdDeviceNameRemoteIPRemotePortRemoteUrlProtocolInitiatingProcessFileNameInitiatingProcessCommandLineInitiatingProcessIdInitiatingProcessUniqueIdInitiatingProcessAccountUpn
KQL schema
Uses documented Microsoft Defender XDR DeviceNetworkEvents/DeviceProcessEvents fields. Validate Defender for Endpoint coverage and local retention.
SPL schema
Replace index/sourcetype placeholders and normalize endpoint process/network fields to the local data source.
Limitations
- The provider list is not exhaustive and public services can change.
KQL uses Microsoft Defender XDR endpoint telemetry. SPL is a normalized raw-event scaffold and requires local endpoint/network field mapping.