Skip to content

Commit ccf79cc

Browse files
Merge pull request #289864 from batamig/patch-270095
Update summary-rules.md
2 parents bcea663 + ae9c677 commit ccf79cc

File tree

1 file changed

+16
-28
lines changed

1 file changed

+16
-28
lines changed

articles/sentinel/summary-rules.md

Lines changed: 16 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ This section reviews common scenarios for creating summary rules in Microsoft Se
134134
135135
```kusto
136136
let csl_columnmatch=(column_name: string) {
137-
CommonSecurityLog
137+
summarized_CommonSecurityLog
138138
| where isnotempty(column_name)
139139
| extend
140140
Date = format_datetime(TimeGenerated, "yyyy-MM-dd"),
@@ -167,36 +167,24 @@ Most of the data sources are raw logs that are noisy and have high volume, but h
167167
168168
**Solution**: We recommend using summary rules to do the following:
169169
170-
1. Summarize McAfee firewall logs every 10 minutes, updating the data in the same custom table with each run. [ASIM functions](normalization-functions.md) might be helpful in the summary query when interacting with your McAfee logs.
170+
1. **Create a summary rule**:
171171
172-
1. Create an analytics rule to trigger an alert for anytime a domain name in the summary data matches an entry on the threat intelligence list. For example:
172+
1. Extend your query to extract key fields, such as the source address, destination address, and destination port from CommonSecurityLog_CL, which is the *CommonSecurityLog* table with the Auxilairy plan.
173173
174-
```kusto
175-
//let timeRange = 5m;
176-
//let httpstrim = "https://";
177-
//let httptrim = "http://";
178-
let timeRangeStart = now (-10m);
179-
let timeRangeEnd = (timeRangeStart + 10m);
180-
//Take visited domains from McAfee proxy
181-
adx('https://adxfwlog01.northeurope.kusto.windows.net/nwlogs').MappedMcAfeeSyslog
182-
| where timestamp between (timeRangeStart .. timeRangeEnd)
183-
| where isnotempty(URL)
184-
| extend URLDomain = parse_url(URL).Host
185-
| extend URLDomain = iff(isempty(URLDomain),URL,URLDomain)
186-
| extend URLDomain = extract(@"([0-9a-zA-Z-]{1,}\.[0-9a-zA-Z-]{2,3}\.[0-9a-zA-Z-]{2,3}|[0-9a-zA-Z-]{1,}\.[0-9a-zA-Z-]{2,10})$", 0, URLDomain)
187-
| where isnotempty(URLDomain)
188-
| summarize by URLDomain
189-
//Match visited domains with TI DomainName list
190-
| join kind=inner (ThreatIntelligenceIndicator
191-
| where isnotempty(DomainName)
192-
| where Active == true
193-
| where ExpirationDateTime > now()
194-
| summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by DomainName
195-
) on $left.URLDomain == $right.DomainName
196-
| extend LogicApp = "SOC-McAfee-ADX-DstDomainAgainstThreatIntelligence"
197-
| project LatestIndicatorTime, TI_Domain = DomainName, Description, ConfidenceScore, AdditionalInformation, LogicApp
198-
```
174+
1. Perform an inner lookup against your active Threat Intelligence Indicators to identify any matches with the source address. This allows you to cross-reference your data with known threats.
175+
176+
1. Project relevant information, including the time generated, activity type, and any malicious source IPs, along with the destination details. Set the frequency you want the query to run, and the destination table for the `MaliciousIPDetection’ example. The results in this table are in the analytic tier and charged accordingly.
177+
178+
1. **Create an alert**. Create an analytics rule in Microsoft Sentinel that alerts based on results from the `MaliciousIPDetection` table. This step is crucial for proactive threat detection and incident response.
179+
180+
**Sample summary rule**:
199181
182+
```kusto
183+
CommonSecurityLog_CL​
184+
| extend sourceAddress = tostring(parse_json(Message).sourceAddress), destinationAddress = tostring(parse_json(Message).destinationAddress), destinationPort = tostring(parse_json(Message).destinationPort)​
185+
| lookup kind=inner (ThreatIntelligenceIndicator | where Active == true ) on $left.sourceAddress == $right.NetworkIP​
186+
| project TimeGenerated, Activity, Message, DeviceVendor, DeviceProduct, sourceMaliciousIP =sourceAddress, destinationAddress, destinationPort
187+
```
200188
## Use summary rules with auxiliary logs (sample process)
201189

202190
This procedure describes a sample process for using summary rules with [auxiliary logs](basic-logs-use-cases.md), using a custom connection created via an ARM template to ingest CEF data from Logstash.

0 commit comments

Comments
 (0)