Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ML] Adds new security module to detect anomalous activity in host-based logs #195582

Merged
merged 6 commits into from
Nov 27, 2024
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"icon": "logoSecurity"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
{
"id": "security_host",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You'll need to make edits to a couple of the test files to fix the test errors:

https://github.com/elastic/kibana/blob/main/x-pack/test/functional/services/ml/supplied_configurations.ts#L30 - up the expected length to 19 for the new module.

https://github.com/elastic/kibana/blob/main/x-pack/test/api_integration/apis/ml/modules/get_module.ts#L15 - add in security_host to the two arrays in this file (module IDs need to be in alphabetical order, so it will need to go in after security_cloudtrail.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry I missed this one which will also need updating - https://github.com/elastic/kibana/blob/main/x-pack/test/api_integration/apis/ml/modules/recognize_module.ts#L136 - add in security_host to the expected array in this file, after security_auth.

"title": "Security: Host",
"description": "Detect anomalous activity in your ECS-compatible host-based logs.",
"type": "Host data",
"logoFile": "logo.json",
"defaultIndexPattern": "auditbeat-*,logs-*,filebeat-*,winlogbeat-*",
"query": {
"bool": {
"filter": [
{
"exists": {
"field": "event.category"
}
},
{
"exists": {
"field": "host.name"
}
},
{
"exists": {
"field": "event.dataset"
}
},
{
"term": {
"event.outcome": "success"
}
}
],
"must_not": { "terms": { "_tier": ["data_frozen", "data_cold"] } }
}
},
"jobs": [
{
"id": "high_count_events_for_a_host_name",
"file": "high_count_events_for_a_host_name.json"
},
{
"id": "low_count_events_for_a_host_name",
"file": "low_count_events_for_a_host_name.json"
}
],
"datafeeds": [
{
"id": "datafeed-high_count_events_for_a_host_name",
"file": "datafeed_high_count_events_for_a_host_name.json",
"job_id": "high_count_events_for_a_host_name"
},
{
"id": "datafeed-low_count_events_for_a_host_name",
"file": "datafeed_low_count_events_for_a_host_name.json",
"job_id": "low_count_events_for_a_host_name"
}
],
"tags": [
"security"
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"job_id": "JOB_ID",
"indices": [
"INDEX_PATTERN_NAME"
],
"max_empty_searches": 10,
"query": {
"bool": {
"filter": [
{
"exists": {
"field": "event.category"
}
},
{
"exists": {
"field": "host.name"
}
},
{
"exists": {
"field": "event.dataset"
}
},
{
"term": {
"event.outcome": "success"
}
}
]
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"job_id": "JOB_ID",
"indices": [
"INDEX_PATTERN_NAME"
],
"max_empty_searches": 10,
"query": {
"bool": {
"filter": [
{
"exists": {
"field": "event.category"
}
},
{
"exists": {
"field": "host.name"
}
},
{
"exists": {
"field": "event.dataset"
}
},
{
"term": {
"event.outcome": "success"
}
}
]
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"description": "Security: Host - Looks for a sudden spike in host based traffic. This can be due to a range of security issues, such as a compromised system, DDoS attacks, malware infections, privilege escalation, or data exfiltration.",
"groups": ["security", "host"],
"analysis_config": {
"bucket_span": "3h",
"detectors": [
{
"detector_description": "high count of host based events",
"function": "high_count",
"partition_field_name": "host.name",
"detector_index": 0
}
],
"influencers": ["host.name", "host.ip", "event.dataset", "event.action", "event.category"]
},
"allow_lazy_open": true,
"analysis_limits": {
"model_memory_limit": "128mb"
},
"data_description": {
"time_field": "@timestamp"
},
"custom_settings": {
"created_by": "ml-module-security-host",
"security_app_display_name": "Spike in the Host Traffic",
"managed": true,
"job_revision": 1
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"description": "Security: Host - Looks for a sudden drop in host based traffic. This can be due to a range of security issues, such as a compromised system, a failed service, or a network misconfiguration.",
"groups": ["security", "host"],
"analysis_config": {
"bucket_span": "3h",
"detectors": [
{
"detector_description": "low count of host based events",
"function": "low_count",
"partition_field_name": "host.name",
"detector_index": 0
}
],
"influencers": ["host.name", "host.ip", "event.dataset", "event.action", "event.category"]
},
"allow_lazy_open": true,
"analysis_limits": {
"model_memory_limit": "128mb"
},
"data_description": {
"time_field": "@timestamp"
},
"custom_settings": {
"created_by": "ml-module-security-host",
"security_app_display_name": "Decrease in the Host Traffic",
"managed": true,
"job_revision": 1
}
}
2 changes: 2 additions & 0 deletions x-pack/test/api_integration/apis/ml/modules/get_module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ const moduleIds = [
'sample_data_weblogs',
'security_auth',
'security_cloudtrail',
'security_host',
'security_linux_v3',
'security_network',
'security_packetbeat',
Expand All @@ -41,6 +42,7 @@ const securityModuleIds = [
'logs_ui_categories',
'security_auth',
'security_cloudtrail',
'security_host',
'security_linux_v3',
'security_network',
'security_packetbeat',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export function MachineLearningSuppliedConfigurationsProvider({ getService }: Ft
);
},
async assertAllConfigurationsAreLoaded() {
const expectedLength = 18;
const expectedLength = 19;
await retry.tryForTime(10 * 1000, async () => {
const cards = await testSubjects.findAll('mlSuppliedConfigurationsCard');
expect(cards.length).to.eql(
Expand Down