feat(greynoise): new GreyNoise enrichment integration
7 commands: IP context, quick check, RIOT, GNQL query + stats, IP timeline. API-key auth, stdlib-only. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
id: greynoise
|
||||
name: GreyNoise
|
||||
version: 1.0.0
|
||||
description: "GreyNoise (API v2/v3) — tell internet background-noise scanners from targeted activity: IP context and quick classification, RIOT common-business-service lookup, GNQL query and stats, and IP scan timeline. API-key authentication; stdlib-only, no extra Python dependencies."
|
||||
changelog: "1.0.0 — Initial release: IP context, quick check, RIOT, GNQL query and stats, and IP timeline."
|
||||
category: enrichment
|
||||
|
||||
config_schema:
|
||||
properties:
|
||||
api_key:
|
||||
type: string
|
||||
description: "GreyNoise API key"
|
||||
x-soar-sensitive: true
|
||||
required:
|
||||
- api_key
|
||||
|
||||
commands:
|
||||
- id: ip_context
|
||||
name: greynoise-ip-context
|
||||
description: "Full GreyNoise context for an IP (classification, actor, tags, metadata)."
|
||||
risk: read
|
||||
inputs_schema:
|
||||
properties:
|
||||
ip: { type: string, description: "IP address" }
|
||||
required: [ip]
|
||||
outputs_schema: { properties: {} }
|
||||
- id: ip_quick_check
|
||||
name: greynoise-ip-quick-check
|
||||
description: "Quick noise/RIOT classification for an IP (lightweight)."
|
||||
risk: read
|
||||
inputs_schema:
|
||||
properties:
|
||||
ip: { type: string, description: "IP address" }
|
||||
required: [ip]
|
||||
outputs_schema: { properties: {} }
|
||||
- id: riot
|
||||
name: greynoise-riot
|
||||
description: "RIOT lookup — is the IP a known common business service (e.g. Google DNS, Office365)?"
|
||||
risk: read
|
||||
inputs_schema:
|
||||
properties:
|
||||
ip: { type: string, description: "IP address" }
|
||||
required: [ip]
|
||||
outputs_schema: { properties: {} }
|
||||
- id: query
|
||||
name: greynoise-query
|
||||
description: "Run a GNQL (GreyNoise Query Language) query and return matching IPs."
|
||||
risk: read
|
||||
inputs_schema:
|
||||
properties:
|
||||
query: { type: string, description: "GNQL query string" }
|
||||
size: { type: number, description: "Maximum results (default 50)" }
|
||||
scroll: { type: string, description: "Scroll token for the next page" }
|
||||
required: [query]
|
||||
outputs_schema: { properties: {} }
|
||||
- id: stats
|
||||
name: greynoise-stats
|
||||
description: "Aggregate statistics for a GNQL query (counts by classification, org, tag, …)."
|
||||
risk: read
|
||||
inputs_schema:
|
||||
properties:
|
||||
query: { type: string, description: "GNQL query string" }
|
||||
count: { type: number, description: "Number of top aggregations to return" }
|
||||
required: [query]
|
||||
outputs_schema: { properties: {} }
|
||||
- id: timeline
|
||||
name: greynoise-timeline
|
||||
description: "Daily scan-activity timeline for an IP."
|
||||
risk: read
|
||||
inputs_schema:
|
||||
properties:
|
||||
ip: { type: string, description: "IP address" }
|
||||
days: { type: number, description: "Number of days of history (default 30)" }
|
||||
required: [ip]
|
||||
outputs_schema: { properties: {} }
|
||||
|
||||
- id: test_connection
|
||||
name: greynoise-test-connection
|
||||
description: "Verify the API key (used by the Test button)."
|
||||
risk: read
|
||||
inputs_schema:
|
||||
properties: {}
|
||||
required: []
|
||||
outputs_schema: { properties: {} }
|
||||
Reference in New Issue
Block a user