Skip to content

Commit c04910a

Browse files
authored
[GreyNoise] Add Integration Package (#13745)
Added 1 data stream (ip). Added data collection logic for the data streams. Added the ingest pipeline for the data streams. Mapped fields according to the ECS schema and added Fields metadata in the appropriate yaml files. Added dashboards and visualizations. Added system test cases for the data stream.
1 parent 343229e commit c04910a

34 files changed

+3399
-0
lines changed

.github/CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,7 @@
437437
/packages/ti_eclecticiq @elastic/security-service-integrations
438438
/packages/ti_eset @elastic/security-service-integrations
439439
/packages/ti_google_threat_intelligence @elastic/security-service-integrations
440+
/packages/ti_greynoise @elastic/security-service-integrations
440441
/packages/ti_maltiverse @elastic/security-service-integrations
441442
/packages/ti_mandiant_advantage @elastic/security-service-integrations
442443
/packages/ti_misp @elastic/security-service-integrations
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
dependencies:
2+
ecs:
3+
reference: [email protected]
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# GreyNoise
2+
3+
## Overview
4+
5+
[GreyNoise](https://www.greynoise.io/) is a cybersecurity platform that helps security teams filter out "internet noise" — background internet scanning activity that's not necessarily targeted or malicious. It collects, analyzes, and labels massive amounts of data from internet-wide scans, typically originating from bots, security researchers, or compromised systems.
6+
7+
## Prerequisites for GreyNoise
8+
9+
Customers must have access to the **Enterprise API** to fetch data from GreyNoise. You can verify your API key access [here](https://viz.greynoise.io/account/api-key).
10+
11+
## Requirements
12+
13+
Elastic Agent must be installed. For more details, check the Elastic Agent [installation instructions](docs-content://reference/fleet/install-elastic-agents.md).
14+
15+
## Setup
16+
17+
### To Collect Logs Through REST API
18+
19+
1. After logging in to GreyNoise, navigate to your [account page](https://viz.greynoise.io/account/api-key).
20+
2. Click "View API Key" to display and copy your unique API key.
21+
22+
### Enabling the Integration in Elastic
23+
24+
1. In Kibana, go to **Management > Integrations**.
25+
2. In the "Search for integrations" search bar, type **GreyNoise**.
26+
3. Click the **GreyNoise** integration from the search results.
27+
4. Click the **Add GreyNoise** button to add the integration.
28+
5. While adding the integration, provide the following details to collect logs via REST API:
29+
- API Key
30+
- Interval
31+
- (Optional) Query for custom query filtering
32+
6. Click **Save and Continue** to save the integration.
33+
34+
**Note:** The "last_seen" field should not be included in the query as it is predefined with a fixed value of "1d".
35+
36+
## Transforming Data for Up-to-Date Insights
37+
38+
To keep the collected data up to date, **Transforms** are used.
39+
40+
You can view transforms by navigating to **Management > Stack Management > Transforms**.
41+
42+
Here, you can see continuously running transforms and view the latest transformed GreyNoise data in the **Discover** section.
43+
44+
The `labels.is_transform_source` field indicates log origin:
45+
- **False** for transformed index
46+
- **True** for source index
47+
48+
Currently, one transform is running for the IP datastream:
49+
50+
| Transform Name | Description |
51+
|----------------|-------------|
52+
| IP Transform (ID: `logs-ti_greynoise.ip`) | Keeps IP entity type data up to date |
53+
54+
For example:
55+
- The query `event.module: ti_greynoise and labels.is_transform_source: true` shows logs from the **source index**
56+
- The query `event.module: ti_greynoise and labels.is_transform_source: false` shows logs from the **transformed index**
57+
58+
A **retention policy** removes data older than the default retention period. For more details, refer to the [Retention Policy Documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/put-transform.html#:~:text=to%20false.-,retention_policy,-(Optional%2C%20object)%20Defines).
59+
60+
In this integration, the IP data stream has a default **retention period of 7 days**.
61+
62+
## Troubleshooting
63+
64+
1. If you experience latency issues during data collection, consider increasing the `HTTP Client Timeout` configuration parameter.
65+
2. If server-side errors occur, consider reducing the `Page Size` configuration parameter.
66+
**Note:** Avoid setting the `Page Size` too low, as this may increase the number of API requests, potentially causing processing issues.
67+
3. If events are not appearing in the transformed index, check if transforms are running without errors. For issues, refer to [Troubleshooting transforms](https://www.elastic.co/guide/en/elasticsearch/reference/current/transform-troubleshooting.html).
68+
69+
## Logs Reference
70+
71+
### IP
72+
73+
This is the `IP` dataset. It uses the [GNQL Endpoint](https://docs.greynoise.io/reference/gnqlquery-1) to fetch data from GreyNoise with "last_seen:1d". It uses version v3 of the API to collect indicators. Currently, the [Triage](https://docs.greynoise.io/docs/intelligence-module-triage) and [Business Services](https://docs.greynoise.io/docs/intelligence-module-business-services) Intelligence Modules are being collected through this data stream.
74+
75+
#### Example
76+
77+
{{event "ip"}}
78+
79+
{{fields "ip"}}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
version: '2.3'
2+
services:
3+
ti_greynoise:
4+
image: docker.elastic.co/observability/stream:v0.15.0
5+
hostname: ti_greynoise
6+
ports:
7+
- 8090
8+
volumes:
9+
- ./files:/files:ro
10+
environment:
11+
PORT: '8090'
12+
command:
13+
- http-server
14+
- --addr=:8090
15+
- --config=/files/config.yml

0 commit comments

Comments
 (0)