Suspicious Windows Process Cluster Spawned by a Host

A machine learning job combination has detected a set of one or more suspicious Windows processes with unusually high scores for malicious probability. These process(es) have been classified as malicious in several ways. The process(es) were predicted to be malicious by the ProblemChild supervised ML model. If the anomaly contains a cluster of suspicious processes, each process has the same host name, and the aggregate score of the event cluster was calculated to be unusually high by an unsupervised ML model. Such a cluster often contains suspicious or malicious activity, possibly involving LOLbins, that may be resistant to detection using conventional search rules.

Elastic rule (View on GitHub)

 1[metadata]
 2creation_date = "2023/10/16"
 3integration = ["problemchild", "endpoint", "windows"]
 4maturity = "production"
 5min_stack_comments = "LotL package job ID and rule removal updates"
 6min_stack_version = "8.9.0"
 7updated_date = "2024/04/01"
 8
 9[rule]
10anomaly_threshold = 75
11author = ["Elastic"]
12description = """
13A machine learning job combination has detected a set of one or more suspicious Windows processes with unusually high
14scores for malicious probability. These process(es) have been classified as malicious in several ways. The process(es)
15were predicted to be malicious by the ProblemChild supervised ML model. If the anomaly contains a cluster of suspicious
16processes, each process has the same host name, and the aggregate score of the event cluster was calculated to be
17unusually high by an unsupervised ML model. Such a cluster often contains suspicious or malicious activity, possibly
18involving LOLbins, that may be resistant to detection using conventional search rules.
19"""
20from = "now-45m"
21interval = "15m"
22license = "Elastic License v2"
23machine_learning_job_id = "problem_child_high_sum_by_host"
24name = "Suspicious Windows Process Cluster Spawned by a Host"
25setup = """## Setup
26
27The rule requires the Living off the Land (LotL) Attack Detection integration assets to be installed, as well as Windows process events collected by integrations such as Elastic Defend or Winlogbeat.  
28
29### LotL Attack Detection Setup
30The LotL Attack Detection integration detects living-off-the-land activity in Windows process events.
31
32#### Prerequisite Requirements:
33- Fleet is required for LotL Attack Detection.
34- To configure Fleet Server refer to the [documentation](https://www.elastic.co/guide/en/fleet/current/fleet-server.html).
35- Windows process events collected by the [Elastic Defend](https://docs.elastic.co/en/integrations/endpoint) integration or Winlogbeat(https://www.elastic.co/guide/en/beats/winlogbeat/current/_winlogbeat_overview.html).
36- To install Elastic Defend, refer to the [documentation](https://www.elastic.co/guide/en/security/current/install-endpoint.html).
37- To set up and run Winlogbeat, follow [this](https://www.elastic.co/guide/en/beats/winlogbeat/current/winlogbeat-installation-configuration.html) guide.
38
39#### The following steps should be executed to install assets associated with the LotL Attack Detection integration:
40- Go to the Kibana homepage. Under Management, click Integrations.
41- In the query bar, search for Living off the Land Attack Detection and select the integration to see more details about it.
42- Under Settings, click Install Living off the Land Attack Detection assets and follow the prompts to install the assets.
43
44#### Ingest Pipeline Setup
45**Before you can enable this rule**, you'll need to enrich Windows process events with predictions from the Supervised LotL Attack Detection model. This is done via the ingest pipeline named `<package_version>-problem_child_ingest_pipeline` installed with the LotL Attack Detection package.
46- If using an Elastic Beat such as Winlogbeat, add the LotL ingest pipeline to it by adding a simple configuration [setting](https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest.html#pipelines-for-beats) to `winlogbeat.yml`.
47- If adding the LotL ingest pipeline to an existing pipeline, use a [pipeline processor](https://www.elastic.co/guide/en/elasticsearch/reference/current/pipeline-processor.html). For example, you can check if your winlogbeat or Elastic Defend (the [default index pattern](https://docs.elastic.co/en/integrations/endpoint#logs) being `logs-endpoint*`) already has an ingest pipeline by navigating to `Data > Index Management`, finding the index (sometimes you need to toggle "Include hidden indices"), and checking the index's settings for a default or final [pipeline](https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest.html#set-default-pipeline).
48
49#### Adding Custom Mappings
50- Go to the Kibana homepage. Under Management, click Stack Management.
51- Under Data click Index Management and navigate to the Component Templates tab.
52- Templates that can be edited to add custom components will be marked with a @custom suffix. Edit the @custom component template corresponding to the beat/integration you added the LotL ingest pipeline to, by pasting the following JSON blob in the "Load JSON" flyout:

{ "properties": { "problemchild": { "properties": { "prediction": { "type": "long" }, "prediction_probability": { "type": "float" } } }, "blocklist_label": { "type": "long" } } }

 1
 2### Anomaly Detection Setup
 3**Before you can enable this rule**, you'll need to enable the corresponding Anomaly Detection job. 
 4- Go to the Kibana homepage. Under Analytics, click Machine Learning.
 5- Under Anomaly Detection, click Jobs, and then click "Create job". Select the Data View containing your enriched Windows process events. For example, this would be `logs-endpoint.events.*` if you used Elastic Defend to collect events, or `winlogbeat-*` if you used Winlogbeat.
 6- If the selected Data View contains events that match the query in [this](https://github.com/elastic/integrations/blob/main/packages/problemchild/kibana/ml_module/problemchild-ml.json) configuration file, you will see a card for "Living off the Land Attack Detection" under "Use preconfigured jobs". Warning: if the ingest pipeline hasn't run for some reason, such as no eligible data in winlogbeat has come in yet, _you won't be able to see this card yet_. If that is the case, try troubleshooting the ingest pipeline, and if any ProblemChild predictions have been populated yet.
 7- Keep the default settings and click "Create jobs" to start the anomaly detection job and datafeed.
 8"""
 9references = [
10    "https://www.elastic.co/guide/en/security/current/prebuilt-ml-jobs.html",
11    "https://docs.elastic.co/en/integrations/problemchild",
12    "https://www.elastic.co/security-labs/detecting-living-off-the-land-attacks-with-new-elastic-integration",
13]
14risk_score = 21
15rule_id = "bdfebe11-e169-42e3-b344-c5d2015533d3"
16severity = "low"
17tags = [
18    "Use Case: Living off the Land Attack Detection",
19    "Rule Type: ML",
20    "Rule Type: Machine Learning",
21    "Tactic: Defense Evasion",
22]
23type = "machine_learning"
24[[rule.threat]]
25framework = "MITRE ATT&CK"
26[[rule.threat.technique]]
27id = "T1036"
28name = "Masquerading"
29reference = "https://attack.mitre.org/techniques/T1036/"
30
31
32[rule.threat.tactic]
33id = "TA0005"
34name = "Defense Evasion"
35reference = "https://attack.mitre.org/tactics/TA0005/"

References

Related rules

to-top