You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
*`<fields>` is a list of comma separated entity field names. At least one field name is required.
637
-
*`<filters>` is a logical expression using indicator attributes. (Allowed are parentheses `()`; `OR` and `AND` boolean operators; and comparison operators `=`, `<`, `>`, `=<`, `=>`, `!=`.)
636
+
*`<fields>` is a list of comma-separated [field names](https://github.com/SumoLogic/cloud-siem-content-catalog/blob/master/schema/full_schema.md). At least one field name is required.
637
+
*`<filters>` is a logical expression using [indicator attributes](/docs/security/threat-intelligence/upload-formats/#normalized-json-format). Allowed in the filtering are parentheses `()`; `OR` and `AND` boolean operators; and comparison operators `=`, `<`, `>`, `=<`, `=>`, `!=`. <br/>You can filter on the following indicator attributes:
638
+
*`actors`
639
+
*`confidence`
640
+
*`id`
641
+
*`indicator`
642
+
*`killChain`
643
+
*`source`
644
+
*`threatType`
645
+
*`type`
646
+
*`validFrom`
647
+
*`validUntil`
638
648
*`<indicators>` is an optional case insensitive option that describes how indicators should be matched with regard to their validity. Accepted values are:
639
649
*`active_indicators`. Match active indicators only (default).
640
650
*`expired_indicators`. Match expired indicators only.
As a best practice, always include filtering to narrow your search to just the types desired (that is, `type=`). This will ensure that your search results are not overly broad.
653
667
654
668
For example:
655
-
*`hasThreatMatch([dstDevice_ip], confidence > 1 AND (type ='ipv4-addr:value' OR type='ipv6-addr:value'))`
656
-
*`hasThreatMatch([file_hash_imphash,file_hash_md5,file_hash_pehash,file_hash_ssdeep,file_hash_sha1,file_hash_sha256], confidence > 1 AND type = 'file:hashes')`
| parse "\"httpMethod\":\"*\"," as httpMethod,"\"httpVersion\":\"*\"," as httpVersion,"\"uri\":\"*\"," as uri, "{\"clientIp\":\"*\",\"country\":\"*\"" as clientIp,country, "\"action\":\"*\"" as action, "\"matchingNonTerminatingRules\":[*]" as matchingNonTerminatingRules, "\"rateBasedRuleList\":[*]" as rateBasedRuleList, "\"ruleGroupList\":[*]" as ruleGroupList, "\"httpSourceId\":\"*\"" as httpSourceId, "\"httpSourceName\":\"*\"" as httpSourceName, "\"terminatingRuleType\":\"*\"" as terminatingRuleType, "\"terminatingRuleId\":\"*\"" as terminatingRuleId, "\"webaclId\":\"*\"" as webaclId nodrop
67
67
| threatlookup singleIndicator clientip
68
-
| where (_threatlookup.type="ipv4-addr:value" or _threatlookup.type="ipv6-addr:value") and !isNull(_threatlookup.confidence)
68
+
| where (_threatlookup.type="ipv4-addr" or _threatlookup.type="ipv6-addr") and !isNull(_threatlookup.confidence)
Copy file name to clipboardExpand all lines: docs/integrations/security-threat-detection/threat-intel-quick-analysis.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -111,7 +111,7 @@ Use [Field Extraction Rules (FER)](/docs/manage/field-extractions/create-field-e
111
111
```
112
112
| threatlookup singleIndicator src_ip
113
113
| parse regex field=%"_threatlookup.fields" "labels.[^.]+.name\":\"(?<label_name>[^\"]+)\"" multi
114
-
| where (_threatlookup.type="ipv4-addr:value" or _threatlookup.type="ipv6-addr:value") and !isNull(_threatlookup.confidence)
114
+
| where (_threatlookup.type="ipv4-addr" or _threatlookup.type="ipv6-addr") and !isNull(_threatlookup.confidence)
115
115
| if (isEmpty(_threatlookup.actors), "Unassigned", _threatlookup.actors) as Actor
116
116
| count as threat_count by src_ip, malicious_confidence, Actor, _source, label_name
117
117
| sort by threat_count
@@ -138,7 +138,7 @@ Use scheduled views with the threat lookup operator to find threats. Scheduled v
138
138
_sourceCategory=cylance
139
139
| threatlookup singleIndicator src_ip
140
140
| parse regex field=%"_threatlookup.fields" "labels.[^.]+.name\":\"(?<label_name>[^\"]+)\"" multi
141
-
| where (_threatlookup.type="ipv4-addr:value" or _threatlookup.type="ipv6-addr:value") and !isNull(_threatlookup.confidence)
141
+
| where (_threatlookup.type="ipv4-addr" or _threatlookup.type="ipv6-addr") and !isNull(_threatlookup.confidence)
142
142
| if (isEmpty(_threatlookup.actors), "Unassigned", _threatlookup.actors) as Actor
143
143
| lookup latitude, longitude, country_code, country_name, region, city, postal_code, area_code, metro_code from geo://default on ip = src_ip
144
144
| count as threat_count by src_ip, malicious_confidence, Actor, _source, label_name, city, country_name, raw
@@ -183,7 +183,7 @@ Yes, you can customize the query in the app. For example:
183
183
_sourceCategory= */*/FIREWALL or _sourceCategory=*/*/LB or _sourceCategory=*/*/ROUTER or _sourceCategory=*/*/WINDOWS or _sourceCategory=*/*/SERVER
184
184
| where Your_IP != "0.0.0.0" and Your_IP != "127.0.0.1"
185
185
| threatlookup singleIndicator Your_IP
186
-
| where (_threatlookup.type="ipv4-addr:value" or _threatlookup.type="ipv6-addr:value") and !isNull(_threatlookup.confidence)
186
+
| where (_threatlookup.type="ipv4-addr" or _threatlookup.type="ipv6-addr") and !isNull(_threatlookup.confidence)
187
187
| if (isEmpty(_threatlookup.actors), "Unassigned", _threatlookup.actors) as Actor
188
188
| count by Actor
189
189
```
@@ -207,7 +207,7 @@ _sourceCategory= */*/FIREWALL or _sourceCategory=*/*/LB or _sourceCategory=*/*/R
207
207
| where ip_address != "0.0.0.0" and ip_address != "127.0.0.1"
208
208
| threatlookup singleIndicator ip_address
209
209
| parse regex field=%"_threatlookup.fields" "labels.[^.]+.name\":\"(?<label_name>[^\"]+)\"" multi
210
-
| where (_threatlookup.type="ipv4-addr:value" or _threatlookup.type="ipv6-addr:value") and !isNull(_threatlookup.confidence)
210
+
| where (_threatlookup.type="ipv4-addr" or _threatlookup.type="ipv6-addr") and !isNull(_threatlookup.confidence)
211
211
| where !(label_name matches "*TorProxy*")
212
212
| if (isEmpty(_threatlookup.actors), "Unassigned", _threatlookup.actors) as Actor
213
213
| if (_threatlookup.confidence >= 85, "high", if (_threatlookup.confidence >= 50, "medium", if (_threatlookup.confidence >= 15, "low", if (_threatlookup.confidence >= 0, "unverified", "Unknown")))) as malicious_confidence
The `threatlookup` search operator allows you to search logs for matches in [threat intelligence indicators](/docs/security/threat-intelligence/threat-intelligence-indicators/), providing security analytics to help you to detect threats in your environment.
7
+
The `threatlookup` search operator allows you to search logs for matches in [threat intelligence indicators](/docs/security/threat-intelligence/threat-intelligence-indicators/), providing security analytics to help you to detect threats in your environment.
8
8
9
9
:::note
10
10
You can also use the [`threatip`](/docs/search/search-query-language/search-operators/threatip/) search operator to search CrowdStrike's threat intelligence data based on IP addresses.
*`source` is the source to search for the threat intelligence indicator. If `source` is not specified, all sources are searched.
31
31
*`include` includes either all, only active, or only expired threat intelligence indicators. If `include` is not specified, only active matching indicators are returned.
32
-
*`<indicator_value_field>` is the indicator to look up.
33
-
*`<optional_indicator_value_field>` is used to add more indicators to look up.
34
-
35
-
#### Response fields
36
-
* confidence
37
-
* fields
38
-
* imported
39
-
* indicator
40
-
* valid_from
41
-
* valid_until
42
-
* source
43
-
* threat_type
44
-
* type
45
-
* updated
46
-
* num_match (if `singleIndicator` is used)
47
-
48
-
### Examples
49
-
32
+
*`<indicator>` is the [indicator](/docs/security/threat-intelligence/upload-formats/#normalized-json-format) to look up for a [field name](https://github.com/SumoLogic/cloud-siem-content-catalog/blob/master/schema/full_schema.md). At least one field name is required. `<optional_indicator>` is used to add more indicators to look up. Allowed in the filtering are parentheses `()`; `OR` and `AND` boolean operators; and comparison operators `=`, `<`, `>`, `=<`, `=>`, `!=`. <br/>You can filter on the following indicator attributes:
| threatlookup singleIndicator threat| if (_threatlookup.confidence>=85, "high", if (_threatlookup.confidence>=50, "medium", if (_threatlookup.confidence>=15, "low", if (_threatlookup.confidence>=0, "unverified", "Unknown")))) as malicious_confidence
135
+
| where malicious_confidence ="high"
136
+
| compose src_ip]
137
+
```
138
+
139
+
<!-- Add this after sumo://threat/cs is replaced by threatlookup":
140
+
141
+
### Threatlookup queries in dashboards
142
+
143
+
The `threatlookup` search operator is used for queries in some dashboards, including dashboards in the [Threat Intel Quick Analysis app](/docs/integrations/security-threat-detection/threat-intel-quick-analysis/). These queries provide great examples of how to use the operator.
144
+
145
+
To see `threatlookup` used in a query:
146
+
1. Open the Threat Intel Quick Analysis app.
147
+
1. Navigate to a dashboard, such as **Overview**.
148
+
1. Click the three-dot kebab in the upper-right corner of the dashboard panel.
149
+
1. Select **Open in Log Search**.
150
+
1. Look for `threatlookup` used in the query.
151
+
152
+
For example, here is the query used for the **Threat Count** panel in the **Threat Intel Quick Analysis - IP** dashboard:
| where ip_address != "0.0.0.0" and ip_address != "127.0.0.1"
158
+
| count as ip_count by ip_address
159
+
160
+
| threatlookup singleIndicator ip_address
161
+
162
+
// normalize confidence level to a string
163
+
| if (_threatlookup.confidence >= 85, "high", if (_threatlookup.confidence >= 50, "medium", if (_threatlookup.confidence >= 15, "low", if (_threatlookup.confidence >= 0, "unverified", "unknown")))) as threat_confidence
164
+
165
+
// filter for threat confidence
166
+
| where threat_confidence matches "*"
167
+
168
+
//rename to match threat_<foo> convention
169
+
| %"_threatlookup.actors" as threat_actors
170
+
| %"_threatlookup.type" as type
171
+
| %"_threatlookup.threat_type" as threat_type
172
+
173
+
//convert threat valid from to human readable time
174
+
| toLong(%"_threatlookup.valid_from" * 1000) as %"_threatlookup.valid_from"
175
+
| formatDate(%"_threatlookup.valid_from", "MM-dd-yyyy") as threat_valid_from
176
+
177
+
| where type matches "ipv4-addr*" and !isNull(threat_confidence)
178
+
179
+
| if (isEmpty(threat_actors), "Unassigned", threat_actors) as threat_actors
180
+
181
+
|sum (ip_count) as threat_count
182
+
```
183
+
-->
184
+
185
+
## Format timestamp results
93
186
94
187
Timestamps for the following response fields return results as an integer because they use Unix time (also known as *epoch time*):
95
188
*`_threatlookup.imported`
@@ -107,7 +200,7 @@ _index=sec_record*
107
200
108
201
<!-- For threat intel. Add this back once we have support for the cat search operator:
109
202
110
-
#### Run threatlookup with the cat search operator
203
+
## Run threatlookup with the cat search operator
111
204
112
205
You can run the `threatlookup` search operator with the [`cat` search operator](/docs/search/search-query-language/search-operators/cat/) by using the `sumo://threat-intel` path. This lets you search the entire store of threat intelligence indicators, or just a portion. For example:
Copy file name to clipboardExpand all lines: docs/search/subqueries.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -376,7 +376,7 @@ _sourceCategory=search "error while retrying to deploy index"
376
376
377
377
### Check Malicious Activity with Subquery
378
378
379
-
The following search allows a security analyst how to track logs related to a malicious IP address that was flagged by Amazon GuardDuty and also by a CrowdStrike Threat feed. The subquery is returning the field `src_ip` with the IP addresses deemed as threats to the parent query, note that the keywords option was not used so the parent query will expect a field src_ip to exist. The results will include logs from the weblogs sourceCategory that have a `src_ip` value that was deemed a threat from the subquery.
379
+
The following search allows a security analyst to track logs related to a malicious IP address that was flagged by Amazon GuardDuty and also by a CrowdStrike Threat feed. The subquery is returning the field `src_ip` with the IP addresses deemed as threats to the parent query, note that the keywords option was not used so the parent query will expect a field src_ip to exist. The results will include logs from the weblogs sourceCategory that have a `src_ip` value that was deemed a threat from the subquery.
0 commit comments