From 935da0cab817be752421fae427198c454f7d0f1b Mon Sep 17 00:00:00 2001 From: Marty Hernandez Avedon Date: Fri, 11 Sep 2020 12:22:35 -0400 Subject: [PATCH 01/50] matching structure of page w mtp version --- .../advanced-hunting-overview.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-overview.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-overview.md index e6feab4594..a47f8836ee 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-overview.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-overview.md @@ -18,6 +18,7 @@ ms.topic: article --- # Proactively hunt for threats with advanced hunting + **Applies to:** - [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) @@ -25,15 +26,17 @@ ms.topic: article Advanced hunting is a query-based threat-hunting tool that lets you explore raw data for the last 30 days. You can proactively inspect events in your network to locate interesting indicators and entities. The flexible access to data facilitates unconstrained hunting for both known and potential threats. -You can use the same threat-hunting queries to build custom detection rules. These rules run automatically to check for and respond to various events and system states, including suspected breach activity and misconfigured devices. - -## Get started with advanced hunting Watch this video for a quick overview of advanced hunting and a short tutorial that will get you started fast. -

+
+
> [!VIDEO https://www.microsoft.com/en-us/videoplayer/embed/RE4bGqo] -You can also go through each of the following steps to ramp up your advanced hunting knowledge. +You can use the same threat-hunting queries to build custom detection rules. These rules run automatically to check for and respond to various events and system states, including suspected breach activity and misconfigured devices. + +## Get started with advanced hunting + +Go through the following steps to ramp up your advanced hunting knowledge. | Learning goal | Description | Resource | |--|--|--| @@ -44,15 +47,18 @@ You can also go through each of the following steps to ramp up your advanced hun | **Learn about custom detections** | Understand how you can use advanced hunting queries to trigger alerts and apply response actions automatically. | - [Custom detections overview](overview-custom-detections.md)
- [Custom detection rules](custom-detection-rules.md) | ## Data freshness and update frequency + Advanced hunting data can be categorized into two distinct types, each consolidated differently: - **Event or activity data**—populates tables about alerts, security events, system events, and routine assessments. Advanced hunting receives this data almost immediately after the sensors that collect them successfully transmit them to Microsoft Defender ATP. - **Entity data**—populates tables with consolidated information about users and devices. To provide fresh data, tables are updated every 15 minutes with any new information, adding rows that might not be fully populated. Every 24 hours, data is consolidated to insert a record that contains the latest, most comprehensive data set about each entity. ## Time zone + All time information in advanced hunting is currently in the UTC time zone. ## Related topics + - [Learn the query language](advanced-hunting-query-language.md) - [Work with query results](advanced-hunting-query-results.md) - [Use shared queries](advanced-hunting-shared-queries.md) From 729662d01c945932df92c0e00c93c7bd8aaeb73d Mon Sep 17 00:00:00 2001 From: Marty Hernandez Avedon Date: Fri, 11 Sep 2020 13:47:57 -0400 Subject: [PATCH 02/50] added link to sync with mtp version of page --- .../advanced-hunting-query-language.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-query-language.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-query-language.md index 1b1ce276f6..745a27a3e3 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-query-language.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-query-language.md @@ -22,7 +22,7 @@ ms.topic: article **Applies to:** - [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) ->Want to experience Microsoft Defender ATP? [Sign up for a free trial.](https://www.microsoft.com/microsoft-365/windows/microsoft-defender-atp?ocid=docs-wdatp-advancedhunting-abovefoldlink) +> Want to experience Microsoft Defender ATP? [Sign up for a free trial.](https://www.microsoft.com/microsoft-365/windows/microsoft-defender-atp?ocid=docs-wdatp-advancedhunting-abovefoldlink) Advanced hunting is based on the [Kusto query language](https://docs.microsoft.com/azure/kusto/query/). You can use Kusto syntax and operators to construct queries that locate information in the [schema](advanced-hunting-schema-reference.md) specifically structured for advanced hunting. To understand these concepts better, run your first query. @@ -177,7 +177,6 @@ For detailed information about the query language, see [Kusto query language doc ## Related topics - [Advanced hunting overview](advanced-hunting-overview.md) - [Work with query results](advanced-hunting-query-results.md) +- [Use shared queries](advanced-hunting-shared-queries) - [Understand the schema](advanced-hunting-schema-reference.md) - [Apply query best practices](advanced-hunting-best-practices.md) - ->Want to experience Microsoft Defender ATP? [Sign up for a free trial.](https://www.microsoft.com/microsoft-365/windows/microsoft-defender-atp?ocid=docs-wdatp-advancedhunting-belowfoldlink) From 5634415d8518ef962a12253a9d6351d14eedc695 Mon Sep 17 00:00:00 2001 From: Marty Hernandez Avedon Date: Fri, 11 Sep 2020 17:44:25 -0400 Subject: [PATCH 03/50] added details on gui to sync w mtp version --- .../advanced-hunting-query-results.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-query-results.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-query-results.md index f036dd4418..48b42d3ae7 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-query-results.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-query-results.md @@ -113,6 +113,12 @@ After running a query, select **Export** to save the results to local file. Your ## Drill down from query results To view more information about entities, such as devices, files, users, IP addresses, and URLs, in your query results, simply click the entity identifier. This opens a detailed profile page for the selected entity. +To quickly inspect a record in your query results, select the corresponding row to open the Inspect record panel. The panel provides the following information based on the selected record: + +- **Assets** — A summarized view of the main assets (mailboxes, devices, and users) found in the record, enriched with available information, such as risk and exposure levels +- **Process tree** — A chart generated for records with process information and enriched using available contextual information; in general, queries that return more columns can result in richer process trees. +- **All details** — Lists all the values from the columns in the record + ## Tweak your queries from the results Right-click a value in the result set to quickly enhance your query. You can use the options to: @@ -123,9 +129,9 @@ Right-click a value in the result set to quickly enhance your query. You can use ![Image of advanced hunting result set](images/advanced-hunting-results-filter.png) ## Filter the query results -The filters displayed to the right provide a summary of the result set. Each column has its own section that lists the distinct values found for that column and the number of instances. +The filters displayed in the right pane provide a summary of the result set. Every column has its own section in the pane, each of which lists the values found in that column, and the number of instances. -Refine your query by selecting the `+` or `-` buttons on the values that you want to include or exclude and then selecting **Run query**. +Refine your query by selecting the `+` or `-` buttons on the values that you want to include or exclude. Then selecting **Run query**. ![Image of advanced hunting filter](images/advanced-hunting-filter.png) From 9ca73b9629fd59f59300d5f00f8d9d7910810c02 Mon Sep 17 00:00:00 2001 From: Marty Hernandez Avedon Date: Mon, 14 Sep 2020 11:11:55 -0400 Subject: [PATCH 04/50] added missing links to sync with mtp version of page --- .../advanced-hunting-shared-queries.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-shared-queries.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-shared-queries.md index 677a74ca65..b6708da962 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-shared-queries.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-shared-queries.md @@ -63,4 +63,8 @@ Microsoft security researchers regularly share advanced hunting queries in a [de ## Related topics - [Advanced hunting overview](advanced-hunting-overview.md) -- [Learn the query language](advanced-hunting-query-language.md) \ No newline at end of file +- [Learn the query language](advanced-hunting-query-language.md) +- [Understand the schema](advanced-hunting-schema-reference.md) +- [Apply query best practices](advanced-hunting-best-practices.md) +- [Apply query best practices](advanced-hunting-best-practices.md) +- [Custom detections overview](overview-custom-detections.md) From fd5f4dfaf6188b04ab5800821f156f6c38809353 Mon Sep 17 00:00:00 2001 From: Marty Hernandez Avedon Date: Mon, 14 Sep 2020 12:12:20 -0400 Subject: [PATCH 05/50] making link lists more consistent --- .../advanced-hunting-schema-reference.md | 7 ++++++- .../advanced-hunting-shared-queries.md | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-schema-reference.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-schema-reference.md index 0e2f6811ad..b491e184ab 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-schema-reference.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-schema-reference.md @@ -61,13 +61,18 @@ Table and column names are also listed within the Microsoft Defender Security Ce | **[DeviceImageLoadEvents](advanced-hunting-deviceimageloadevents-table.md)** | DLL loading events | | **[DeviceEvents](advanced-hunting-deviceevents-table.md)** | Multiple event types, including events triggered by security controls such as Microsoft Defender Antivirus and exploit protection | | **[DeviceFileCertificateInfo](advanced-hunting-devicefilecertificateinfo-table.md)** | Certificate information of signed files obtained from certificate verification events on endpoints | +| **[DynamicEventCollection]()** | | +| **[DeviceInventory]()** | | | **[DeviceTvmSoftwareInventoryVulnerabilities](advanced-hunting-devicetvmsoftwareinventoryvulnerabilities-table.md)** | Inventory of software on devices as well as any known vulnerabilities in these software products | | **[DeviceTvmSoftwareVulnerabilitiesKB ](advanced-hunting-devicetvmsoftwarevulnerabilitieskb-table.md)** | Knowledge base of publicly disclosed vulnerabilities, including whether exploit code is publicly available | | **[DeviceTvmSecureConfigurationAssessment](advanced-hunting-devicetvmsecureconfigurationassessment-table.md)** | Threat & Vulnerability Management assessment events, indicating the status of various security configurations on devices | | **[DeviceTvmSecureConfigurationAssessmentKB](advanced-hunting-devicetvmsecureconfigurationassessmentkb-table.md)** | Knowledge base of various security configurations used by Threat & Vulnerability Management to assess devices; includes mappings to various standards and benchmarks | +| **[DeviceInternetFacing]()** | | ## Related topics - [Advanced hunting overview](advanced-hunting-overview.md) -- [Work with query results](advanced-hunting-query-results.md) - [Learn the query language](advanced-hunting-query-language.md) +- [Work with query results](advanced-hunting-query-results.md) +- [Apply query best practices](advanced-hunting-best-practices.md) +- [Custom detections overview](overview-custom-detections.md) - [Advanced hunting data schema changes](https://techcommunity.microsoft.com/t5/microsoft-defender-atp/advanced-hunting-data-schema-changes/ba-p/1043914) diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-shared-queries.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-shared-queries.md index b6708da962..62bb73dd6e 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-shared-queries.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-shared-queries.md @@ -64,7 +64,7 @@ Microsoft security researchers regularly share advanced hunting queries in a [de ## Related topics - [Advanced hunting overview](advanced-hunting-overview.md) - [Learn the query language](advanced-hunting-query-language.md) +- [Work with query results](advanced-hunting-query-results.md) - [Understand the schema](advanced-hunting-schema-reference.md) - [Apply query best practices](advanced-hunting-best-practices.md) -- [Apply query best practices](advanced-hunting-best-practices.md) - [Custom detections overview](overview-custom-detections.md) From 92beced4d2eb2ea2138de0b486e70283fad66460 Mon Sep 17 00:00:00 2001 From: Marty Hernandez Avedon Date: Wed, 16 Sep 2020 17:28:34 -0400 Subject: [PATCH 06/50] added content wholesale from mtp version of best practices --- .../advanced-hunting-best-practices.md | 238 +++++++++++++++--- 1 file changed, 210 insertions(+), 28 deletions(-) diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-best-practices.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-best-practices.md index 669be788ad..54a2423525 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-best-practices.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-best-practices.md @@ -20,52 +20,201 @@ ms.topic: article # Advanced hunting query best practices **Applies to:** -- [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) ->Want to experience Microsoft Defender ATP? [Sign up for a free trial.](https://www.microsoft.com/microsoft-365/windows/microsoft-defender-atp?ocid=docs-wdatp-bestpractices-abovefoldlink) +- Microsoft Threat Protection -## Optimize query performance -Apply these recommendations to get results faster and avoid timeouts while running complex queries. -- When trying new queries, always use `limit` to avoid extremely large result sets. You can also initially assess the size of the result set using `count`. -- Use time filters first. Ideally, limit your queries to seven days. -- Put filters that are expected to remove most of the data in the beginning of the query, right after the time filter. -- Use the `has` operator over `contains` when looking for full tokens. -- Look in a specific column rather than running full text searches across all columns. -- When joining tables, specify the table with fewer rows first. -- `project` only the necessary columns from tables you've joined. +Apply these recommendations to get results faster and avoid timeouts while running complex queries. For more guidance on improving query performance, read [Kusto query best practices](https://docs.microsoft.com/azure/kusto/query/best-practices). ->[!TIP] ->For more guidance on improving query performance, read [Kusto query best practices](https://docs.microsoft.com/azure/kusto/query/best-practices). +## General guidance -## Query tips and pitfalls +- **Size new queries**—If you suspect that a query will return a large result set, assess it first using the [count operator](https://docs.microsoft.com/azure/data-explorer/kusto/query/countoperator). Use [limit](https://docs.microsoft.com/azure/data-explorer/kusto/query/limitoperator) or its synonym `take` to avoid large result sets. -### Queries with process IDs -Process IDs (PIDs) are recycled in Windows and reused for new processes. On their own, they can't serve as unique identifiers for specific processes. To get a unique identifier for a process on a specific device, use the process ID together with the process creation time. When you join or summarize data around processes, include columns for the device identifier (either `DeviceId` or `DeviceName`), the process ID (`ProcessId` or `InitiatingProcessId`), and the process creation time (`ProcessCreationTime` or `InitiatingProcessCreationTime`). +- **Apply filters early**—Apply time filters and other filters to reduce the data set, especially before using transformation and parsing functions, such as [substring()](https://docs.microsoft.com/azure/data-explorer/kusto/query/substringfunction), [replace()](https://docs.microsoft.com/azure/data-explorer/kusto/query/replacefunction), [trim()](https://docs.microsoft.com/azure/data-explorer/kusto/query/trimfunction), [toupper()](https://docs.microsoft.com/azure/data-explorer/kusto/query/toupperfunction), or [parse_json()](https://docs.microsoft.com/azure/data-explorer/kusto/query/parsejsonfunction). In the example below, the parsing function [extractjson()](https://docs.microsoft.com/azure/data-explorer/kusto/query/extractjsonfunction) is used after filtering operators have reduced the number of records. + + ```kusto + DeviceEvents + | where Timestamp > ago(1d) + | where ActionType == "UsbDriveMount" + | where DeviceName == "user-desktop.domain.com" + | extend DriveLetter = extractjson("$.DriveLetter", AdditionalFields) + ``` + +- **Has beats contains**—To avoid searching substrings within words unnecessarily, use the `has` operator instead of `contains`. [Learn about string operators](https://docs.microsoft.com/azure/data-explorer/kusto/query/datatypes-string-operators) + +- **Look in specific columns**—Look in a specific column rather than running full text searches across all columns. Don't use `*` to check all columns. + +- **Case-sensitive for speed**—Case-sensitive searches are more specific and generally more performant. Names of case-sensitive [string operators](https://docs.microsoft.com/azure/data-explorer/kusto/query/datatypes-string-operators), such as `has_cs` and `contains_cs`, generally end with `_cs`. You can also use the case-sensitive equals operator `==` instead of `~=`. + +- **Parse, don't extract**—Whenever possible, use the [parse operator](https://docs.microsoft.com/azure/data-explorer/kusto/query/parseoperator) or a parsing function like [parse_json()](https://docs.microsoft.com/azure/data-explorer/kusto/query/parsejsonfunction). Avoid the `matches regex` string operator or the [extract() function](https://docs.microsoft.com/azure/data-explorer/kusto/query/extractfunction), both of which use regular expression. Reserve the use of regular expression for more complex scenarios. [Read more about parsing functions](#parse-strings) + +- **Filter tables not expressions**—Don't filter on a calculated column if you can filter on a table column. + +- **No three-character terms**—Avoid comparing or filtering using terms with three characters or fewer. These terms are not indexed and matching them will require more resources. + +- **Project selectively**—Make your results easier to understand by projecting only the columns you need. Projecting specific columns prior to running [join](https://docs.microsoft.com/azure/data-explorer/kusto/query/joinoperator) or similar operations also helps improve performance. + +## Optimize the `join` operator + +The [join operator](https://docs.microsoft.com/azure/data-explorer/kusto/query/joinoperator) merges rows from two tables by matching values in specified columns. Apply these tips to optimize queries that use this operator. + +- **Smaller table to your left**—The `join` operator matches records in the table on the left side of your join statement to records on the right. By having the smaller table on the left, fewer records will need to be matched, thus speeding up the query. + + In the table below, we reduce the left table `DeviceLogonEvents` to cover only three specific devices before joining it with `IdentityLogonEvents` by account SIDs. + + ```kusto + DeviceLogonEvents + | where DeviceName in ("device-1.domain.com", "device-2.domain.com", "device-3.domain.com") + | where ActionType == "LogonFailed" + | join + (IdentityLogonEvents + | where ActionType == "LogonFailed" + | where Protocol == "Kerberos") + on AccountSid + ``` + +- **Use the inner-join flavor**—The default [join flavor](https://docs.microsoft.com/azure/data-explorer/kusto/query/joinoperator#join-flavors) or the [innerunique-join](https://docs.microsoft.com/azure/data-explorer/kusto/query/joinoperator?pivots=azuredataexplorer#innerunique-join-flavor) deduplicates rows in the left table by the join key before returning a row for each match to the right table. If the left table has multiple rows with the same value for the `join` key, those rows will be deduplicated to leave a single random row for each unique value. + + This default behavior can leave out important information from the left table that can provide useful insight. For example, the query below will only show one email containing a particular attachment, even if that same attachment was sent using multiple emails messages: + + ```kusto + EmailAttachmentInfo + | where Timestamp > ago(1h) + | where Subject == "Document Attachment" and FileName == "Document.pdf" + | join (DeviceFileEvents | where Timestamp > ago(1h)) on SHA256 + ``` + + To address this limitation, we apply the [inner-join](https://docs.microsoft.com/azure/data-explorer/kusto/query/joinoperator?pivots=azuredataexplorer#inner-join-flavor) flavor by specifying `kind=inner` to show all rows in the left table with matching values in the right: + + ```kusto + EmailAttachmentInfo + | where Timestamp > ago(1h) + | where Subject == "Document Attachment" and FileName == "Document.pdf" + | join kind=inner (DeviceFileEvents | where Timestamp > ago(1h)) on SHA256 + ``` + +- **Join records from a time window**—When investigating security events, analysts look for related events that occur around the same time period. Applying the same approach when using `join` also benefits performance by reducing the number of records to check. + + The query below checks for logon events within 30 minutes of receiving a malicious file: + + ```kusto + EmailEvents + | where Timestamp > ago(7d) + | where MalwareFilterVerdict == "Malware" + | project EmailReceivedTime = Timestamp, Subject, SenderFromAddress, AccountName = tostring(split(RecipientEmailAddress, "@")[0]) + | join ( + DeviceLogonEvents + | where Timestamp > ago(7d) + | project LogonTime = Timestamp, AccountName, DeviceName + ) on AccountName + | where (LogonTime - EmailReceivedTime) between (0min .. 30min) + ``` + +- **Apply time filters on both sides**—Even if you're not investigating a specific time window, applying time filters on both the left and right tables can reduce the number of records to check and improve `join` performance. The query below applies `Timestamp > ago(1h)` to both tables so that it joins only records from the past hour: + + ```kusto + EmailAttachmentInfo + | where Timestamp > ago(1h) + | where Subject == "Document Attachment" and FileName == "Document.pdf" + | join kind=inner (DeviceFileEvents | where Timestamp > ago(1h)) on SHA256 + ``` + +- **Use hints for performance**—Use hints with the `join` operator to instruct the backend to distribute load when running resource-intensive operations. [Learn more about join hints](https://docs.microsoft.com/azure/data-explorer/kusto/query/joinoperator#join-hints) + + For example, the **[shuffle hint](https://docs.microsoft.com/azure/data-explorer/kusto/query/shufflequery)** helps improve query performance when joining tables using a key with high cardinality—a key with many unique values—such as the `AccountObjectId` in the query below: + + ```kusto + IdentityInfo + | where JobTitle == "CONSULTANT" + | join hint.shufflekey = AccountObjectId + (IdentityDirectoryEvents + | where Application == "Active Directory" + | where ActionType == "Private data retrieval") + on AccountObjectId + ``` + + The **[broadcast hint](https://docs.microsoft.com/azure/data-explorer/kusto/query/broadcastjoin)** helps when the left table is small (up to 100,000 records) and the right table is extremely large. For example, the query below is trying to join a few emails that have specific subjects with _all_ messages containing links in the `EmailUrlInfo` table: + + ```kusto + EmailEvents + | where Subject in ("Warning: Update your credentials now", "Action required: Update your credentials now") + | join hint.strategy = broadcast EmailUrlInfo on NetworkMessageId + ``` + +## Optimize the `summarize` operator + +The [summarize operator](https://docs.microsoft.com/azure/data-explorer/kusto/query/summarizeoperator) aggregates the contents of a table. Apply these tips to optimize queries that use this operator. + +- **Find distinct values**—In general, use `summarize` to find distinct values that can be repetitive. It can be unnecessary to use it to aggregate columns that don't have repetitive values. + + While a single email can be part of multiple events, the example below is _not_ an efficient use of `summarize` because a network message ID for an individual email always comes with a unique sender address. + + ```kusto + EmailEvents + | where Timestamp > ago(1h) + | summarize by NetworkMessageId, SenderFromAddress + ``` + + The `summarize` operator can be easily replaced with `project`, yielding potentially the same results while consuming fewer resources: + + ```kusto + EmailEvents + | where Timestamp > ago(1h) + | project NetworkMessageId, SenderFromAddress + ``` + + The following example is a more efficient use of `summarize` because there can be multiple distinct instances of a sender address sending email to the same recipient address. Such combinations are less distinct and are likely to have duplicates. + + ```kusto + EmailEvents + | where Timestamp > ago(1h) + | summarize by SenderFromAddress, RecipientEmailAddress + ``` + +- **Shuffle the query**—While `summarize` is best used in columns with repetitive values, the same columns can also have _high cardinality_ or large numbers of unique values. Like the `join` operator, you can also apply the [shuffle hint](https://docs.microsoft.com/azure/data-explorer/kusto/query/shufflequery) with `summarize` to distribute processing load and potentially improve performance when operating on columns with high cardinality. + + The query below uses `summarize` to count distinct recipient email address, which can run in the hundreds of thousands in large organizations. To improve performance, it incorporates `hint.shufflekey`: + + ```kusto + EmailEvents + | where Timestamp > ago(1h) + | summarize hint.shufflekey = RecipientEmailAddress count() by Subject, RecipientEmailAddress + ``` + +## Query scenarios + +### Identify unique processes with process IDs + +Process IDs (PIDs) are recycled in Windows and reused for new processes. On their own, they can't serve as unique identifiers for specific processes. + +To get a unique identifier for a process on a specific machine, use the process ID together with the process creation time. When you join or summarize data around processes, include columns for the machine identifier (either `DeviceId` or `DeviceName`), the process ID (`ProcessId` or `InitiatingProcessId`), and the process creation time (`ProcessCreationTime` or `InitiatingProcessCreationTime`) The following example query finds processes that access more than 10 IP addresses over port 445 (SMB), possibly scanning for file shares. +Example query: + ```kusto DeviceNetworkEvents | where RemotePort == 445 and Timestamp > ago(12h) and InitiatingProcessId !in (0, 4) -| summarize RemoteIPCount=dcount(RemoteIP) by DeviceName, InitiatingProcessId, InitiatingProcessCreationTime, InitiatingProcessFileName +| summarize RemoteIPCount=dcount(RemoteIP) by DeviceName, InitiatingProcessId +InitiatingProcessCreationTime, InitiatingProcessFileName | where RemoteIPCount > 10 ``` The query summarizes by both `InitiatingProcessId` and `InitiatingProcessCreationTime` so that it looks at a single process, without mixing multiple processes with the same process ID. -### Queries with command lines -Command lines can vary. When applicable, filter on file names and do fuzzy matching. +### Query command lines -There are numerous ways to construct a command line to accomplish a task. For example, an attacker could reference an image file with or without a path, without a file extension, using environment variables, or with quotes. In addition, the attacker could also change the order of parameters or add multiple quotes and spaces. +There are numerous ways to construct a command line to accomplish a task. For example, an attacker could reference an image file without a path, without a file extension, using environment variables, or with quotes. The attacker could also change the order of parameters or add multiple quotes and spaces. -To create more durable queries using command lines, apply the following practices: +To create more durable queries around command lines, apply the following practices: -- Identify the known processes (such as *net.exe* or *psexec.exe*) by matching on the filename fields, instead of filtering on the command-line field. +- Identify the known processes (such as *net.exe* or *psexec.exe*) by matching on the file name fields, instead of filtering on the command-line itself. +- Parse command-line sections using the [parse_command_line() function](https://docs.microsoft.com/azure/data-explorer/kusto/query/parse-command-line) - When querying for command-line arguments, don't look for an exact match on multiple unrelated arguments in a certain order. Instead, use regular expressions or use multiple separate contains operators. -- Use case insensitive matches. For example, use `=~`, `in~`, and `contains` instead of `==`, `in` and `contains_cs` -- To mitigate DOS command-line obfuscation techniques, consider removing quotes, replacing commas with spaces, and replacing multiple consecutive spaces with a single space. Note that there are more complex DOS obfuscation techniques that require other approaches, but these can help address the most common ones. +- Use case insensitive matches. For example, use `=~`, `in~`, and `contains` instead of `==`, `in`, and `contains_cs`. +- To mitigate command-line obfuscation techniques, consider removing quotes, replacing commas with spaces, and replacing multiple consecutive spaces with a single space. There are more complex obfuscation techniques that require other approaches, but these tweaks can help address common ones. -The following examples show various ways to construct a query that looks for the file *net.exe* to stop the Windows Defender Firewall service: +The following examples show various ways to construct a query that looks for the file *net.exe* to stop the firewall service "MpsSvc": ```kusto // Non-durable query - do not use @@ -73,7 +222,7 @@ DeviceProcessEvents | where ProcessCommandLine == "net stop MpsSvc" | limit 10 -// Better query - filters on filename, does case-insensitive matches +// Better query - filters on file name, does case-insensitive matches DeviceProcessEvents | where Timestamp > ago(7d) and FileName in~ ("net.exe", "net1.exe") and ProcessCommandLine contains "stop" and ProcessCommandLine contains "MpsSvc" @@ -84,9 +233,42 @@ DeviceProcessEvents | where CanonicalCommandLine contains "stop" and CanonicalCommandLine contains "MpsSvc" ``` ->Want to experience Microsoft Defender ATP? [Sign up for a free trial.](https://www.microsoft.com/microsoft-365/windows/microsoft-defender-atp?ocid=docs-wdatp-bestpractices-belowfoldlink) +### Ingest data from external sources + +To incorporate long lists or large tables into your query, use the [externaldata operator](https://docs.microsoft.com/azure/data-explorer/kusto/query/externaldata-operator) to ingest data from a specified URI. You can get data from files in TXT, CSV, JSON, or [other formats](https://docs.microsoft.com/azure/data-explorer/ingestion-supported-formats). The example below shows how you can utilize the extensive list of malware SHA-256 hashes provided by MalwareBazaar (abuse.ch) to check attachments on emails: + +```kusto +let abuse_sha256 = (externaldata(sha256_hash: string ) +[@"https://bazaar.abuse.ch/export/txt/sha256/recent/"] +with (format="txt")) +| where sha256_hash !startswith "#" +| project sha256_hash; +abuse_sha256 +| join (EmailAttachmentInfo +| where Timestamp > ago(1d) +) on $left.sha256_hash == $right.SHA256 +| project Timestamp,SenderFromAddress,RecipientEmailAddress,FileName,FileType, +SHA256,MalwareFilterVerdict,MalwareDetectionMethod +``` + +### Parse strings + +There are various functions you can use to efficiently handle strings that need parsing or conversion. + +| String | Function | Usage example | +|--|--|--| +| Command-lines | [parse_command_line()](https://docs.microsoft.com/azure/data-explorer/kusto/query/parse-command-line) | Extract the command and all arguments. | +| Paths | [parse_path()](https://docs.microsoft.com/azure/data-explorer/kusto/query/parsepathfunction) | Extract the sections of a file or folder path. | +| Version numbers | [parse_version()](https://docs.microsoft.com/azure/data-explorer/kusto/query/parse-versionfunction) | Deconstruct a version number with up to four sections and up to eight characters per section. Use the parsed data to compare version age. | +| IPv4 addresses | [parse_ipv4()](https://docs.microsoft.com/azure/data-explorer/kusto/query/parse-ipv4function) | Convert an IPv4 address to a long integer. To compare IPv4 addresses without converting them, use [ipv4_compare()](https://docs.microsoft.com/azure/data-explorer/kusto/query/ipv4-comparefunction). | +| IPv6 addresses | [parse_ipv6()](https://docs.microsoft.com/azure/data-explorer/kusto/query/parse-ipv6function) | Convert an IPv4 or IPv6 address to the canonical IPv6 notation. To compare IPv6 addresses, use [ipv6_compare()](https://docs.microsoft.com/azure/data-explorer/kusto/query/ipv6-comparefunction). | + +To learn about all supported parsing functions, [read about Kusto string functions](https://docs.microsoft.com/azure/data-explorer/kusto/query/scalarfunctions#string-functions). ## Related topics + - [Advanced hunting overview](advanced-hunting-overview.md) - [Learn the query language](advanced-hunting-query-language.md) -- [Understand the schema](advanced-hunting-schema-reference.md) \ No newline at end of file +- [Understand the schema](advanced-hunting-schema-reference.md) +- [Work with query results](advanced-hunting-query-results.md) +- [Custom detections overview](overview-custom-detections.md) From de14f98b3255184a699341c44468f650663efe58 Mon Sep 17 00:00:00 2001 From: Marty Hernandez Avedon Date: Thu, 17 Sep 2020 15:55:42 -0400 Subject: [PATCH 07/50] added take-actions.md --- .../advanced-hunting-best-practices.md | 6 +- .../advanced-hunting-take-action.md | 83 ++++++++++++++++++ .../images/ah-take-actions.png | Bin 0 -> 50595 bytes 3 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-take-action.md create mode 100644 windows/security/threat-protection/microsoft-defender-atp/images/ah-take-actions.png diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-best-practices.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-best-practices.md index 54a2423525..412c20d764 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-best-practices.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-best-practices.md @@ -21,7 +21,9 @@ ms.topic: article **Applies to:** -- Microsoft Threat Protection +- [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) + +> Want to experience Microsoft Defender ATP? [Sign up for a free trial.](https://www.microsoft.com/microsoft-365/windows/microsoft-defender-atp?ocid=docs-wdatp-advancedhuntingref-abovefoldlink) Apply these recommendations to get results faster and avoid timeouts while running complex queries. For more guidance on improving query performance, read [Kusto query best practices](https://docs.microsoft.com/azure/kusto/query/best-practices). @@ -39,7 +41,7 @@ Apply these recommendations to get results faster and avoid timeouts while runni | extend DriveLetter = extractjson("$.DriveLetter", AdditionalFields) ``` -- **Has beats contains**—To avoid searching substrings within words unnecessarily, use the `has` operator instead of `contains`. [Learn about string operators](https://docs.microsoft.com/azure/data-explorer/kusto/query/datatypes-string-operators) +- ***Has* beats *contains*** —To avoid searching substrings within words unnecessarily, use the `has` operator instead of `contains`. [Learn about string operators](https://docs.microsoft.com/azure/data-explorer/kusto/query/datatypes-string-operators) - **Look in specific columns**—Look in a specific column rather than running full text searches across all columns. Don't use `*` to check all columns. diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-take-action.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-take-action.md new file mode 100644 index 0000000000..d12e51c9d8 --- /dev/null +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-take-action.md @@ -0,0 +1,83 @@ +--- +title: Take action on advanced hunting query results in Microsoft Threat Protection +description: Quickly address threats and affected assets in your advanced hunting query results +keywords: advanced hunting, threat hunting, cyber threat hunting, mdatp, microsoft defender atp, wdatp search, query, telemetry, custom detections, schema, kusto, avoid timeout, command lines, process id +search.product: eADQiWindows 10XVcnh +search.appverid: met150 +ms.prod: microsoft-365-enterprise +ms.mktglfcycl: deploy +ms.sitesec: library +ms.pagetype: security +f1.keywords: +- NOCSH +ms.author: lomayor +author: lomayor +ms.localizationpriority: medium +manager: dansimp +audience: ITPro +ms.collection: M365-security-compliance +ms.topic: article +--- + +# Take action on advanced hunting query results + +**Applies to:** +- [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) + +> Want to experience Microsoft Defender ATP? [Sign up for a free trial.](https://www.microsoft.com/microsoft-365/windows/microsoft-defender-atp?ocid=docs-wdatp-advancedhuntingref-abovefoldlink) + +You can quickly contain threats or address compromised assets that you find in [advanced hunting](advanced-hunting-overview.md) using powerful and comprehensive action options. With these options, you can: + +- Take various actions on devices +- Quarantine files + +## Required permissions + +To be able to take action through advanced hunting, you need a role in Microsoft Defender ATP with [permissions to submit remediation actions on devices](https://docs.microsoft.com/windows/security/threat-protection/microsoft-defender-atp/user-roles#permission-options). If you can't take action, contact a global administrator about getting the following permission: + +*Active remediation actions > Threat and vulnerability management - Remediation handling* + +## Take various actions on devices + +You can take the following actions on devices identified by the `DeviceId` column in you query results: + +- Isolate affected devices to contain an infection or prevent attacks from moving laterally +- Collect investigation package to obtain more forensic information +- Run an antivirus scan to find and remove threats using the latest security intelligence updates +- Initiate an automated investigation to check and remediate threats on the device and possibly other affected devices +- Restrict app execution to only Microsoft-signed executable files, preventing subsequent threat activity through malware or other untrusted executables + +To learn more about how these response actions are performed through Microsoft Defender ATP, [read about response actions on devices](respond-machine-alerts.md). + +## Quarantine files + +You can deploy the *quarantine* action on files so that they are automatically quarantined when encountered. When selecting this action, you can choose between the following columns to identify which files in your query results to quarantine: + +- `SHA1` — In most advanced hunting tables, this is the SHA-1 of the file that was affected by the recorded action. For example, if a file was copied, this would be the copied file. +- `InitiatingProcessSHA1` — In most advanced hunting tables, this is the file responsible for initiating the recorded action. For example, if a child process was launched, this would be the parent process. +- `SHA256` — This is the SHA-256 equivalent of the file identified by the `SHA1` column. +- `InitiatingProcessSHA256` — This is the SHA-256 equivalent of the file identified by the `InitiatingProcessSHA1` column. + +To learn more about how quarantine actions are taken and how files can be restored, [read about response actions on files](respond-file-alerts.md). + +>[!NOTE] +>To locate files and quarantine them, the query results should also include `DeviceId` values as device identifiers. + +## Take action + +To take any of the described actions, select one or more records in your query results and then select **Take actions**. A wizard will guide you through the process of selecting and then submitting your preferred actions. + +![Image of selected record with panel for inspecting the record](images/ah-take-actions.png) + +## Review actions taken + +Each action is individually recorded in the action center, under **Action center** > **History** ([security.microsoft.com/action-center/history](https://security.microsoft.com/action-center/history)). Go to the action center to check the status of each action. + +## Related topics + +- [Advanced hunting overview](advanced-hunting-overview.md) +- [Learn the query language](advanced-hunting-query-language.md) +- [Understand the schema](advanced-hunting-schema-reference.md) +- [Work with query results](advanced-hunting-query-results.md) +- [Apply query best practices](advanced-hunting-best-practices.md) +- [Custom detections overview](overview-custom-detections.md) diff --git a/windows/security/threat-protection/microsoft-defender-atp/images/ah-take-actions.png b/windows/security/threat-protection/microsoft-defender-atp/images/ah-take-actions.png new file mode 100644 index 0000000000000000000000000000000000000000..daf9714d6e4f78a17338898d0e8f383d221c0a79 GIT binary patch literal 50595 zcmeFZ1yogC*e<#e2}MAF!XFknWa}P`dBC z{l0(vcZ_@Qxo3=f&pBh9@$Vtqz1LoAuDRYh-+JC>&QKL)Iqd7?*AWN=wt~F08UlgZ zf< zbXBcKb$wscg~VoO3l{BG!_Yxnycw`MueZ{3hQ zLiQ+Uz$#TUZ{Lt5M$wZwMlt&_%hJjU*0#^{=ee6_aQ;;Z2??&du6WY_yoN(1;{RSO22CGIi+J{Z0~2(cs)1w zWWMeSDk`=CPW>&?fKcdowxWpF9%hQ)g@D)oI+~4*jXVSX{ii>!-m~nLwzaiQn0VX0 zeDu4M29Ja!xVV^$QpBswI_&nRxDTOeShwit=sv|weiZWHvh1a-H&<0v4SD^#rP&{& z#A#91b?ryS5bv*Fzql-VNT=$a5tQ4E$~O9*2e^?(pdW6}%E`-PN=ix1Z*Sw`;zqIv zkg(LAojuoYcup3KOA{oSCN3_H=;`UXVL*(BKsSb4(cMkW&c0(iQ%7buQT8%0P$qOz zfdT&pl^~&1Fb?|{4jvvN0w(3Q`PSh1wY6&zvg$F6>STd|foU!)y@(f~1We>rQ*ok*?5^F5leTjCj%1B+k#zKesdAig?l0B@e<&?`l(kXJmSm z+?Fcg|HRG?8|1pTF^cPbxFus~m|Q#^O`yog#I)EJO0fDP11rCvfEy{JMn4*aO1Iy+CQYmvM0<(9)aENE(uH zULhfh$w~(~0qGdU-EDgkXeJ39xM+l=HlAMdV&mHAwpJ!3Pdd5qaC2vQ@x zXAyq$Rf>MxyLVU0bt9;R+%YBGVPy^02$-7E?^qEiH-X4Sxb< zS}yci>HX+MtIc%(J|U}S{+<1^kk_rZl#tpsT9#@2x(awdBf|Qi7>>VU`s!LF02pd?Hn8s$J&(Z zO3TVhW~j|W=kN~{Z5=SUHcOA9^>)?_-Kf^f`NadghF-9?traNFK&>o6c=*;lNNr$FNGD zUG9$>A&ubab|W4>{*}~QJB50cIBRQbU_CsKc4(hJf1Z4jfViWz3CCKvQJ$O~{gzi$ z1hI7(`JFR9=a61*{#Obdpjk*$i!{{FkC)?Aavp0qC$+UnPc`^Zh)Zmz)z;QJ;udFR zWfgO9bC+}l7);l=wZ1?>y%nSQ8#L&X!)!xK4H)!KGGWAAyu7lN_S5|(rgHT@-+Oxc ztDH>d&%?>?^;f%CK0n>8^rEfgH=jNPb1eDjfV1)Jija`d{FI^JxtnoqOY6s!bd@_d ziHI2MXoNkB`-95Mc`EEC(NpJq&8zj_gpqJw7g>tF{jjCVX)(ZfQ(0MgXLpx%kpA5_ zb?^DU{=q>4q=zWbEq`KW762M!y0<#;NQ8PI`d_#5jVM__kewa7)?+&;EDQ^@`}cRg z*;{w-{^(~Urj1dAe<*~)4LLhIcBZDLU`!A%GBOzR^YdT-5;JMTgvXHeq#-ANoui)h z>FHqR7(7!H_3F2YN*1DvmQSGZT--S`%)yjYRP%Flsg*rHetgljNsUAG=lW}kSSctd z_O@q@R*fIZ%X_Z-hLI2?+@TjX;v!u#R-J$f&5y2Lqe@YPG)Muj;j}7>+Qovc!`e%iVGNUO6vcS&GN; z&TAQ4m)ErQWeAsNWn|FO(@S|4B|eYHuKN#J+#$T4uV0OC*_TX2&Hg?mB@)zSP2?oA zihB5UmDfHCxWPcV?Xk(p)~{c$iAxl%Pn6r>(a_))Xkx`E2I^JX&j-`^-uW~3`I`wy z`{(z>#f_rIj`32g&d%Q6RRpDw`wg+P9aJ@SbreGVMer10 zlCy_QyUgzL3khLu^VyEQ0ACKF4H%*H^mL?_w@lZ1poqr{kRvMWr(c6{xdpBPLW|$O ze`Dg{a2)6c1qRXz3hH_qB~KLO=Lej2Nl8hSn0FJKnVE@y9+*4&y{KL9<(9J||CsV0 zZ=I{g=P(lx85y}lsgv{gweR`KwbnEtxAlNnc0J9ib8;T*R4@uHr=WE-9UUE*H*N&f z*VoU~*BkjBGbVlfXl!P7Rb5^EzWo%bv9U3cST#Q3#g$uPVl>bz=W5EYU%w*2P(DGv3?HKYrlL%E~&ryLTkqvka(!hn<_BM@gMK?gigS zm`tyqJh3s9^O^73C}`mmQ&Uu!zk6HLr#XG5w^?xhnSW$TiyaXqu4`&lH8q-5*sQFq zuA39(V{YKUT7z*ry|?SN<_}mE57AycW(kan!ULZWIG)h?hAPbB`v(|FwH!hSWrh;< zbLo)Y2c~;Wj#dLWp`*RQM`1UjIh6g;vHL+cOh#j}+@S+?r(3n{y*MIP{kMAJxfgTn zZi?i1ZQC;;!zR_JuVzPc{~ix zR)j=E$Y^VmE;$S6>+AOy=<$V9i;# z8c;EC+Pb3XQ*`qny1M-+IUJ_MJXqS!64TC`BqUiLN(Ox#2nZ$7n3R*6U~oeqGNGlT zyW;NdzB*pYG~;t<0Mi=rA}|mQ<`ufPw>L6CL~yySKQ05so+{_Fn;--u)WJ9V+#h-E zy?X?oZ(1o*1GAFNNm+?xK=BId?9z4QnIIrwK? zuDhL~mJ<*Me~KBBzP=4R4f%a;jCA;6sj0VcB5orEO-JWseDmK=s{i$g?teoWaC5t& zAOo7mZd>g$Jg(QIrTeJH z{)q#mr9b`8`1I!o+B{F5*5?Q!HuQC;z*H7~w>vD?r*!Z~P9bZE$^tb3TqYc-e|@iO;Qf4_?D zWDU_S30qUs%S&WVi&*`&=>P1(rNnnykWIIa^ykl?=!Ng0&n$Y*71vuUJLm)jiX>0@ z9N(Ip%4_j!*WLH~fl9!)%r6QTUKG4-S=J0FB>Rz|oOsncXN( zsaP^LiI!GdTicWM_g_6X3M8t0R(SCV@P9Y14RZJSafp84Ch$4gLqQ08?jQy;m7CiX zXfV5x$iRA?+F+TaF|UALpg?1Xm|HCjit+RbwoI(YYClQ}`?Y|Gh=);b&z?O)W_JUP zmlP0vuxS}+m=9(?M7(fX>>#Vcr*raT4wCI&cGlL>k+>ZlQ)2*9*DTTvTx3$FJKM%& z)1?e~nAji(0?AZP3<^wn{_1d+CSs?N{`IEJ$i86kCDlupmCIMba`aWz)wFj!g#_KU z!bQ9fA<2rByd4cO3Hji~p;!Q%2Td+CpJPsV=qTwx9Am^WDMSqv1k$A8biw z^?r0ZYg4Gdc{X8FbglEj^Y?eAwx1(MtIiW|rS~!r?mD+2MC$FnT{wkx8vg$HSU#qE zApI$UwvHZ&&i33K0z%{bU%#>{GKQ_4cILLV%l}Y3=YMwn;QR{>@5so}Sy*3GR5FL{ zVJ8g+^6s|dHAD|T+?NO=X2Y z6XbmMlr5Zr^Jmqiq`x-8kmI=X!1&1h`?`tL&h9M{5h_UAwU7hVa}U)-rzjG&CR};BKWi=N2_W{C0F21QLw)TAuRm z-#_pSRM_d&d&ivatzq%;RpK8$f<(%~;&zSu=55NpQ4g-(6ro^988duS|#+&?N>@#kK{Ruz(j+Ii?uD#_K7ZtLv0H2e2R5 zgCW~p=^GT9iFS5z;r6=_p4YB19yMo->vr1ur2`6RU}f5J)SV$FQNhhWRUWh3q}%FQz}GK8*h5drrA+&mi@Ml0CPx3PmgL{ zE<4sc(`@J<2AGVtw)Pyv?DF#RP2VZ_`YY^&>WwGh$;?Re9*GtH;CjBQf;mxU$5aPb zhD~#DaNum?(7cffmP8QljVUJxJ{)^gS;rq073J0G={yN~c5Ne5>0^-J#W6;-=n*0~ zlJe#D9IbYZE7_kve;ij;Lb!x$s>qS2?D@$xFE1|}ul+DT+8tsxPV@-I9o;bIc&IB0Y=f-+#Ic1pJR_@(>V} zo4>y@VFBQDt^VtmchS)$9)0$n71n4>OiaQ6FhYRe^|cr8V3ZK2%H2KNAPWcm_{3yq zj@GNQq`0`rAERCD^;d|=VP42-kI4x8CSCP7M3;=@1_wc=Z1;eGjY@?i42LMZ$Gf(i zon_Z%y{=9e(yAme4`K+GgK+}q=9huM0SESoj>^=yW(sf}T_fpuJr4n)Zim8&$(Qr51w)(E6l zeV>>Z_7QNM`ljCAqW3j+^VE}NW%u=KTyyk0U7VdI0U^Sn;W)ug=NQ_atklY0fjQTb zuG<&==A&R5U<29}u4J)SIXcGgSr&V2Q-@Osp+lMkz!96-T{1voRrBdwsk>)YcIz^%#agQ`JT&`bdud)WuG@R)6&w?*3+Q{FYDywROQWw?$CH%QCv`2 z>5;IdH!|G+Swg$O_uOCq_LfVz_q`lssoU@^~)z?8uXhoP4d%sj)@+ zOXWQBb?V9QCfuO$6Rzz#US0nHIz_p`e|;Y&=2msB9O<2^M;^WUe$W4`Wg)Tg%L_hi zijg8YWn~-~k3aOZEI*;k+ z@o8&Y+ttj>%#4w_tr^7k#7gl9a-JRVy_##s5K5^Y^J^NDatPawd+gjaGqYGPND*)$ zK50x7bJ=SRzBX3tKqKhB&i1SJ)-A;E-|dm2gV=fYgB4U>d%ptX$4C)qRJ5_Nv5!9X zl=I`#+=k>_*K1zmb~Gf!UzDf>larH4#q8POWDT>f`*=i1x4toyuS1|$VbAWC2U}!HsaVfA0P4Cp{TzmUW^ZqQbUsJZPHpsgK>YJ?Q)d=dQc@DjT0Sy3 z`Lf!w^IimvAgp0};viu%JUqOu+20Sd)qineq1d=pw%)GcWc|Uf@lp~*f00r1EVJ8& z;Jm*ALHB+C(!%fi8zZ3cvZS)uglAM)8)@tg4z|-Z%FwVl;PW#L#IeLJ=|ztg*VaP8 z|AvHxwXPUF4;`oJV{s?tjnb~aFVeDSQc_aVoK)@N^s`4NoJ^=fF=)f;J~`6ZNk~jO zGTy}pZ3!wVamt_xhISR*#U5VUF8bVmYlocts$uKK#?~!?2WW_X>z4(_&i8elsXl5> zOG?*W3BzSF@sMU&7>w!a9Tm>le=`&&MM}8;#ah-8T zSJ&t37kGg*)EK|1!*_HvZItw4QF?%)q0WI6b-bfzQEy^&RwIy1lvO zs+_2mw%IcXvdP(ZOs%fdEfVny)#F*~T^w5G$YRMeH1(=7idp}8D(L>}#WB{E{!BX| zL{nGPcJsuy+%9)sUfv_m5v88}Lpf>bs}{XUv~`Vc8@z~AReD@Dql$d_NNWHb9e3tv zR>yMgA)XW$aZc%DS;s17#0$8f!*JT91vNJ`SPkbArK>Rm>^djpiHUxCvi|TzM&23- zCcg0&0_)0^03XZVB$S-TCqrbZb~Ymc4ryOy{LYLCy!}IyZ;e;jCAznT-~|=>!&9wh zWDOJhVdUFCn@_2Ull_e6Yki+Qd)T@@PB8=D5dK(Vu0x*G;!Q)7!Xm=-%vr7aP@z}T z_-I6XERn)=cus3il8fxkM=3k0IPu5quU@?xqyGo+E;8_O=~>mJI3PZAc^{HXbJ-^a zc2jydH#32oxNZycp1QJ@lyuO4Aj99<Z8{gkNIIeU>;Qoid&4;x8FR6vXEd9^> zwzu`82}iVDen@+edbgj$d-z|O;Kf|?{#*GB36X#N4?z3>{nOVusH!62F{wBSx|k0i zUIWA=nKw*cLx@C$a&N;pqC3OS00&CaMZG^>USI#liOrHA`?-14$PZb|;ktpWIEDrw z%c}T!V`JLS55_H9yv4*C@hhQ1HZoZRh?$0N;uzB8LcRA20txv+sSmyIugG)Xt$GD` z-!E=Ly_AKg)$nA#k~qIZN^(DsoyYarV+m$v=GDncPOt_}Yd;w4-Jn(riWIZzrN%>! z{f0^?2=LkFi3#$NkrA-XSMJ`ud&A&Ev$>hs96-K8`7>x}=<)N5;}w1Y*Q&jP zXvBQO1F=XxDMa6fepvlTzlK92dLwlXD;$!2S{9bvT;+_%fsrX6KVm~M&vyJvhSEyb z>2~H$9M|6|g*AX?{PA%hIsKWh%ztnJY75PtoG!aESmgHCrZL9W8BX?_58QhV1{i8q zqz8zzgGmP{L`Xpz^t+q0@yYf~y`zhZzit7q_CuDKTqRniykRH}i42ygsi|>2{lNh6 z_G-B|i2iK$@|*_hYsJrYEz+~H=ouKUg7<9sV&46YC6*c~6e;Cfr z&!ghv4wcHa0+W&`rDbGjp>{(a(b2z*)GV_1R>86>cX-AeRo@T{jFS$I5a*!_esW?z zz-(MaR#>1ywE!aG(m; zCL<%`Jftm03t^l$yzII^f$YaB9a4~%gpSUOBcwvEipxd)8Uw;v15HFc5q&h!eLQdM zepO-d_wq<`y2Zgv&my;nb)z-6?~2;JPP|9Hu;i(gEou`~$M}6`qwA#j9kHK+rE7&; zOI=4ln-9@=SmMH-G~W{Y(;(AD{lNJN+%t+aIaDk})51)7;6CCBBadW1m!%np_4Um! zT2a;6%)B>PvL9*nO^;Jo34Eq?Molz673!5wnk6l9Ay4!1xrY!xJ+TP+I4JKh-kk}v zJYM+O-G=i6y{T%KtT8(f3P2$*0sEGqi%NwWO_k&P6~H;53KARzsTkn7h#e@0v`kFs zl4?Q;lB&#M_9Bqf!Va=us2tO?vE`4=Kvrh|1dwqkjFSXC6oZg&etsTeat`0~eJ$h3 zogGI|%>^i8Fd8;yMaeUG?gCKa!AVRaB^6enK=NvPIt-90?A)Q7lr%Jv0Dv2ReaF}y z^aKHwLG2O~G$^m5f{)0mV2=I@+5JnXVaOcusVBw9lir}4R-m*7QRxnzm2%vz8Rr^Eo>$vsw>fJFZ4=cI_dqmXVPA`M3{d z26fejxHwK}j%P1Y2!hJXWX&WwGS6dQV5}+DjZUDu)Cyou4pnluXB_Dd={gg%dWbd^ zEIl78xi8^y_{#BI)|8cB_ru(CeH@M{_4gb4DKaJ|bee_wp+u~jgr_wymhM|qItwSr ziW3++rOtQq45W9>FxN+mBC#oW35BHhK?~yVKgAEirU(L1%XMpttkmLr%lYXcl7^rU zs)b7<8USb`*rK;k0fN%yl{=XCEi5d+GUN@}+&5_pQL_xA<~ETIoPdCk$?M?PH8C+U zP|0i{&^Jh`S9&1ebh1rq=FmEEs$UecKE4 zD(AMhBcb*Z`>Z7&$}XlO`8vQ4xC%*J@OHy#q5K`VmSd#IC=x1rNag~+_W@gl!z@nf zlPYI-cV6hB9_ za#0paWxu0&j57Oaa-c2*L!lR9Dc1C?jmyTJjtGkQdzLs*$_Y!83V!XCj)t5ylrU@T zzK3&{W$*-5enCNmkDuO5Nm1s|qWDe5(j)c<6D#ue{LUs@d;)ozY5}=S#m1KX%MTVE zN9Pu|XJ)A)6EFx$mbdR`-#0&P9qt^a6d~8XB`OuDsr&W_=DnI&N=Xp3hz)X%X2PdBl)!MnK_x z0jlZ9!aFb>Ku|B2mdwDHES??ju1;0oGrOykGg`#<8mm=<>J?xmPMZ@vV8k#W;{}&V zC>uc@h%`umEoo|Mf|YZwmgG{|Y3~M-5OU(x?T_ebS2@x?_wjK$J+Q0a6umeyEraA0 zT!%y)he3efql$_OpeLY{^V(uUl{%c9=Q@BE^2!(6mog0v4ahz);9n~=tbYx32b1}h zK&y!|W(dYZj9Y`|fi)xl;6Yx0IhmmAos+#afAAE>tNm$JKBs^O69n!jBqSXDOmyf6 zoDX;tXt!^Fs{b4W!G$5+r}MDeqEewH-ZTsKBRt&s89W`8rR{0iO0?3kGVTqst2*rL zLp2j0Br^sUl)w4ae-Kc_{ub{)Z>@*Qd)HK3A!26~W6NtJJmTWiUqmiPV$A>2%j@tW z`lYHN&%l&w5Lli5bWQBGOqSo15$o73Z{EC#7xnQ9-PqmT1u{ycq7Q=#&~vzb&ph)D z>&Zd=@nbD5E$IRK1+G{JR4n%oj(1vd=T}!lkg*34P(V_}6&135$s$fCdrzh1J>y8b@M<^{fL)rW_WTa|EMmlRPI}P=4d>)q<^(@z##hX_kq;e~> z8n^;_C<#o703=in@L~%z#d@}yjx+(sf0juB^UYLBc!hK-@D+jZ@bH)qBY;8$8nN8og5j_JUS$XuT@q2KvCJSgGrTg{m~1JEM=B8=D&WL0lnlVEi!HvB z18WF@U}IzJPnAGbN)e^HxVZ50J4#GUYz4v}7`6`RJCaxePX05@U7(=JLD>MHyaAx2 zC>HVY^H;Ua_W=`gc?;Y3-D4IRP>;E}xfennTd9C8lZyEYPgK~20mI`nXdNh3TCopM zY34UKBao=vw{O=!3c5)Gxh-wj`a!+#avD~v*!C0(g7l!bRs;VPN>f)CCXLS?9%wx_ zJ^g384U3+5+Ns?$HuC#cFOUWpLND_g2R>lBA=z45Mm}hO0waA9+=aE=2MA1OFdwZ( z@)KqR#>U2k)i)W*cx_3Ms`+g9=lrBYV_G zE0bvKhz(KxDp#oJpN!2`Quc`I>}-p5r?|)ycdq^Px*01E>C_ZCh0lh`X9t72>4ioy z-M+S;x0v;?yupSJ_4MYc7w(k^R3*R1u%sZUThSmO<_Vv(uzZa>IoUjr zySIH;S=y5RQHBf+E|zewrs<{IZ(+@@fdM?I;Ix9~1*YW!xP`P|o;$aEFV8)IGm@T} zX#$1(uJ7N`5Ux-N0!E&=ipoupHx|$w%WTK-VO)w!OZ`hrU1EkP2nipX@w=+1s02=^ z-67Pjuq6YUQ4mZ~0-y@EFSLgl+uP%S@XSD;!E6Kdg6r;*3$`e$s?E z0|qL;^AaW$C$8r_*3I0|q6S3S)1!)JhH6X8oR;*?s>UX$LDbEBz0o`^P9y^+Cnsmw znhzW!7BO2BJj-uz<|beTpt6_JUv2}Sqn?=CWqLXT0_~DRT}`bR6i}_wp+6M`K#w=@ zg;rFQ8cP2poQBd?R#qh|nq&ah6+6yL#wR4qFGh+H-#$TRcV1DUqL`>nk#TBHd+xlH z1xj4?(IO*(-<*Ca^X8k&#!n8T^zz;gd8h%TmvWM&F~ZpE5yYgUBgFn6bQYyuD`p(m zw=do;s>YH}PqXi+T6*h0`X<$I(zs7^o*V+nh1H5}keh=5ZK@o*{6hx$9=3CxyxJm* zIbAjC9;Jw#M<({=%J24tk@gALb-9(cU2kc%>pZ!6?WZv1}px)b~Znswm znmD>R-G;y!1!B^08Zl~M(EwUb|L)zpemJL|7X*g`E*pVngtIEVc@h(6FUckKu6uc` z*2AGXm;`=W1m!_$XN|}98^Fd*x2CFrYpIy<>ijLO6wvP80B_m!;_Nu%038+W(5FbZ z{5oKgt26aNNX>(=?34Rut`E8wsBf|D_+5tEw@rR8w41MQBGC-5WCfU8nFU?pWy3NH ze&72UABQ6KKv@eTDfGKU(ZdoAcS_bAJe&ykms!y_TyR8MCb0gn2)u!eh-ik7i>vs@ zHl8mYRMt?zAZdRwy9VW&{gJgG$qh*-h3y5X;sKw(fOL)!9;n5B~x; zKa6ksD(qW5d8vU)HE;FwRY-94(NRCWs?xjtPfus+1UU4oo~+*e3k?7$GA2$;{jjCw zvx3IRMd+$6KWD9m`KDIpix&vMt&qvMG+oQrFMrSe{|yyUx?#{XXcbp)4K#?quT{pD zf2gu_boenV4RS|@zYPAl{bS}bUAvs_z!WqGh|AIjtoD3?!kRryZgn5tt+R)$vo%10oA%&u%4=bc({dR!$K+ou`}vp;^YTzF z=W)w}oW}qQ(29u}d4e~T`IoVbgvI_LZ2b@Y^cp~&)CKcpikd4< z@w5_N-RnN%G!@&Pnl@BKs`{HevtC4Qjh?8o7MU8pXL1i7eG00b#&Rn7rw=FGm?ZQf z?AVnK(*PV3F}&0FA2uGT;n1(V5m@q3;Ez2M{Xu;SO6rd*$?%o@?7%mpY(IVdM#Dcn z0cNXy_z}k8+?k>eLR?cb^JO0Mt$oKAyWd{QpZ&U;Z*=$qE`z6NdozJ1(nsc7uVvfki`B0oz3H$RxS>VSZRV{yhO27`T@z?S>;q>8@G@H z^qrqn3*QxPsvAsM6RE?Ty&z4iBUsZWBfHRm=^WLX2?j(cE&WlEeQ1PMb))( z;jB6BJET_(Mk-Qd3L*s;=R5u8YC1^}d%@mFI2136p9`~5+__~DML|MbBV$R}O_HUX z8v89dA<6?9zB@D)n62+pG9CL|6q3!+ZD691>UF>MW+gi=$>FkDOZULh5D=<}N?=ZE z^dab-ZD3Xs|5@jJi>>w_v=uKDEm*ek))&qxsk40l7Dsa(dW@y^47&5Cef+}#wArK( zPne}X>*uwCH8V?{dA&qJ0b^g}P#Fq@!|Eo#w*NYJ1+6Mx{q=fkBl4}E7S6_~2upz- zB75FmD|5c@_Q6lC9COwA#lKkmKv<|qOM8{uF1nifWuiC>2QMswY1cU24Isk9b^5%l zh(N2)uDO=};#Ki_jrkoDxlI-)3rkZW7wCe_!aD-TX$}_R_fmsvIYYH#b_JEsIZWHK=N99jQJNZx(3@ob>y0IC0{J3;M^X^e#g^wj!nD z=XZ-PQ3}?fLZKoi%W(ATUMc_L_VW4+P!b+|L(1LK@AiHb%<~Wu+$S66V4dwJ3JEjE zmeK-mVFEV#fq~&s))sK815*C)*^x7yommsTks+%xHwg*b(gyyq7YrQ#?TSVc&xt_H zXExuv*tz5a8DdXELkv}Zwu@PO?0Uk&t25HrXmj0HEAP_h{IpgvBT!dkM?Ht_D4~c= zJ9BB4Kw7%p@|Y^9B>NW#&@I)7~?GB@!*%BF{(>Q=jMk#&Uj^U|D!5v$NC~vA1h^b0&kz z`IG%EZqKkgg(xt?MJSYGHNq)nL^F>r!wnjPP!SeN>!IzX801wfPEketp=J9dDjr!h zW;6TU^+h>}RQW+(nyPLx=3B4Z76tqWb?lFS=4F@X(=b>pB$db|ybGr=JxdJ83T|^{HeYqNkP@Y+riKl@XNZvKkX5ihq_Y z)eJh(t~Z2px!9=Kb<#sn#d6Kxk^A6``lbCx^7+n~ZCXYi3aJkJwvp*H(&LKCv`1rXjQZuw9aON9!q}A6<>%qC{CHI|FPjqO_q?5 z7Nl+vU(NHPq#7-~x2UP-JC(S^Dy)9su*Rk8o!jN4zjyEcg*^e7-JU9<2mO1UPvR$p z9(VtC`D8!WaTJx!=k$6fL0GhyL_n4A$xPML@*x!>rA?|QKiARKgLS!FT!M#=iAWRm zNNd=Tk>MLBD_3sWhE4VWLvKB-qcVpOA#Mfq!rWi)2cqOZjF7Dl$$53VwBjuOu0!en z`4fQ{`g4`xjeXFmNW@$InuM7HIH9Em`K{W)E$Se~qX=`7uq=_?HoDrOym&j>POSVw zFA@duL(?ryu`57O!_O*TP~+v1gr4K59obe5yVQ?8qcn{>QPr&Y9@DY3cIRlq$-BYD z4Ldijj$cQ&{OK`>l6g~LBX#%7Rx2^(U^K9CbcUD`r;qSj4RZ4)1UNajmbfJ~WB)zNF5dY|vc42yNE8Iq@ZJ z$IBVhNwVLGcD7vC?N@r+pe zBO5`X!4C#^IWsr6 z;5t0G9oLjL)Ad?RXgHhr5kAtC1Y1DO7(BQX2{;lC(R5aiEHawaqE;;~QBgyx=e5p*bTbqO5b zd-2LUWZ5V@u)RsabGZuL?U3QtY307xAt5Wxl;n?m!(yXiR5&R9(UIhtRv#e3Q{#;V za?>K$kY^L4GD%#tYuBghe@GJhY&fX zuJ9IK!HusOzt*X&V~I(a@Ri#4FD0EHPTPwWk23u4wAz^v3y))gcb} zw67)Ir~@X44m%Cb7}#-s5kjR|SSfPKL)fHxy4T%?6Zz2&wfxW`BvGKX7R$N2OyXl5 zcFhYWMG2!{vEb1Rj?|XE_SJkn`EK5jjPxSykomkWP4g&Tsl+@wj-AQd7v{cO8sJ1l zf;g#f{dTI#m197IpCEu}n(?DhqVSZYD}9l_xuG&$dkvw|KKn8%5Swk56br#sQGgou zGCGytLwuXR<~+h~LwtQ48?Hwn+N)8skLUT2XCSz?MQ=>x-_Ksy7A|)OOLwdqi5#jc zX1ytw(?%a$_K1}XY>fqq$L|?3`sfDYlL>LO!UU2;#624gUT(_lIzN3`Y_M5`-c*)W zuabCI)-dznyEosf+w>$b@Cfm(S==WhX`)IL6Ihc&NkfKJMdM|v?4*+)B%&3yQnf7A^o3hcbu#oAEwwlCamG6rjGWtb)bJ+dc`Tb#Pnu;(`L3( zY$$=OtDYn*DVsuNs^;1XZl=hf03p(!oCO3+PRc?xWsf2dCQ+*DowsC8Aj(M(tH6oT z{r>fdinZ0x9+5nVd2L38u@m}t?si4}#TzYBbun&9qipF(*Ruz$;+J z6wf^*Ve}sx*2z^7s(Mfxx8!e*9W6WFx7Y6MUw)q;ZGl3MMUlN6s?tsHWPL_$m5MiK zb}8pHZ#lF}pafNb$$gc*l9FHHXnLp`Pl=)ee`ZqI2rD&}PbbC|H*)1*aB{RO)7Gzv z#X%$}s{F?7{d^R}T~150U}=euxi3lz$lh~1$MfrGj4!EYa#U#iD1<}S_X`838flu+ zlX?CW-fppYJgIi5n#Gc;%#4Xw9Y=ku*Cu1etDDb=eXzu`2fHb}8ilcNw)#>fVIt=a zOm~nd<5Ws+NNCXHt9F&!Vo=8@P^lWYL)i7mQ`;;gU*UW1@!56t+hVdK!}4d-27Zqv zo_YB^_*|=;TlUykXMV;uF5#j|#D=A%P7iTM@Hn3CHu>v#t08K^I?2%r$HA!Wz}2;Rvh+pT=y!`%>^^>GLkU|`$~OFo861mvfvbjI7HR>Mhjy|%`T?DtV7e( zQ=k6v+O)K8X1?f?hj0Bh@P{H7jYrlVF3pC%Sf6J!YLWh9hY@XKk;V-RV`4XjZklU459GkuV!;!Fyj%(^`j_SIH$q zfVIFk=7T_K+1bJHeHYxR%uInMlq!Twm1E~N?owL}E$M47qrT2X(HAb;0xP=$E6!Wb zX8Ts2D}NQQ-%;W$FnsFAS}@ZmT7>tRsjKv6QR!Z;rj&=s<(GjEYsA`$_7@kI)(O=S z;vZ*ie2TP6=57W))HhsZf4{cUyS|fHG>&aSB(y?NOFW;CYHuF&vwwgfd{c!j{k3H0 z!yof}h8n+;9Kx5)a4g(?hhJ|{mkSl)Wk&j)MKR=T{S5#V zBY)Bo1%WV=8C|6`!)~tJl^+;c3Ug+rVyNt&P@Jxi{CQ+mtzYfS&uO1lZZ6;>9p`)e zrD>z*m&He}^ZhH>ZyC=CguDG_2df(RcD-hLwg!^jUb#M9^R0cE{v}2%UAmzbn_{`) z$FRWDE#<`;{lTq4MKNCqL%TfUZ0hRY*&534T;~_XmIgCqlM5z7@9~ncFBWab~{1xx%|O>2S8V=!gw<^*2=CM{7h_ z(YrIMij_2ssyIhhwHCh?_o$x-bR+>`Id`dD;vvhZX^JDt)i$dZ_i z)}B4y+K^kuSIHMo6XerrJs5U-pB~W1%RFEDP+%lyNRG zq#FBu7k&1PkIC_$hLe9JX_S3PB-v=%%y(a7qdk!W0u~5q{6Ot$NS?_;t_ujku@z}|!p@JEK5LZqD zR1tsvr!hxpm?|hGv-Zf0-EZ~l^tbc+HRS-B4a2z`p zjt|7to*jy8+9zCv!*f6BF=x^L)a+y1``D*3YB)`YJ!|->*)T!^KUNL)^N=Gio>Q^H zYmkXKaA#SkLm*yA!onk+j(>X?{d>^b?Opr3<@sL>rGsLTuI6X17V^w)_)!!aUJF1$LgbvCSQXpM?y0*5vZ?-Wz?CPDoj8n*I4@rl-otv}vqdSq_pDhYuv-8vzuSbDb=tN;fd}=)WH&oafY14Ze_FaO z)8M}ob2Dk*xLnt~T({`ze0cD%bqT5YWy}V8y=20M~lE|AhONrf_Q08J=dHyvM&fS%mr>CbRfBSj8ecv^r*DJ!&VssU`N6+-w2i_pJFjc*{51`UUB>?ZSPyPIupU)t;iTM> zu$F7|T)WZNM^y_2@nRBP;t2hLf`TeA2unW}_axlQ$__(ERJG^pRVwo)7BofTiXPpX z-6+;A(5?3>r+&7C7sIBb28~z`dUZ^R$XIfusMrOc<8gjo#}MZpGk3@ZSWVh1_=mc3g;I z@cG?Nax!~)kp)B?W)YEdBX)1t`oL=;lnKZJX)SlG-$1#z%w(xm#H zSzQ(uy=jz~w8PWCO9%GS`cRI#i~;1w#FsxG{D8I$c6stN3w{7algH=8RpfUYfwOz> zk!T%Ibw=xFlm-R{PImjmV18cie{m)tCeDOn@l5eDDuNP&y+sDf)TY)y(nEuAX*j~# z>7u`;1CeVZCo36f!tVyAt%0_&K2u){)T{lTdwq9q-|oXi?)uF6>tmLCXCpn->LfD=e>8 z)(>{wIZk$Ghw8Czoo9)l+j@F1wO1ErvksN8rwUwMQTrTLEC}Qp)K=h73*X5b&TS7P z$&>I$2fDHvZ1hm(eP|CYO4fVr{{Z^nW7uZ{c|T}R(C?y7Hj=sk7*O3`zbe4KSOc(Q zlv(Ncuh?_o2$H3^Kp%lUJqQ|^^^WmDE-V0@fEC*nf6RS541CrGV80Uv1!OD0uFQld zMZ>_@I6s`#f;+#N?65AkUj7zi4GXc8l9C?hX|jLL^E6B;MVs~o{+l|i$>Mo__pkkC3>s2%*dDA9*qlW`_{{d$o?$U+s6+05^I1b! zRMc?0Zubog^=DXoX$_pT%NjQt1m(-ttHz1nGhxlLuu*h;yw!7ll8QdDOMOE_LwElV zKu_2JKGX<24)7L4?Plt98ZR$u(Xq)HjEsyFegGYk$6-bo*hb#E#ZO*dob5h}pcGI8 zX(0u{T2%K5*!AC2#EgJZ7M+)ucXGJxFv?>G{90?EsKf3jxv=HNQ{W1Ft$g$ts&TUc zUYIj^e2N|_sRI{sr0WK|{DDkHYC^3aXl6y)FqoB8a+)*P&`3I}%D`J!|?8p#6x z9?vbsV>2=YB;Wh6!Iusjv5c&&H7t_-z-#vbhmt=P?zEO*nLGf}4>zY4aF*_lWgmq7 zF!o_!U>`9B7}vO#*4A>^Nu;`_W*sJYAF&DQl`HpQE3J>P1rsbmBEM@EBIvP|4`ei5 zSnT&YJbVbIY5DVGXP?7q58a06)eXQ6rxaUR=}Res6>YiZ-LZnMt8ei#cTWZMRDc|# zlB1SU2DFwK4g*~vstyB3b{{x0>###eKdg5w2g3Z~K9F^WVSB0juB$2!Q$!7rstBw{ z2v`e&s>6Ewwk$C62jR%_;-ZU`-ZILZ@;sNp=SbK?3lz-;7TjFN#qB%zKiGTguqfBB zZFt-^s91oa0xF%-(xTGc&46@E!%!9&lyrl1GfFoq0un2V zzQ5i--+i!;WA9;@x$o<~uC>m!*167gI9}^Xdi!?H`c!kCOeB+E-7&DWaDL2O8o^}pi6d(+{tZ8JHLV4rwi{(0i}?p-$61E4j=Ko3z)IK3hh z6O)YZ5k4B&(qBARDka0Xfg37(ygLP-7m3=Mzb{QV+i~2M51<=WIt)1Zptk}o7`ecI z*xTK`iSj;$aO0(-qQWl?tMbOn1CtioY{NiH4D7+o+*}seCQD#b?ypp@5;laiiit@& zxV22sa?%Dv@F;3?%&9X6m}b!6-3ugt^>RCX;jOM`jt&mWP*E!d##=^a=19TB@UZr& zQ>Vf>tGw8C%jAG$r8-<>N;ow~hnt;oqP}%jecAV=QCr=TK^pz-d+CAfKgd~i(m^-O z0$4qcE-vcO)kOpR4i68X4p8LLA1t$;sH=tN&jOS)7hI3{4LUg`V8^OK&mHU-s~>O9 zehLcWF<4z*E;v3q$b%IjA|mQ(jbwHKDVU7(^dZ|2B2uPo;MEstv6K*<{?7AQF5qP( zlRD6*F8~2s4(PO{o_5e@0i@Fykcn}4_VnvkC(lp98Hcv^o40N;NHb~V$H3`LgS|cv zw~t!-)*SeqNg7Br5{q9W9DW)?fb&hu891)$`C7`b0eO;k@c793`g))#23f+ANFdH5 z#>Rne(+{MVe>&$@RtkY)w+LGiIxh!HR|twZaBE#ahgJLbLcA7wUn*VsM0^e_;8wCg zg2gxvRI_BF*$TihF|)GDhpAOLTSDuWbeNEk(DdYF3b>Y*#zt|KCi0&i!}Y%P1bv&@ z{e?Ve^o*s!0r__THl;dv)-?Ko@2^ioG*(<1mBjBP0XttE*qhS}RudwhCpw4UFliU1 z!-vwCdKG$lc-;0qf9A}sxeKxI<+g5YpDS(0u-JYyQZy2r8n_iz5FE1$=&nEYN8`^U zF|9B-&Ulb>vVtCfkz(@@8cU$45|&m32!nTZKiQW=MBMZ~!Vl(ZqLX@hdP-h25>?yj z(uKD?Hu^Sf112mS;wjj_>XnYB;*yf1-qr~b5W&AYqh6@DmpOPA@p1|ts|5(E5l%=H zn|>~p&+dKXWQF_sU#sz&O2Q!lpEEloJ_O4FO@vj>xG)aPi*L8;tHH#4Yo_c4jusw7 z&lZ8D*bhhANe`JJ6X^^zTIe7A850#3mkT`nvuDq?^!65iQSYSV=hp_cBDLqw-zB;K zy*L#x&7_{oz``Qud$|6-BT3j=XtpEKdXR#}^j#0MD=hr^@z&KPQteOYu(fUdofNOV z4GK}88lQt@KDY&KXaF%)vqk(q{~kw?$jEic++d>EZPfrcYdHV+e}M8@pkF;;5sTm1 zA!wTT0I}V6tU}powjJ~gMnNps243@Ok&vQRo`5FQ;J4Fq2XP0c~;q^oddn81cZSAZt)%7WOe5U+H>85ZShl-^ed`V7ly1l$=0F@QM(*#GH2TV~4LD&5B zK*Pg+O{68<2f-yRp+xmb0C548mhk1Uh0zi4NT4^%!`(d_tSVUALGT8-<>M$>aNoVK zF2J`<2VsyQ*5-)`Bp{}KSPN<(UE=4vp8@Ax&5wwb=#XDGS1m`V9BCvgFHf-beL&9j zK%od1=z7}fAB5wa66?=c*uOl`SH)v9qy$J%<@xhpmyvVei~FD%qts?t1w^v?%#*z{ zg*~?|Kz;HO5J6lPg*@sqaPefP@x$-7Q)j5ub&CFZ60t!-yQp!`@m0x`?dys zsEze?W$>$T8BUcI6&COc(UmJ5#X=xfsstCi1?1Y%%R2ucDqP@b%7ESB*11P=PavI9 zHFF-eaIv)qMjkqJcx*?wgFs47&~-@(D8gGq#vwRx<(!4f_qZ)S1NQ3!vOBAG(en_I z{cMhU*b147$^TlOVe{mEz_)4iN$yWonwI0?Fl9?pdORm4XNv&41rIJ0u6_aDrVd<0 zXE3Iq7gwPq;^wwIk^voYmH^4&jHf`a4(Y91*$~;l;;MiT3WLVgz9Lgu^&Ay(F0*z5 zPAX>h`G}r|oMd0vjAsKBcWMz6}Ytn-#B1DJn(}+i2+M#I3u5pR(6ELi}-k z1k#$#ixi3d1$W<^LIh{QeGX?{rV`OpX%hAaJC+C7M+Gu81SG4FEK&drPisIsge_V) zeCGlrtY5|yb`!88P~ro-A3C8RCU|{{4uKGV0Lp-cq-zTVo_;?_8iFvTA|clU`#?)8 z#=w2@EUSLiR$LnMX~ZjEf{TKui-$0yJUc*{8bGeN{u#t~)?ZkxK3RY`c$j`*{FVYd z9Jb;0@bn~i>4rQ_!DBf{Q2kL*%GctkJ>Fjod#-7LKoo{II0yZkw|es6zmhSR{y!62 z|2F~gKN1ix?@NQF=t@~-NbT@;4Pi?Z!~qLAj?<&a=g>h~nf!(yP1cdH^Sq#pynOA7 zDFCwT^07jDRdbl-qsT!g#LMam(vWIJ{0hO~RpXG}dl|u$!YHiiKZvorh2r|J1pUCN zO9bD|09(xnAP2fQl3pHKYjW}pS-BO5E6$GV2sny;A3S1)ySu7fA3Er-Y-!Z5?0Y}4a_?>xp+hNv|+KCE@ zJ^N_0)@f^A*#$So*m)F+KU!B?9T#xh9+S`JN8Aib69 z9$cNL_l58gDHCh->q~&Xc9vp%rvK%IJmrRS;My!F?VliCDxH~p zzzJ4GK2AuRn4EQ>y5S+MwDPE1wtc;iP8s*qTejjnr@rlbI`u|rgloMgj8d~6I4oQt zanmHcyuHazaC`8qvK5oFc#LPsDfk^Dpr@9r$`TpNx5zg@|3bk6OysALx@TCbmBP6s zZ;4LfLCr-zn+O^>`<)DPfc>_{oV zDbOyS&FsI8_@ttI*A1vnYGrcTNBfJu#gSRCVVX7y?J6N&Diew2mL?`+>+xK@5=~=^ zCCixG-|p{hi;@n@luyh(clnOhR3=8Jbl>gX;;uznZt8@`mM(7dYL z)fOVsr(w_vA=cfT2L0i=Lls*1#e)Q_7vx4Xm6XmB{^!jbrfCo1mjDg0hlH1(JbCqo z=?t!Ayfz3ArtC+>c&<%sk!#!hC^~svZ*!Iv(2f=@4UOJlsa9~R9F8+AV(~anebK=C z#U9QbQorM<|ug99PC&&rx}3HkK#jdq!H4wFVM1LMw7w8uX#5HB39`qmRLX}RYy1Qy^8LbI~W z%Vu_Po6bpZi$LsL49@7$s1@S7ZCZ9nwMtWTFgTpveEa%HfXV5BSB1RX)5kqeydi3Y ziW}KGc(pE>4++VL2#guz{v+Y1@daa-BLXqp&9hH7gTpaW*;A#(J1ZF6e)I&y-MFee zOh{~|gn*p% ztGD;pn`xO;tK`aVlsV3{5&+((@>AV%Ta1%ZRJ#XPbva0nTdb!x`Y8z_D)3`O z%~(13jINAn*^zI?)#-sRS)~b4quQUV3EIg>pX16WAS1T%p4y9e5w^mMsTakUOF~`N zf(RFcHN3-PXLBj4|BKIQ0DAJ*TvmGXPM>4Q{)u-)YBaQVkSLlm0 z9(~?dsYr;K8Pde>mmkqftLLh9zdkzeY`;7*9JPqU80SWhANnhV^=FjWL4&pRpn@P4BdBP(ofhVsB0)OO|E z%{%1QaCvBZBrP4C!C(<6VE>Qm+UfEy?IfNn_QZ%MlSCY$AO4#Q@EcWYuh3h3-0r1S zFkqvfRxI-W3sQ9cQ*H_V-{qD-iXgpiT0+_Dd*X-x0~uw4ce3UOIHXJtg`F=-LpEhX zS>{I`_y)jG|H7!>gop}`!<0D+RRsxmh~-Qm4Calu*TDjma%?+qWUd`h1)vDw_cK%P z%~~Yju#v(;({OyNy@s?#b-is-t2VE;X{6JYdO-)uvk3lFYi>ej`2VGvRDQ_w^ZRmB z%dj>ZTOsrchlUpyL&}au|Mu=L!WIv0d=Z6dbFLcYt18wiqwHCf_s8qBM5eWfKT<2Z)HcP#TbohObc(z( z*d$iN^BBd#Ot#lF*FS+KRx|H{9(((|#Mzq>dGXbH*fF%H51$(e^eeR_Bx!ue_~(@% zIpO>3T_n#>LhM(|v(2S1M4lJ(T|z*A=4?i_yL8wXOSJmR&nt;1HlN5aBz^OI2YJxG zDz5ip%uY`ad)(imMW@N<1~^d1|I{Cfe{a9xo}ks%>(l4A_P>&pHfK}~jNQm-m=RzY zE)MJ&`^1bXs0b5on}1n(MaOezbYx0JA5C(gbpFa+hJ_bXynm;s_5Rp-c(hogR2ZMo zp8A8Fsvt%%u((Zki$WeOO=M3^uvIuc%~Yp#VJT|Sx}d{OKqoW9HNsPh@H-9;4!&>c z6^W!00lzR>bciv=e=n)+-XM>Fu&_Q7b0p?@6vs5quBYNtc;uo|gRIz&>sZXI6rE25 zA@X?Ll}UcS`U0H-QfA-c_}SG}H2J|!I2w(n0ckf}b>(JXrVBG1Evs!er)2|r>0Z(J z6au`ODY5OWel14=OW+`*d zEh&M9mez9LoU1QGRnqVMgz=$wK~eLsgs$k5olXZ>H5 zs_|rW^yYJVl8i@udV2b%yn;>vBnUq?$Pv(~#w8>sPA@Jpo6n6dR=*6cM!fpz?CDK3 z+W@`i&Rc!A6WOk%9Qyr{QxMR9@KjPUu^V15w8p|!_suI)QG}G)>g25)U6Z)b!7yRu z;f~6F>PJmWM~gdhd&q<8d%w_=lQ!F)NDry7TKue`@$J(cEXr^LL6rCul(Vl?n~yeVc{=NF>Md8V z&Jk7t=75;XZQ}8@X2Z0MY$67yk$1jyr-}3xEADjvY!qdH4D;ZO0W18bHpzWVtFzx| zuPdcN;&;8Wo}S&9n^Yz10nB7rz|L8!6Xm21p1;yF>@-JXdg(&B>7s^<$CtdPc^bVj z-=>@)!wl&{tFAwM+{aTFD+?E=TU1e|->q|Rs)#QOx^hYg)xNwhMg_RIE4ROI=5^sn z87tFhO>a=w zM(e!auUtWAz>89?L*tO})+2lleA&KNlN?+-m_R1F*>@tz9I9B)!)Cimkl$2a6;aGH z$>Ch+Kgh8`l9@)1Iy#QhL%J23@7u~wHb*kglN@KPQzX$2jx-&W9nl+b{*kfMnu0oH7^qZ1Q1QxSh4q z+4O#USDUc*^d{|4la8gAD*q{pJw&bD99Xfd9a1&n`pJ+ zz0>A1J6!kgN((sm<@V>977rI{H;)}7?IKDS2l9|7$KX8c0him)SJ}Ob_a2j%mF*1? zJxYf}H1;c=EGi{5bRWc6g6c``iR8OYoIJr+i4u}Eq(&`JK5&sNy)bISYdc&do^|vy za(2N9Gw7Ms)JD&v;Bd@CD{WaQBCt$e2(Ek{vdzburqVJpJ+Mdf=B7eMnP(jYCnH}E0D9ZUMG?5o0?qlC_GuJbfO^R*MocQ`am)sj-exE zj{3$9@Jx|jF|lU=6ORX77puPc?tSMGHRC7zP!l>i-q92nx7D1OF>4zv`;AeQjs7=Zzt9%Tq*<8I)3ZU@N5{&lk35QM`+V!Bp>CC8!yCW7JWLCS zv(&C%MZ>!3_`n-O0f<@aHLdKdR+$_Jy@JJXQS!|4vNvWQ8hzU^82vUMom67->syd7 zUp(;G+d^%SxXP6oh>Wf;<%==3cc+eW@0nb$TuA}F}$(13W{i@-UnA|4|@V260&eiYs+YWpj9Li84f(%>qN>!fM4mK2joy(#xh!Xkc){F=>7MZ zQoQjUq-dsMS&0k6D=O0ForMR3rXPcYTgd(i4-12(&w+Z`ut9Q632D)%* zhxK)dN0_a_lxMjVWKp)a;iXKqa8Lq?h>4+54DpScgA)U92iG~`H?kN@FIvdvX{Nc- z{^dZic6l&1ezh(+OJ{PDh?rPi@9?(#!4{XaN`Vf~a#W?=(YZ)Q{i-LXwUi2#&Wu7X z8|gksd^}V|BIXXeyPNwnZL9Ap{&v*a{!xFd^5R9RPPrv3NMgCH^hqao#^iuvjTMA* zL{*Dy5X5Riol7--pr910zQSD@PD!RiB@W@OQLK5*l-|!*R!;ODnsdfFLk>VaM-R$L z$54a5z^YfH1&!+5Z`QzNmRj%FxwLMK3ps40m)T%*NhH0L80dp8Uc9(J6FoyAWbyf@ zqkH|_FRM}pT3T^<#Aqm4%s|OSgO#hQ`MsZiu9>VK9Jf)rQ{>^oi>G?dASDZ$UtEGq>N+ z<~;xS%BHQwI+=!shN<5~9ev3tdevONZOQI^;@~jcZsE>qzt!4wb<}lcc(TIZhU#d_fH(2-WfA=`S2!jdltJAN(o4m8WK7e(bD1hppIC!Fg z=BZ}fua+ASTy?DD%ZtDzu&U=q)Wvfh?87bxW0A1#2^k=T=B9;|&oUd^+Zqrw2YfX_ zyj-jjt|#m8YcWxQ5<@#%l51}p%~GhFRn5BFz}1?{1;oQMvSGuGn{o8UdyJA2*4alN zM+R(_A)a(D>xzc54{3b?r_Lv?djb*N%WDgdjs{a2a<#raEyEY;*8iAyO+*fIDf&#S zZRf?x(Xk$wRxXTFIbf(0S{fRju?tNM&JQHU#H3GX6huWhEIT+m2gY&RZLKoDyzGH> zt2)#dLwy~6<{{EL5qYrPVL9C0%>f_&#;dTT1nZ*d5!+MfweECS0kTADkWiIY>CZJ1 zKyAf@g~KMIqcbac#|bjz9?U zZdTYM+fg?(`~u|;f-lZqd`pt+oa0;9H+(YZ17%te(-|1Qb*kBt;?mo_jk!3ly@dNxF z@s^uWte=7cR0GH`o9e!xdNWn)0{}5m$fL(XIv8y4cd@smI;C+~PcHP%yMD9CMl0p4 z4w4}k?asVQnuCILbab6NbrIbz-jJZ*Sld#{_(V$Ea^Xjq^S*OFD5}g%PR5$wL*q|W zu0pX$71HmHUSm*hC1kX0M{2ZJYmTD+`R7obOK5DR4L#b35m})W@zMe;##uGQzPBz} zy4a;mD;wE@cXwunru>Lp&AePyxK-MjA{g+b+b90dE8U)Zr0=*QnU6cAKjt;2d#29i z9H%gDC43?sV_!qLrf1wnf<>p$uj@CGjaBL=#FTQAb63 zByOuwt4iL2prPFA@+Cf>ekQEMvy)PI_xtIQI@`RJx&u4;n8(skAySi(`Q*AXk^vGA zxMEAswd}L?NsLTE|2euMC`c@A-8! zHCwIyc^${&8GQW)mkxh9nCviGnfZ_j%{r8 zpr|X}{L6x{QMW(e7r5c3lPKWamENN2R9nYa?yXW}B8^|#tJuf;itY5(XaYG#1H3&D zk+v}9#U&^_1tu0B6m_%}-qYi>q9fwo^`!P_;40zYf<5m@n14iT>g;xc_dQXCVw0Lc zND>(^qPmxco%#-13|z6Po4LN3K#K-KjjDM^5>M48RNgJuzP#QCa_`Y~OlIic9@k(2BX@ZlHiDb;`Hf~yoj7GM) zuI?QjkjytIr)`;_4Ty-Um^%dw7EdxB@mP;MZ+Q5g5Q=zglRX(H@RVo+$Z>LGmQX;~ zfQb~Kh*Bg-i6s&m6W%f$JkMkQ;~$sB@n_LayJ1%lFW;Xvf=CpqPkF8vi#ae$e^W5( z=K;GcP{oCrUx-Q{p>21icN~0}RoKQ~`q|8t+y~mBhIJI279Rw9btn~3QM!~8MQ*3Xa)}H|rZvxhfBkmkt3#U4@g6zedu8~pq=tPr zc&kBl)+>as@Y)mdY8M`>A*E|B3%}diWaTON2viz2gBpf_##~&oPo^D~YT(Nc`ys#9 z4<7`qddq@|oT^;&Tu~n7EdY`Gj5wYK7v!=h z=^gScTG8Y5`FRVxdqs6ZA%!zqIn96J$b?;Z;^Zs=hUXd?5qwom%_sd@tA=MJE~?;J z7RKC?As?PsvFi>o#9)!BXr6TOER%X>f&t3(6?VIo3GH13vABE^r@AZ|dk-$0V*`)x zhg}}=`STYb0WIc?D>89&tBHxZ<(LMLRYq~pXDK8OWMbkW-Fl>_JH>{q%XgR()c_io zi(3!{e;r-czIlhB>zKRkM5QWK(A^vrP1G%rbF{**)&u=8xqC`Dxi6|f*YulN4cf_5 z5q{MQC3;$!GuiNDP%uK!1%&Obqwd#_YKI;7P8o?)38uotEX{@qZ$<0DW2f7gfr8Pk z);#nA4#@YtyJri zkHoDG<};Nc3@Z-Y#FZ zfbEl~ zz-|8EA#9oa;+>umR-FI1*~2W;XrfDMa_tvsk(R6i9vcxtV_f5_aCrjW`z0I?Hj%#f zRHUT7f_pAvrRSoluB>bkrGCPwIot9$w#|J7q#Q@8T;eHstr$RNP5sJ6Ws69rkzzMA zA?N|rryk^KwNOYD8EE(W?YVkF1RdMc6F8%H@AvY8JMC{slP+R+#x>y^$XH|0{Ke+C z(I7M!n)UvDyQU7uCYPceftpil6$7lAbf5`NKSsIC@;-{kj8r(J)g903s%PI!{c6=; zYK6CQSvY*v-x6N)X~jN)iCEtMr=+{ZA ztIq`7=oIEUe%&q@(rj}|wi(L)+NI?8?o1n$zF~`YZ!Zf*e2y_0OJz|NLyI4QM(E7s zN{Y;nN~EX9LLVd0CB@lmcEkRWjaCPkV9~$OPn4&jU%j)`QF;socM4&%d^UZV0f=Fj zf+dU1JG)_jahvwg>l|-#P6@1zjo+wraB--d75UACUQQrfEyM%a9>6Ota>=8ygyKHR zb6%~$FYhxjm}X;HLk$g6RRAp#T9Zo0wa-_#I^%0!IXU5LKaG}ICZhL< z;vth>EZc#d$ILqG*Tg_{XXdn$Mx|RYtoXsYFPkk7lN-sbk?Rsau)i0L>`N7Q0tQ-+ z*wOyJ-HIMz7*aQ?o0;-F8)+eGb9EzO z>FRl!*7KwG%#R)^MLv5<@WTCgZ!WCtzAZ2XT zPM+@Ic^80)n3z4kDAogQRvqp^5=d?)3hdlIA%;v`|9I`eO)|3FMtJe#tLsD;7*c-y zdQM=5n-y#O9)26hc9MGe6*y8kl@pz+=p;pp;m-POugVRgOPAVRlJW@E-srG!^#Us% zaY-t$qxIP?c~KINgr^siNL`kO9F8h|>-R;I zIXE}oUAzIzR$u&D1J(sJooz?SGJx!As;gjd@C&?To9~f2A(=xYCZ_Z4MMi4`W7_vH zS|BdVdy5!nzIn5v0#w(nx#J_()4nr}X2k?-ovWRfdAK=Gdj0O*e5z;`UY%*TrLmNp z-b`zl$56FcNDZVn&gT8qiF#zU>*_#Eh=>Xyq)e`-*3={?WjD~f`0?ZIhd57^)l`%G z$j)4Hn4_;^1Uu3IxVZvO+xbu5ye+lEqKpq85dTPY*Z(Luq5NjD?}u_rU4VLT?B4_<#9cAHAI&fCLSJf%S`UG zXLgxkm<|jtjt&TbJ`S8~bDFMLqYSAt%#A(r-u;@Zk(Z0rdw2=KPe`QD0IP@*HqvE% zH{A1=rwatOJI^ESPHBbdoUP8OwT`%Q_S~%JyOD%lAiMj`9gN72Lbkm0XT$P8rnACs zPT{3(MG@B!Q-7z5FQ4hJQg5?C*A562nkS7-_x+9QEox|3<@jf@f0SOd4YTj&(;BUN zLFp`qFQ0IX<$8wFsUk4l{(Np7*166awM4IK+8WWVYhRbM zGk)^q84y8tD(3)@B@sCAz#qepygEfl7Lv2;_gSOsa)H!#i{2FeW`I6CbG|v*M`h=I z6)q#%AfmcD9+Gp}a|ifdS$1Z zaL9dR68NEmgPI_tigI&LZwflmYVaq~Oa`ZVGMCI(sC}i1St@|+G&MjrMfpE|qaO1xKExpuk)L_NV4s}p)Kle6eQo)_Cc>#Gq7@G$A zu5ojS^`9?4fTThKdtdsY=-rfm^ArA*K)QhZ0U`2zvqGdY-IbE7!8%nnrTkE|57M$* z5F=*;ff}`!LGGj{0klRZEPa^s_L4S!^&~ab_{G+r(_=)Qf9SXvVb*GLYH3laeucB>a*jr1!%e+hjk+Vd%rne>{nq&>;) zRImz2C#q>TLHn@^Y5O{SS!!w-^MlmjebJK|ol={e^z;A$_ceC!{o%P!caICd0P*Qh(ZCzFNHRx_x(fxLES?o!M1iO2pluUYHbV1DzL4 z3y#wZhr>&Q4*Igt8A2x)^97s{u9{dKk1t%pQWq~cp|g@M?8<`ABoK(zQ=V>Li+!C} zS?Sq2BSS6~(3pyhVvY2D@+ywk+9!ygEC0wi=sKI8QWhJ@E&6)0Vr`tIM?LZsb#I1j zbcx%9h<5wniq7)ig;W5*m9wlhcBbX~4m2$@YEl-%wGd_(HT*&Y zr4t9iTMq`eFh;w>e(BWrYnUYAgAVI!QR%?&p5L2G9t8B$U#KsL-&JI0J#5P@?Y0z1 zig74XYUvc0XRgYVR5wo?t(BSZ+7zvYo`H9U)A9Vmn8){Jr7QD+@f(XVJ1Uue?}f1k zE;pE%jC8%I5Jd;$Sj1-}u&*TA${+suPbJjkYE(J^ZEI-wiQ{+5RA5IIf<(Qw())7~ zz z_8(}C-v8zT+_HTvjG>8NZn}K#G@@Ma-!h_O^Eo5Nsj61^v;|=P=u|pp03AOA=t5Fq zFnpWPyFws)11YHmKS2G&fMwR1P-O1M=qDvL28QRoAr!pBnxC*CUR^5RaNw&@S$UXG z{#84DE&{N>=bHuYu{E>~3|0^MP^~|K*2OrI=XT-7@u3aGhDQw0Y`&sSQ$eu`RJ1kKI8ki&u`_`+xF zzjuPG#^O&}tIiU>CEII7=qlTR@Xs)l=bSRPXg?l$U2I_pwSPn{EwRz)xd3mKL%M+%ML$051))do}nErcNXo>v(sW_^MZrPBFem87_`ppVU zn0@zoJu}?%7~{VSld8m^JUX1FqI;snc$4TR6RAujQE8&Eg!I!^K11GsJ6y10pWJUA zU}2w*g*)1fSDCtaC>j0{W<n&wkOus7pHuyh} zpyE!X$W`8Wj7^}t33irsOiILGC;9BFbcYNpLt&K5^7Eb9`;HWma7FONR)Pma_V(sz zu@oihnL8^+d9ct-?A@zGaHnp0D(8QKpAL*K{cvZnFzoMe9CPXWaI_=hdq)g(HUUdex=2JXDoSHI+{UYUWXYuUN@Vj*}gn<>F;|ZH9ucR%_o%F+df}O_iJ)Rzo zw@hXM&ce*8GPPa$YVwEINmAwD?^~b#XIIv$;8fB;Q+&^?U+21Bs+7}5MC;}f`VDvV zh3i{`gjdHs%^$nEmc2EHsaB&MRJvtk+OsgL<%1D=a%t((D+9FoOfHY}rxhvC<8RX} zWGbTk{zg2Y1!e}SD9kBzKX+TAJ`ub>c}w#8b@wVa_PRaSSRq-{N&FV7_E4}uqYW6+ z&!0TOKWJ;K4&ng|#G+LaLy4`reoa~N*v(_az^k6MIcwK}rH=K9Osja^alL&v&iTyQ zv+J$0Z@VnG#iOG8x2rRhm~1;#P<(1uJYnfK(YvrRp@y8Xzgt>J5sIWXLK1V{!+G7w&6fMS0j66KKNb?hwZ1s-bz(&Oq>MS z#f|GX!n-VZ&YV%B7o>krA{z5M&{B22yMUQlqd+XJ`;py}MP=YlQxGi!!v{0@hcld8 zC}D^5e?MCF`j?bA3y72V9Za6T!JioO{OL~)gpXczaMx!;Gr9Pu6C$<4UoE*%wRKNN zZhnNd=-!m2*}m+@#7{73Abhx@6gJ zs1@_Bg2-M|sWn2cKB;BMt@+wr3W+qjP_Js|+hH`PUT)6HXLiO&zqGg|oV3*P`t&+& zYwhO*xoG;TjUy7#*0w8mKV&tB3tzl)*|@dO(!`9+tJ3Jvt=-v^x(wxTsnn4&^WIEM z493h^;9iAwwp?*++53^)t?4E5{`Li0UGJQS*42~tVStAtj4`~Pc}IhnU>v6OikCJ zD87F9>h;EYu}dHV-Zq-iX3<9z#_u%8VZI_%Y1?ROX2#(%;!MHwF&!>WWN)kZ!6Njf z#Gcgb@rvuB`7jT-9Xj%?9@|9cz9NT_Hh4MNiyT6=fXiuuMT%S|!ZLB^1sym=5H$2l3Dz z@zH8D2|i`dasB$9UZiWVY_TZszyiTn(9{R97UckP;i&y2c&b0A>_H%>em8Od)S@88*SFPdwxDFl1}a51@eGy3hY4IM9U z6f@hkTYUT#7CSpSQY6a@5kRB5 z;YOWQQnK}6RNdsxtGNU6rNP#IYa7bb*0$#_T)Yx>LP>G`siPwis+O|Wz#bn%8kLan zro23QEGe7UcBshZ4yraOGgN*W4%vAtf(^{fY*UvoG^7Ta1#Ofr zvmi5bKy2}BSFN?C$icKR4C?F%qeXJKwp&1N;(TuwAJx&$Gbpe$zx#N@axD8k^dTBH zwyMM6;lv^D1NbgxE;G#EfW73F8x4Tmpo5$5?-U8A$xAW)7Dh(7M3KbF2LB#t@iFU& z!vN3awulXbZn>Rtb4TLg#%5=NsBcn8ra}gk^82!{sTF!FRJw;kKj1h%n^2GaR$Oe} zuv}7O3lVb8)B@&<84d$i7cc+;VutLTS&pua{*)^tNrNCA#AVYl29D49z;QE0O9XHq||8!t%Ie1)&K`C4@nMiUwz z-Fz~TpX!j-gm}y!iG3f{s3Qm&7U-+xc<4_u)edYw3Soc$%M@$BZiHxNd+82V(A+NY zVS_|=XINvvqgbN41j2llUi0>Jhcy3;0aG~fOT~Nc?(ScGS1Emtmfg%cW82J=z1sIS z=k^W*&O(q*tVympp8WWtuc#<=p87N&n1n{hH*aq z#$*cOPwy&{bHG%#XNSqA2Vdh^F1%Tj%2j*))c{TZ@ZnqH+~!ujLFH&58SWYKIu%$k zgysG@H}!_;1GKM$0Oj;_#C0)4m_jK~OUaJ5q8)%eE|J!Mv$DH;5ucu!(egT{5%=r) z(`Qd*B2oqyyBD`ADk?rFCcf3!bn^hk*C35&Fa#s?OWA|b2+8#_U6o4KQ_hp#7cX6U zlGgqE)bS^EYngO2v|g?Mxog+p^Cp*PXzf>lPP5{AReyJgbRybQKBXi{&S9^I*41WI z#?TP=+Q@O^EDU#kf%k9M8O~BjrV|v5pI7LHlz30AE?=Eq%{v(41S53b*Vj`aV7q_s z93)9J=)||nLDO~*DsnYRQylNpAHVK8#hCuHU%1! z9`o~e@8CqdD%~%7qjp}j4HP)9jzqqCwE**_RjOTW6%vHB3!i9((fAy$)5q}!P5=5> z9UoH&;RIpyn%`3~;39kowD}2RDiAP9G2-+x*af?>8nMyrW|;2r0vtggCC{g;%*j-` zHupm2k{3I5?T_Ct4s!9kEO0A58nIlw1;ZawdKVoE7Xm}d6=U&GqI(6O4{-6NqjS2? z^D}&Q<7W&f#=Unz)4hJ8cxW`*tFC**gVpxrvcDH+4;Nu#ITl+m)||;QFrp0U5dl|* z-&HBy^cdkO&+MdLA8}oSk(=*7XUx z9ScD-A1w=a-@@uq-ocbo2GOR-@jDo!1)c1zcJ$^ zGOYWh+rs_tI$J*M4*DwR`|NztUe81ng56FsqNp!CHQnmO?X`)a2b~rNSZUO| z7m1@)9q_2rNbjS|L2=J}a@wXG@W;@4kuE(zO_cpU2=$|#*&a! zO`Lrk_xU?B`pW%mGuv|{w_Aa()l%Ua1f}HGIchpHKK6Rfm>Fh`alA-Wvvq^N)8Vg+ z2s^Us?Gp78m>U$7aEJevJl&OF&6{JdUX!HjL)dk~9m#aHY^`A5?Nj(jc9y{gg$_+e zvvRb?g9~*T_@YW%acx=svcS(|z6QJyR}ho2&h|$mS*`_=DWsKs5PjG9Uq5iEy}AHCk*zIpSxl$6*)3GL9}B3@{so(kUAn$Jf& z^I#K(ek6U*D}vc948%c(UMCG9YMa}pP3_u;b3uazbvJZVl)k8t>P?sx$I8e1Hgb_U!Szhd&{o3u6mKzd1O7VdmJJ?JznR5QV90 ze|4HlAK-6aI!DHC@DwF+&O3QUb=u9mGwC5C_;C3>N|ui|*D)_jq^;u0h3pyATu)}{##76Z%^?W!fgC>Dd~e{*i^9vp1q z`A*({8=97AM7I=)ki(IM5nernjth=Z0o|ZU=46cPGN? z>@6A!!CJN_aYg6nv)sLV_m;2~O_pNPpB*G$v2n8kbge7Tmbz#CyT>kPD6SgNz_6WW zq?E=v0<4UA6bkAA4omY!NvPcOz#cT&b87<(cvtbUOb<@=xwx=|v$G_;#aFYlIy$;K z{!TLH1QN_P3-8{CM>zW*9c+guC3QfLwttJoFB9(T0QYvR2fiLwXYAC<6VA(XI4=Vh z+>ZqWdVcGNMN2bXK6o~9rZ|@DW5nW!;VrQ%n0ytskaGIZrwmOGe+~FO8D0 zwM`%9Bz6h0(+`kiQGaYYRFp(}w(7y?*vB4~?*X3q^42AeIwknIbmGnJjR!o-tKCOG z8M`3v7zWt>aKdM^4nt;Z6ni*t6lu#F9}rk4+`D5L)|ouhKq6|`b3XjzN5+g#=xFS`PE_x2`dX8hvgt1%lasg$090xmxt zTwOCk5D5k=g~i4;F7Z3zx>8QNEcP)L`9PWhde^7Za(dVBBwu_Qnrx2od@8*?AFx!i z#hLP!LtpR1Ogo{0OrCxsebvg!%Jw+n_iufV8lirhqhZtMa1eYC1aqbqH{B>4O-yb8 zzIs<&%$1lbn5xE92`3=OWmo{7H|30gqUqUo=(KoHBz>dOKsNr1p<^b;YVflZrAIzv zk6|NBFDEUHCw}?<1lT$jFkKKNLs;(JF20*uuu^$6S~XHyb=@aFq>gig6#;}`OCoX$fp zA@UCG`g|3d^k2TrR#_mp2&mY?-uk<;BJt#j%Q+IC$ozH|n1-vA*KafN?JYUd$8YXj z%@eRV5~{<-zHv)znK{^3LE%9x)JOBF=;*h9XZx~RCQ(sh~Q$B)w6B3nFlT3iVF`ekrY zT0w#Fnh+V){r*M#U1=$X^+U9{qvNL`>VRsWW zz=Z%bx_Gf!s}gk?0Mf6g#jRw84Q+W80<{LmJ=7~tgxJ_R9t#Qxt;QbL<%jJYw9#U&j?1El-&eYLmQ40Qo??kdyigr{a-4)j zPob?Y7$$(S4@5HX27dd%VlMTr)B{JUr%W-B&KDQA%-nwCvDe`mn@eyr$1s zLr0K>aZslqs;lcNM2<~R$&l*&{pW29l}fSMWuL=i-+ZlO{m|`8RJ;+)(QK`@F@om2 zl$0yHXorBm$;1H>0px_;GdXFr!6_ZqrP19wOa`>x08sq-wlsS35Vys+FM>S}Me9Sa zBiPL~TYssK1#WeInwfyHiBd0Le(g8+44`teJ}|Wv^eZwf@dR)EtMQ)UaaQtIkEwHe z9*e$jVRz5soW%>z!#`tVdLA{h=Ddd+To4KpvRpm~MU_MM`0aKejNDK+?1C*Jr+ zY9kA>QpQK}r4h(JIR~%&CMPCuSq@$qnsi<8sHz!z@n^FW8-3FyL~d7%9ICHvMZou0s<54@a)$%@l!CuacQhH zK>6WB3OtSyo9;J&mqI}`rr2qYE!RWi;o}NkmxXt2T+EAjflT>i>0&c^T>mE249ey7pDLf;sVEEh^kQKP$89-w;g#)ZIhWC)`-6w^ zLqce#$ky3oBw)_1z)MyG**{jWp1Yt{6f0~^2TWYhHwgd)4inbiY2=xL6M=z*sc^d7 zXIK6%S9tAlmODCKB)^QbpI4J1h42rOI@HqFt6dv^H)n&aNgxGRR7aw~ z`jD|LVcs-QYE$Lo2jHyf!clvdc5zp8r#VZh>504hEocKcTfK8AU0tSZvu8}azJ7jY z0tu5KgE9>%KeCgt{IA~50w~LN>-V4-C?z4GfP{d6fPi#}lyrl%lF}ia3MxuUgOubW z-CY6#($do1-3{M*-uK<-?Dy>bo%!~hnKR=I41*8PeLvTIU2FaSzqMA1sNZck^+RG} z+5irQ!HBe=SjJU4Y_(LC8^-Hvp7fVk;JY5IAt#c1>vX{^Ng3<4VW2QV!sE0*^C$Ng zIBp08k_uYx3}={=In~}F>#TAn-{~E;huh_Mv!w+P$eEcL;TKO(gmv%KgL};7JdGyD zH~t=$Nxs8a7wj*qoery5&_Kms8$Dw60!9N3ZMc4OLxk(8}r#u~@h`59(4y!T6Q`fix&{Mq+ojDw){O z58Bfh9sZ&ajc6qOh!7GH34YVF-KnjaRV~Q*_+dcva1m3!&X#>!Ml$8dZ@sl6Ju^db zk-pH&JqsrXg-2Qi*~d3?$-x5gsQF#LJ-X$s$1eG8&9`$Pvv&zO_3`L~TZz?}seaof z_znguKMnX&Ea`tv6rlKNue!RLnA3qVRPdA;k4Dzu=VVyAqnkO#t z(7TtyK0W!u*OciAgg;;yE%%v-a9GHK*b~iXk`zm0?2PsV(fiWMN*o%WSt6bqJzDZ^ zIX&#v0PLWpQos3Em3m!(cEWgdncWgDX)-T}ke##GG`EOw?gecF;Jej=*g0}Ob2;8! zZ(PX@`d*jl8%ufPN?nphYExq)yk-%`9iA{)3t!!v1Cjbur5f}3PSc&D0N?3DAT&JB zo$DLwmnLcxVqIK$9(@|CJorVEk*&2Z#f+u592NxA!68K^b`5Y3HhxM9F}dKnwo!X* zqrSyRZ|ZB~rXW|sYu9`fS6Vwdiks%TomJKUZ9|(!NYm@}DwVPqwvy`?tqPHde7<&Y?tcLoh(Y%fvAP3LJ1t%|#WfCe0 z9DlxYlkm~&0rS<>zTM@a(6`L^(qe!a2}Ag{$#hU)P9N^ed9ibqBp{-_eFd^ApMV&S z-V_^sWMp}K>lTrW7;7Qx(Ti;ZTU*Ot7e}ZE)qko2zAzEIlh1lGnKyZI&%dZZjh^QI z{rAuj>=Cp;R5kjrz4lT&eWkWfzHP@6pp}f4p!6ZdOw@3qalA)q0 zLO6rKMauDic=N~Vu!O1+&6o?{1G!E8FzRj0RNY*7(j6J@&*_y9)F-O zcQCjk6?xtX&8b9i7{g-1tUg=)+}^g8kdhJ(p&rQ9)XZ565Tk;FgqE3^kQR|)8x8OI zKoe}#6M^)}vwQ!`8>Xti4F)!&dcivewH%n2ECc?-9D5nK8u`!(3RZ&zNVhNp`eVOZ z=k=#1%BH-lt2Y(L?JM}UcPs?GjRNB0NHr{khOKLag7U+Rf5X+h6R(}9Rx8xJgE4S< z_w>~55hV!i){*pUAM@UqmU2Q%!bzC$Z9Y`+-lR7zI64~rO-#%k(55G|OUILpI=;~1 z`}&M(OeOrJn@g6blLr`}Up3e&XFV*;3P&gpHd*e!Y`Wbwyxap>HxbFqxJLZI{*hH z7T}(NN# zK{@OX281m}`Welmo9W=RdH-c3%RV4?xD2=CuYXfQxKw{Z90$+TtrGM0T<*8owk6Pq zXWT0u(fWMJ5}=V!eU@+!UB&$W518WPzr#H?K3dnk%2OvpXF5f6zhc}@4xv^Kc}Fcl z*MG%Rjjo^WKDy{Rm1ia`I34nQ+ttZT2lKTB@cQtE=o5Ic-}$A9#Ym@(pynBJm{a{* z?BgWl{~7y8J*CGi9P%GBa88q|XVmegfLkZ`*T20ShR^re|$b~BrSa6s^_sv6_OP*TR0aV`Kt578(sgn z=m=llRVpl9epxuw-t=2!z+${UU{?Rzo;u1i619x01IcQGvUXNvln4cMU~XV}l@#V~ zg8E4U5t?Gn6j_NRtcLBsRzoSQvDhzPTFcb^%52u?AH-*uE4p$W(O*MZ^)Ej(BAY%= zIyyZRlr!=t{Q#|Pg)Q@ecu^b~>+gtqKio-HIK(JM2RFNQlkT7r%5%zT=L`(A7zSM+ z+p3`5L-)FOdPikgJy|ZEuZ4F*ZVIrDxILPX*%P$VqH&_t486R})`!`g5;bx-N{)Qu zDpOTE=lD=?ca#_N@YI_Qzm-?EjX|dFx@hXzGayn%AO8ua97v|Fp22+PsQs3wSV#Nw zv5wcIC3$03zJxgd0P-C;5a|;G3MjUR(LD3MyaK(grI~2eh z7}T;8mF&a|3JcY1Y*m8yP$0FCR#jCEw&ij3rGX&wXadq^u8_~)d#hcyI!fChXngwV ze?WcY{$!Op@%Hj^noAXW#r_3%L|v1XVk*i_I?F;+W28;#pgQSaVUHZZ18iUK$kP)b zQ_>pjvwrV?05bm}?9nP@Ep!s{{}c9*3Z5Gp;&yU%ZaI1Ew)h$M?YC@u5a_qtnq;a3 z+=$rHWa=6lqsLrfFk!Y%E<*euXFH$Umi=v5nBQE^i4GF%kV(xhz{A5M-tB2a>(A=o zr4kRe$(|%G0EdnEWSz@PxB-bnfXpu(lA^eB2)M-JnVl|QhI8*sOZ;6f9IMx3f3Xr@ zUu>5{%>*8}5ob?MDmPE_ ztbSJ6IGzq*Hi)t#$KtAw|7vEXvOeifEybWH>)}G&eGkOcu8cx^Qa??X%j33EPgo@EbFM#DWAZj^U8~vBl6iV9yOCNX+0flQrh5 zPOtZVzD2c%dr*3ByfXnN&i35&eU4lOzq9;&xVr9TkNNre0x+Zfon{2v;|^>-O^}1X zQgI72OQ*K6BbrxEfEJoR`)PR|2t(r5RKpt>Uwv#1Q@T$y2EDhD@P@XL(QR^>Xi4Qt z2M7eHA$s!Ze*WuXVL|G&z=kTfisz7`R1pra?%l4{BMT^pfeh5P@%|<6;q>-BQhO7w zB}EDQZ0t8eYd;7guS4Zox@PIRcJY1Se!#%PaLUmQoF}kN6AV_H8(bv|9F-ymJAC>Jx7q2*9X9=OE|c=(xY#kp!<@axmvIVO8kay zo-Tu0?t^Y4Lc#^s%kpL`;DzDg`%kY z93sGJKH-)PUBj9{Cv;1`v=|fUr;1?u;%`>H|l8g zi#)V#!A*19)g3MgDBvDB&ev~-{Q5D28Y99oj^{3~N9>#LC^cubxgg+)rYldbuD0*3 zl+eE823{heGa;yHoUD3%gIRyzqTnq^4R5V#bi8tNnXd{T(N+MdcY3^H^`n{G;8~(; zgKwCLS&YBgpp)k`HILn^F7b;v{~-*Oj8_)xL5%!9Au_25GW&)-qIk~xX8$X0sr1#|_*1*DH( zu!4A~#h_mw-;>kU6E<*OzheG7?-q!G&g#H49oAx#3$!ojGQQ}HRWGY3+dlsx0i~SK z#`8dNM87S!_N)^sgC*po5KulZ>S4@6^!#9_3pDcx^}y~|)N+WK8Ryqa-PK&qDJ1EZ`(01*s1_ zsqo|0M{znquT_lQs@ze)JDXoyX(w=WEM;9my^e)tRJX8$-0F@dE^4mbxReWfESpOo z-P0_$tF0kXQ9q`r#1~Z;*;ImArACbY8FRQeTTLuJ%m3NYF?T}lks`IwNfdBpArU?? zyH)wm`{cNHrO!TI2iOAr`}tYE^1%TDn$s(%E54WQ?gj%N&3yvFV3&0>f!WcKQy}5u z0XXL1JIJMvggaEH(rk0Xl!)LVDCz zkq`9;{Fe-j45wyhl%{yd?}LeaM!UJUR|l$khygVp-(6;AtKAQ77%u!LGt;leGQ#^^ zv5*>nNUGS%o(uS=?^AkitFOn|UQ zPdz_88W9*DXoXoK6f7(#h>>Ld^K*|y%qzO5&!ePi0?GJ&#WE@ASa9Ch3tk{O%32tc+yOj5Z6O}u>mHzA3n2w@=^ z|BXsmfb{{nXzRr~@Bw;y4*KA{IRMbwvQ*rg)ddl+qCla__BOtL=Dzzjn?*I}2AsOza&UR>gZf)FBVfNnBs4oW2f1crSbFbuEKI5l3s(S$p3fft zE)`Uj?LP-7_2J%@7kIy_7aN|tD+gIs*b%P@@Cswdq}enpfw#4{mkK8jaCC7Ldvcp!Pqg18 zqoY@CFXMQb4j65IPDDZgaEcH?`RFJ!T-W@Z+SNk0#@5R5W?$B5nOHvi8?LUdr*7^o zy-O0+Uwm_OH-ybXVP{Rwft~esjmm|rjpCiXJ}DhxK-K{FkwmL2Ez;pA&89O;Z;R+2 ztM58~DkNX}qFWDG-$vZJS5xe!H_fOz{sehY&t=t_q(n=~l_)6cAi4~WixUnTjQy@*hO;UFV z+gJMhTAP1#;bGUE+_sG$mOUxxD;~$eyL}9HOFhvS?ic)kc|wo|e&r_ibxLmT=t!Nr z?=-T-5WSB!W`aQ0o?e_1uG*WwgB0)Rh`LXYGaI4db^Mv@0gLG@FA{(pDcvw=bd(y( z^Wgt*>ZZYN)tMGh`wNsxT)DW}=o&esRD}F?b_*>jiEJi0T}gt8UHAlMZXB(K1`U`y~wI6jn^|RLB1=qu58UPl0fWEYniGng7?;Rt_z3&NXnP#w?ddqC6&PPcb zzN22Aozc)Z>Fw${N7#NX*m{)+j=D)tGu3?4#v2j2&s!2a*Na`U z?n~&+W%Pqe9{cOpFUne8w?h`GNcUzyK!NbM1RaQ=Zu<=*M_(c1mdp@abtl&P2zf>4Dxyfu#KHN^*OX&={5R!jc=Ty%}_I z2_ARfZ{M0fg3$!}BDo~5=TKg-SOArJ(V`T{sVLakK|Vcj0KD`3B1v!^&a1nmq$acH z2b@PCk`3p-IP1*QM5j*`y@ z)-QX~69@?b&j@V6(>D_2(lj(__o^@8D%{u&N#yocJ4T(!_1Q@vn0i&LVbt|SVmdt( zS`kNaj=TB66oMSB@_J}@?_4162o7_)b|nWCAeRn*06{*_YQjV3?(QXs6P0t<<)BAY zc1~u$DeODR;EPppEnX?ocnFSHxaUN*E2oyW_T2G}i<~kLpCN)lhg=-YWs!7c+nFXz zy@TeSEE6S|obl1y`*KjRiA?cGLW1DIx*?R|Vi2EZ^b=26gr}=!4%O&iW3D;9(S_;s z79J0On&b`(%W+wBj{;XmuS=I6ja@Lx!94FqiHd52TE=KlUZ zGIk>6bqrrQn)3|#&)9`SYn|FdgP`@*kxCyJui+;r5GQw9=Z&383IZ2kZA>`(ySphl zNsFbEu#wxcXldYJ$gA0)%E@)zC@2=>0%KMH zJMFk^D3idK)zwuf5Mi?^Rl0?T7drbLcpYVtsWm*@K=ruiZK|Y=y^U%)I>@Y4kx3`4 zH*U{`|B>r?3OG>ZZPjY)3uYWy;o2R&p>Sr7R>bMKF7+6)?|-2j%t%hA0szBgu;d{S zXIfQGpJ1J*NiE1`T{u5{ZPZ1tn5LKx!vq3y^Xx491VpbMlcb!wIlD_u-X{)tRivRzZ}@3qZLBhA zulDq5oXg%8_H|^@1`&rF8st%RI3^{j-}=7 zSbTa}))}{}YhMA>BX511@5q~?I&@fKCG$**;q%K^%>?M|9guG}i@zwK00lZYYL(lH z#@{;HT@r!uHgA)Yy*u=)ElwO%b2J)LKH&{jnOtVB=K5(==^L8jbylQB2(@g2g0;5V zk+0AGy*^-{j@HY4xe z!Fo&G=31>L8=dsD=_tkVUZzt9(DLH2IkG+SUh5u%#h2D`$jkLWz$UCzt=mE4jtOLJ zGeHkE{i7Nr}26LVoHe?t(lvZVHOrvW^wf!s3qJ(;l%Uq z+tF^9$I6w8Vp+B0D>exJ4iAKxOTBoRxjOwHkpn`AwuY~qa9<=LwRGKI6-reEF#nUF z(`Og^6+J7fu6bS01_RcqjfEh1VsvzLAh`}+K0l{Mq~zI;a8%f>YbD75w4DkUg3S8* zGf$MDePLh%*Gv2DuTDkHHu18#Tf{Pi7h+DTj)a>63U$SvVjI9iYJ-4|0o8BngxR(cn0a&1lK$sS70@v<4x4Fp)_A%At> z3hs^gTlVC{6`Vr%He8&sZwycrvNzEAP-1YZIMKtqe3686DYzYUdBPzxez z=>ky!G3UTOgV+rOqp%Q5+?R+ZeG839I5R5@`xSyM%paVO=4KaAL5hl+nQbqbS!vB5 zN?UDZAJ?Q4l@3CP&qJCYFV6b_!hns54@Ww)}e7<%#U&74P*Pr zNQ{ksGwV^q1?$Uckq;PT?SS5Xm8XL#J2d*u0ki_=FgZqsh{Nt1pY0LU0QDXWdD!^| zrh&2xM{2S%J-5>)4iwvwv$7R_T>l*mR9ED3{~4;&j$rOiozI0~i<<5ugUuJ2$wu-l zNqY&LItzYRZZ4ge*Bv=qjdEqawRUmg@z!yZ$l36Q6l!-j?D9)Ug5o{q)!|fjI>|1b z-6vdt@cYnagB7?lGP99*7^1@FFL^%n=d?@V)G@5RvqI`&P3=Y@x@X;E@=^65`+ zSwzG5cp!AP{uxC5n;tq>{~Y?xadKUVD>bp0xjHmHp7WEj z9{T&&jgMo2#Q~->%fA@*DEAl{!%8RILcyJ%ZtA#GbvB@Bw?3NQr$1Js4Fc(yWZ~_H zM90HseYv_5rZMKE2NHO+EN1(6lZK0%2b&{Jln}qZdbr07-hX0$v5dqh;E@#l6Skm) z9jJK7qgW#VCNFB`hKAyqhLaEyssSLBRzw&X5#RY!A$h3$HQ`vLqdt%ivxC>vJJlMR zf}v7{W%2#nZ3C^hsHn(fbFni>-^y4(F#{$Wq0vZ)2q`ziZN!Ck8lScad_!`R6f^t4 z9wFfK9IqglX|6^Vj|InuJRK=f@F#wZ`(`5|7wYB00ggoi22hk?P#)y@5;S<^XQ+@V zb+K_W+Y(x}+v7)&F{7~e^<)e{UKnK7u}jS6Y&=WnaMMY9uQpW6IWl*2#FQRxCO<&dmVEqpJ$_{(D54`q|0++3mE3Z_^0>zdsgAQ~ zl@xfpiCm426Yj=jT-K8fmOe6rY?1;9l?W*Pg1EaG+DWKK6StQ7*r(=PC<;I9s*E!_ z+Me^j%N_FOO$Zz7&8IdF`x?%+R8V`BhFLqgJTIm^;$Ud5e$Qx7wt$swX<$aex!_(h zb+8rPnF|4wmbbiMv7Y_eZ7ZmGSBLg4w&TIcXvVb_g$>6ps6LTvZK0bX9ls5}Uj2V> z_xJIeL?X*|@?n5mD<>re4i3(D=x?r`_W~7)O%pfRNROt9K1CT^CM>wwli;PLEOKSI zms7c=m}=yC#jYca5~T2YkvN*-=ItgN5g923)fgev`5t4#wiZ_GB;_7wJkHMLT-++* zZTM(Hc}?Tv@oA0Ye4AEO|98KC_vgR*{im(OLUhdG!&tm0USW=LOhKn^BVAwB^^J{v zR5drrdZ4Oa|3OzCIGEQjPCW((RtF>I-d`{tq81KO%W*-sU5KEG0%)XZl8J6XbAoSg zBzY;#r`FawpdS&JI5hXp-Nd}3i7 zq^c=eQ(mE@SR;g12Y+ksALzojzPBv+(w2(Qr2?$~VxKYm#E_6}OsFSzem5=qDfk5h zHN1aax24MQljk^OXz-#fuS6`2nFVWA_c?mjV#-erEdMBWm;AHXeGKPq-n~&Oqe3VE z!IDr+QcPE%SD_1&a)aA*HQz zDAyL$VnDzBKXUlJy&GyXbpCYsb1O05$ Date: Thu, 17 Sep 2020 16:23:55 -0400 Subject: [PATCH 08/50] added extend-data.md --- .../advanced-hunting-extend-data.md | 50 +++++++++++++++++++ .../advanced-hunting-take-action.md | 3 +- .../custom-detection-rules.md | 3 ++ 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-extend-data.md diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-extend-data.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-extend-data.md new file mode 100644 index 0000000000..b6250bc237 --- /dev/null +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-extend-data.md @@ -0,0 +1,50 @@ +--- +title: Extend advanced hunting coverage with the right settings +description: Check auditing settings on Windows devices and other settings to help ensure that you get the most comprehensive data in advanced hunting +keywords: advanced hunting, incident, pivot, entity, audit settings, user account management, security group management, threat hunting, cyber threat hunting, search, query, telemetry, mdatp, Microsoft Defender ATP, Microsoft Defender Advanced Threat Protection, Windows Defender, Windows Defender ATP, Windows Defender Advanced Threat Protection +search.product: eADQiWindows 10XVcnh +search.appverid: met150 +ms.prod: w10 +ms.mktglfcycl: deploy +ms.sitesec: library +ms.pagetype: security +f1.keywords: +- NOCSH +ms.author: lomayor +author: lomayor +ms.localizationpriority: medium +manager: dansimp +audience: ITPro +ms.collection: M365-security-compliance +ms.topic: article +ms.date: 09/20/2020 +--- + +# Extend advanced hunting coverage with the right settings + +## Create custom detection rules + +**Applies to:** + +- [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) + +[Advanced hunting](advanced-hunting-overview.md) relies on data coming from various sources, including your devices, your Office 365 workspaces, Azure AD, and Azure ATP. To get the most comprehensive data possible, ensure that you have the correct settings in the corresponding data sources. + +## Advanced security auditing on Windows devices + +Turn on these advanced auditing settings to ensure you get data about activities on your devices, including local account management, local security group management, and service creation. + +Data | Description | Schema table | How to configure +-|-|-|- +Account management | Events captured as various `ActionType` values indicating local account creation, deletion, and other account-related activities | [DeviceEvents](advanced-hunting-deviceevents-table.md) | - Deploy an advanced security audit policy: [Audit User Account Management](https://docs.microsoft.com/windows/security/threat-protection/auditing/audit-user-account-management)
- [Learn about advanced security audit policies](https://docs.microsoft.com/windows/security/threat-protection/auditing/advanced-security-auditing) +Security group management | Events captured as various `ActionType` values indicating local security group creation and other local group management activities | [DeviceEvents](advanced-hunting-deviceevents-table.md) | - Deploy an advanced security audit policy: [Audit Security Group Management](https://docs.microsoft.com/windows/security/threat-protection/auditing/audit-security-group-management)
- [Learn about advanced security audit policies](https://docs.microsoft.com/windows/security/threat-protection/auditing/advanced-security-auditing) +Service installation | Events captured with the `ActionType` value `ServiceInstalled`, indicating that a service has been created | [DeviceEvents](advanced-hunting-deviceevents-table.md) | - Deploy an advanced security audit policy: [Audit Security System Extension](https://docs.microsoft.com/windows/security/threat-protection/auditing/audit-security-system-extension)
- [Learn about advanced security audit policies](https://docs.microsoft.com/windows/security/threat-protection/auditing/advanced-security-auditing) + +## Related topics + +- [Advanced hunting overview](advanced-hunting-overview.md) +- [Learn the query language](advanced-hunting-query-language.md) +- [Understand the schema](advanced-hunting-schema-reference.md) +- [Work with query results](advanced-hunting-query-results.md) +- [Apply query best practices](advanced-hunting-best-practices.md) +- [Custom detections overview](overview-custom-detections.md) diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-take-action.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-take-action.md index d12e51c9d8..f915252f17 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-take-action.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-take-action.md @@ -4,7 +4,7 @@ description: Quickly address threats and affected assets in your advanced huntin keywords: advanced hunting, threat hunting, cyber threat hunting, mdatp, microsoft defender atp, wdatp search, query, telemetry, custom detections, schema, kusto, avoid timeout, command lines, process id search.product: eADQiWindows 10XVcnh search.appverid: met150 -ms.prod: microsoft-365-enterprise +ms.prod: w10 ms.mktglfcycl: deploy ms.sitesec: library ms.pagetype: security @@ -17,6 +17,7 @@ manager: dansimp audience: ITPro ms.collection: M365-security-compliance ms.topic: article +ms.date: 09/20/2020 --- # Take action on advanced hunting query results diff --git a/windows/security/threat-protection/microsoft-defender-atp/custom-detection-rules.md b/windows/security/threat-protection/microsoft-defender-atp/custom-detection-rules.md index 6021933e52..947c8c38b5 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/custom-detection-rules.md +++ b/windows/security/threat-protection/microsoft-defender-atp/custom-detection-rules.md @@ -16,10 +16,13 @@ manager: dansimp audience: ITPro ms.collection: M365-security-compliance ms.topic: article +ms.date: 09/20/2020 --- # Create custom detection rules + **Applies to:** + - [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) Custom detection rules built from [advanced hunting](advanced-hunting-overview.md) queries let you proactively monitor various events and system states, including suspected breach activity and misconfigured devices. You can set them to run at regular intervals, generating alerts and taking response actions whenever there are matches. From 7244f328afef7f3ca6b960d552f34eaa7bc994c5 Mon Sep 17 00:00:00 2001 From: Marty Hernandez Avedon Date: Thu, 17 Sep 2020 16:44:16 -0400 Subject: [PATCH 09/50] added function page assignedipaddress --- ...nced-hunting-assignedipaddress-function.md | 78 +++++++++++++++++++ .../advanced-hunting-extend-data.md | 2 - .../advanced-hunting-take-action.md | 2 - 3 files changed, 78 insertions(+), 4 deletions(-) create mode 100644 windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-assignedipaddress-function.md diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-assignedipaddress-function.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-assignedipaddress-function.md new file mode 100644 index 0000000000..0845cc41c0 --- /dev/null +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-assignedipaddress-function.md @@ -0,0 +1,78 @@ +--- +title: AssignedIPAddresses() function in advanced hunting for Microsoft Threat Protection +description: Learn how to use the AssignedIPAddresses() function to get the latest IP addresses assigned to a device +keywords: advanced hunting, threat hunting, cyber threat hunting, mdatp, Microsoft Defender ATP, Microsoft Defender Advanced Threat Protection, Windows Defender, Windows Defender ATP, Windows Defender Advanced Threat Protection, search, query, telemetry, schema reference, kusto, FileProfile, file profile, function, enrichment +search.product: eADQiWindows 10XVcnh +search.appverid: met150 +ms.prod: w10 +ms.mktglfcycl: deploy +ms.sitesec: library +ms.pagetype: security +ms.author: lomayor +author: lomayor +ms.localizationpriority: medium +manager: dansimp +audience: ITPro +ms.collection: M365-security-compliance +ms.topic: article +ms.date: 09/20/2020 +--- + +# AssignedIPAddresses() + +**Applies to:** + +- [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) + +Use the `AssignedIPAddresses()` function to quickly obtain the latest IP addresses that have been assigned to a device. If you specify a timestamp argument, this function obtains the most recent IP addresses at the specified time. + +This function returns a table with the following columns: + +Column | Data type | Description +-|-|- +`Timestamp` | datetime | Latest time when the device was observed using the IP address +`IPAddress` | string | IP address used by the device +`IPType` | string | Indicates whether the IP address is a public or private address +`NetworkAdapterType` | int | Network adapter type used by the device that has been assigned the IP address. For the possible values, refer to [this enumeration](https://docs.microsoft.com/dotnet/api/system.net.networkinformation.networkinterfacetype) +`ConnectedNetworks` | int | Networks that the adapter with the assigned IP address is connected to. Each JSON array contains the network name, category (public, private, or domain), a description, and a flag indicating if it's connected publicly to the internet + +## Syntax + +```kusto +AssignedIPAddresses(x, y) +``` + +## Arguments + +- **x**—`DeviceId` or `DeviceName` value identifying the device +- **y**—`Timestamp` (datetime) value instructing the function to obtain the most recent assigned IP addresses from a specific time. If not specified, the function returns the latest IP addresses. + +## Examples + +### Get the list of IP addresses used by a device 24 hours ago + +```kusto +AssignedIPAddresses('example-device-name', ago(1d)) +``` + +### Get IP addresses used by a device and find devices communicating with it + +This query uses the `AssignedIPAddresses()` function to get assigned IP addresses for the device (`example-device-name`) on or before a specific date (`example-date`). It then uses the IP addresses to find connections to the device initiated by other devices. + +```kusto +let Date = datetime(example-date); +let DeviceName = "example-device-name"; +// List IP addresses used on or before the specified date +AssignedIPAddresses(DeviceName, Date) +| project DeviceName, IPAddress, AssignedTime = Timestamp +// Get all network events on devices with the assigned IP addresses as the destination addresses +| join kind=inner DeviceNetworkEvents on $left.IPAddress == $right.RemoteIP +// Get only network events around the time the IP address was assigned +| where Timestamp between ((AssignedTime - 1h) .. (AssignedTime + 1h)) +``` + +## Related topics + +- [Advanced hunting overview](advanced-hunting-overview.md) +- [Learn the query language](advanced-hunting-query-language.md) +- [Understand the schema](advanced-hunting-schema-reference.md) diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-extend-data.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-extend-data.md index b6250bc237..9da7deaf78 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-extend-data.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-extend-data.md @@ -8,8 +8,6 @@ ms.prod: w10 ms.mktglfcycl: deploy ms.sitesec: library ms.pagetype: security -f1.keywords: -- NOCSH ms.author: lomayor author: lomayor ms.localizationpriority: medium diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-take-action.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-take-action.md index f915252f17..9f5671b224 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-take-action.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-take-action.md @@ -8,8 +8,6 @@ ms.prod: w10 ms.mktglfcycl: deploy ms.sitesec: library ms.pagetype: security -f1.keywords: -- NOCSH ms.author: lomayor author: lomayor ms.localizationpriority: medium From 3a46478e468b4b1ba5c1091cacd98b2cfc287a14 Mon Sep 17 00:00:00 2001 From: Marty Hernandez Avedon Date: Thu, 17 Sep 2020 17:09:00 -0400 Subject: [PATCH 10/50] added function page fileprofile --- ...nced-hunting-assignedipaddress-function.md | 2 +- .../advanced-hunting-fileprofile-function.md | 85 +++++++++++++++++++ 2 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-fileprofile-function.md diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-assignedipaddress-function.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-assignedipaddress-function.md index 0845cc41c0..18be1be4a0 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-assignedipaddress-function.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-assignedipaddress-function.md @@ -1,5 +1,5 @@ --- -title: AssignedIPAddresses() function in advanced hunting for Microsoft Threat Protection +title: AssignedIPAddresses() function in advanced hunting for Microsoft Defender Advanced Threat Protection description: Learn how to use the AssignedIPAddresses() function to get the latest IP addresses assigned to a device keywords: advanced hunting, threat hunting, cyber threat hunting, mdatp, Microsoft Defender ATP, Microsoft Defender Advanced Threat Protection, Windows Defender, Windows Defender ATP, Windows Defender Advanced Threat Protection, search, query, telemetry, schema reference, kusto, FileProfile, file profile, function, enrichment search.product: eADQiWindows 10XVcnh diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-fileprofile-function.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-fileprofile-function.md new file mode 100644 index 0000000000..f2f93bf6a2 --- /dev/null +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-fileprofile-function.md @@ -0,0 +1,85 @@ +--- +title: FileProfile() function in advanced hunting for Microsoft Defender Advanced Threat Protection +description: Learn how to use the FileProfile() to enrich information about files in your advanced hunting query results +keywords: advanced hunting, threat hunting, cyber threat hunting, mdatp, Microsoft Defender ATP, Microsoft Defender Advanced Threat Protection, Windows Defender, Windows Defender ATP, Windows Defender Advanced Threat Protection, search, query, telemetry, schema reference, kusto, FileProfile, file profile, function, enrichment +search.product: eADQiWindows 10XVcnh +search.appverid: met150 +ms.prod: w10 +ms.mktglfcycl: deploy +ms.sitesec: library +ms.pagetype: security +ms.author: lomayor +author: lomayor +ms.localizationpriority: medium +manager: dansimp +audience: ITPro +ms.collection: M365-security-compliance +ms.topic: article +ms.date: 09/20/2020 +--- + +# FileProfile() + +**Applies to:** + +- [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) + +The `FileProfile()` function is an enrichment function in [advanced hunting](advanced-hunting-overview.md) that adds the following data to files found by the query. + +Column | Data type | Description +-|-|- +SHA1 | string | SHA-1 of the file that the recorded action was applied to +SHA256 | string | SHA-256 of the file that the recorded action was applied to +MD5 | string | MD5 hash of the file that the recorded action was applied to +FileSize | int | Size of the file in bytes +GlobalPrevalence | int | Number of instances of the entity observed by Microsoft globally +GlobalFirstSeen | datetime | Date and time when the entity was first observed by Microsoft globally +GlobalLastSeen | datetime | Date and time when the entity was last observed by Microsoft globally +Signer | string | Information about the signer of the file +Issuer | string | Information about the issuing certificate authority (CA) +SignerHash | string | Unique hash value identifying the signer +IsCertificateValid | boolean | Whether the certificate used to sign the file is valid +IsRootSignerMicrosoft | boolean | Indicates whether the signer of the root certificate is Microsoft +IsExecutable | boolean | Whether the file is a Portable Executable (PE) file +ThreatName | string | Detection name for any malware or other threats found +Publisher | string | Name of the organization that published the file +SoftwareName | string | Name of the software product + +## Syntax + +```kusto +invoke FileProfile(x,y) +``` + +## Arguments + +- **x** — file ID column to use: `SHA1`, `SHA256`, `InitiatingProcessSHA1` or `InitiatingProcessSHA256`; function uses `SHA1` if unspecified +- **y** — limit to the number of records to enrich, 1-1000; function uses 100 if unspecified + +## Examples + +### Project only the SHA1 column and enrich it + +```kusto +DeviceFileEvents +| where isnotempty(SHA1) and Timestamp > ago(1d) +| take 10 +| project SHA1 +| invoke FileProfile() +``` + +### Enrich the first 500 records and list low-prevalence files + +```kusto +DeviceFileEvents +| where ActionType == "FileCreated" and Timestamp > ago(1d) +| project CreatedOn = Timestamp, FileName, FolderPath, SHA1 +| invoke FileProfile("SHA1", 500) +| where GlobalPrevalence < 15 +``` + +## Related topics + +- [Advanced hunting overview](advanced-hunting-overview.md) +- [Learn the query language](advanced-hunting-query-language.md) +- [Understand the schema](advanced-hunting-schema-reference.md) From 5c9a8ec042c458cc2e217df8c6fe2f3330c58126 Mon Sep 17 00:00:00 2001 From: Marty Hernandez Avedon Date: Mon, 21 Sep 2020 14:41:27 -0400 Subject: [PATCH 11/50] some queries updated smaller table to left, time window, filters on both sides --- .../advanced-hunting-best-practices.md | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-best-practices.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-best-practices.md index 412c20d764..396cb929ca 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-best-practices.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-best-practices.md @@ -61,17 +61,17 @@ The [join operator](https://docs.microsoft.com/azure/data-explorer/kusto/query/j - **Smaller table to your left**—The `join` operator matches records in the table on the left side of your join statement to records on the right. By having the smaller table on the left, fewer records will need to be matched, thus speeding up the query. - In the table below, we reduce the left table `DeviceLogonEvents` to cover only three specific devices before joining it with `IdentityLogonEvents` by account SIDs. + In the table below, we reduce the left table `DeviceLogonEvents` to cover only three specific devices before joining it with `DeviceNetworkEvents` by device IDs. ```kusto DeviceLogonEvents | where DeviceName in ("device-1.domain.com", "device-2.domain.com", "device-3.domain.com") | where ActionType == "LogonFailed" | join - (IdentityLogonEvents - | where ActionType == "LogonFailed" - | where Protocol == "Kerberos") - on AccountSid + (DeviceNetworkEvents + | where Protocol == "Kerberos" + | where ActionType == "LogonFailed") + on DeviceId ``` - **Use the inner-join flavor**—The default [join flavor](https://docs.microsoft.com/azure/data-explorer/kusto/query/joinoperator#join-flavors) or the [innerunique-join](https://docs.microsoft.com/azure/data-explorer/kusto/query/joinoperator?pivots=azuredataexplorer#innerunique-join-flavor) deduplicates rows in the left table by the join key before returning a row for each match to the right table. If the left table has multiple rows with the same value for the `join` key, those rows will be deduplicated to leave a single random row for each unique value. @@ -96,29 +96,33 @@ The [join operator](https://docs.microsoft.com/azure/data-explorer/kusto/query/j - **Join records from a time window**—When investigating security events, analysts look for related events that occur around the same time period. Applying the same approach when using `join` also benefits performance by reducing the number of records to check. - The query below checks for logon events within 30 minutes of receiving a malicious file: + The query below checks for logon events within 30 minutes of a credential access alert being raised: ```kusto - EmailEvents + DeviceAlertEvents | where Timestamp > ago(7d) - | where MalwareFilterVerdict == "Malware" - | project EmailReceivedTime = Timestamp, Subject, SenderFromAddress, AccountName = tostring(split(RecipientEmailAddress, "@")[0]) + | where Severity == "High" + | where Category == "CredentialAccess" + | project AlertRaised = Timestamp, DeviceName, AlertId, Title, AttackTechniques | join ( DeviceLogonEvents | where Timestamp > ago(7d) - | project LogonTime = Timestamp, AccountName, DeviceName - ) on AccountName - | where (LogonTime - EmailReceivedTime) between (0min .. 30min) + | project LogonTime = Timestamp, DeviceName, AccountName + ) on DeviceName + | where (LogonTime - AlertRaised) between (0min .. 30min) ``` - **Apply time filters on both sides**—Even if you're not investigating a specific time window, applying time filters on both the left and right tables can reduce the number of records to check and improve `join` performance. The query below applies `Timestamp > ago(1h)` to both tables so that it joins only records from the past hour: ```kusto - EmailAttachmentInfo + DeviceAlertEvents | where Timestamp > ago(1h) - | where Subject == "Document Attachment" and FileName == "Document.pdf" - | join kind=inner (DeviceFileEvents | where Timestamp > ago(1h)) on SHA256 - ``` + | where Severity == "High" + | join (DeviceFileEvents + | where Timestamp > ago(1h) + | where ActionType == "FileCreated" + ) on SHA1 + ``` - **Use hints for performance**—Use hints with the `join` operator to instruct the backend to distribute load when running resource-intensive operations. [Learn more about join hints](https://docs.microsoft.com/azure/data-explorer/kusto/query/joinoperator#join-hints) From 5796bfb7ec4f9dfd9667c0058709800e999c432b Mon Sep 17 00:00:00 2001 From: skycommand Date: Thu, 24 Sep 2020 11:50:11 +0330 Subject: [PATCH 12/50] Script improvements - Script: Marked each snippet as "PowerShell" instead of plain text. Both GitHub and Microsoft Docs can highlight PowerShell syntax. - Script: Added `#Requires -RunAsAdministrator` because the `Mount-WindowsImage` cmdlet needs it. - Script: Eliminated the path-concatenating code-spaghetti. A mixture of different string-concatenating features was used alongside `Join-Path`! As a result, reading, interpreting, and adopting the path section of the script was a total nightmare. - Script: Replaced all instances of "Write-Host" with "Write-Output". This is a serious change, as PowerShell scripts do not always run attended. Per PowerShell guidelines, `Write-Host` is a last-resort cmdlet. Where possible, `Write-Output` should be used instead. - Script: Changed `"{0:HH:mm:ss}" -f (Get-Date)` into `return "{0:HH:mm:ss}" -f [DateTime]::Now`. It seems not everyone knows that Get-Date's output can be customized, and not always via its parameters. Hence, the former could have unintended consequences. It is also possible to write `Get-Date -Format "HH:mm:ss"` which is neither superior nor inferior. (Well, maybe it costs a few more CPU ticks.) - Markdown Linter: Replaced inline HTML with Markdown - Markdown Linter: Inserted the missing line breaks before each heading --- .../deployment/update/media-dynamic-update.md | 158 +++++++++--------- 1 file changed, 81 insertions(+), 77 deletions(-) diff --git a/windows/deployment/update/media-dynamic-update.md b/windows/deployment/update/media-dynamic-update.md index 8af36e4df1..15715aaf19 100644 --- a/windows/deployment/update/media-dynamic-update.md +++ b/windows/deployment/update/media-dynamic-update.md @@ -18,7 +18,7 @@ ms.topic: article **Applies to**: Windows 10 -This topic explains how to acquire and apply Dynamic Update packages to existing Windows 10 images prior to deployment and includes Windows PowerShell scripts you can use to automate this process. +This topic explains how to acquire and apply Dynamic Update packages to existing Windows 10 images *prior to deployment* and includes Windows PowerShell scripts you can use to automate this process. Volume-licensed media is available for each release of Windows 10 in the Volume Licensing Service Center (VLSC) and other relevant channels such as Windows Update for Business, Windows Server Update Services (WSUS), and Visual Studio Subscriptions. You can use Dynamic Update to ensure that Windows 10 devices have the latest feature update packages as part of an in-place upgrade while preserving language pack and Features on Demand (FODs) that might have been previously installed. Dynamic Update also eliminates the need to install a separate quality update as part of the in-place upgrade process. @@ -42,8 +42,7 @@ You can obtain Dynamic Update packages from the [Microsoft Update Catalog](https ![Table with columns labeled Title, Products, Classification, Last Updated, Version, and Size and four rows listing various dynamic updates and associated KB articles](images/update-catalog.png) -The various Dynamic Update packages might not all be present in the results from a single search, so you might have to search with different keywords to find all of the updates. And you'll need to check various parts of the results to be sure you've identified the needed files. This table shows in bold the key items to search for or look for in the results. For example, to find the relevant "Setup Dynamic Update," you'll have to check the detailed description for the download by selecting the link in the **Title** column of the search results. - +The various Dynamic Update packages might not all be present in the results from a single search, so you might have to search with different keywords to find all of the updates. And you'll need to check various parts of the results to be sure you've identified the needed files. This table shows in **bold** the key items to search for or look for in the results. For example, to find the relevant "Setup Dynamic Update," you'll have to check the detailed description for the download by selecting the link in the **Title** column of the search results. |To find this Dynamic Update packages, search for or check the results here--> |Title |Product |Description (select the **Title** link to see **Details**) | |---------|---------|---------|---------| @@ -96,7 +95,6 @@ Optional Components, along with the .Net feature, can be installed offline, howe These examples are for illustration only, and therefore lack error handling. The script assumes that the following packages is stored locally in this folder structure: - |Folder |Description | |---------|---------| |C:\mediaRefresh | Parent folder that contains the PowerShell script | @@ -107,50 +105,52 @@ These examples are for illustration only, and therefore lack error handling. The The script starts by declaring global variables and creating folders to use for mounting images. Then, make a copy of the original media, from \oldMedia to \newMedia, keeping the original media in case there is a script error and it's necessary to start over from a known state. Also, it will provide a comparison of old versus new media to evaluate changes. To ensure that the new media updates, make sure they are not read-only. -``` -function Get-TS { return "{0:HH:mm:ss}" -f (Get-Date) } +``` PowerShell +#Requires -RunAsAdministrator -Write-Host "$(Get-TS): Starting media refresh" +function Get-TS { return "{0:HH:mm:ss}" -f [DateTime]::Now } -# Declare media for FOD and LPs -$FOD_ISO_PATH = "C:\mediaRefresh\packages\FOD-PACKAGES_OEM_PT1_amd64fre_MULTI.iso" -$LP_ISO_PATH = "C:\mediaRefresh\packages\CLIENTLANGPACKDVD_OEM_MULTI.iso" +Write-Output "$(Get-TS): Starting media refresh" # Declare language for showcasing adding optional localized components -$LANG = "ja-jp" +$LANG = "ja-jp" $LANG_FONT_CAPABILITY = "jpan" +# Declare media for FOD and LPs +$FOD_ISO_PATH = "C:\mediaRefresh\packages\FOD-PACKAGES_OEM_PT1_amd64fre_MULTI.iso" +$LP_ISO_PATH = "C:\mediaRefresh\packages\CLIENTLANGPACKDVD_OEM_MULTI.iso" + # Declare Dynamic Update packages -$LCU_PATH = "C:\mediaRefresh\packages\LCU.msu" -$SSU_PATH = "C:\mediaRefresh\packages\SSU_DU.msu" -$SETUP_DU_PATH = "C:\mediaRefresh\packages\Setup_DU.cab" +$LCU_PATH = "C:\mediaRefresh\packages\LCU.msu" +$SSU_PATH = "C:\mediaRefresh\packages\SSU_DU.msu" +$SETUP_DU_PATH = "C:\mediaRefresh\packages\Setup_DU.cab" $SAFE_OS_DU_PATH = "C:\mediaRefresh\packages\SafeOS_DU.cab" -$DOTNET_CU_PATH = "C:\mediaRefresh\packages\DotNet_CU.msu" +$DOTNET_CU_PATH = "C:\mediaRefresh\packages\DotNet_CU.msu" # Declare folders for mounted images and temp files -$WORKING_PATH = "C:\mediaRefresh\temp" -$MEDIA_OLD_PATH = "C:\mediaRefresh\oldMedia" -$MEDIA_NEW_PATH = "C:\mediaRefresh\newMedia" -$MAIN_OS_MOUNT = $WORKING_PATH + "\MainOSMount" -$WINRE_MOUNT = $WORKING_PATH + "\WinREMount" -$WINPE_MOUNT = $WORKING_PATH + "\WinPEMount" +$MEDIA_OLD_PATH = "C:\mediaRefresh\oldMedia" +$MEDIA_NEW_PATH = "C:\mediaRefresh\newMedia" +$WORKING_PATH = "C:\mediaRefresh\temp" +$MAIN_OS_MOUNT = "C:\mediaRefresh\temp\MainOSMount" +$WINRE_MOUNT = "C:\mediaRefresh\temp\WinREMount" +$WINPE_MOUNT = "C:\mediaRefresh\temp\WinPEMount" # Mount the language pack ISO -Write-Host "$(Get-TS): Mounting LP ISO" +Write-Output "$(Get-TS): Mounting LP ISO" $LP_ISO_DRIVE_LETTER = (Mount-DiskImage -ImagePath $LP_ISO_PATH -ErrorAction stop | Get-Volume).DriveLetter # Declare language related cabs -$WINPE_OC_PATH = Join-Path $LP_ISO_DRIVE_LETTER":" -ChildPath "Windows Preinstallation Environment" | Join-Path -ChildPath "x64" | Join-Path -ChildPath "WinPE_OCs" -$WINPE_OC_LANG_PATH = Join-Path $WINPE_OC_PATH $LANG -$WINPE_OC_LANG_CABS = Get-ChildItem $WINPE_OC_LANG_PATH -name -$WINPE_OC_LP_PATH = Join-Path $WINPE_OC_LANG_PATH "lp.cab" -$WINPE_FONT_SUPPORT_PATH = Join-Path $WINPE_OC_PATH "WinPE-FontSupport-$LANG.cab" -$WINPE_SPEECH_TTS_PATH = Join-Path $WINPE_OC_PATH "WinPE-Speech-TTS.cab" -$WINPE_SPEECH_TTS_LANG_PATH = Join-Path $WINPE_OC_PATH "WinPE-Speech-TTS-$LANG.cab" -$OS_LP_PATH = $LP_ISO_DRIVE_LETTER + ":\x64\langpacks\" + "Microsoft-Windows-Client-Language-Pack_x64_" + $LANG + ".cab" +$WINPE_OC_PATH = "$LP_ISO_DRIVE_LETTER`:\Windows Preinstallation Environment\x64\WinPE_OCs" +$WINPE_OC_LANG_PATH = "$WINPE_OC_PATH\$LANG" +$WINPE_OC_LANG_CABS = Get-ChildItem $WINPE_OC_LANG_PATH -Name +$WINPE_OC_LP_PATH = "$WINPE_OC_LANG_PATH\lp.cab" +$WINPE_FONT_SUPPORT_PATH = "$WINPE_OC_PATH\WinPE-FontSupport-$LANG.cab" +$WINPE_SPEECH_TTS_PATH = "$WINPE_OC_PATH\WinPE-Speech-TTS.cab" +$WINPE_SPEECH_TTS_LANG_PATH = "$WINPE_OC_PATH\WinPE-Speech-TTS-$LANG.cab" +$OS_LP_PATH = "$LP_ISO_DRIVE_LETTER`:\x64\langpacks\Microsoft-Windows-Client-Language-Pack_x64_$LANG.cab" # Mount the Features on Demand ISO -Write-Host "$(Get-TS): Mounting FOD ISO" +Write-Output "$(Get-TS): Mounting FOD ISO" $FOD_ISO_DRIVE_LETTER = (Mount-DiskImage -ImagePath $FOD_ISO_PATH -ErrorAction stop | Get-Volume).DriveLetter $FOD_PATH = $FOD_ISO_DRIVE_LETTER + ":\" @@ -161,10 +161,11 @@ New-Item -ItemType directory -Path $WINRE_MOUNT -ErrorAction stop | Out-Null New-Item -ItemType directory -Path $WINPE_MOUNT -ErrorAction stop | Out-Null # Keep the original media, make a copy of it for the new, updateed media. -Write-Host "$(Get-TS): Copying original media to new media path" +Write-Output "$(Get-TS): Copying original media to new media path" Copy-Item -Path $MEDIA_OLD_PATH"\*" -Destination $MEDIA_NEW_PATH -Force -Recurse -ErrorAction stop | Out-Null Get-ChildItem -Path $MEDIA_NEW_PATH -Recurse | Where-Object { -not $_.PSIsContainer -and $_.IsReadOnly } | ForEach-Object { $_.IsReadOnly = $false } ``` + ### Update WinRE The script assumes that only a single edition is being updated, indicated by Index = 1 (Windows 10 Education Edition). Then the script mounts the image, saves Winre.wim to the working folder, and mounts it. It then applies servicing stack Dynamic Update, since its s are used for updating other s. Since the script is optionally adding Japanese, it adds the language pack to the image, and installs the Japanese versions of all optional packages already installed in Winre.wim. Then, it applies the Safe OS Dynamic Update package. @@ -174,27 +175,27 @@ It finishes by cleaning and exporting the image to reduce the image size. > [!NOTE] > Skip adding the latest cumulative update to Winre.wim because it contains unnecessary s in the recovery environment. The s that are updated and applicable are contained in the safe operating system Dynamic Update package. This also helps to keep the image small. -``` +``` PowerShell # Mount the main operating system, used throughout the script -Write-Host "$(Get-TS): Mounting main OS" +Write-Output "$(Get-TS): Mounting main OS" Mount-WindowsImage -ImagePath $MEDIA_NEW_PATH"\sources\install.wim" -Index 1 -Path $MAIN_OS_MOUNT -ErrorAction stop| Out-Null # # update Windows Recovery Environment (WinRE) # Copy-Item -Path $MAIN_OS_MOUNT"\windows\system32\recovery\winre.wim" -Destination $WORKING_PATH"\winre.wim" -Force -Recurse -ErrorAction stop | Out-Null -Write-Host "$(Get-TS): Mounting WinRE" +Write-Output "$(Get-TS): Mounting WinRE" Mount-WindowsImage -ImagePath $WORKING_PATH"\winre.wim" -Index 1 -Path $WINRE_MOUNT -ErrorAction stop | Out-Null # Add servicing stack update -Write-Host "$(Get-TS): Adding package $SSU_PATH" +Write-Output "$(Get-TS): Adding package $SSU_PATH" Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $SSU_PATH -ErrorAction stop | Out-Null # # Optional: Add the language to recovery environment # # Install lp.cab cab -Write-Host "$(Get-TS): Adding package $WINPE_OC_LP_PATH" +Write-Output "$(Get-TS): Adding package $WINPE_OC_LP_PATH" Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $WINPE_OC_LP_PATH -ErrorAction stop | Out-Null # Install language cabs for each optional package installed @@ -210,7 +211,7 @@ Foreach ($PACKAGE in $WINRE_INSTALLED_OC) { $OC_CAB = $PACKAGE.PackageName.Substring(0, $INDEX) + "_" + $LANG + ".cab" if ($WINPE_OC_LANG_CABS.Contains($OC_CAB)) { $OC_CAB_PATH = Join-Path $WINPE_OC_LANG_PATH $OC_CAB - Write-Host "$(Get-TS): Adding package $OC_CAB_PATH" + Write-Output "$(Get-TS): Adding package $OC_CAB_PATH" Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $OC_CAB_PATH -ErrorAction stop | Out-Null } } @@ -219,7 +220,7 @@ Foreach ($PACKAGE in $WINRE_INSTALLED_OC) { # Add font support for the new language if ( (Test-Path -Path $WINPE_FONT_SUPPORT_PATH) ) { - Write-Host "$(Get-TS): Adding package $WINPE_FONT_SUPPORT_PATH" + Write-Output "$(Get-TS): Adding package $WINPE_FONT_SUPPORT_PATH" Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $WINPE_FONT_SUPPORT_PATH -ErrorAction stop | Out-Null } @@ -227,35 +228,36 @@ if ( (Test-Path -Path $WINPE_FONT_SUPPORT_PATH) ) { if (Test-Path -Path $WINPE_SPEECH_TTS_PATH) { if ( (Test-Path -Path $WINPE_SPEECH_TTS_LANG_PATH) ) { - Write-Host "$(Get-TS): Adding package $WINPE_SPEECH_TTS_PATH" + Write-Output "$(Get-TS): Adding package $WINPE_SPEECH_TTS_PATH" Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $WINPE_SPEECH_TTS_PATH -ErrorAction stop | Out-Null - Write-Host "$(Get-TS): Adding package $WINPE_SPEECH_TTS_LANG_PATH" + Write-Output "$(Get-TS): Adding package $WINPE_SPEECH_TTS_LANG_PATH" Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $WINPE_SPEECH_TTS_LANG_PATH -ErrorAction stop | Out-Null } } # Add Safe OS -Write-Host "$(Get-TS): Adding package $SAFE_OS_DU_PATH" -Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $SAFE_OS_DU_PATH -ErrorAction stop | Out-Null +Write-Output "$(Get-TS): Adding package $SAFE_OS_DU_PATH" +Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $SAFE_OS_DU_PATH -ErrorAction stop | Out-Null # Perform image cleanup -Write-Host "$(Get-TS): Performing image cleanup on WinRE" +Write-Output "$(Get-TS): Performing image cleanup on WinRE" DISM /image:$WINRE_MOUNT /cleanup-image /StartComponentCleanup | Out-Null # Dismount Dismount-WindowsImage -Path $WINRE_MOUNT -Save -ErrorAction stop | Out-Null # Export -Write-Host "$(Get-TS): Exporting image to $WORKING_PATH\winre2.wim" +Write-Output "$(Get-TS): Exporting image to $WORKING_PATH\winre2.wim" Export-WindowsImage -SourceImagePath $WORKING_PATH"\winre.wim" -SourceIndex 1 -DestinationImagePath $WORKING_PATH"\winre2.wim" -ErrorAction stop | Out-Null Move-Item -Path $WORKING_PATH"\winre2.wim" -Destination $WORKING_PATH"\winre.wim" -Force -ErrorAction stop | Out-Null ``` + ### Update WinPE This script is similar to the one that updates WinRE, but instead it mounts Boot.wim, applies the packages with the latest cumulative update last, and saves. It repeats this for all images inside of Boot.wim, typically two images. It starts by applying the servicing stack Dynamic Update. Since the script is customizing this media with Japanese, it installs the language pack from the WinPE folder on the language pack ISO. Additionally, add font support and text to speech (TTS) support. Since the script is adding a new language, it rebuilds lang.ini, used to identify languages installed in the image. Finally, it cleans and exports Boot.wim, and copies it back to the new media. -``` +``` PowerShell # # update Windows Preinstallation Environment (WinPE) # @@ -266,15 +268,15 @@ $WINPE_IMAGES = Get-WindowsImage -ImagePath $MEDIA_NEW_PATH"\sources\boot.wim" Foreach ($IMAGE in $WINPE_IMAGES) { # update WinPE - Write-Host "$(Get-TS): Mounting WinPE" + Write-Output "$(Get-TS): Mounting WinPE" Mount-WindowsImage -ImagePath $MEDIA_NEW_PATH"\sources\boot.wim" -Index $IMAGE.ImageIndex -Path $WINPE_MOUNT -ErrorAction stop | Out-Null # Add SSU - Write-Host "$(Get-TS): Adding package $SSU_PATH" + Write-Output "$(Get-TS): Adding package $SSU_PATH" Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $SSU_PATH -ErrorAction stop | Out-Null # Install lp.cab cab - Write-Host "$(Get-TS): Adding package $WINPE_OC_LP_PATH" + Write-Output "$(Get-TS): Adding package $WINPE_OC_LP_PATH" Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $WINPE_OC_LP_PATH -ErrorAction stop | Out-Null # Install language cabs for each optional package installed @@ -291,7 +293,7 @@ Foreach ($IMAGE in $WINPE_IMAGES) { $OC_CAB = $PACKAGE.PackageName.Substring(0, $INDEX) + "_" + $LANG + ".cab" if ($WINPE_OC_LANG_CABS.Contains($OC_CAB)) { $OC_CAB_PATH = Join-Path $WINPE_OC_LANG_PATH $OC_CAB - Write-Host "$(Get-TS): Adding package $OC_CAB_PATH" + Write-Output "$(Get-TS): Adding package $OC_CAB_PATH" Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $OC_CAB_PATH -ErrorAction stop | Out-Null } } @@ -300,7 +302,7 @@ Foreach ($IMAGE in $WINPE_IMAGES) { # Add font support for the new language if ( (Test-Path -Path $WINPE_FONT_SUPPORT_PATH) ) { - Write-Host "$(Get-TS): Adding package $WINPE_FONT_SUPPORT_PATH" + Write-Output "$(Get-TS): Adding package $WINPE_FONT_SUPPORT_PATH" Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $WINPE_FONT_SUPPORT_PATH -ErrorAction stop | Out-Null } @@ -308,39 +310,40 @@ Foreach ($IMAGE in $WINPE_IMAGES) { if (Test-Path -Path $WINPE_SPEECH_TTS_PATH) { if ( (Test-Path -Path $WINPE_SPEECH_TTS_LANG_PATH) ) { - Write-Host "$(Get-TS): Adding package $WINPE_SPEECH_TTS_PATH" + Write-Output "$(Get-TS): Adding package $WINPE_SPEECH_TTS_PATH" Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $WINPE_SPEECH_TTS_PATH -ErrorAction stop | Out-Null - Write-Host "$(Get-TS): Adding package $WINPE_SPEECH_TTS_LANG_PATH" + Write-Output "$(Get-TS): Adding package $WINPE_SPEECH_TTS_LANG_PATH" Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $WINPE_SPEECH_TTS_LANG_PATH -ErrorAction stop | Out-Null } } # Generates a new Lang.ini file which is used to define the language packs inside the image if ( (Test-Path -Path $WINPE_MOUNT"\sources\lang.ini") ) { - Write-Host "$(Get-TS): Updating lang.ini" + Write-Output "$(Get-TS): Updating lang.ini" DISM /image:$WINPE_MOUNT /Gen-LangINI /distribution:$WINPE_MOUNT | Out-Null - } + } # Add latest cumulative update - Write-Host "$(Get-TS): Adding package $LCU_PATH" + Write-Output "$(Get-TS): Adding package $LCU_PATH" Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $LCU_PATH -ErrorAction stop | Out-Null # Perform image cleanup - Write-Host "$(Get-TS): Performing image cleanup on WinPE" + Write-Output "$(Get-TS): Performing image cleanup on WinPE" DISM /image:$WINPE_MOUNT /cleanup-image /StartComponentCleanup | Out-Null # Dismount Dismount-WindowsImage -Path $WINPE_MOUNT -Save -ErrorAction stop | Out-Null #Export WinPE - Write-Host "$(Get-TS): Exporting image to $WORKING_PATH\boot2.wim" + Write-Output "$(Get-TS): Exporting image to $WORKING_PATH\boot2.wim" Export-WindowsImage -SourceImagePath $MEDIA_NEW_PATH"\sources\boot.wim" -SourceIndex $IMAGE.ImageIndex -DestinationImagePath $WORKING_PATH"\boot2.wim" -ErrorAction stop | Out-Null } Move-Item -Path $WORKING_PATH"\boot2.wim" -Destination $MEDIA_NEW_PATH"\sources\boot.wim" -Force -ErrorAction stop | Out-Null ``` + ### Update the main operating system For this next phase, there is no need to mount the main operating system, since it was already mounted in the previous scripts. This script starts by applying the servicing stack Dynamic Update. Then, it adds Japanese language support and then the Japanese language features. Unlike the Dynamic Update packages, it leverages `Add-WindowsCapability` to add these features. For a full list of such features, and their associated capability name, see [Available Features on Demand](https://docs.microsoft.com/windows-hardware/manufacture/desktop/features-on-demand-non-language-fod). @@ -349,42 +352,42 @@ Now is the time to enable other Optional Components or add other Features on Dem You can install Optional Components, along with the .Net feature, offline, but that will require the device to be restarted. This is why the script installs .Net and Optional Components after cleanup and before export. -``` +``` PowerShell # # update Main OS # # Add servicing stack update -Write-Host "$(Get-TS): Adding package $SSU_PATH" +Write-Output "$(Get-TS): Adding package $SSU_PATH" Add-WindowsPackage -Path $MAIN_OS_MOUNT -PackagePath $SSU_PATH -ErrorAction stop | Out-Null # Optional: Add language to main OS -Write-Host "$(Get-TS): Adding package $OS_LP_PATH" +Write-Output "$(Get-TS): Adding package $OS_LP_PATH" Add-WindowsPackage -Path $MAIN_OS_MOUNT -PackagePath $OS_LP_PATH -ErrorAction stop | Out-Null # Optional: Add a Features on Demand to the image -Write-Host "$(Get-TS): Adding language FOD: Language.Fonts.Jpan~~~und-JPAN~0.0.1.0" +Write-Output "$(Get-TS): Adding language FOD: Language.Fonts.Jpan~~~und-JPAN~0.0.1.0" Add-WindowsCapability -Name "Language.Fonts.$LANG_FONT_CAPABILITY~~~und-$LANG_FONT_CAPABILITY~0.0.1.0" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null -Write-Host "$(Get-TS): Adding language FOD: Language.Basic~~~$LANG~0.0.1.0" +Write-Output "$(Get-TS): Adding language FOD: Language.Basic~~~$LANG~0.0.1.0" Add-WindowsCapability -Name "Language.Basic~~~$LANG~0.0.1.0" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null -Write-Host "$(Get-TS): Adding language FOD: Language.OCR~~~$LANG~0.0.1.0" +Write-Output "$(Get-TS): Adding language FOD: Language.OCR~~~$LANG~0.0.1.0" Add-WindowsCapability -Name "Language.OCR~~~$LANG~0.0.1.0" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null -Write-Host "$(Get-TS): Adding language FOD: Language.Handwriting~~~$LANG~0.0.1.0" +Write-Output "$(Get-TS): Adding language FOD: Language.Handwriting~~~$LANG~0.0.1.0" Add-WindowsCapability -Name "Language.Handwriting~~~$LANG~0.0.1.0" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null -Write-Host "$(Get-TS): Adding language FOD: Language.TextToSpeech~~~$LANG~0.0.1.0" +Write-Output "$(Get-TS): Adding language FOD: Language.TextToSpeech~~~$LANG~0.0.1.0" Add-WindowsCapability -Name "Language.TextToSpeech~~~$LANG~0.0.1.0" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null -Write-Host "$(Get-TS): Adding language FOD:Language.Speech~~~$LANG~0.0.1.0" +Write-Output "$(Get-TS): Adding language FOD:Language.Speech~~~$LANG~0.0.1.0" Add-WindowsCapability -Name "Language.Speech~~~$LANG~0.0.1.0" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null # Note: If I wanted to enable additional Features on Demand, I'd add these here. # Add latest cumulative update -Write-Host "$(Get-TS): Adding package $LCU_PATH" +Write-Output "$(Get-TS): Adding package $LCU_PATH" Add-WindowsPackage -Path $MAIN_OS_MOUNT -PackagePath $LCU_PATH -ErrorAction stop | Out-Null # Copy our updated recovery image from earlier into the main OS @@ -393,7 +396,7 @@ Add-WindowsPackage -Path $MAIN_OS_MOUNT -PackagePath $LCU_PATH -ErrorAction stop Copy-Item -Path $WORKING_PATH"\winre.wim" -Destination $MAIN_OS_MOUNT"\windows\system32\recovery\winre.wim" -Force -Recurse -ErrorAction stop | Out-Null # Perform image cleanup -Write-Host "$(Get-TS): Performing image cleanup on main OS" +Write-Output "$(Get-TS): Performing image cleanup on main OS" DISM /image:$MAIN_OS_MOUNT /cleanup-image /StartComponentCleanup | Out-Null # @@ -402,18 +405,18 @@ DISM /image:$MAIN_OS_MOUNT /cleanup-image /StartComponentCleanup | Out-Null # the image to be booted, and thus if we tried to cleanup after installation, it would fail. # -Write-Host "$(Get-TS): Adding NetFX3~~~~" +Write-Output "$(Get-TS): Adding NetFX3~~~~" Add-WindowsCapability -Name "NetFX3~~~~" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null # Add .Net Cumulative Update -Write-Host "$(Get-TS): Adding package $DOTNET_CU_PATH" +Write-Output "$(Get-TS): Adding package $DOTNET_CU_PATH" Add-WindowsPackage -Path $MAIN_OS_MOUNT -PackagePath $DOTNET_CU_PATH -ErrorAction stop | Out-Null # Dismount Dismount-WindowsImage -Path $MAIN_OS_MOUNT -Save -ErrorAction stop | Out-Null # Export -Write-Host "$(Get-TS): Exporting image to $WORKING_PATH\install2.wim" +Write-Output "$(Get-TS): Exporting image to $WORKING_PATH\install2.wim" Export-WindowsImage -SourceImagePath $MEDIA_NEW_PATH"\sources\install.wim" -SourceIndex 1 -DestinationImagePath $WORKING_PATH"\install2.wim" -ErrorAction stop | Out-Null Move-Item -Path $WORKING_PATH"\install2.wim" -Destination $MEDIA_NEW_PATH"\sources\install.wim" -Force -ErrorAction stop | Out-Null ``` @@ -422,20 +425,21 @@ Move-Item -Path $WORKING_PATH"\install2.wim" -Destination $MEDIA_NEW_PATH"\sourc This part of the script updates the Setup files. It simply copies the individual files in the Setup Dynamic Update package to the new media. This step brings an updated Setup.exe as needed, along with the latest compatibility database, and replacement component manifests. -``` +``` PowerShell # # update remaining files on media # # Add Setup DU by copy the files from the package into the newMedia -Write-Host "$(Get-TS): Adding package $SETUP_DU_PATH" +Write-Output "$(Get-TS): Adding package $SETUP_DU_PATH" cmd.exe /c $env:SystemRoot\System32\expand.exe $SETUP_DU_PATH -F:* $MEDIA_NEW_PATH"\sources" | Out-Null ``` + ### Finish up As a last step, the script removes the working folder of temporary files, and unmounts our language pack and Features on Demand ISOs. -``` +``` PowerShell # # Perform final cleanup # @@ -444,9 +448,9 @@ As a last step, the script removes the working folder of temporary files, and un Remove-Item -Path $WORKING_PATH -Recurse -Force -ErrorAction stop | Out-Null # Dismount ISO images -Write-Host "$(Get-TS): Dismounting ISO images" +Write-Output "$(Get-TS): Dismounting ISO images" Dismount-DiskImage -ImagePath $LP_ISO_PATH -ErrorAction stop | Out-Null Dismount-DiskImage -ImagePath $FOD_ISO_PATH -ErrorAction stop | Out-Null -Write-Host "$(Get-TS): Media refresh completed!" +Write-Output "$(Get-TS): Media refresh completed!" ``` From a6cde646c77197f683b8eb2d8c8db66497654534 Mon Sep 17 00:00:00 2001 From: Marty Hernandez Avedon Date: Tue, 29 Sep 2020 17:22:15 -0400 Subject: [PATCH 13/50] syncing custom-detection-rules with mtp --- .../custom-detection-rules.md | 37 +++++++++++++++---- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/windows/security/threat-protection/microsoft-defender-atp/custom-detection-rules.md b/windows/security/threat-protection/microsoft-defender-atp/custom-detection-rules.md index 947c8c38b5..831853657b 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/custom-detection-rules.md +++ b/windows/security/threat-protection/microsoft-defender-atp/custom-detection-rules.md @@ -40,13 +40,19 @@ In Microsoft Defender Security Center, go to **Advanced hunting** and select an >[!IMPORTANT] >To prevent the service from returning too many alerts, each rule is limited to generating only 100 alerts whenever it runs. Before creating a rule, tweak your query to avoid alerting for normal, day-to-day activity. - ### Required columns in the query results -To use a query for a custom detection rule, the query must return the `Timestamp`, `DeviceId`, and `ReportId` columns in the results. Simple queries, such as those that don't use the `project` or `summarize` operator to customize or aggregate results, typically return these common columns. -There are various ways to ensure more complex queries return these columns. For example, if you prefer to aggregate and count by `DeviceId`, you can still return `Timestamp` and `ReportId` by getting them from the most recent event involving each device. +To use a query for a custom detection rule, the query must return the following columns: -The sample query below counts the number of unique devices (`DeviceId`) with antivirus detections and uses this count to find only the devices with more than five detections. To return the latest `Timestamp` and the corresponding `ReportId`, it uses the `summarize` operator with the `arg_max` function. +- `Timestamp` +- `DeviceId` +- `ReportId` + +Simple queries, such as those that don't use the `project` or `summarize` operator to customize or aggregate results, typically return these common columns. + +There are various ways to ensure more complex queries return these columns. For example, if you prefer to aggregate and count by `DeviceId`, you can still return `Timestamp` and `ReportId` by getting them from the most recent event involving each device. + +The sample query below counts the number of unique devices (`DeviceId`) with antivirus detections and uses this to find only those devices with more than five detections. To return the latest `Timestamp` and the corresponding `ReportId`, it uses the `summarize` operator with the `arg_max` function. ```kusto DeviceEvents @@ -56,6 +62,9 @@ DeviceEvents | where count_ > 5 ``` +> [!TIP] +> For better query performance, set a time filter that matches your intended run frequency for the rule. Since the least frequent run is every 24 hours, filtering for the past day will cover all new data. + ## 3. Create new rule and provide alert details With the query in the query editor, select **Create detection rule** and specify the following alert details: @@ -67,12 +76,13 @@ With the query in the query editor, select **Create detection rule** and specify - **Category**—type of threat component or activity, if any. [Read about alert categories](alerts-queue.md#understanding-alert-categories) - **MITRE ATT&CK techniques**—one or more attack techniques identified by the rule as documented in the MITRE ATT&CK framework. This section is not available with certain alert categories, such as malware, ransomware, suspicious activity, and unwanted software - **Description**—more information about the component or activity identified by the rule -- **Recommended actions**—additional actions that responders might take in response to an alert +- **Recommended actions**—additional actions that responders might take in response to an alert For more information about how alert details are displayed, [read about the alert queue](alerts-queue.md). ### Rule frequency -When saved, a new or edited custom detection rule immediately runs and checks for matches from the past 30 days of data. The rule then runs again at fixed intervals and lookback durations based on the frequency you choose: + +When saved, a new custom detection rule immediately runs and checks for matches from the past 30 days of data. The rule then runs again at fixed intervals and lookback durations based on the frequency you choose: - **Every 24 hours**—runs every 24 hours, checking data from the past 30 days - **Every 12 hours**—runs every 12 hours, checking data from the past 24 hours @@ -81,22 +91,34 @@ When saved, a new or edited custom detection rule immediately runs and checks fo Select the frequency that matches how closely you want to monitor detections, and consider your organization's capacity to respond to the alerts. +### Choose the impacted entities + +Identify the columns in your query results where you expect to find the main affected or impacted entity. For example, a query might return both device and user IDs. Identifying which of these columns represent the main impacted entity helps the service aggregate relevant alerts, correlate incidents, and target response actions. + +You can select only one column for each entity type. Columns that are not returned by your query can't be selected. + ## 4. Specify actions on files or devices + Your custom detection rule can automatically take actions on files or devices that are returned by the query. ### Actions on devices + These actions are applied to devices in the `DeviceId` column of the query results: + - **Isolate device**—applies full network isolation, preventing the device from connecting to any application or service, except for the Microsoft Defender ATP service. [Learn more about device isolation](respond-machine-alerts.md#isolate-devices-from-the-network) - **Collect investigation package**—collects device information in a ZIP file. [Learn more about the investigation package](respond-machine-alerts.md#collect-investigation-package-from-devices) - **Run antivirus scan**—performs a full Microsoft Defender Antivirus scan on the device - **Initiate investigation**—starts an [automated investigation](automated-investigations.md) on the device ### Actions on files + These actions are applied to files in the `SHA1` or the `InitiatingProcessSHA1` column of the query results: + - **Allow/Block**—automatically adds the file to your [custom indicator list](manage-indicators.md) so that it is always allowed to run or blocked from running. You can set the scope of this action so that it is taken only on selected device groups. This scope is independent of the scope of the rule. - **Quarantine file**—deletes the file from its current location and places a copy in quarantine ## 5. Set the rule scope + Set the scope to specify which devices are covered by the rule: - All devices @@ -105,10 +127,11 @@ Set the scope to specify which devices are covered by the rule: Only data from devices in scope will be queried. Also, actions will be taken only on those devices. ## 6. Review and turn on the rule + After reviewing the rule, select **Create** to save it. The custom detection rule immediately runs. It runs again based on configured frequency to check for matches, generate alerts, and take response actions. - ## Related topics + - [View and manage detection rules](custom-detections-manage.md) - [Custom detections overview](overview-custom-detections.md) - [Advanced hunting overview](advanced-hunting-overview.md) From 893db2910c80f7fb96dfd3aa1212a92b590002db Mon Sep 17 00:00:00 2001 From: skycommand Date: Sun, 4 Oct 2020 09:33:10 +0330 Subject: [PATCH 14/50] Update windows/deployment/update/media-dynamic-update.md Co-authored-by: JohanFreelancer9 <48568725+JohanFreelancer9@users.noreply.github.com> --- windows/deployment/update/media-dynamic-update.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/deployment/update/media-dynamic-update.md b/windows/deployment/update/media-dynamic-update.md index 2c0a78e280..ea81420b8b 100644 --- a/windows/deployment/update/media-dynamic-update.md +++ b/windows/deployment/update/media-dynamic-update.md @@ -93,7 +93,7 @@ Optional Components, along with the .NET feature, can be installed offline, howe ## Windows PowerShell scripts to apply Dynamic Updates to an existing image -These examples are for illustration only, and therefore lack error handling. The script assumes that the following packages is stored locally in this folder structure: +These examples are for illustration only, and therefore lack error handling. The script assumes that the following packages are stored locally in this folder structure: |Folder |Description | |---------|---------| From 2f41d16e9ec21eccfce9b0e834da8d36f539fd7a Mon Sep 17 00:00:00 2001 From: Marty Hernandez Avedon Date: Tue, 6 Oct 2020 13:10:20 -0400 Subject: [PATCH 15/50] updated custom detection rules page --- .../custom-detection-rules.md | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/windows/security/threat-protection/microsoft-defender-atp/custom-detection-rules.md b/windows/security/threat-protection/microsoft-defender-atp/custom-detection-rules.md index 831853657b..1445c0ac2c 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/custom-detection-rules.md +++ b/windows/security/threat-protection/microsoft-defender-atp/custom-detection-rules.md @@ -27,13 +27,12 @@ ms.date: 09/20/2020 Custom detection rules built from [advanced hunting](advanced-hunting-overview.md) queries let you proactively monitor various events and system states, including suspected breach activity and misconfigured devices. You can set them to run at regular intervals, generating alerts and taking response actions whenever there are matches. -Read this article to learn how to create new custom detection rules. Or [see viewing and managing existing rules](custom-detections-manage.md). +Read this article to learn how to create new custom detection rules. Or [see viewing and managing existing rules](custom-detections-manage.md). -## 1. Check required permissions +> [!NOTE] +> To create or manage custom detections, [your role](user-roles.md#create-roles-and-assign-the-role-to-an-azure-active-directory-group) needs to have the **manage security settings** permission. -To create or manage custom detections, [your role](user-roles.md#create-roles-and-assign-the-role-to-an-azure-active-directory-group) needs to have the **manage security settings** permission. - -## 2. Prepare the query +## 1. Prepare the query. In Microsoft Defender Security Center, go to **Advanced hunting** and select an existing query or create a new query. When using a new query, run the query to identify errors and understand possible results. @@ -65,7 +64,7 @@ DeviceEvents > [!TIP] > For better query performance, set a time filter that matches your intended run frequency for the rule. Since the least frequent run is every 24 hours, filtering for the past day will cover all new data. -## 3. Create new rule and provide alert details +## 2. Create a new rule and provide alert details. With the query in the query editor, select **Create detection rule** and specify the following alert details: @@ -89,15 +88,18 @@ When saved, a new custom detection rule immediately runs and checks for matches - **Every 3 hours**—runs every 3 hours, checking data from the past 6 hours - **Every hour**—runs hourly, checking data from the past 2 hours +> [!TIP] +> Match the time filters in your query with the lookback duration. Results outside of the lookback duration are ignored. + Select the frequency that matches how closely you want to monitor detections, and consider your organization's capacity to respond to the alerts. -### Choose the impacted entities +## 3. Choose the impacted entities. Identify the columns in your query results where you expect to find the main affected or impacted entity. For example, a query might return both device and user IDs. Identifying which of these columns represent the main impacted entity helps the service aggregate relevant alerts, correlate incidents, and target response actions. You can select only one column for each entity type. Columns that are not returned by your query can't be selected. -## 4. Specify actions on files or devices +## 4. Specify actions. Your custom detection rule can automatically take actions on files or devices that are returned by the query. @@ -117,7 +119,7 @@ These actions are applied to files in the `SHA1` or the `InitiatingProcessSHA1` - **Allow/Block**—automatically adds the file to your [custom indicator list](manage-indicators.md) so that it is always allowed to run or blocked from running. You can set the scope of this action so that it is taken only on selected device groups. This scope is independent of the scope of the rule. - **Quarantine file**—deletes the file from its current location and places a copy in quarantine -## 5. Set the rule scope +## 5. Set the rule scope. Set the scope to specify which devices are covered by the rule: @@ -126,13 +128,15 @@ Set the scope to specify which devices are covered by the rule: Only data from devices in scope will be queried. Also, actions will be taken only on those devices. -## 6. Review and turn on the rule +## 6. Review and turn on the rule. After reviewing the rule, select **Create** to save it. The custom detection rule immediately runs. It runs again based on configured frequency to check for matches, generate alerts, and take response actions. +You can [view and manage custom detection rules](custom-detections-manage.md), check their previous runs, and review the alerts they have triggered. You can also run a rule on demand and modify it. + ## Related topics -- [View and manage detection rules](custom-detections-manage.md) +- [View and manage custom detection rules](custom-detections-manage.md) - [Custom detections overview](overview-custom-detections.md) - [Advanced hunting overview](advanced-hunting-overview.md) - [Learn the advanced hunting query language](advanced-hunting-query-language.md) From 46cb950e6744304c0f1049f0a8f0b12a6894ec1b Mon Sep 17 00:00:00 2001 From: Marty Hernandez Avedon Date: Wed, 7 Oct 2020 14:09:46 -0400 Subject: [PATCH 16/50] added go hunt page --- .../advanced-hunting-go-hunt.md | 107 ++++++++++++++++++ .../images/go-hunt-device.png | Bin 0 -> 45129 bytes .../images/go-hunt-event.png | Bin 0 -> 85534 bytes .../images/go-hunt-evidence-url.png | Bin 0 -> 66806 bytes 4 files changed, 107 insertions(+) create mode 100644 windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-go-hunt.md create mode 100644 windows/security/threat-protection/microsoft-defender-atp/images/go-hunt-device.png create mode 100644 windows/security/threat-protection/microsoft-defender-atp/images/go-hunt-event.png create mode 100644 windows/security/threat-protection/microsoft-defender-atp/images/go-hunt-evidence-url.png diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-go-hunt.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-go-hunt.md new file mode 100644 index 0000000000..5b0d61b4d3 --- /dev/null +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-go-hunt.md @@ -0,0 +1,107 @@ +--- +title: Get relevant info about an entity with go hunt +description: Learn how to use the "go hunt" tool to quickly query for relevant information about an entity or event using advanced hunting. +keywords: advanced hunting, incident, pivot, entity, go hunt, relevant events, threat hunting, cyber threat hunting, search, query, telemetry, Microsoft Threat Protection +search.product: eADQiWindows 10XVcnh +search.appverid: met150 +ms.prod: w10 +ms.mktglfcycl: deploy +ms.sitesec: library +ms.pagetype: security +f1.keywords: +- NOCSH +ms.author: v-maave +author: martyav +ms.localizationpriority: medium +manager: dansimp +audience: ITPro +ms.collection: M365-security-compliance +ms.topic: article +--- + +# Quickly hunt for entity or event information with go hunt + +[!INCLUDE [Microsoft 365 Defender rebranding](../includes/microsoft-defender.md)] + +- [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) + +With the *go hunt* action, you can quickly investigate events and various entity types using powerful query-based [advanced hunting](advanced-hunting-overview.md) capabilities. This action automatically runs an advanced hunting query to find relevant information about the selected event or entity. + +The *go hunt* action is available in various sections of the security center whenever event or entity details are displayed. For example, you can use *go hunt* from the following sections: + +- In the [incident page](investigate-incidents.md#incident-overview), you can review details about users, devices, and many other entities associated with an incident. When you select an entity, you get additional information as well as various actions you could take on that entity. In the example below, a device is selected, showing details about the device as well the option to hunt for more information about the device. + + ![Image showing device details with the go hunt option](./images/go-hunt-device.png) + +- In the incident page, you can also access a list of entities under the evidence tab. Selecting one of those entities provides an option to quickly hunt for information about that entity. + + ![Image showing selected url with the go hunt option in the Evidence tab](./images/go-hunt-evidence-url.png) + +- When viewing the timeline for a device, you can select an event in the timeline to view additional information about that event. Once an event is selected, you get the option to hunt for other relevant events in advanced hunting. + + ![Image showing event details with the go hunt option](./images/go-hunt-event.png) + +Selecting **Go hunt** or **Hunt for related events** passes different queries, depending on whether you've selected an entity or an event. + +## Query for entity information + +When using *go hunt* to query for information about a user, device, or any other type of entity, the query checks all relevant schema tables for any events involving that entity. To keep the results manageable, the query is scoped to around the same time period as the earliest activity in the past 30 days that involves the entity and is associated with the incident. + +Here is an example of the go hunt query for a device: + +```kusto +let selectedTimestamp = datetime(2020-06-02T02:06:47.1167157Z); +let deviceName = "fv-az770.example.com"; +let deviceId = "device-guid"; +search in (DeviceLogonEvents, DeviceProcessEvents, DeviceNetworkEvents, DeviceFileEvents, DeviceRegistryEvents, DeviceImageLoadEvents, DeviceEvents, DeviceImageLoadEvents, IdentityLogonEvents, IdentityQueryEvents) +Timestamp between ((selectedTimestamp - 1h) .. (selectedTimestamp + 1h)) +and DeviceName == deviceName +// or RemoteDeviceName == deviceName +// or DeviceId == deviceId +| take 100 +``` + +### Supported entity types + +You can use *go hunt* after selecting any of these entity types: + +- Files +- Users +- Devices +- IP addresses +- URLs + +## Query for event information + +When using *go hunt* to query for information about a timeline event, the query checks all relevant schema tables for other events around the time of the selected event. For example, the following query lists events in various schema tables that occured around the same time period on the same device: + +```kusto +// List relevant events 30 minutes before and after selected RegistryValueSet event +let selectedEventTimestamp = datetime(2020-10-06T21:40:25.3466868Z); +search in (DeviceFileEvents, DeviceProcessEvents, DeviceEvents, DeviceRegistryEvents, DeviceNetworkEvents, DeviceImageLoadEvents, DeviceLogonEvents, ResponseEvents) + Timestamp between ((selectedEventTimestamp - 30m) .. (selectedEventTimestamp + 30m)) + and DeviceId == "a305b52049c4658ec63ae8b55becfe5954c654a4" +| sort by Timestamp desc +| extend Relevance = iff(Timestamp == selectedEventTimestamp, "Selected event", iff(Timestamp < selectedEventTimestamp, "Earlier event", "Later event")) +| project-reorder Relevance +``` + +## Adjust the query + +With some knowledge of the [query language](advanced-hunting-query-language.md), you can adjust the query to your preference. For example, you can adjust this line, which determines the size of the time window: + +```kusto +Timestamp between ((selectedTimestamp - 1h) .. (selectedTimestamp + 1h)) +``` + +In addition to modifying the query to get more relevant results, you can also: + +- [View the results as charts](advanced-hunting-query-results.md#view-query-results-as-a-table-or-chart) +- [Create a custom detection rule](custom-detection-rules.md) + +## Related topics + +- [Advanced hunting overview](advanced-hunting-overview.md) +- [Learn the query language](advanced-hunting-query-language.md) +- [Work with query results](advanced-hunting-query-results.md) +- [Custom detection rules](custom-detection-rules.md) diff --git a/windows/security/threat-protection/microsoft-defender-atp/images/go-hunt-device.png b/windows/security/threat-protection/microsoft-defender-atp/images/go-hunt-device.png new file mode 100644 index 0000000000000000000000000000000000000000..71d8f65d88bcf6095811d75e6e9a03cf025ee05c GIT binary patch literal 45129 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 NJYD@<);T3K0RYxHwEh49 literal 0 HcmV?d00001 diff --git a/windows/security/threat-protection/microsoft-defender-atp/images/go-hunt-event.png b/windows/security/threat-protection/microsoft-defender-atp/images/go-hunt-event.png new file mode 100644 index 0000000000000000000000000000000000000000..cf3c5d405a93b7138883e96b291e8c1d7369a615 GIT binary patch literal 85534 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 literal 0 HcmV?d00001 diff --git a/windows/security/threat-protection/microsoft-defender-atp/images/go-hunt-evidence-url.png b/windows/security/threat-protection/microsoft-defender-atp/images/go-hunt-evidence-url.png new file mode 100644 index 0000000000000000000000000000000000000000..a489b3c7b98d79b27da2782e14538a86270490d1 GIT binary patch literal 66806 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ⅇsVSae<9_0>xyEN1?`7*IB`4d98{HKg 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 Date: Wed, 7 Oct 2020 14:33:04 -0400 Subject: [PATCH 17/50] build warnings --- .../microsoft-defender-atp/advanced-hunting-go-hunt.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-go-hunt.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-go-hunt.md index 5b0d61b4d3..31a266ff9c 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-go-hunt.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-go-hunt.md @@ -21,7 +21,7 @@ ms.topic: article # Quickly hunt for entity or event information with go hunt -[!INCLUDE [Microsoft 365 Defender rebranding](../includes/microsoft-defender.md)] +[!INCLUDE [Microsoft 365 Defender rebranding](../../includes/microsoft-defender.md)] - [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) @@ -29,7 +29,7 @@ With the *go hunt* action, you can quickly investigate events and various entity The *go hunt* action is available in various sections of the security center whenever event or entity details are displayed. For example, you can use *go hunt* from the following sections: -- In the [incident page](investigate-incidents.md#incident-overview), you can review details about users, devices, and many other entities associated with an incident. When you select an entity, you get additional information as well as various actions you could take on that entity. In the example below, a device is selected, showing details about the device as well the option to hunt for more information about the device. +- In the [incident page](investigate-incidents.md), you can review details about users, devices, and many other entities associated with an incident. When you select an entity, you get additional information as well as various actions you could take on that entity. In the example below, a device is selected, showing details about the device as well the option to hunt for more information about the device. ![Image showing device details with the go hunt option](./images/go-hunt-device.png) From a6b6ad342809fcddfd797a723633dfede5186b93 Mon Sep 17 00:00:00 2001 From: Marty Hernandez Avedon Date: Wed, 7 Oct 2020 17:48:05 -0400 Subject: [PATCH 18/50] edit pass after submitting draft --- .../advanced-hunting-assignedipaddress-function.md | 4 +++- .../microsoft-defender-atp/advanced-hunting-best-practices.md | 1 - .../microsoft-defender-atp/advanced-hunting-extend-data.md | 2 +- .../microsoft-defender-atp/advanced-hunting-query-results.md | 2 +- .../advanced-hunting-schema-reference.md | 4 +--- 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-assignedipaddress-function.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-assignedipaddress-function.md index 18be1be4a0..b1576974be 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-assignedipaddress-function.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-assignedipaddress-function.md @@ -20,11 +20,13 @@ ms.date: 09/20/2020 # AssignedIPAddresses() +[!INCLUDE [Microsoft 365 Defender rebranding](../../includes/microsoft-defender.md)] + **Applies to:** - [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) -Use the `AssignedIPAddresses()` function to quickly obtain the latest IP addresses that have been assigned to a device. If you specify a timestamp argument, this function obtains the most recent IP addresses at the specified time. +Use the `AssignedIPAddresses()` function in your advanced hunting queries to quickly obtain the latest IP addresses that have been assigned to a device. If you specify a timestamp argument, this function obtains the most recent IP addresses at the specified time. This function returns a table with the following columns: diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-best-practices.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-best-practices.md index a4ab079ca9..f82f5473a7 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-best-practices.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-best-practices.md @@ -21,7 +21,6 @@ ms.topic: article [!INCLUDE [Microsoft 365 Defender rebranding](../../includes/microsoft-defender.md)] - **Applies to:** - [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-extend-data.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-extend-data.md index 9da7deaf78..5a8a4ad77b 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-extend-data.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-extend-data.md @@ -20,7 +20,7 @@ ms.date: 09/20/2020 # Extend advanced hunting coverage with the right settings -## Create custom detection rules +[!INCLUDE [Microsoft 365 Defender rebranding](../../includes/microsoft-defender.md)] **Applies to:** diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-query-results.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-query-results.md index 7b15790500..b06237a57a 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-query-results.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-query-results.md @@ -134,7 +134,7 @@ Right-click a value in the result set to quickly enhance your query. You can use ## Filter the query results The filters displayed in the right pane provide a summary of the result set. Every column has its own section in the pane, each of which lists the values found in that column, and the number of instances. -Refine your query by selecting the `+` or `-` buttons on the values that you want to include or exclude. Then selecting **Run query**. +Refine your query by selecting the `+` or `-` buttons on the values that you want to include or exclude. Then select **Run query**. ![Image of advanced hunting filter](images/advanced-hunting-filter.png) diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-schema-reference.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-schema-reference.md index 3bb2a7ef3e..c41443181f 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-schema-reference.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-schema-reference.md @@ -64,13 +64,11 @@ Table and column names are also listed within the Microsoft Defender Security Ce | **[DeviceImageLoadEvents](advanced-hunting-deviceimageloadevents-table.md)** | DLL loading events | | **[DeviceEvents](advanced-hunting-deviceevents-table.md)** | Multiple event types, including events triggered by security controls such as Microsoft Defender Antivirus and exploit protection | | **[DeviceFileCertificateInfo](advanced-hunting-devicefilecertificateinfo-table.md)** | Certificate information of signed files obtained from certificate verification events on endpoints | -| **[DynamicEventCollection]()** | | -| **[DeviceInventory]()** | | | **[DeviceTvmSoftwareInventoryVulnerabilities](advanced-hunting-devicetvmsoftwareinventoryvulnerabilities-table.md)** | Inventory of software on devices as well as any known vulnerabilities in these software products | | **[DeviceTvmSoftwareVulnerabilitiesKB ](advanced-hunting-devicetvmsoftwarevulnerabilitieskb-table.md)** | Knowledge base of publicly disclosed vulnerabilities, including whether exploit code is publicly available | | **[DeviceTvmSecureConfigurationAssessment](advanced-hunting-devicetvmsecureconfigurationassessment-table.md)** | Threat & Vulnerability Management assessment events, indicating the status of various security configurations on devices | | **[DeviceTvmSecureConfigurationAssessmentKB](advanced-hunting-devicetvmsecureconfigurationassessmentkb-table.md)** | Knowledge base of various security configurations used by Threat & Vulnerability Management to assess devices; includes mappings to various standards and benchmarks | -| **[DeviceInternetFacing]()** | | + ## Related topics - [Advanced hunting overview](advanced-hunting-overview.md) From 67acc71d0da74638200937bc9c6a118c59e7dd65 Mon Sep 17 00:00:00 2001 From: Joey Caparas Date: Wed, 7 Oct 2020 14:55:13 -0700 Subject: [PATCH 19/50] update sections --- windows/security/threat-protection/TOC.md | 2 +- .../configure-server-endpoints.md | 61 ++++++++++++------- 2 files changed, 40 insertions(+), 23 deletions(-) diff --git a/windows/security/threat-protection/TOC.md b/windows/security/threat-protection/TOC.md index f69cdfadb5..c7f7335c43 100644 --- a/windows/security/threat-protection/TOC.md +++ b/windows/security/threat-protection/TOC.md @@ -448,7 +448,7 @@ ##### [Onboard devices using a local script](microsoft-defender-atp/configure-endpoints-script.md) ##### [Onboard non-persistent virtual desktop infrastructure (VDI) devices](microsoft-defender-atp/configure-endpoints-vdi.md) -#### [Onboard servers](microsoft-defender-atp/configure-server-endpoints.md) +#### [Onboard Windows servers](microsoft-defender-atp/configure-server-endpoints.md) #### [Onboard non-Windows devices](microsoft-defender-atp/configure-endpoints-non-windows.md) #### [Onboard devices without Internet access](microsoft-defender-atp/onboard-offline-machines.md) #### [Run a detection test on a newly onboarded device](microsoft-defender-atp/run-detection-test.md) diff --git a/windows/security/threat-protection/microsoft-defender-atp/configure-server-endpoints.md b/windows/security/threat-protection/microsoft-defender-atp/configure-server-endpoints.md index 38b47a18f9..d1a8195e28 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/configure-server-endpoints.md +++ b/windows/security/threat-protection/microsoft-defender-atp/configure-server-endpoints.md @@ -54,16 +54,36 @@ For guidance on how to download and use Windows Security Baselines for Windows s You can onboard Windows Server 2008 R2 SP1, Windows Server 2012 R2, and Windows Server 2016 to Microsoft Defender ATP by using any of the following options: -- **Option 1**: [Onboard through Microsoft Defender Security Center](#option-1-onboard-windows-servers-through-microsoft-defender-security-center) +- **Option 1**: Onboard by installing and configuring Microsoft Monitoring Agent (MMA) - **Option 2**: [Onboard through Azure Security Center](#option-2-onboard-windows-servers-through-azure-security-center) - **Option 3**: [Onboard through Microsoft Endpoint Configuration Manager version 2002 and later (only for Windows Server 2012 R2 and Windows Server 2016)](#option-3-onboard-windows-servers-through-microsoft-endpoint-configuration-manager-version-2002-and-later) + +After completing the onboarding steps using any of the provided options, you'll need to [Configure and update System Center Endpoint Protection clients](#configure-and-update-system-center-endpoint-protection-clients). + + > [!NOTE] > Microsoft defender ATP standalone server license is required, per node, in order to onboard a Windows server through Microsoft Defender Security Center (Option 1), or an Azure Security Center Standard license is required, per node, in order to onboard a Windows server through Azure Security Center (Option 2), see [Supported features available in Azure Security Center](https://docs.microsoft.com/azure/security-center/security-center-services). -### Option 1: Onboard Windows servers through Microsoft Defender Security Center -Perform the following steps to onboard Windows servers through Microsoft Defender Security Center: +### Option 1: Onboard by installing and configuring Microsoft Monitoring Agent (MMA) +You'll need to install and configure MMA for Windows servers to report sensor data to Microsoft Defender ATP. For more information, see [Collect log data with Azure Log Analytics agent](https://docs.microsoft.com/azure/azure-monitor/platform/log-analytics-agent). + +If you're already leveraging System Center Operations Manager (SCOM) or Azure Monitor (formerly known as Operations Management Suite (OMS)), attach the Microsoft Monitoring Agent (MMA) to report to your Microsoft Defender ATP workspace through Multihoming support. + +In general, you'll need to take the following steps: +1. Fulfill the onboarding requirements outlined in **Before you begin section**. +2. Turn on server monitoring from Microsoft Defender Security center. +3. Install and configure MMA for the server to report sensor data to Microsoft Defender ATP. +4. Configure and update System Center Endpoint Protection clients. + + +> [!TIP] +> After onboarding the device, you can choose to run a detection test to verify that it is properly onboarded to the service. For more information, see [Run a detection test on a newly onboarded Microsoft Defender ATP endpoint](run-detection-test.md). + + +#### Before you begin +Perform the following steps to fulfill the onboarding requirements: - For Windows Server 2008 R2 SP1 or Windows Server 2012 R2, ensure that you install the following hotfix: - [Update for customer experience and diagnostic telemetry](https://support.microsoft.com/help/3080149/update-for-customer-experience-and-diagnostic-telemetry) @@ -77,26 +97,8 @@ Perform the following steps to onboard Windows servers through Microsoft Defende > [!NOTE] > This step is required only if your organization uses System Center Endpoint Protection (SCEP) and you're onboarding Windows Server 2008 R2 SP1 and Windows Server 2012 R2. - - [Turn on server monitoring from Microsoft Defender Security Center](#turn-on-server-monitoring-from-the-microsoft-defender-security-center-portal). - - If you're already leveraging System Center Operations Manager (SCOM) or Azure Monitor (formerly known as Operations Management Suite (OMS)), attach the Microsoft Monitoring Agent (MMA) to report to your Microsoft Defender ATP workspace through Multihoming support. - - Otherwise, [install and configure MMA to report sensor data to Microsoft Defender ATP](#install-and-configure-microsoft-monitoring-agent-mma-to-report-sensor-data-to-microsoft-defender-atp). For more information, see [Collect log data with Azure Log Analytics agent](https://docs.microsoft.com/azure/azure-monitor/platform/log-analytics-agent). - -> [!TIP] -> After onboarding the device, you can choose to run a detection test to verify that it is properly onboarded to the service. For more information, see [Run a detection test on a newly onboarded Microsoft Defender ATP endpoint](run-detection-test.md). - -### Configure and update System Center Endpoint Protection clients - -Microsoft Defender ATP integrates with System Center Endpoint Protection. The integration provides visibility to malware detections and to stop propagation of an attack in your organization by banning potentially malicious files or suspected malware. - -The following steps are required to enable this integration: -- Install the [January 2017 anti-malware platform update for Endpoint Protection clients](https://support.microsoft.com/help/3209361/january-2017-anti-malware-platform-update-for-endpoint-protection-clie). - -- Configure the SCEP client Cloud Protection Service membership to the **Advanced** setting. - - -### Turn on Server monitoring from the Microsoft Defender Security Center portal +### Turn on Server monitoring from the Microsoft Defender Security Center portal -MICHAEL TO VERIFY 1. In the navigation pane, select **Settings** > **Device management** > **Onboarding**. @@ -135,9 +137,24 @@ Once completed, you should see onboarded Windows servers in the portal within an 4. Follow the onboarding instructions in [Microsoft Defender Advanced Threat Protection with Azure Security Center](https://docs.microsoft.com/azure/security-center/security-center-wdatp). +After completing the onboarding steps, you'll need to [Configure and update System Center Endpoint Protection clients](#configure-and-update-system-center-endpoint-protection-clients). + ### Option 3: Onboard Windows servers through Microsoft Endpoint Configuration Manager version 2002 and later You can onboard Windows Server 2012 R2 and Windows Server 2016 by using Microsoft Endpoint Configuration Manager version 2002 and later. For more information, see [Microsoft Defender Advanced Threat Protection in Microsoft Endpoint Configuration Manager current branch](https://docs.microsoft.com/mem/configmgr/protect/deploy-use/defender-advanced-threat-protection). +After completing the onboarding steps, you'll need to [Configure and update System Center Endpoint Protection clients](#configure-and-update-system-center-endpoint-protection-clients). + +## Configure and update System Center Endpoint Protection clients + +Microsoft Defender ATP integrates with System Center Endpoint Protection. The integration provides visibility to malware detections and to stop propagation of an attack in your organization by banning potentially malicious files or suspected malware. + +The following steps are required to enable this integration: +- Install the [January 2017 anti-malware platform update for Endpoint Protection clients](https://support.microsoft.com/help/3209361/january-2017-anti-malware-platform-update-for-endpoint-protection-clie). + +- Configure the SCEP client Cloud Protection Service membership to the **Advanced** setting. + + + ## Windows Server (SAC) version 1803, Windows Server 2019, and Windows Server 2019 Core edition You can onboard Windows Server (SAC) version 1803, Windows Server 2019, or Windows Server 2019 Core edition by using the following deployment methods: From a84b75dab2eef7e2cedfe87eca78142937593cf0 Mon Sep 17 00:00:00 2001 From: Joey Caparas Date: Wed, 7 Oct 2020 15:09:39 -0700 Subject: [PATCH 20/50] update anchor --- .../microsoft-defender-atp/configure-server-endpoints.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/windows/security/threat-protection/microsoft-defender-atp/configure-server-endpoints.md b/windows/security/threat-protection/microsoft-defender-atp/configure-server-endpoints.md index d1a8195e28..85b7f737b9 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/configure-server-endpoints.md +++ b/windows/security/threat-protection/microsoft-defender-atp/configure-server-endpoints.md @@ -54,7 +54,7 @@ For guidance on how to download and use Windows Security Baselines for Windows s You can onboard Windows Server 2008 R2 SP1, Windows Server 2012 R2, and Windows Server 2016 to Microsoft Defender ATP by using any of the following options: -- **Option 1**: Onboard by installing and configuring Microsoft Monitoring Agent (MMA) +- **Option 1**: [Onboard by installing and configuring Microsoft Monitoring Agent (MMA)](#option-1-onboard-by-installing-and-configuring-microsoft-monitoring-agent-mma) - **Option 2**: [Onboard through Azure Security Center](#option-2-onboard-windows-servers-through-azure-security-center) - **Option 3**: [Onboard through Microsoft Endpoint Configuration Manager version 2002 and later (only for Windows Server 2012 R2 and Windows Server 2016)](#option-3-onboard-windows-servers-through-microsoft-endpoint-configuration-manager-version-2002-and-later) @@ -72,7 +72,7 @@ You'll need to install and configure MMA for Windows servers to report sensor da If you're already leveraging System Center Operations Manager (SCOM) or Azure Monitor (formerly known as Operations Management Suite (OMS)), attach the Microsoft Monitoring Agent (MMA) to report to your Microsoft Defender ATP workspace through Multihoming support. In general, you'll need to take the following steps: -1. Fulfill the onboarding requirements outlined in **Before you begin section**. +1. Fulfill the onboarding requirements outlined in **Before you begin** section. 2. Turn on server monitoring from Microsoft Defender Security center. 3. Install and configure MMA for the server to report sensor data to Microsoft Defender ATP. 4. Configure and update System Center Endpoint Protection clients. From 2f6d859736821e089e3addc72bbc07391fc9b1e4 Mon Sep 17 00:00:00 2001 From: Marty Hernandez Avedon Date: Thu, 8 Oct 2020 15:12:16 -0400 Subject: [PATCH 21/50] second pass adding pages --- .../microsoft-defender-atp/advanced-hunting-extend-data.md | 4 ++-- .../microsoft-defender-atp/advanced-hunting-go-hunt.md | 4 ++-- .../microsoft-defender-atp/advanced-hunting-overview.md | 3 +++ .../microsoft-defender-atp/advanced-hunting-query-language.md | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-extend-data.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-extend-data.md index 5a8a4ad77b..371cfbed8c 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-extend-data.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-extend-data.md @@ -15,7 +15,7 @@ manager: dansimp audience: ITPro ms.collection: M365-security-compliance ms.topic: article -ms.date: 09/20/2020 +ms.date: 10/10/2020 --- # Extend advanced hunting coverage with the right settings @@ -26,7 +26,7 @@ ms.date: 09/20/2020 - [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) -[Advanced hunting](advanced-hunting-overview.md) relies on data coming from various sources, including your devices, your Office 365 workspaces, Azure AD, and Azure ATP. To get the most comprehensive data possible, ensure that you have the correct settings in the corresponding data sources. +[Advanced hunting](advanced-hunting-overview.md) relies on data coming from across your organization. To get the most comprehensive data possible, ensure that you have the correct settings in the corresponding data sources. ## Advanced security auditing on Windows devices diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-go-hunt.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-go-hunt.md index 31a266ff9c..cab2d3160b 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-go-hunt.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-go-hunt.md @@ -73,12 +73,12 @@ You can use *go hunt* after selecting any of these entity types: ## Query for event information -When using *go hunt* to query for information about a timeline event, the query checks all relevant schema tables for other events around the time of the selected event. For example, the following query lists events in various schema tables that occured around the same time period on the same device: +When using *go hunt* to query for information about a timeline event, the query checks all relevant schema tables for other events around the time of the selected event. For example, the following query lists events in various schema tables that occurred around the same time period on the same device: ```kusto // List relevant events 30 minutes before and after selected RegistryValueSet event let selectedEventTimestamp = datetime(2020-10-06T21:40:25.3466868Z); -search in (DeviceFileEvents, DeviceProcessEvents, DeviceEvents, DeviceRegistryEvents, DeviceNetworkEvents, DeviceImageLoadEvents, DeviceLogonEvents, ResponseEvents) +search in (DeviceFileEvents, DeviceProcessEvents, DeviceEvents, DeviceRegistryEvents, DeviceNetworkEvents, DeviceImageLoadEvents, DeviceLogonEvents) Timestamp between ((selectedEventTimestamp - 30m) .. (selectedEventTimestamp + 30m)) and DeviceId == "a305b52049c4658ec63ae8b55becfe5954c654a4" | sort by Timestamp desc diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-overview.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-overview.md index dafbbe5cfa..19ef98383c 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-overview.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-overview.md @@ -52,6 +52,9 @@ We recommend going through several steps to quickly get up and running with adva | **Understand the schema** | Get a good, high-level understanding of the tables in the schema and their columns. Learn where to look for data when constructing your queries. | [Schema reference](advanced-hunting-schema-reference.md) | | **Use predefined queries** | Explore collections of predefined queries covering different threat hunting scenarios. | [Shared queries](advanced-hunting-shared-queries.md) | | **Optimize queries and handle errors** | Understand how to create efficient and error-free queries. | - [Query best practices](advanced-hunting-best-practices.md)
- [Handle errors](advanced-hunting-errors.md) | +| **Get the most complete coverage** | Use audit settings to provide better data coverage for your organization. | - [Extend advanced hunting coverage](advanced-hunting-extend-data.md) | +| **Run a quick investigation** | Quickly run an advanced hunting query to investigate suspicious activity. | - [Quickly hunt for entity or event information with *go hunt*](advanced-hunting-go-hunt.md) | +| **Contain threats and address compromises** | Respond to attacks by quarantining files, restricting app execution, and other actions | - [Take action on advanced hunting query results](advanced-hunting-take-action.md) | | **Create custom detection rules** | Understand how you can use advanced hunting queries to trigger alerts and take response actions automatically. | - [Custom detections overview](overview-custom-detections.md)
- [Custom detection rules](custom-detection-rules.md) | ## Data freshness and update frequency diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-query-language.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-query-language.md index e11d004596..db801d3730 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-query-language.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-query-language.md @@ -180,6 +180,6 @@ For detailed information about the query language, see [Kusto query language doc ## Related topics - [Advanced hunting overview](advanced-hunting-overview.md) - [Work with query results](advanced-hunting-query-results.md) -- [Use shared queries](advanced-hunting-shared-queries) +- [Use shared queries](advanced-hunting-shared-queries.md) - [Understand the schema](advanced-hunting-schema-reference.md) - [Apply query best practices](advanced-hunting-best-practices.md) From db33b71b9c8a914c06ea4780e1b8fde25b9a19d2 Mon Sep 17 00:00:00 2001 From: Joey Caparas Date: Thu, 8 Oct 2020 16:34:25 -0700 Subject: [PATCH 22/50] Update configure-server-endpoints.md --- .../configure-server-endpoints.md | 54 ++++++++----------- 1 file changed, 23 insertions(+), 31 deletions(-) diff --git a/windows/security/threat-protection/microsoft-defender-atp/configure-server-endpoints.md b/windows/security/threat-protection/microsoft-defender-atp/configure-server-endpoints.md index 85b7f737b9..1544d16c1a 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/configure-server-endpoints.md +++ b/windows/security/threat-protection/microsoft-defender-atp/configure-server-endpoints.md @@ -37,14 +37,6 @@ ms.topic: article Microsoft Defender ATP extends support to also include the Windows Server operating system. This support provides advanced attack detection and investigation capabilities seamlessly through the Microsoft Defender Security Center console. -The service supports the onboarding of the following Windows servers: -- Windows Server 2008 R2 SP1 -- Windows Server 2012 R2 -- Windows Server 2016 -- Windows Server (SAC) version 1803 and later -- Windows Server 2019 and later -- Windows Server 2019 core edition - For a practical guidance on what needs to be in place for licensing and infrastructure, see [Protecting Windows Servers with Microsoft Defender ATP](https://techcommunity.microsoft.com/t5/What-s-New/Protecting-Windows-Server-with-Windows-Defender-ATP/m-p/267114#M128). For guidance on how to download and use Windows Security Baselines for Windows servers, see [Windows Security Baselines](https://docs.microsoft.com/windows/device-security/windows-security-baselines). @@ -56,7 +48,7 @@ You can onboard Windows Server 2008 R2 SP1, Windows Server 2012 R2, and Windows - **Option 1**: [Onboard by installing and configuring Microsoft Monitoring Agent (MMA)](#option-1-onboard-by-installing-and-configuring-microsoft-monitoring-agent-mma) - **Option 2**: [Onboard through Azure Security Center](#option-2-onboard-windows-servers-through-azure-security-center) -- **Option 3**: [Onboard through Microsoft Endpoint Configuration Manager version 2002 and later (only for Windows Server 2012 R2 and Windows Server 2016)](#option-3-onboard-windows-servers-through-microsoft-endpoint-configuration-manager-version-2002-and-later) +- **Option 3**: [Onboard through Microsoft Endpoint Configuration Manager version 2002 and later](#option-3-onboard-windows-servers-through-microsoft-endpoint-configuration-manager-version-2002-and-later) After completing the onboarding steps using any of the provided options, you'll need to [Configure and update System Center Endpoint Protection clients](#configure-and-update-system-center-endpoint-protection-clients). @@ -98,14 +90,6 @@ Perform the following steps to fulfill the onboarding requirements: > This step is required only if your organization uses System Center Endpoint Protection (SCEP) and you're onboarding Windows Server 2008 R2 SP1 and Windows Server 2012 R2. -### Turn on Server monitoring from the Microsoft Defender Security Center portal -MICHAEL TO VERIFY - -1. In the navigation pane, select **Settings** > **Device management** > **Onboarding**. - -2. Select **Windows Server 2008 R2 SP1, 2012 R2 and 2016** as the operating system. - -3. Click **Turn on server monitoring** and confirm that you'd like to proceed with the environment setup. When the setup completes, the **Workspace ID** and **Workspace key** fields are populated with unique values. You'll need to use these values to configure the MMA agent. - ### Install and configure Microsoft Monitoring Agent (MMA) to report sensor data to Microsoft Defender ATP @@ -117,16 +101,22 @@ Perform the following steps to fulfill the onboarding requirements: On the **Agent Setup Options** page, choose **Connect the agent to Azure Log Analytics (OMS)**. - [Install the agent using the command line](https://docs.microsoft.com/azure/log-analytics/log-analytics-windows-agents#install-the-agent-using-the-command-line) and [configure the agent using a script](https://docs.microsoft.com/azure/log-analytics/log-analytics-windows-agents#add-a-workspace-using-a-script). -3. You'll need to configure proxy settings for the Microsoft Monitoring Agent. For more information, see [Configure proxy settings](configure-proxy-internet.md). -Once completed, you should see onboarded Windows servers in the portal within an hour. -### Configure Windows server proxy and Internet connectivity settings +### Configure Windows server proxy and Internet connectivity settings if needed +If your servers need to use a proxy to communicate with Microsoft Defender ATP, use one of the following methods to configure the MMA to use the proxy server: -- Each Windows server must be able to connect to the Internet using HTTPS. This connection can be direct, using a proxy, or through the
OMS Gateway. -- If a proxy or firewall is blocking all traffic by default and allowing only specific domains through or HTTPS scanning (SSL inspection) is enabled, make sure that you [enable access to Microsoft Defender ATP service URLs](https://docs.microsoft.com/windows/security/threat-protection/microsoft-defender-atp/configure-proxy-internet#enable-access-to-microsoft-defender-atp-service-urls-in-the-proxy-server). + +- [Configure the MMA to use a proxy server](https://docs.microsoft.com/azure/azure-monitor/platform/agent-windows#install-agent-using-setup-wizard). + +- [Configure the Windows to use a proxy server for all connections](configure-proxy-internet.md) + +If a proxy or firewall is blocking all traffic by default and allowing only specific domains through or HTTPS scanning (SSL inspection) is enabled, make sure that you [enable access to Microsoft Defender ATP service URLs](https://docs.microsoft.com/windows/security/threat-protection/microsoft-defender-atp/configure-proxy-internet#enable-access-to-microsoft-defender-atp-service-urls-in-the-proxy-server). + + +Once completed, you should see onboarded Windows servers in the portal within an hour. ### Option 2: Onboard Windows servers through Azure Security Center 1. In the Microsoft Defender Security Center navigation pane, select **Settings** > **Device management** > **Onboarding**. @@ -144,15 +134,6 @@ You can onboard Windows Server 2012 R2 and Windows Server 2016 by using Microsof After completing the onboarding steps, you'll need to [Configure and update System Center Endpoint Protection clients](#configure-and-update-system-center-endpoint-protection-clients). -## Configure and update System Center Endpoint Protection clients - -Microsoft Defender ATP integrates with System Center Endpoint Protection. The integration provides visibility to malware detections and to stop propagation of an attack in your organization by banning potentially malicious files or suspected malware. - -The following steps are required to enable this integration: -- Install the [January 2017 anti-malware platform update for Endpoint Protection clients](https://support.microsoft.com/help/3209361/january-2017-anti-malware-platform-update-for-endpoint-protection-clie). - -- Configure the SCEP client Cloud Protection Service membership to the **Advanced** setting. - ## Windows Server (SAC) version 1803, Windows Server 2019, and Windows Server 2019 Core edition @@ -218,6 +199,17 @@ Data collected by Microsoft Defender ATP is stored in the geo-location of the te Server endpoint monitoring utilizing this integration has been disabled for Office 365 GCC customers. +## Configure and update System Center Endpoint Protection clients + +Microsoft Defender ATP integrates with System Center Endpoint Protection. The integration provides visibility to malware detections and to stop propagation of an attack in your organization by banning potentially malicious files or suspected malware. + +The following steps are required to enable this integration: +- Install the [January 2017 anti-malware platform update for Endpoint Protection clients](https://support.microsoft.com/help/3209361/january-2017-anti-malware-platform-update-for-endpoint-protection-clie). + +- Configure the SCEP client Cloud Protection Service membership to the **Advanced** setting. + + + ## Offboard Windows servers You can offboard Windows Server (SAC), Windows Server 2019, and Windows Server 2019 Core edition in the same method available for Windows 10 client devices. From 5411d76ba7c0f5e424a77389ac6c438244bb59f3 Mon Sep 17 00:00:00 2001 From: Joey Caparas Date: Thu, 8 Oct 2020 16:58:56 -0700 Subject: [PATCH 23/50] period --- .../microsoft-defender-atp/configure-server-endpoints.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/security/threat-protection/microsoft-defender-atp/configure-server-endpoints.md b/windows/security/threat-protection/microsoft-defender-atp/configure-server-endpoints.md index 1544d16c1a..59eabd5750 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/configure-server-endpoints.md +++ b/windows/security/threat-protection/microsoft-defender-atp/configure-server-endpoints.md @@ -109,7 +109,7 @@ Perform the following steps to fulfill the onboarding requirements: If your servers need to use a proxy to communicate with Microsoft Defender ATP, use one of the following methods to configure the MMA to use the proxy server: -- [Configure the MMA to use a proxy server](https://docs.microsoft.com/azure/azure-monitor/platform/agent-windows#install-agent-using-setup-wizard). +- [Configure the MMA to use a proxy server](https://docs.microsoft.com/azure/azure-monitor/platform/agent-windows#install-agent-using-setup-wizard) - [Configure the Windows to use a proxy server for all connections](configure-proxy-internet.md) From 281a3d2c2589984f9c245deed896da24c7723fd9 Mon Sep 17 00:00:00 2001 From: Marty Hernandez Avedon Date: Thu, 15 Oct 2020 15:33:46 -0400 Subject: [PATCH 24/50] reverted best ahq practices page attempted rebase was complicated by hundreds of commits applied after the removed commits --- .../advanced-hunting-best-practices.md | 234 ++---------------- 1 file changed, 27 insertions(+), 207 deletions(-) diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-best-practices.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-best-practices.md index f82f5473a7..194abff0c8 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-best-practices.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-best-practices.md @@ -25,204 +25,54 @@ ms.topic: article - [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) -> Want to experience Microsoft Defender ATP? [Sign up for a free trial.](https://www.microsoft.com/microsoft-365/windows/microsoft-defender-atp?ocid=docs-wdatp-advancedhuntingref-abovefoldlink) +>Want to experience Microsoft Defender ATP? [Sign up for a free trial.](https://www.microsoft.com/microsoft-365/windows/microsoft-defender-atp?ocid=docs-wdatp-bestpractices-abovefoldlink) -Apply these recommendations to get results faster and avoid timeouts while running complex queries. For more guidance on improving query performance, read [Kusto query best practices](https://docs.microsoft.com/azure/kusto/query/best-practices). +## Optimize query performance -## General guidance +Apply these recommendations to get results faster and avoid timeouts while running complex queries. -- **Size new queries**—If you suspect that a query will return a large result set, assess it first using the [count operator](https://docs.microsoft.com/azure/data-explorer/kusto/query/countoperator). Use [limit](https://docs.microsoft.com/azure/data-explorer/kusto/query/limitoperator) or its synonym `take` to avoid large result sets. +- When trying new queries, always use `limit` to avoid extremely large result sets. You can also initially assess the size of the result set using `count`. +- Use time filters first. Ideally, limit your queries to seven days. +- Put filters that are expected to remove most of the data in the beginning of the query, right after the time filter. +- Use the `has` operator over `contains` when looking for full tokens. +- Look in a specific column rather than running full text searches across all columns. +- When joining tables, specify the table with fewer rows first. +- `project` only the necessary columns from tables you've joined. -- **Apply filters early**—Apply time filters and other filters to reduce the data set, especially before using transformation and parsing functions, such as [substring()](https://docs.microsoft.com/azure/data-explorer/kusto/query/substringfunction), [replace()](https://docs.microsoft.com/azure/data-explorer/kusto/query/replacefunction), [trim()](https://docs.microsoft.com/azure/data-explorer/kusto/query/trimfunction), [toupper()](https://docs.microsoft.com/azure/data-explorer/kusto/query/toupperfunction), or [parse_json()](https://docs.microsoft.com/azure/data-explorer/kusto/query/parsejsonfunction). In the example below, the parsing function [extractjson()](https://docs.microsoft.com/azure/data-explorer/kusto/query/extractjsonfunction) is used after filtering operators have reduced the number of records. +>[!TIP] +>For more guidance on improving query performance, read [Kusto query best practices](https://docs.microsoft.com/azure/kusto/query/best-practices). - ```kusto - DeviceEvents - | where Timestamp > ago(1d) - | where ActionType == "UsbDriveMount" - | where DeviceName == "user-desktop.domain.com" - | extend DriveLetter = extractjson("$.DriveLetter", AdditionalFields) - ``` +## Query tips and pitfalls -- ***Has* beats *contains*** —To avoid searching substrings within words unnecessarily, use the `has` operator instead of `contains`. [Learn about string operators](https://docs.microsoft.com/azure/data-explorer/kusto/query/datatypes-string-operators) +### Queries with process IDs -- **Look in specific columns**—Look in a specific column rather than running full text searches across all columns. Don't use `*` to check all columns. - -- **Case-sensitive for speed**—Case-sensitive searches are more specific and generally more performant. Names of case-sensitive [string operators](https://docs.microsoft.com/azure/data-explorer/kusto/query/datatypes-string-operators), such as `has_cs` and `contains_cs`, generally end with `_cs`. You can also use the case-sensitive equals operator `==` instead of `~=`. - -- **Parse, don't extract**—Whenever possible, use the [parse operator](https://docs.microsoft.com/azure/data-explorer/kusto/query/parseoperator) or a parsing function like [parse_json()](https://docs.microsoft.com/azure/data-explorer/kusto/query/parsejsonfunction). Avoid the `matches regex` string operator or the [extract() function](https://docs.microsoft.com/azure/data-explorer/kusto/query/extractfunction), both of which use regular expression. Reserve the use of regular expression for more complex scenarios. [Read more about parsing functions](#parse-strings) - -- **Filter tables not expressions**—Don't filter on a calculated column if you can filter on a table column. - -- **No three-character terms**—Avoid comparing or filtering using terms with three characters or fewer. These terms are not indexed and matching them will require more resources. - -- **Project selectively**—Make your results easier to understand by projecting only the columns you need. Projecting specific columns prior to running [join](https://docs.microsoft.com/azure/data-explorer/kusto/query/joinoperator) or similar operations also helps improve performance. - -## Optimize the `join` operator - -The [join operator](https://docs.microsoft.com/azure/data-explorer/kusto/query/joinoperator) merges rows from two tables by matching values in specified columns. Apply these tips to optimize queries that use this operator. - -- **Smaller table to your left**—The `join` operator matches records in the table on the left side of your join statement to records on the right. By having the smaller table on the left, fewer records will need to be matched, thus speeding up the query. - - In the table below, we reduce the left table `DeviceLogonEvents` to cover only three specific devices before joining it with `DeviceNetworkEvents` by device IDs. - - ```kusto - DeviceLogonEvents - | where DeviceName in ("device-1.domain.com", "device-2.domain.com", "device-3.domain.com") - | where ActionType == "LogonFailed" - | join - (DeviceNetworkEvents - | where Protocol == "Kerberos" - | where ActionType == "LogonFailed") - on DeviceId - ``` - -- **Use the inner-join flavor**—The default [join flavor](https://docs.microsoft.com/azure/data-explorer/kusto/query/joinoperator#join-flavors) or the [innerunique-join](https://docs.microsoft.com/azure/data-explorer/kusto/query/joinoperator?pivots=azuredataexplorer#innerunique-join-flavor) deduplicates rows in the left table by the join key before returning a row for each match to the right table. If the left table has multiple rows with the same value for the `join` key, those rows will be deduplicated to leave a single random row for each unique value. - - This default behavior can leave out important information from the left table that can provide useful insight. For example, the query below will only show one email containing a particular attachment, even if that same attachment was sent using multiple emails messages: - - ```kusto - EmailAttachmentInfo - | where Timestamp > ago(1h) - | where Subject == "Document Attachment" and FileName == "Document.pdf" - | join (DeviceFileEvents | where Timestamp > ago(1h)) on SHA256 - ``` - - To address this limitation, we apply the [inner-join](https://docs.microsoft.com/azure/data-explorer/kusto/query/joinoperator?pivots=azuredataexplorer#inner-join-flavor) flavor by specifying `kind=inner` to show all rows in the left table with matching values in the right: - - ```kusto - EmailAttachmentInfo - | where Timestamp > ago(1h) - | where Subject == "Document Attachment" and FileName == "Document.pdf" - | join kind=inner (DeviceFileEvents | where Timestamp > ago(1h)) on SHA256 - ``` - -- **Join records from a time window**—When investigating security events, analysts look for related events that occur around the same time period. Applying the same approach when using `join` also benefits performance by reducing the number of records to check. - - The query below checks for logon events within 30 minutes of a credential access alert being raised: - - ```kusto - DeviceAlertEvents - | where Timestamp > ago(7d) - | where Severity == "High" - | where Category == "CredentialAccess" - | project AlertRaised = Timestamp, DeviceName, AlertId, Title, AttackTechniques - | join ( - DeviceLogonEvents - | where Timestamp > ago(7d) - | project LogonTime = Timestamp, DeviceName, AccountName - ) on DeviceName - | where (LogonTime - AlertRaised) between (0min .. 30min) - ``` - -- **Apply time filters on both sides**—Even if you're not investigating a specific time window, applying time filters on both the left and right tables can reduce the number of records to check and improve `join` performance. The query below applies `Timestamp > ago(1h)` to both tables so that it joins only records from the past hour: - - ```kusto - DeviceAlertEvents - | where Timestamp > ago(1h) - | where Severity == "High" - | join (DeviceFileEvents - | where Timestamp > ago(1h) - | where ActionType == "FileCreated" - ) on SHA1 - ``` - -- **Use hints for performance**—Use hints with the `join` operator to instruct the backend to distribute load when running resource-intensive operations. [Learn more about join hints](https://docs.microsoft.com/azure/data-explorer/kusto/query/joinoperator#join-hints) - - For example, the **[shuffle hint](https://docs.microsoft.com/azure/data-explorer/kusto/query/shufflequery)** helps improve query performance when joining tables using a key with high cardinality—a key with many unique values—such as the `AccountObjectId` in the query below: - - ```kusto - IdentityInfo - | where JobTitle == "CONSULTANT" - | join hint.shufflekey = AccountObjectId - (IdentityDirectoryEvents - | where Application == "Active Directory" - | where ActionType == "Private data retrieval") - on AccountObjectId - ``` - - The **[broadcast hint](https://docs.microsoft.com/azure/data-explorer/kusto/query/broadcastjoin)** helps when the left table is small (up to 100,000 records) and the right table is extremely large. For example, the query below is trying to join a few emails that have specific subjects with _all_ messages containing links in the `EmailUrlInfo` table: - - ```kusto - EmailEvents - | where Subject in ("Warning: Update your credentials now", "Action required: Update your credentials now") - | join hint.strategy = broadcast EmailUrlInfo on NetworkMessageId - ``` - -## Optimize the `summarize` operator - -The [summarize operator](https://docs.microsoft.com/azure/data-explorer/kusto/query/summarizeoperator) aggregates the contents of a table. Apply these tips to optimize queries that use this operator. - -- **Find distinct values**—In general, use `summarize` to find distinct values that can be repetitive. It can be unnecessary to use it to aggregate columns that don't have repetitive values. - - While a single email can be part of multiple events, the example below is _not_ an efficient use of `summarize` because a network message ID for an individual email always comes with a unique sender address. - - ```kusto - EmailEvents - | where Timestamp > ago(1h) - | summarize by NetworkMessageId, SenderFromAddress - ``` - - The `summarize` operator can be easily replaced with `project`, yielding potentially the same results while consuming fewer resources: - - ```kusto - EmailEvents - | where Timestamp > ago(1h) - | project NetworkMessageId, SenderFromAddress - ``` - - The following example is a more efficient use of `summarize` because there can be multiple distinct instances of a sender address sending email to the same recipient address. Such combinations are less distinct and are likely to have duplicates. - - ```kusto - EmailEvents - | where Timestamp > ago(1h) - | summarize by SenderFromAddress, RecipientEmailAddress - ``` - -- **Shuffle the query**—While `summarize` is best used in columns with repetitive values, the same columns can also have _high cardinality_ or large numbers of unique values. Like the `join` operator, you can also apply the [shuffle hint](https://docs.microsoft.com/azure/data-explorer/kusto/query/shufflequery) with `summarize` to distribute processing load and potentially improve performance when operating on columns with high cardinality. - - The query below uses `summarize` to count distinct recipient email address, which can run in the hundreds of thousands in large organizations. To improve performance, it incorporates `hint.shufflekey`: - - ```kusto - EmailEvents - | where Timestamp > ago(1h) - | summarize hint.shufflekey = RecipientEmailAddress count() by Subject, RecipientEmailAddress - ``` - -## Query scenarios - -### Identify unique processes with process IDs - -Process IDs (PIDs) are recycled in Windows and reused for new processes. On their own, they can't serve as unique identifiers for specific processes. - -To get a unique identifier for a process on a specific machine, use the process ID together with the process creation time. When you join or summarize data around processes, include columns for the machine identifier (either `DeviceId` or `DeviceName`), the process ID (`ProcessId` or `InitiatingProcessId`), and the process creation time (`ProcessCreationTime` or `InitiatingProcessCreationTime`) +Process IDs (PIDs) are recycled in Windows and reused for new processes. On their own, they can't serve as unique identifiers for specific processes. To get a unique identifier for a process on a specific device, use the process ID together with the process creation time. When you join or summarize data around processes, include columns for the device identifier (either `DeviceId` or `DeviceName`), the process ID (`ProcessId` or `InitiatingProcessId`), and the process creation time (`ProcessCreationTime` or `InitiatingProcessCreationTime`). The following example query finds processes that access more than 10 IP addresses over port 445 (SMB), possibly scanning for file shares. -Example query: - ```kusto DeviceNetworkEvents | where RemotePort == 445 and Timestamp > ago(12h) and InitiatingProcessId !in (0, 4) -| summarize RemoteIPCount=dcount(RemoteIP) by DeviceName, InitiatingProcessId -InitiatingProcessCreationTime, InitiatingProcessFileName +| summarize RemoteIPCount=dcount(RemoteIP) by DeviceName, InitiatingProcessId, InitiatingProcessCreationTime, InitiatingProcessFileName | where RemoteIPCount > 10 ``` The query summarizes by both `InitiatingProcessId` and `InitiatingProcessCreationTime` so that it looks at a single process, without mixing multiple processes with the same process ID. -### Query command lines +### Queries with command lines -There are numerous ways to construct a command line to accomplish a task. For example, an attacker could reference an image file without a path, without a file extension, using environment variables, or with quotes. The attacker could also change the order of parameters or add multiple quotes and spaces. +Command lines can vary. When applicable, filter on file names and do fuzzy matching. -To create more durable queries around command lines, apply the following practices: +There are numerous ways to construct a command line to accomplish a task. For example, an attacker could reference an image file with or without a path, without a file extension, using environment variables, or with quotes. In addition, the attacker could also change the order of parameters or add multiple quotes and spaces. -- Identify the known processes (such as *net.exe* or *psexec.exe*) by matching on the file name fields, instead of filtering on the command-line itself. -- Parse command-line sections using the [parse_command_line() function](https://docs.microsoft.com/azure/data-explorer/kusto/query/parse-command-line) +To create more durable queries using command lines, apply the following practices: + +- Identify the known processes (such as *net.exe* or *psexec.exe*) by matching on the filename fields, instead of filtering on the command-line field. - When querying for command-line arguments, don't look for an exact match on multiple unrelated arguments in a certain order. Instead, use regular expressions or use multiple separate contains operators. -- Use case insensitive matches. For example, use `=~`, `in~`, and `contains` instead of `==`, `in`, and `contains_cs`. -- To mitigate command-line obfuscation techniques, consider removing quotes, replacing commas with spaces, and replacing multiple consecutive spaces with a single space. There are more complex obfuscation techniques that require other approaches, but these tweaks can help address common ones. +- Use case insensitive matches. For example, use `=~`, `in~`, and `contains` instead of `==`, `in` and `contains_cs` +- To mitigate DOS command-line obfuscation techniques, consider removing quotes, replacing commas with spaces, and replacing multiple consecutive spaces with a single space. Note that there are more complex DOS obfuscation techniques that require other approaches, but these can help address the most common ones. -The following examples show various ways to construct a query that looks for the file *net.exe* to stop the firewall service "MpsSvc": +The following examples show various ways to construct a query that looks for the file *net.exe* to stop the Windows Defender Firewall service: ```kusto // Non-durable query - do not use @@ -230,7 +80,7 @@ DeviceProcessEvents | where ProcessCommandLine == "net stop MpsSvc" | limit 10 -// Better query - filters on file name, does case-insensitive matches +// Better query - filters on filename, does case-insensitive matches DeviceProcessEvents | where Timestamp > ago(7d) and FileName in~ ("net.exe", "net1.exe") and ProcessCommandLine contains "stop" and ProcessCommandLine contains "MpsSvc" @@ -241,37 +91,7 @@ DeviceProcessEvents | where CanonicalCommandLine contains "stop" and CanonicalCommandLine contains "MpsSvc" ``` -### Ingest data from external sources - -To incorporate long lists or large tables into your query, use the [externaldata operator](https://docs.microsoft.com/azure/data-explorer/kusto/query/externaldata-operator) to ingest data from a specified URI. You can get data from files in TXT, CSV, JSON, or [other formats](https://docs.microsoft.com/azure/data-explorer/ingestion-supported-formats). The example below shows how you can utilize the extensive list of malware SHA-256 hashes provided by MalwareBazaar (abuse.ch) to check attachments on emails: - -```kusto -let abuse_sha256 = (externaldata(sha256_hash: string ) -[@"https://bazaar.abuse.ch/export/txt/sha256/recent/"] -with (format="txt")) -| where sha256_hash !startswith "#" -| project sha256_hash; -abuse_sha256 -| join (EmailAttachmentInfo -| where Timestamp > ago(1d) -) on $left.sha256_hash == $right.SHA256 -| project Timestamp,SenderFromAddress,RecipientEmailAddress,FileName,FileType, -SHA256,MalwareFilterVerdict,MalwareDetectionMethod -``` - -### Parse strings - -There are various functions you can use to efficiently handle strings that need parsing or conversion. - -| String | Function | Usage example | -|--|--|--| -| Command-lines | [parse_command_line()](https://docs.microsoft.com/azure/data-explorer/kusto/query/parse-command-line) | Extract the command and all arguments. | -| Paths | [parse_path()](https://docs.microsoft.com/azure/data-explorer/kusto/query/parsepathfunction) | Extract the sections of a file or folder path. | -| Version numbers | [parse_version()](https://docs.microsoft.com/azure/data-explorer/kusto/query/parse-versionfunction) | Deconstruct a version number with up to four sections and up to eight characters per section. Use the parsed data to compare version age. | -| IPv4 addresses | [parse_ipv4()](https://docs.microsoft.com/azure/data-explorer/kusto/query/parse-ipv4function) | Convert an IPv4 address to a long integer. To compare IPv4 addresses without converting them, use [ipv4_compare()](https://docs.microsoft.com/azure/data-explorer/kusto/query/ipv4-comparefunction). | -| IPv6 addresses | [parse_ipv6()](https://docs.microsoft.com/azure/data-explorer/kusto/query/parse-ipv6function) | Convert an IPv4 or IPv6 address to the canonical IPv6 notation. To compare IPv6 addresses, use [ipv6_compare()](https://docs.microsoft.com/azure/data-explorer/kusto/query/ipv6-comparefunction). | - -To learn about all supported parsing functions, [read about Kusto string functions](https://docs.microsoft.com/azure/data-explorer/kusto/query/scalarfunctions#string-functions). +> Want to experience Microsoft Defender ATP? [Sign up for a free trial.](https://www.microsoft.com/microsoft-365/windows/microsoft-defender-atp?ocid=docs-wdatp-bestpractices-belowfoldlink) ## Related topics From f1cb8d1c4460f1469feaa4c5cfe2eedd4242ab23 Mon Sep 17 00:00:00 2001 From: Gary Moore Date: Thu, 15 Oct 2020 15:41:46 -0700 Subject: [PATCH 25/50] Acrolinx grammar --- .../microsoft-defender-atp/advanced-hunting-shared-queries.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-shared-queries.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-shared-queries.md index 4bc9a7c98f..46610a6772 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-shared-queries.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-shared-queries.md @@ -43,7 +43,7 @@ You can save a new or existing query so that it is only accessible to you or sha ![Image of saving a query](images/advanced-hunting-save-query.png) 4. Select the folder where you'd like to save the query. - - **Shared queries** — shared to all users in the your organization + - **Shared queries** — shared to all users in your organization - **My queries** — accessible only to you 5. Select **Save**. From e240e6213ee07fe525c7fabd46a5460ef0c9385b Mon Sep 17 00:00:00 2001 From: Gary Moore Date: Thu, 15 Oct 2020 15:42:54 -0700 Subject: [PATCH 26/50] Acrolinx grammar --- .../microsoft-defender-atp/advanced-hunting-take-action.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-take-action.md b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-take-action.md index 9f5671b224..b06baf7444 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-take-action.md +++ b/windows/security/threat-protection/microsoft-defender-atp/advanced-hunting-take-action.md @@ -38,7 +38,7 @@ To be able to take action through advanced hunting, you need a role in Microsoft ## Take various actions on devices -You can take the following actions on devices identified by the `DeviceId` column in you query results: +You can take the following actions on devices identified by the `DeviceId` column in your query results: - Isolate affected devices to contain an infection or prevent attacks from moving laterally - Collect investigation package to obtain more forensic information From 19fe418cbb0427db7819ab1d98b91b65516e5add Mon Sep 17 00:00:00 2001 From: VARADHARAJAN K <3296790+RAJU2529@users.noreply.github.com> Date: Fri, 16 Oct 2020 08:58:02 +0530 Subject: [PATCH 27/50] removed broken link added new correct link as per the user report #8473 , so i replaced the broken link to correct link. --- windows/security/threat-protection/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/security/threat-protection/index.md b/windows/security/threat-protection/index.md index b4f683756c..3763417926 100644 --- a/windows/security/threat-protection/index.md +++ b/windows/security/threat-protection/index.md @@ -17,7 +17,7 @@ ms.topic: conceptual --- # Threat Protection -[Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) is a unified platform for preventative protection, post-breach detection, automated investigation, and response. Microsoft Defender ATP protects endpoints from cyber threats; detects advanced attacks and data breaches, automates security incidents and improves security posture. +[Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://docs.microsoft.com/windows/security/threat-protection/microsoft-defender-atp/microsoft-defender-advanced-threat-protection) is a unified platform for preventative protection, post-breach detection, automated investigation, and response. Microsoft Defender ATP protects endpoints from cyber threats; detects advanced attacks and data breaches, automates security incidents and improves security posture. >[!TIP] > Enable your users to access cloud services and on-premises applications with ease and enable modern management capabilities for all devices. For more information, see [Secure your remote workforce](https://docs.microsoft.com/enterprise-mobility-security/remote-work/). From d2fe6ae9a12873962509b3ec309e06f48740a9eb Mon Sep 17 00:00:00 2001 From: Joey Caparas Date: Fri, 16 Oct 2020 10:19:37 -0700 Subject: [PATCH 28/50] minor updates --- .../microsoft-defender-atp/configure-server-endpoints.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/windows/security/threat-protection/microsoft-defender-atp/configure-server-endpoints.md b/windows/security/threat-protection/microsoft-defender-atp/configure-server-endpoints.md index 59eabd5750..0ddcd8c630 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/configure-server-endpoints.md +++ b/windows/security/threat-protection/microsoft-defender-atp/configure-server-endpoints.md @@ -111,10 +111,9 @@ If your servers need to use a proxy to communicate with Microsoft Defender ATP, - [Configure the MMA to use a proxy server](https://docs.microsoft.com/azure/azure-monitor/platform/agent-windows#install-agent-using-setup-wizard) -- [Configure the Windows to use a proxy server for all connections](configure-proxy-internet.md) - -If a proxy or firewall is blocking all traffic by default and allowing only specific domains through or HTTPS scanning (SSL inspection) is enabled, make sure that you [enable access to Microsoft Defender ATP service URLs](https://docs.microsoft.com/windows/security/threat-protection/microsoft-defender-atp/configure-proxy-internet#enable-access-to-microsoft-defender-atp-service-urls-in-the-proxy-server). +- [Configure Windows to use a proxy server for all connections](configure-proxy-internet.md) +If a proxy or firewall is in use, please ensure that servers can access all of the Microsoft Defender ATP service URLs directly and without SSL interception. For more information, see [enable access to Microsoft Defender ATP service URLs](configure-proxy-internet.md#enable-access-to-microsoft-defender-atp-service-urls-in-the-proxy-server). Use of SSL interception will prevent the system from communicating with the Defender for Endpoint service. Once completed, you should see onboarded Windows servers in the portal within an hour. From 5bd71e4a71d3a64f6e34485f6c7c69e659d5cb27 Mon Sep 17 00:00:00 2001 From: Tudor Dobrila Date: Fri, 16 Oct 2020 13:13:53 -0700 Subject: [PATCH 29/50] Add note on panics on Big Sur --- .../threat-protection/microsoft-defender-atp/mac-whatsnew.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/windows/security/threat-protection/microsoft-defender-atp/mac-whatsnew.md b/windows/security/threat-protection/microsoft-defender-atp/mac-whatsnew.md index ca4617cc28..98c20cb71d 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/mac-whatsnew.md +++ b/windows/security/threat-protection/microsoft-defender-atp/mac-whatsnew.md @@ -46,6 +46,10 @@ ms.topic: conceptual ## 101.09.50 - This product version has been validated on macOS Big Sur 11 beta 9 + + > [!IMPORTANT] + > Extensive testing of MDE (Microsoft Defender for Endpoint) with new macOS system extensions revealed an intermittent issue that impacts macOS devices with specific graphic cards models. In rare cases on impacted macOS devices calls into macOS system extensions were seen resulting in kernel panic. Microsoft is actively working with Apple engineering to clarify profile of impacted devices and to address this macOS issue. + - The new syntax for the `mdatp` command-line tool is now the default one. For more information on the new syntax, see [Resources for Microsoft Defender ATP for Mac](mac-resources.md#configuring-from-the-command-line) > [!NOTE] From 28095ad20f41c4cfc2dc299f76b29523f9a5d7a9 Mon Sep 17 00:00:00 2001 From: Beth Levin Date: Fri, 16 Oct 2020 15:04:41 -0700 Subject: [PATCH 30/50] article reorganization --- windows/security/threat-protection/TOC.md | 33 ++++-- .../next-gen-threat-and-vuln-mgt.md | 20 ---- .../tvm-assign-device-value.md | 67 +++++++++++ .../tvm-end-of-support-software.md | 70 ++++++++++++ .../microsoft-defender-atp/tvm-exception.md | 105 ++++++++++++++++++ ...enarios.md => tvm-hunt-exposed-devices.md} | 0 .../tvm-prerequisites.md | 71 ++++++++++++ .../microsoft-defender-atp/tvm-remediation.md | 67 +++++------ .../tvm-security-recommendation.md | 88 +-------------- .../tvm-software-inventory.md | 11 +- .../tvm-supported-os.md | 15 +-- .../microsoft-defender-atp/tvm-weaknesses.md | 18 +-- 12 files changed, 372 insertions(+), 193 deletions(-) create mode 100644 windows/security/threat-protection/microsoft-defender-atp/tvm-assign-device-value.md create mode 100644 windows/security/threat-protection/microsoft-defender-atp/tvm-end-of-support-software.md create mode 100644 windows/security/threat-protection/microsoft-defender-atp/tvm-exception.md rename windows/security/threat-protection/microsoft-defender-atp/{threat-and-vuln-mgt-scenarios.md => tvm-hunt-exposed-devices.md} (100%) create mode 100644 windows/security/threat-protection/microsoft-defender-atp/tvm-prerequisites.md diff --git a/windows/security/threat-protection/TOC.md b/windows/security/threat-protection/TOC.md index c7f7335c43..ef6ee02b8e 100644 --- a/windows/security/threat-protection/TOC.md +++ b/windows/security/threat-protection/TOC.md @@ -49,18 +49,27 @@ #### [PowerShell, WMI, and MPCmdRun.exe](microsoft-defender-atp/manage-atp-post-migration-other-tools.md) ## [Security administration]() -### [Threat & Vulnerability Management]() -#### [Overview of Threat & Vulnerability Management](microsoft-defender-atp/next-gen-threat-and-vuln-mgt.md) -#### [Supported operating systems and platforms](microsoft-defender-atp/tvm-supported-os.md) -#### [Dashboard insights](microsoft-defender-atp/tvm-dashboard-insights.md) -#### [Exposure score](microsoft-defender-atp/tvm-exposure-score.md) -#### [Microsoft Secure Score for Devices](microsoft-defender-atp/tvm-microsoft-secure-score-devices.md) -#### [Security recommendations](microsoft-defender-atp/tvm-security-recommendation.md) -#### [Remediation and exception](microsoft-defender-atp/tvm-remediation.md) -#### [Software inventory](microsoft-defender-atp/tvm-software-inventory.md) -#### [Weaknesses](microsoft-defender-atp/tvm-weaknesses.md) -#### [Event timeline](microsoft-defender-atp/threat-and-vuln-mgt-event-timeline.md) -#### [Scenarios](microsoft-defender-atp/threat-and-vuln-mgt-scenarios.md) +### [Threat & vulnerability management]() +#### [Overview](microsoft-defender-atp/next-gen-threat-and-vuln-mgt.md) +#### [Get started]() +##### [Permissions & prerequisites](microsoft-defender-atp/tvm-prerequisites.md) +##### [Supported operating systems and platforms](microsoft-defender-atp/tvm-supported-os.md) +##### [Assign device values](microsoft-defender-atp/tvm-assign-device-value.md) +#### [Assess your security posture]() +##### [Dashboard insights](microsoft-defender-atp/tvm-dashboard-insights.md) +##### [Exposure score](microsoft-defender-atp/tvm-exposure-score.md) +##### [Microsoft Secure Score for Devices](microsoft-defender-atp/tvm-microsoft-secure-score-devices.md) +#### [Improve your security posture & reduce risk]() +##### [Address security recommendations](microsoft-defender-atp/tvm-security-recommendation.md) +##### [Remediate vulnerabilities](microsoft-defender-atp/tvm-remediation.md) +##### [File an exception](microsoft-defender-atp/tvm-exception.md) +##### [Plan for end-of-support software](microsoft-defender-atp/tvm-end-of-support-software.md) +#### [Understand vulnerabilities on your devices]() +##### [Software inventory](microsoft-defender-atp/tvm-software-inventory.md) +##### [List of vulnerabilities](microsoft-defender-atp/tvm-weaknesses.md) +##### [Event timeline](microsoft-defender-atp/threat-and-vuln-mgt-event-timeline.md) +##### [Hunt for exposed devices](microsoft-defender-atp/tvm-hunt-exposed-devices.md) + ### [Attack surface reduction]() #### [Overview of attack surface reduction](microsoft-defender-atp/overview-attack-surface-reduction.md) diff --git a/windows/security/threat-protection/microsoft-defender-atp/next-gen-threat-and-vuln-mgt.md b/windows/security/threat-protection/microsoft-defender-atp/next-gen-threat-and-vuln-mgt.md index a0f4515971..7499f4de13 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/next-gen-threat-and-vuln-mgt.md +++ b/windows/security/threat-protection/microsoft-defender-atp/next-gen-threat-and-vuln-mgt.md @@ -81,25 +81,6 @@ Watch this video for a comprehensive walk-through of threat and vulnerability ma >[!VIDEO https://aka.ms/MDATP-TVM-Interactive-Guide] -## Before you begin - -Ensure that your devices: - -- Are onboarded to Microsoft Defender Advanced Threat Protection -- Run [supported operating systems and platforms](tvm-supported-os.md) -- Have the following mandatory updates installed and deployed in your network to boost your vulnerability assessment detection rates: - -> Release | Security update KB number and link -> :---|:--- -> Windows 10 Version 1709 | [KB4493441](https://support.microsoft.com/help/4493441/windows-10-update-kb4493441) and [KB 4516071](https://support.microsoft.com/help/4516071/windows-10-update-kb4516071) -> Windows 10 Version 1803 | [KB4493464](https://support.microsoft.com/help/4493464) and [KB 4516045](https://support.microsoft.com/help/4516045/windows-10-update-kb4516045) -> Windows 10 Version 1809 | [KB 4516077](https://support.microsoft.com/help/4516077/windows-10-update-kb4516077) -> Windows 10 Version 1903 | [KB 4512941](https://support.microsoft.com/help/4512941/windows-10-update-kb4512941) - -- Are onboarded to [Microsoft Intune](https://docs.microsoft.com/mem/intune/fundamentals/what-is-intune) and [Microsoft Endpoint Configuration Manager](https://docs.microsoft.com/mem/configmgr/protect/deploy-use/endpoint-protection-configure). If you're using Configuration Manager, update your console to the latest version. -- Have at least one security recommendation that can be viewed in the device page -- Are tagged or marked as co-managed - ## APIs Run threat and vulnerability management-related API calls to automate vulnerability management workflows. Learn more from this [Microsoft Tech Community blog post](https://techcommunity.microsoft.com/t5/microsoft-defender-atp/threat-amp-vulnerability-management-apis-are-now-generally/ba-p/1304615). @@ -126,6 +107,5 @@ See the following articles for related APIs: - [Weaknesses](tvm-weaknesses.md) - [Event timeline](threat-and-vuln-mgt-event-timeline.md) - [Scenarios](threat-and-vuln-mgt-scenarios.md) -- [APIs](next-gen-threat-and-vuln-mgt.md#apis) - [Configure data access for threat and vulnerability management roles](user-roles.md#create-roles-and-assign-the-role-to-an-azure-active-directory-group) - [BLOG: Microsoft's Threat & Vulnerability Management now helps thousands of customers to discover, prioritize, and remediate vulnerabilities in real time](https://www.microsoft.com/security/blog/2019/07/02/microsofts-threat-vulnerability-management-now-helps-thousands-of-customers-to-discover-prioritize-and-remediate-vulnerabilities-in-real-time/) diff --git a/windows/security/threat-protection/microsoft-defender-atp/tvm-assign-device-value.md b/windows/security/threat-protection/microsoft-defender-atp/tvm-assign-device-value.md new file mode 100644 index 0000000000..3206f14e30 --- /dev/null +++ b/windows/security/threat-protection/microsoft-defender-atp/tvm-assign-device-value.md @@ -0,0 +1,67 @@ +--- +title: Scenarios - threat and vulnerability management +description: Learn how threat and vulnerability management can be used to help security admins, IT admins, and SecOps collaborate. +keywords: mdatp-tvm scenarios, mdatp, tvm, tvm scenarios, reduce threat & vulnerability exposure, reduce threat and vulnerability, improve security configuration, increase Microsoft Secure Score for Devices, increase threat & vulnerability Microsoft Secure Score for Devices, Microsoft Secure Score for Devices, exposure score, security controls +search.product: eADQiWindows 10XVcnh +search.appverid: met150 +ms.prod: w10 +ms.mktglfcycl: deploy +ms.sitesec: library +ms.pagetype: security +ms.author: ellevin +author: levinec +ms.localizationpriority: medium +manager: dansimp +audience: ITPro +ms.collection: +- m365-security-compliance +- m365initiative-defender-endpoint +ms.topic: article +--- + +# Define a device's value to the organization + +[!INCLUDE [Microsoft 365 Defender rebranding](../../includes/microsoft-defender.md)] + + +**Applies to:** + +- [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) + +>Want to experience Microsoft Defender ATP? [Sign up for a free trial.](https://www.microsoft.com/microsoft-365/windows/microsoft-defender-atp?ocid=docs-wdatp-portaloverview-abovefoldlink) + +[!include[Prerelease information](../../includes/prerelease.md)] + +Defining a device’s value helps you differentiate between asset priorities. The device value is used to incorporate the risk appetite of an individual asset into the threat and vulnerability management exposure score calculation. Devices marked as “high value” will receive more weight. + +You can also use the [set device value API](set-device-value.md). + +Device value options: + +- Low +- Normal (Default) +- High + +Examples of devices that should be marked as high value: + +- Domain controllers, Active Directory +- Internet facing devices +- VIP devices +- Devices hosting internal/external production services + +## Set device value + +1. Navigate to any device page, the easiest place is from the device inventory. + +2. Select **Device Value** from three dots next to the actions bar at the top of the page. + ![Example of the device value dropdown.](images/tvm-device-value-dropdown.png) + +

+ +3. A flyout will appear with the current device value and what it means. Review the value of the device and choose the one that best fits your device. +![Example of the device value flyout.](images/tvm-device-value-flyout.png) + +## Related topics + +- [Threat and vulnerability management overview](next-gen-threat-and-vuln-mgt.md) +- [APIs](next-gen-threat-and-vuln-mgt.md#apis) diff --git a/windows/security/threat-protection/microsoft-defender-atp/tvm-end-of-support-software.md b/windows/security/threat-protection/microsoft-defender-atp/tvm-end-of-support-software.md new file mode 100644 index 0000000000..714e8a1e93 --- /dev/null +++ b/windows/security/threat-protection/microsoft-defender-atp/tvm-end-of-support-software.md @@ -0,0 +1,70 @@ +--- +title: Plan for end-of-support software and software versions +description: Get actionable security recommendations prioritized by threat, likelihood to be breached, and value, in threat and vulnerability management. +keywords: threat and vulnerability management, mdatp tvm security recommendation, cybersecurity recommendation, actionable security recommendation +search.product: eADQiWindows 10XVcnh +search.appverid: met150 +ms.prod: w10 +ms.mktglfcycl: deploy +ms.sitesec: library +ms.pagetype: security +ms.author: ellevin +author: levinec +ms.localizationpriority: medium +manager: dansimp +audience: ITPro +ms.collection: +- m365-security-compliance +- m365initiative-defender-endpoint +ms.topic: conceptual +--- +# Plan for end-of-support software and software versions with threat and vulnerability management + +[!INCLUDE [Microsoft 365 Defender rebranding](../../includes/microsoft-defender.md)] + + +**Applies to:** + +- [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) +- [Threat and vulnerability management](next-gen-threat-and-vuln-mgt.md) + +>Want to experience Microsoft Defender ATP? [Sign up for a free trial.](https://www.microsoft.com/microsoft-365/windows/microsoft-defender-atp?ocid=docs-wdatp-portaloverview-abovefoldlink) + +End-of-support (EOS), otherwise known as end-of-life (EOL), for software or software versions means that they will no longer be supported or serviced, and will not receive security updates. When you use software or software versions with ended support, you're exposing your organization to security vulnerabilities, legal, and financial risks. + +It's crucial for Security and IT Administrators to work together and ensure that the organization's software inventory is configured for optimal results, compliance, and a healthy network ecosystem. They should examine the options to remove or replace apps that have reached end-of-support and update versions that are no longer supported. It's best to create and implement a plan **before** the end of support dates. + +## Find software or software versions that are no longer supported + +1. From the threat and vulnerability management menu, navigate to [**Security recommendations**](tvm-security-recommendation.md). +2. Go to the **Filters** panel and look for the tags section. Select one or more of the EOS tag options. Then **Apply**. + + ![Screenshot tags that say EOS software, EOS versions, and Upcoming EOS versions](images/tvm-eos-tag.png) + +3. You'll see a list of recommendations related to software with ended support, software versions that are end of support, or versions with upcoming end of support. These tags are also visible in the [software inventory](tvm-software-inventory.md) page. + + ![Screenshot tags that say EOS software, EOS versions, and Upcoming EOS versions](images/tvm-eos-tags-column.png) + +## List of versions and dates + +To view a list of versions that have reached end of support, or end or support soon, and those dates, follow the below steps: + +1. A message will appear in the security recommendation flyout for software with versions that have reached end of support, or will reach end of support soon. + + ![Screenshot of version distribution link](images/eos-upcoming-eos.png) + +2. Select the **version distribution** link to go to the software drill-down page. There, you can see a filtered list of versions with tags identifying them as end of support, or upcoming end of support. + + ![Screenshot of version distribution link](images/software-drilldown-eos.png) + +3. Select one of the versions in the table to open. For example, version 10.0.18362.1. A flyout will appear with the end of support date. + + ![Screenshot of version distribution link](images/version-eos-date.png) + +Once you identify which software and software versions are vulnerable due to their end-of-support status, you must decide whether to update or remove them from your organization. Doing so will lower your organizations exposure to vulnerabilities and advanced persistent threats. + +## Related topics + +- [Threat and vulnerability management overview](next-gen-threat-and-vuln-mgt.md) +- [Security recommendations](tvm-security-recommendation.md) +- [Software inventory](tvm-software-inventory.md) diff --git a/windows/security/threat-protection/microsoft-defender-atp/tvm-exception.md b/windows/security/threat-protection/microsoft-defender-atp/tvm-exception.md new file mode 100644 index 0000000000..ec2d78b08b --- /dev/null +++ b/windows/security/threat-protection/microsoft-defender-atp/tvm-exception.md @@ -0,0 +1,105 @@ +--- +title: File an exception for a security recommendation - threat and vulnerability management +description: Create and monitor exceptions for security recommendations in threat and vulnerability management. +keywords: microsoft defender atp tvm remediation, mdatp tvm, threat and vulnerability management, threat & vulnerability management, threat & vulnerability management remediation, tvm remediation intune, tvm remediation sccm +search.product: eADQiWindows 10XVcnh +search.appverid: met150 +ms.prod: w10 +ms.mktglfcycl: deploy +ms.sitesec: library +ms.pagetype: security +ms.author: ellevin +author: levinec +ms.localizationpriority: medium +manager: dansimp +audience: ITPro +ms.collection: +- m365-security-compliance +- m365initiative-defender-endpoint +ms.topic: conceptual +--- +# File an exception for a security recommendation - threat and vulnerability management + +[!INCLUDE [Microsoft 365 Defender rebranding](../../includes/microsoft-defender.md)] + + +**Applies to:** +- [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) + +>Want to experience Microsoft Defender ATP? [Sign up for a free trial.](https://www.microsoft.com/microsoft-365/windows/microsoft-defender-atp?ocid=docs-wdatp-portaloverview-abovefoldlink) + +As an alternative to a remediation request, you can create exceptions for recommendations. + +There are many reasons why organizations create exceptions for a recommendation. For example, if there's a business justification that prevents the company from applying the recommendation, the existence of a compensating or alternative control that provides as much protection than the recommendation would, a false positive, among other reasons. + +When an exception is created for a recommendation, the recommendation is no longer active. The recommendation state changes to **Exception**, and it no longer shows up in the security recommendations list. + +1. Select a security recommendation you would like to create an exception for, and then **Exception options**. +![Showing where the button for "exception options" is location in a security recommendation flyout.](images/tvm-exception-option.png) + +2. Select your justification for the exception you need to file instead of remediating the security recommendation in question. Fill out the justification context, then set the exception duration. + + The following list details the justifications behind the exception options: + + - **Third party control** - A third party product or software already addresses this recommendation + - Choosing this justification type will lower your exposure score and increase you secure score because your risk is reduced + - **Alternate mitigation** - An internal tool already addresses this recommendation + - Choosing this justification type will lower your exposure score and increase you secure score because your risk is reduced + - **Risk accepted** - Poses low risk and/or implementing the recommendation is too expensive + - **Planned remediation (grace)** - Already planned but is awaiting execution or authorization + +3. Select **Submit**. A confirmation message at the top of the page indicates that the exception has been created. + +## View your exceptions + +When you file for an exception from the [Security recommendations page](tvm-security-recommendation.md), you create an exception for that security recommendation. You can file exceptions to exclude certain recommendation from showing up in reports and affecting your [Microsoft Secure Score for Devices](tvm-microsoft-secure-score-devices.md). + +The exceptions you've filed will show up in the **Remediation** page, in the **Exceptions** tab. You can filter your view based on exception justification, type, and status. + +![Example of the exception page and filter options.](images/tvm-exception-filters.png) + +### Exception actions and statuses + +You can take the following actions on an exception: + +- Cancel - You can cancel the exceptions you've filed anytime +- Resurface - Your exception automatically becomes void and resurfaces in the security recommendation list when dynamic environmental factors change. It adversely affects the exposure impact associated with a recommendation that had previously been excluded. + +The following statuses will be a part of an exception: + +- **Canceled** - The exception has been canceled and is no longer in effect +- **Expired** - The exception that you've filed is no longer in effect +- **In effect** - The exception that you've filed is in progress + +### Exception impact on scores + +Creating an exception can potentially affect the Exposure Score (for both types of weaknesses) and Microsoft Secure Score for Devices of your organization in the following manner: + +- **No impact** - Removes the recommendation from the lists (which can be reverse through filters), but will not affect the scores. +- **Mitigation-like impact** - As if the recommendation was mitigated (and scores will be adjusted accordingly) when you select it as a compensating control. +- **Hybrid** - Provides visibility on both No impact and Mitigation-like impact. It shows both the Exposure Score and Microsoft Secure Score for Devices results out of the exception option that you made. + +The exception impact shows on both the Security recommendations page column and in the flyout pane. + +![Screenshot identifying the impact sections which list score impacts in the full page security recommendations table, and the flyout.](images/tvm-exception-impact.png) + +### View exceptions in other places + +Select **Show exceptions** at the bottom of the **Top security recommendations** card in the dashboard. It will open a filtered view in the **Security recommendations** page of recommendations with an "Exception" status. + +![Screenshot of Show exceptions link in the Top security recommendations card in the dashboard.](images/tvm-exception-dashboard.png) + +## Related topics + +- [Threat and vulnerability management overview](next-gen-threat-and-vuln-mgt.md) +- [Supported operating systems and platforms](tvm-supported-os.md) +- [Threat and vulnerability management dashboard](tvm-dashboard-insights.md) +- [Exposure score](tvm-exposure-score.md) +- [Microsoft Secure Score for Devices](tvm-microsoft-secure-score-devices.md) +- [Security recommendations](tvm-security-recommendation.md) +- [Software inventory](tvm-software-inventory.md) +- [Weaknesses](tvm-weaknesses.md) +- [Event timeline](threat-and-vuln-mgt-event-timeline.md) +- [Scenarios](threat-and-vuln-mgt-scenarios.md) +- [APIs](next-gen-threat-and-vuln-mgt.md#apis) +- [Configure data access for threat and vulnerability management roles](user-roles.md#create-roles-and-assign-the-role-to-an-azure-active-directory-group) diff --git a/windows/security/threat-protection/microsoft-defender-atp/threat-and-vuln-mgt-scenarios.md b/windows/security/threat-protection/microsoft-defender-atp/tvm-hunt-exposed-devices.md similarity index 100% rename from windows/security/threat-protection/microsoft-defender-atp/threat-and-vuln-mgt-scenarios.md rename to windows/security/threat-protection/microsoft-defender-atp/tvm-hunt-exposed-devices.md diff --git a/windows/security/threat-protection/microsoft-defender-atp/tvm-prerequisites.md b/windows/security/threat-protection/microsoft-defender-atp/tvm-prerequisites.md new file mode 100644 index 0000000000..04ab0e13f8 --- /dev/null +++ b/windows/security/threat-protection/microsoft-defender-atp/tvm-prerequisites.md @@ -0,0 +1,71 @@ +--- +title: Threat and vulnerability management +description: This new capability uses a game-changing risk-based approach to the discovery, prioritization, and remediation of endpoint vulnerabilities and misconfigurations. +keywords: threat & vulnerability management, threat and vulnerability management, MDATP TVM, MDATP-TVM, vulnerability management, vulnerability assessment, threat and vulnerability scanning, secure configuration assessment, microsoft defender atp, microsoft defender atp, endpoint vulnerabilities, next generation +search.product: eADQiWindows 10XVcnh +search.appverid: met150 +ms.prod: w10 +ms.mktglfcycl: deploy +ms.sitesec: library +ms.pagetype: security +ms.author: ellevin +author: levinec +ms.localizationpriority: medium +manager: dansimp +audience: ITPro +ms.collection: M365-security-compliance +ms.topic: conceptual +--- + +# Prerequisites & permissions - threat and vulnerability management + +[!INCLUDE [Microsoft 365 Defender rebranding](../../includes/microsoft-defender.md)] + +**Applies to:** + +- [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) + +>Want to experience Microsoft Defender ATP? [Sign up for a free trial.](https://www.microsoft.com/microsoft-365/windows/microsoft-defender-atp?ocid=docs-wdatp-portaloverview-abovefoldlink) + +Ensure that your devices: + +- Are onboarded to Microsoft Defender Advanced Threat Protection +- Run [supported operating systems and platforms](tvm-supported-os.md) +- Have the following mandatory updates installed and deployed in your network to boost your vulnerability assessment detection rates: + +> Release | Security update KB number and link +> :---|:--- +> Windows 10 Version 1709 | [KB4493441](https://support.microsoft.com/help/4493441/windows-10-update-kb4493441) and [KB 4516071](https://support.microsoft.com/help/4516071/windows-10-update-kb4516071) +> Windows 10 Version 1803 | [KB4493464](https://support.microsoft.com/help/4493464) and [KB 4516045](https://support.microsoft.com/help/4516045/windows-10-update-kb4516045) +> Windows 10 Version 1809 | [KB 4516077](https://support.microsoft.com/help/4516077/windows-10-update-kb4516077) +> Windows 10 Version 1903 | [KB 4512941](https://support.microsoft.com/help/4512941/windows-10-update-kb4512941) + +- Are onboarded to [Microsoft Intune](https://docs.microsoft.com/mem/intune/fundamentals/what-is-intune) and [Microsoft Endpoint Configuration Manager](https://docs.microsoft.com/mem/configmgr/protect/deploy-use/endpoint-protection-configure). If you're using Configuration Manager, update your console to the latest version. +- Have at least one security recommendation that can be viewed in the device page +- Are tagged or marked as co-managed + +## Relevant permission options + +1. Log in to Microsoft Defender Security Center using account with a Security administrator or Global administrator role assigned. +2. In the navigation pane, select **Settings > Roles**. + +For more information, see [Create and manage roles for role-based access control](user-roles.md) + +### View data + +- **Security operations** - View all security operations data in the portal +- **Threat and vulnerability management** - View threat and vulnerability management data in the portal + +### Active remediation actions + +- **Security operations** - Take response actions, approve or dismiss pending remediation actions, manage allowed/blocked lists for automation and indicators +- **Threat and vulnerability management - Exception handling** - Create new exceptions and manage active exceptions +- **Threat and vulnerability management - Remediation handling** - Submit new remediation requests, create tickets, and manage existing remediation activities + +For more information, see [RBAC permission options](user-roles.md##permission-options) + +## See also + +- [Supported operating systems and platforms](tvm-supported-os.md) +- [Threat and vulnerability management dashboard](tvm-dashboard-insights.md) +- [Exposure score](tvm-exposure-score.md) diff --git a/windows/security/threat-protection/microsoft-defender-atp/tvm-remediation.md b/windows/security/threat-protection/microsoft-defender-atp/tvm-remediation.md index 96e22571c0..784f4d7a44 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/tvm-remediation.md +++ b/windows/security/threat-protection/microsoft-defender-atp/tvm-remediation.md @@ -1,5 +1,5 @@ --- -title: Remediation activities and exceptions - threat and vulnerability management +title: Remediate vulnerabilities with threat and vulnerability management description: Remediate security weaknesses discovered through security recommendations, and create exceptions if needed, in threat and vulnerability management. keywords: microsoft defender atp tvm remediation, mdatp tvm, threat and vulnerability management, threat & vulnerability management, threat & vulnerability management remediation, tvm remediation intune, tvm remediation sccm search.product: eADQiWindows 10XVcnh @@ -18,7 +18,7 @@ ms.collection: - m365initiative-defender-endpoint ms.topic: conceptual --- -# Remediation activities and exceptions - threat and vulnerability management +# Remediate vulnerabilities with threat and vulnerability management [!INCLUDE [Microsoft 365 Defender rebranding](../../includes/microsoft-defender.md)] @@ -31,6 +31,31 @@ ms.topic: conceptual >[!NOTE] >To use this capability, enable your Microsoft Intune connections. Navigate to **Settings** > **General** > **Advanced features**. Scroll down and look for **Microsoft Intune connection**. By default, the toggle is turned off. Turn your **Microsoft Intune connection** toggle on. +## Request remediation + +The threat and vulnerability management capability in Microsoft Defender ATP bridges the gap between Security and IT administrators through the remediation request workflow. Security admins like you can request for the IT Administrator to remediate a vulnerability from the **Security recommendation** pages to Intune. + +### Enable Microsoft Intune connection + +To use this capability, enable your Microsoft Intune connections. In the Microsoft Defender Security Center, navigate to **Settings** > **General** > **Advanced features**. Scroll down and look for **Microsoft Intune connection**. By default, the toggle is turned off. Turn your **Microsoft Intune connection** toggle **On**. + +See [Use Intune to remediate vulnerabilities identified by Microsoft Defender ATP](https://docs.microsoft.com/intune/atp-manage-vulnerabilities) for details. + +### Remediation request steps + +1. Select a security recommendation you would like to request remediation for, and then select **Remediation options**. + +2. Fill out the form, including what you are requesting remediation for, priority, due date, and optional notes. Select **Submit request**. Submitting a remediation request creates a remediation activity item within threat and vulnerability management, which can be used for monitoring the remediation progress for this recommendation. This will not trigger a remediation or apply any changes to devices. + +3. Notify your IT Administrator about the new request and have them log into Intune to approve or reject the request and start a package deployment. + +4. Go to the [**Remediation**](tvm-remediation.md) page to view the status of your remediation request. + +If you want to check how the ticket shows up in Intune, see [Use Intune to remediate vulnerabilities identified by Microsoft Defender ATP](https://docs.microsoft.com/intune/atp-manage-vulnerabilities) for details. + +>[!NOTE] +>If your request involves remediating more than 10,000 devices, we can only send 10,000 devices for remediation to Intune. + After your organization's cybersecurity weaknesses are identified and mapped to actionable [security recommendations](tvm-security-recommendation.md), start creating security tasks. You can create tasks through the integration with Microsoft Intune where remediation tickets are created. Lower your organization's exposure from vulnerabilities and increase your security configuration by remediating the security recommendations. @@ -59,44 +84,6 @@ When you [submit a remediation request](tvm-security-recommendation.md#request-r Once you are in the Remediation page, select the remediation activity that you want to view. You can follow the remediation steps, track progress, view the related recommendation, export to CSV, or mark as complete. ![Example of the Remediation page, with a selected remediation activity, and that activity's flyout listing the description, IT service and device management tools, and device remediation progress.](images/remediation_flyouteolsw.png) -## Exceptions - -When you [file for an exception](tvm-security-recommendation.md#file-for-exception) from the [Security recommendations page](tvm-security-recommendation.md), you create an exception for that security recommendation. You can file exceptions to exclude certain recommendation from showing up in reports and affecting your [Microsoft Secure Score for Devices](tvm-microsoft-secure-score-devices.md). - -The exceptions you've filed will show up in the **Remediation** page, in the **Exceptions** tab. You can filter your view based on exception justification, type, and status. - -![Example of the exception page and filter options.](images/tvm-exception-filters.png) - -### Exception actions and statuses - -You can take the following actions on an exception: - -- Cancel - You can cancel the exceptions you've filed anytime -- Resurface - Your exception automatically becomes void and resurfaces in the security recommendation list when dynamic environmental factors change. It adversely affects the exposure impact associated with a recommendation that had previously been excluded. - -The following statuses will be a part of an exception: - -- **Canceled** - The exception has been canceled and is no longer in effect -- **Expired** - The exception that you've filed is no longer in effect -- **In effect** - The exception that you've filed is in progress - -### Exception impact on scores - -Creating an exception can potentially affect the Exposure Score (for both types of weaknesses) and Microsoft Secure Score for Devices of your organization in the following manner: - -- **No impact** - Removes the recommendation from the lists (which can be reverse through filters), but will not affect the scores. -- **Mitigation-like impact** - As if the recommendation was mitigated (and scores will be adjusted accordingly) when you select it as a compensating control. -- **Hybrid** - Provides visibility on both No impact and Mitigation-like impact. It shows both the Exposure Score and Microsoft Secure Score for Devices results out of the exception option that you made. - -The exception impact shows on both the Security recommendations page column and in the flyout pane. - -![Screenshot identifying the impact sections which list score impacts in the full page security recommendations table, and the flyout.](images/tvm-exception-impact.png) - -### View exceptions in other places - -Select **Show exceptions** at the bottom of the **Top security recommendations** card in the dashboard. It will open a filtered view in the **Security recommendations** page of recommendations with an "Exception" status. - -![Screenshot of Show exceptions link in the Top security recommendations card in the dashboard.](images/tvm-exception-dashboard.png) ## Related topics diff --git a/windows/security/threat-protection/microsoft-defender-atp/tvm-security-recommendation.md b/windows/security/threat-protection/microsoft-defender-atp/tvm-security-recommendation.md index 723a90bded..4fa0f5695a 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/tvm-security-recommendation.md +++ b/windows/security/threat-protection/microsoft-defender-atp/tvm-security-recommendation.md @@ -107,58 +107,7 @@ If there is a large jump in the number of exposed machines, or a sharp increase 1. Select the recommendation and **Open software page** 2. Select the **Event timeline** tab to view all the impactful events related to that software, such as new vulnerabilities or new public exploits. [Learn more about event timeline](threat-and-vuln-mgt-event-timeline.md) -3. Decide how to address the increase or your organization's exposure, such as submitting a remediation request - -## Request remediation - -The threat and vulnerability management capability in Microsoft Defender ATP bridges the gap between Security and IT administrators through the remediation request workflow. Security admins like you can request for the IT Administrator to remediate a vulnerability from the **Security recommendation** pages to Intune. - -### Enable Microsoft Intune connection - -To use this capability, enable your Microsoft Intune connections. In the Microsoft Defender Security Center, navigate to **Settings** > **General** > **Advanced features**. Scroll down and look for **Microsoft Intune connection**. By default, the toggle is turned off. Turn your **Microsoft Intune connection** toggle **On**. - -See [Use Intune to remediate vulnerabilities identified by Microsoft Defender ATP](https://docs.microsoft.com/intune/atp-manage-vulnerabilities) for details. - -### Remediation request steps - -1. Select a security recommendation you would like to request remediation for, and then select **Remediation options**. - -2. Fill out the form, including what you are requesting remediation for, priority, due date, and optional notes. Select **Submit request**. Submitting a remediation request creates a remediation activity item within threat and vulnerability management, which can be used for monitoring the remediation progress for this recommendation. This will not trigger a remediation or apply any changes to devices. - -3. Notify your IT Administrator about the new request and have them log into Intune to approve or reject the request and start a package deployment. - -4. Go to the [**Remediation**](tvm-remediation.md) page to view the status of your remediation request. - -If you want to check how the ticket shows up in Intune, see [Use Intune to remediate vulnerabilities identified by Microsoft Defender ATP](https://docs.microsoft.com/intune/atp-manage-vulnerabilities) for details. - ->[!NOTE] ->If your request involves remediating more than 10,000 devices, we can only send 10,000 devices for remediation to Intune. - -## File for exception - -As an alternative to a remediation request, you can create exceptions for recommendations. - -There are many reasons why organizations create exceptions for a recommendation. For example, if there's a business justification that prevents the company from applying the recommendation, the existence of a compensating or alternative control that provides as much protection than the recommendation would, a false positive, among other reasons. - -When an exception is created for a recommendation, the recommendation is no longer active. The recommendation state changes to **Exception**, and it no longer shows up in the security recommendations list. - -1. Select a security recommendation you would like to create an exception for, and then **Exception options**. -![Showing where the button for "exception options" is location in a security recommendation flyout.](images/tvm-exception-option.png) - -2. Select your justification for the exception you need to file instead of remediating the security recommendation in question. Fill out the justification context, then set the exception duration. - - The following list details the justifications behind the exception options: - - - **Third party control** - A third party product or software already addresses this recommendation - - Choosing this justification type will lower your exposure score and increase you secure score because your risk is reduced - - **Alternate mitigation** - An internal tool already addresses this recommendation - - Choosing this justification type will lower your exposure score and increase you secure score because your risk is reduced - - **Risk accepted** - Poses low risk and/or implementing the recommendation is too expensive - - **Planned remediation (grace)** - Already planned but is awaiting execution or authorization - -3. Select **Submit**. A confirmation message at the top of the page indicates that the exception has been created. - -4. Navigate to the [**Remediation**](tvm-remediation.md) page under the **Threat and vulnerability management** menu and select the **Exceptions** tab to view all your exceptions (current and past). +3. Decide how to address the increase or your organization's exposure, such as submitting a remediation request. ## Report inaccuracy @@ -174,41 +123,6 @@ You can report a false positive when you see any vague, inaccurate, incomplete, 4. Select **Submit**. Your feedback is immediately sent to the threat and vulnerability management experts. -## Find and remediate software or software versions which have reached end-of-support (EOS) - -End-of-support (otherwise known as end-of-life) for software or software versions means that they will no longer be supported or serviced, and will not receive security updates. When you use software or software versions with ended support, you're exposing your organization to security vulnerabilities, legal, and financial risks. - -It's crucial for Security and IT Administrators to work together and ensure that the organization's software inventory is configured for optimal results, compliance, and a healthy network ecosystem. They should examine the options to remove or replace apps that have reached end-of-support and update versions that are no longer supported. It's best to create and implement a plan **before** the end of support dates. - -To find software or software versions that are no longer supported: - -1. From the threat and vulnerability management menu, navigate to **Security recommendations**. -2. Go to the **Filters** panel and look for the tags section. Select one or more of the EOS tag options. Then **Apply**. - - ![Screenshot tags that say EOS software, EOS versions, and Upcoming EOS versions](images/tvm-eos-tag.png) - -3. You'll see a list of recommendations related to software with ended support, software versions that are end of support, or versions with upcoming end of support. These tags are also visible in the [software inventory](tvm-software-inventory.md) page. - - ![Screenshot tags that say EOS software, EOS versions, and Upcoming EOS versions](images/tvm-eos-tags-column.png) - -### List of versions and dates - -To view a list of versions that have reached end of support, or end or support soon, and those dates, follow the below steps: - -1. A message will appear in the security recommendation flyout for software with versions that have reached end of support, or will reach end of support soon. - - ![Screenshot of version distribution link](images/eos-upcoming-eos.png) - -2. Select the **version distribution** link to go to the software drill-down page. There, you can see a filtered list of versions with tags identifying them as end of support, or upcoming end of support. - - ![Screenshot of version distribution link](images/software-drilldown-eos.png) - -3. Select one of the versions in the table to open. For example, version 10.0.18362.1. A flyout will appear with the end of support date. - - ![Screenshot of version distribution link](images/version-eos-date.png) - -Once you identify which software and software versions are vulnerable due to their end-of-support status, you must decide whether to update or remove them from your organization. Doing so will lower your organizations exposure to vulnerabilities and advanced persistent threats. - ## Related topics - [Threat and vulnerability management overview](next-gen-threat-and-vuln-mgt.md) diff --git a/windows/security/threat-protection/microsoft-defender-atp/tvm-software-inventory.md b/windows/security/threat-protection/microsoft-defender-atp/tvm-software-inventory.md index 13d0634456..03f4ad48e6 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/tvm-software-inventory.md +++ b/windows/security/threat-protection/microsoft-defender-atp/tvm-software-inventory.md @@ -25,6 +25,7 @@ ms.topic: conceptual **Applies to:** - [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) +- [Threat and vulnerability management](next-gen-threat-and-vuln-mgt.md) >Want to experience Microsoft Defender ATP? [Sign up for a free trial.](https://www.microsoft.com/microsoft-365/windows/microsoft-defender-atp?ocid=docs-wdatp-portaloverview-abovefoldlink) @@ -88,14 +89,6 @@ Report a false positive when you see any vague, inaccurate, or incomplete inform ## Related topics - [Threat and vulnerability management overview](next-gen-threat-and-vuln-mgt.md) -- [Supported operating systems and platforms](tvm-supported-os.md) -- [Threat and vulnerability management dashboard](tvm-dashboard-insights.md) -- [Exposure score](tvm-exposure-score.md) -- [Microsoft Secure Score for Devices](tvm-microsoft-secure-score-devices.md) - [Security recommendations](tvm-security-recommendation.md) -- [Remediation and exception](tvm-remediation.md) -- [Weaknesses](tvm-weaknesses.md) - [Event timeline](threat-and-vuln-mgt-event-timeline.md) -- [Scenarios](threat-and-vuln-mgt-scenarios.md) -- [APIs](next-gen-threat-and-vuln-mgt.md#apis) -- [Configure data access for threat and vulnerability management roles](user-roles.md#create-roles-and-assign-the-role-to-an-azure-active-directory-group) +- [View and organize the Microsoft Defender ATP Devices list](machines-view-overview.md) diff --git a/windows/security/threat-protection/microsoft-defender-atp/tvm-supported-os.md b/windows/security/threat-protection/microsoft-defender-atp/tvm-supported-os.md index 4de1a79a1e..e533863d57 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/tvm-supported-os.md +++ b/windows/security/threat-protection/microsoft-defender-atp/tvm-supported-os.md @@ -1,7 +1,7 @@ --- title: Supported operating systems and platforms for threat and vulnerability management description: Before you begin, ensure that you meet the operating system or platform requisites for threat and vulnerability management so the activities in your all devices are properly accounted for. -keywords: threat & vulnerability management, threat and vulnerability management, operating system, platform requirements, prerequisites, mdatp-tvm supported os, mdatp-tvm, risk-based threat & vulnerability management, security configuration, Microsoft Secure Score for Devices, exposure score +keywords: threat & vulnerability management, threat and vulnerability management, operating system, platform requirements, prerequisites, mdatp-tvm supported os, mdatp-tvm, search.appverid: met150 search.product: eADQiWindows 10XVcnh ms.prod: w10 @@ -26,6 +26,7 @@ ms.topic: article **Applies to:** - [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) +- [Threat and vulnerability management](next-gen-threat-and-vuln-mgt.md) >Want to experience Microsoft Defender ATP? [Sign up for a free trial.](https://www.microsoft.com/microsoft-365/windows/microsoft-defender-atp?ocid=docs-wdatp-portaloverview-abovefoldlink) @@ -50,14 +51,4 @@ Linux | Not supported (planned) ## Related topics - [Threat and vulnerability management overview](next-gen-threat-and-vuln-mgt.md) -- [Threat and vulnerability management dashboard](tvm-dashboard-insights.md) -- [Exposure score](tvm-exposure-score.md) -- [Microsoft Secure Score for Devices](tvm-microsoft-secure-score-devices.md) -- [Security recommendations](tvm-security-recommendation.md) -- [Remediation and exception](tvm-remediation.md) -- [Software inventory](tvm-software-inventory.md) -- [Weaknesses](tvm-weaknesses.md) -- [Event timeline](threat-and-vuln-mgt-event-timeline.md) -- [Scenarios](threat-and-vuln-mgt-scenarios.md) -- [APIs](next-gen-threat-and-vuln-mgt.md#apis) -- [Configure data access for threat and vulnerability management roles](https://docs.microsoft.com/windows/security/threat-protection/microsoft-defender-atp/user-roles#create-roles-and-assign-the-role-to-an-azure-active-directory-group) +- [Prerequisites & permissions](tvm-prerequisites.md) diff --git a/windows/security/threat-protection/microsoft-defender-atp/tvm-weaknesses.md b/windows/security/threat-protection/microsoft-defender-atp/tvm-weaknesses.md index 523a9d850b..b2b0021f69 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/tvm-weaknesses.md +++ b/windows/security/threat-protection/microsoft-defender-atp/tvm-weaknesses.md @@ -1,5 +1,5 @@ --- -title: Weaknesses found by threat and vulnerability management +title: Vulnerabilities in my organization - threat and vulnerability management description: Lists the common vulnerabilities and exposures (CVE) ID of weaknesses found in the software running in your organization. Discovered by the Microsoft Defender ATP threat and vulnerability management capability. keywords: mdatp threat & vulnerability management, threat and vulnerability management, mdatp tvm weaknesses page, finding weaknesses through tvm, tvm vulnerability list, vulnerability details in tvm search.product: eADQiWindows 10XVcnh @@ -18,19 +18,19 @@ ms.collection: - m365initiative-defender-endpoint ms.topic: conceptual --- -# Weaknesses found by threat and vulnerability management +# Vulnerabilities in my organization - threat and vulnerability management [!INCLUDE [Microsoft 365 Defender rebranding](../../includes/microsoft-defender.md)] - **Applies to:** - [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) +- [Threat and vulnerability management](next-gen-threat-and-vuln-mgt.md) >Want to experience Microsoft Defender ATP? [Sign up for a free trial.](https://www.microsoft.com/microsoft-365/windows/microsoft-defender-atp?ocid=docs-wdatp-portaloverview-abovefoldlink) Threat and vulnerability management uses the same signals in Microsoft Defender ATP's endpoint protection to scan and detect vulnerabilities. -The **Weaknesses** page lists down the vulnerabilities found in the infected software running in your organization by listing the Common Vulnerabilities and Exposures (CVE) ID. You can also view the severity, Common Vulnerability Scoring System (CVSS) rating, prevalence in your organization, corresponding breach, threat insights, and more. +The **Weaknesses** page lists the software vulnerabilities your devices are exposed to by listing the Common Vulnerabilities and Exposures (CVE) ID. You can also view the severity, Common Vulnerability Scoring System (CVSS) rating, prevalence in your organization, corresponding breach, threat insights, and more. >[!NOTE] >If there is no official CVE-ID assigned to a vulnerability, the vulnerability name is assigned by threat and vulnerability management. @@ -140,14 +140,6 @@ Report a false positive when you see any vague, inaccurate, or incomplete inform ## Related topics - [Threat and vulnerability management overview](next-gen-threat-and-vuln-mgt.md) -- [Supported operating systems and platforms](tvm-supported-os.md) -- [Threat and vulnerability management dashboard](tvm-dashboard-insights.md) -- [Exposure score](tvm-exposure-score.md) -- [Microsoft Secure Score for Devices](tvm-microsoft-secure-score-devices.md) - [Security recommendations](tvm-security-recommendation.md) -- [Remediation and exception](tvm-remediation.md) - [Software inventory](tvm-software-inventory.md) -- [Event timeline](threat-and-vuln-mgt-event-timeline.md) -- [Scenarios](threat-and-vuln-mgt-scenarios.md) -- [APIs](next-gen-threat-and-vuln-mgt.md#apis) -- [Configure data access for threat and vulnerability management roles](user-roles.md#create-roles-and-assign-the-role-to-an-azure-active-directory-group) +- [View and organize the Microsoft Defender ATP Devices list](machines-view-overview.md) From fbb41b10fc40b32454a6159cf83f1859dda5a19c Mon Sep 17 00:00:00 2001 From: Beth Levin Date: Fri, 16 Oct 2020 17:34:41 -0700 Subject: [PATCH 31/50] updated topics --- .../next-gen-threat-and-vuln-mgt.md | 10 --- .../tvm-dashboard-insights.md | 7 +-- .../tvm-end-of-support-software.md | 2 +- .../microsoft-defender-atp/tvm-exception.md | 38 +++++------- .../tvm-exposure-score.md | 8 --- .../tvm-hunt-exposed-devices.md | 61 +++++-------------- .../tvm-microsoft-secure-score-devices.md | 11 +--- .../tvm-prerequisites.md | 14 +++-- .../microsoft-defender-atp/tvm-remediation.md | 49 ++++----------- .../tvm-security-recommendation.md | 25 +++----- .../tvm-software-inventory.md | 3 +- .../tvm-supported-os.md | 4 +- .../microsoft-defender-atp/tvm-weaknesses.md | 8 +-- 13 files changed, 73 insertions(+), 167 deletions(-) diff --git a/windows/security/threat-protection/microsoft-defender-atp/next-gen-threat-and-vuln-mgt.md b/windows/security/threat-protection/microsoft-defender-atp/next-gen-threat-and-vuln-mgt.md index 7499f4de13..37b42afa50 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/next-gen-threat-and-vuln-mgt.md +++ b/windows/security/threat-protection/microsoft-defender-atp/next-gen-threat-and-vuln-mgt.md @@ -21,7 +21,6 @@ ms.topic: conceptual [!INCLUDE [Microsoft 365 Defender rebranding](../../includes/microsoft-defender.md)] - **Applies to:** - [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) @@ -99,13 +98,4 @@ See the following articles for related APIs: - [Supported operating systems and platforms](tvm-supported-os.md) - [Threat and vulnerability management dashboard](tvm-dashboard-insights.md) -- [Exposure score](tvm-exposure-score.md) -- [Microsoft Secure Score for Devices](tvm-microsoft-secure-score-devices.md) -- [Security recommendations](tvm-security-recommendation.md) -- [Remediation and exception](tvm-remediation.md) -- [Software inventory](tvm-software-inventory.md) -- [Weaknesses](tvm-weaknesses.md) -- [Event timeline](threat-and-vuln-mgt-event-timeline.md) -- [Scenarios](threat-and-vuln-mgt-scenarios.md) -- [Configure data access for threat and vulnerability management roles](user-roles.md#create-roles-and-assign-the-role-to-an-azure-active-directory-group) - [BLOG: Microsoft's Threat & Vulnerability Management now helps thousands of customers to discover, prioritize, and remediate vulnerabilities in real time](https://www.microsoft.com/security/blog/2019/07/02/microsofts-threat-vulnerability-management-now-helps-thousands-of-customers-to-discover-prioritize-and-remediate-vulnerabilities-in-real-time/) diff --git a/windows/security/threat-protection/microsoft-defender-atp/tvm-dashboard-insights.md b/windows/security/threat-protection/microsoft-defender-atp/tvm-dashboard-insights.md index eca2eff41e..f5a4c36323 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/tvm-dashboard-insights.md +++ b/windows/security/threat-protection/microsoft-defender-atp/tvm-dashboard-insights.md @@ -83,14 +83,9 @@ For more information on the icons used throughout the portal, see [Microsoft Def ## Related topics - [Threat and vulnerability management overview](next-gen-threat-and-vuln-mgt.md) -- [Supported operating systems and platforms](tvm-supported-os.md) - [Exposure score](tvm-exposure-score.md) - [Microsoft Secure Score for Devices](tvm-microsoft-secure-score-devices.md) - [Security recommendations](tvm-security-recommendation.md) -- [Remediation and exception](tvm-remediation.md) - [Software inventory](tvm-software-inventory.md) -- [Weaknesses](tvm-weaknesses.md) - [Event timeline](threat-and-vuln-mgt-event-timeline.md) -- [Scenarios](threat-and-vuln-mgt-scenarios.md) -- [APIs](next-gen-threat-and-vuln-mgt.md#apis) -- [Configure data access for threat and vulnerability management roles](https://docs.microsoft.com/windows/security/threat-protection/microsoft-defender-atp/user-roles#create-roles-and-assign-the-role-to-an-azure-active-directory-group) + diff --git a/windows/security/threat-protection/microsoft-defender-atp/tvm-end-of-support-software.md b/windows/security/threat-protection/microsoft-defender-atp/tvm-end-of-support-software.md index 714e8a1e93..133be4654e 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/tvm-end-of-support-software.md +++ b/windows/security/threat-protection/microsoft-defender-atp/tvm-end-of-support-software.md @@ -1,6 +1,6 @@ --- title: Plan for end-of-support software and software versions -description: Get actionable security recommendations prioritized by threat, likelihood to be breached, and value, in threat and vulnerability management. +description: Discover and plan for software and software versions that are no longer supported and won't receive security updates. keywords: threat and vulnerability management, mdatp tvm security recommendation, cybersecurity recommendation, actionable security recommendation search.product: eADQiWindows 10XVcnh search.appverid: met150 diff --git a/windows/security/threat-protection/microsoft-defender-atp/tvm-exception.md b/windows/security/threat-protection/microsoft-defender-atp/tvm-exception.md index ec2d78b08b..8b0dad82a1 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/tvm-exception.md +++ b/windows/security/threat-protection/microsoft-defender-atp/tvm-exception.md @@ -1,5 +1,5 @@ --- -title: File an exception for a security recommendation - threat and vulnerability management +title: Create and view exceptions for security recommendations - threat and vulnerability management description: Create and monitor exceptions for security recommendations in threat and vulnerability management. keywords: microsoft defender atp tvm remediation, mdatp tvm, threat and vulnerability management, threat & vulnerability management, threat & vulnerability management remediation, tvm remediation intune, tvm remediation sccm search.product: eADQiWindows 10XVcnh @@ -18,26 +18,28 @@ ms.collection: - m365initiative-defender-endpoint ms.topic: conceptual --- -# File an exception for a security recommendation - threat and vulnerability management +# Create and view exceptions for security recommendations - threat and vulnerability management [!INCLUDE [Microsoft 365 Defender rebranding](../../includes/microsoft-defender.md)] - **Applies to:** - [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) +- [Threat and vulnerability management](next-gen-threat-and-vuln-mgt.md) >Want to experience Microsoft Defender ATP? [Sign up for a free trial.](https://www.microsoft.com/microsoft-365/windows/microsoft-defender-atp?ocid=docs-wdatp-portaloverview-abovefoldlink) -As an alternative to a remediation request, you can create exceptions for recommendations. +Sometimes, you may not be able to take the remediation steps suggested by a security recommendation. If that is the case, threat and vulnerability management gives you an avenue to create an exception. -There are many reasons why organizations create exceptions for a recommendation. For example, if there's a business justification that prevents the company from applying the recommendation, the existence of a compensating or alternative control that provides as much protection than the recommendation would, a false positive, among other reasons. +When an exception is created for a recommendation, the recommendation is no longer active. The recommendation state changes to **Exception**, and no longer shows up in the security recommendations list. -When an exception is created for a recommendation, the recommendation is no longer active. The recommendation state changes to **Exception**, and it no longer shows up in the security recommendations list. +## Create an exception -1. Select a security recommendation you would like to create an exception for, and then **Exception options**. +1. Go to the threat and vulnerability management navigation menu in the Microsoft Defender Security Center, and select [**Security recommendations**](tvm-security-recommendation.md). + +2. Select a security recommendation you would like to create an exception for, and then **Exception options**. ![Showing where the button for "exception options" is location in a security recommendation flyout.](images/tvm-exception-option.png) -2. Select your justification for the exception you need to file instead of remediating the security recommendation in question. Fill out the justification context, then set the exception duration. +3. Select your justification for the exception you need to file instead of remediating the security recommendation in question. Fill out the justification context, then set the exception duration. The following list details the justifications behind the exception options: @@ -48,11 +50,11 @@ When an exception is created for a recommendation, the recommendation is no long - **Risk accepted** - Poses low risk and/or implementing the recommendation is too expensive - **Planned remediation (grace)** - Already planned but is awaiting execution or authorization -3. Select **Submit**. A confirmation message at the top of the page indicates that the exception has been created. +4. Select **Submit**. A confirmation message at the top of the page indicates that the exception has been created. ## View your exceptions -When you file for an exception from the [Security recommendations page](tvm-security-recommendation.md), you create an exception for that security recommendation. You can file exceptions to exclude certain recommendation from showing up in reports and affecting your [Microsoft Secure Score for Devices](tvm-microsoft-secure-score-devices.md). +When you file for an exception from the security recommendations page, you create an exception for that security recommendation. You can file exceptions to exclude certain recommendation from showing up in reports and affecting your [Microsoft Secure Score for Devices](tvm-microsoft-secure-score-devices.md). The exceptions you've filed will show up in the **Remediation** page, in the **Exceptions** tab. You can filter your view based on exception justification, type, and status. @@ -60,10 +62,7 @@ The exceptions you've filed will show up in the **Remediation** page, in the **E ### Exception actions and statuses -You can take the following actions on an exception: - -- Cancel - You can cancel the exceptions you've filed anytime -- Resurface - Your exception automatically becomes void and resurfaces in the security recommendation list when dynamic environmental factors change. It adversely affects the exposure impact associated with a recommendation that had previously been excluded. +Once an exception exists, you can cancel it at any time by going to the exception in the **Remediation** page and selecting **Cancel exception**. The following statuses will be a part of an exception: @@ -92,14 +91,7 @@ Select **Show exceptions** at the bottom of the **Top security recommendations** ## Related topics - [Threat and vulnerability management overview](next-gen-threat-and-vuln-mgt.md) -- [Supported operating systems and platforms](tvm-supported-os.md) -- [Threat and vulnerability management dashboard](tvm-dashboard-insights.md) +- [Remediate vulnerabilities](tvm-remediation.md) +- [Security recommendations](tvm-security-recommendation.md) - [Exposure score](tvm-exposure-score.md) - [Microsoft Secure Score for Devices](tvm-microsoft-secure-score-devices.md) -- [Security recommendations](tvm-security-recommendation.md) -- [Software inventory](tvm-software-inventory.md) -- [Weaknesses](tvm-weaknesses.md) -- [Event timeline](threat-and-vuln-mgt-event-timeline.md) -- [Scenarios](threat-and-vuln-mgt-scenarios.md) -- [APIs](next-gen-threat-and-vuln-mgt.md#apis) -- [Configure data access for threat and vulnerability management roles](user-roles.md#create-roles-and-assign-the-role-to-an-azure-active-directory-group) diff --git a/windows/security/threat-protection/microsoft-defender-atp/tvm-exposure-score.md b/windows/security/threat-protection/microsoft-defender-atp/tvm-exposure-score.md index 1773f17654..f4e3899906 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/tvm-exposure-score.md +++ b/windows/security/threat-protection/microsoft-defender-atp/tvm-exposure-score.md @@ -65,14 +65,6 @@ Lower your threat and vulnerability exposure by remediating [security recommenda ## Related topics - [Threat and vulnerability management overview](next-gen-threat-and-vuln-mgt.md) -- [Supported operating systems and platforms](tvm-supported-os.md) -- [Threat and vulnerability management dashboard](tvm-dashboard-insights.md) - [Microsoft Secure Score for Devices](tvm-microsoft-secure-score-devices.md) - [Security recommendations](tvm-security-recommendation.md) -- [Remediation and exception](tvm-remediation.md) -- [Software inventory](tvm-software-inventory.md) -- [Weaknesses](tvm-weaknesses.md) - [Event timeline](threat-and-vuln-mgt-event-timeline.md) -- [Scenarios](threat-and-vuln-mgt-scenarios.md) -- [APIs](next-gen-threat-and-vuln-mgt.md#apis) -- [Configure data access for threat and vulnerability management roles](user-roles.md#create-roles-and-assign-the-role-to-an-azure-active-directory-group) diff --git a/windows/security/threat-protection/microsoft-defender-atp/tvm-hunt-exposed-devices.md b/windows/security/threat-protection/microsoft-defender-atp/tvm-hunt-exposed-devices.md index 77b4642f92..9ed8b6cbca 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/tvm-hunt-exposed-devices.md +++ b/windows/security/threat-protection/microsoft-defender-atp/tvm-hunt-exposed-devices.md @@ -1,5 +1,5 @@ --- -title: Scenarios - threat and vulnerability management +title: Hunt for exposed devices description: Learn how threat and vulnerability management can be used to help security admins, IT admins, and SecOps collaborate. keywords: mdatp-tvm scenarios, mdatp, tvm, tvm scenarios, reduce threat & vulnerability exposure, reduce threat and vulnerability, improve security configuration, increase Microsoft Secure Score for Devices, increase threat & vulnerability Microsoft Secure Score for Devices, Microsoft Secure Score for Devices, exposure score, security controls search.product: eADQiWindows 10XVcnh @@ -19,20 +19,31 @@ ms.collection: ms.topic: article --- -# Scenarios - threat and vulnerability management +# Hunt for exposed devices - threat and vulnerability management [!INCLUDE [Microsoft 365 Defender rebranding](../../includes/microsoft-defender.md)] - **Applies to:** - [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) >Want to experience Microsoft Defender ATP? [Sign up for a free trial.](https://www.microsoft.com/microsoft-365/windows/microsoft-defender-atp?ocid=docs-wdatp-portaloverview-abovefoldlink) -[!include[Prerelease information](../../includes/prerelease.md)] +## Use advanced hunting to find devices with vulnerabilities -## Use advanced hunting query to search for devices with High active alerts or critical CVE public exploit +Advanced hunting is a query-based threat-hunting tool that lets you explore up to 30 days of raw data. You can proactively inspect events in your network to locate threat indicators and entities. The flexible access to data enables unconstrained hunting for both known and potential threats. [Learn more about advanced hunting](advanced-hunting-overview.md) + +### Schema tables + +- [DeviceTvmSoftwareInventoryVulnerabilities](advanced-hunting-devicetvmsoftwareinventoryvulnerabilities-table.md) - Inventory of software on devices as well as any known vulnerabilities in these software products + +- [DeviceTvmSoftwareVulnerabilitiesKB](advanced-hunting-devicetvmsoftwarevulnerabilitieskb-table.md) - Knowledge base of publicly disclosed vulnerabilities, including whether exploit code is publicly available + +- [DeviceTvmSecureConfigurationAssessment](advanced-hunting-devicetvmsecureconfigurationassessment-table.md) - Threat & Vulnerability Management assessment events, indicating the status of various security configurations on devices + +- [DeviceTvmSecureConfigurationAssessmentKB](advanced-hunting-devicetvmsecureconfigurationassessmentkb-table.md) - Knowledge base of various security configurations used by Threat & Vulnerability Management to assess devices; includes mappings to various standards and benchmarks + +## Check which devices are involved in high severity alerts 1. Go to **Advanced hunting** from the left-hand navigation pane of the Microsoft Defender Security Center. @@ -55,50 +66,10 @@ DeviceName=any(DeviceName) by DeviceId, AlertId ``` -## Define a device's value to the organization - -Defining a device’s value helps you differentiate between asset priorities. The device value is used to incorporate the risk appetite of an individual asset into the threat and vulnerability management exposure score calculation. Devices marked as “high value” will receive more weight. - -You can also use the [set device value API](set-device-value.md). - -Device value options: - -- Low -- Normal (Default) -- High - -Examples of devices that should be marked as high value: - -- Domain controllers, Active Directory -- Internet facing devices -- VIP devices -- Devices hosting internal/external production services - -### Set device value - -1. Navigate to any device page, the easiest place is from the device inventory. - -2. Select **Device Value** from three dots next to the actions bar at the top of the page. - ![Example of the device value dropdown.](images/tvm-device-value-dropdown.png) - -

- -3. A flyout will appear with the current device value and what it means. Review the value of the device and choose the one that best fits your device. -![Example of the device value flyout.](images/tvm-device-value-flyout.png) - - ## Related topics - [Threat and vulnerability management overview](next-gen-threat-and-vuln-mgt.md) -- [Supported operating systems and platforms](tvm-supported-os.md) -- [Threat and vulnerability management dashboard](tvm-dashboard-insights.md) -- [Exposure score](tvm-exposure-score.md) -- [Microsoft Secure Score for Devices](tvm-microsoft-secure-score-devices.md) - [Security recommendations](tvm-security-recommendation.md) -- [Remediation and exception](tvm-remediation.md) -- [Software inventory](tvm-software-inventory.md) -- [Weaknesses](tvm-weaknesses.md) -- [Event timeline](threat-and-vuln-mgt-event-timeline.md) - [APIs](next-gen-threat-and-vuln-mgt.md#apis) - [Configure data access for threat and vulnerability management roles](user-roles.md#create-roles-and-assign-the-role-to-an-azure-active-directory-group) - [Advanced hunting overview](overview-hunting.md) diff --git a/windows/security/threat-protection/microsoft-defender-atp/tvm-microsoft-secure-score-devices.md b/windows/security/threat-protection/microsoft-defender-atp/tvm-microsoft-secure-score-devices.md index 59c5598a86..f388e2ec91 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/tvm-microsoft-secure-score-devices.md +++ b/windows/security/threat-protection/microsoft-defender-atp/tvm-microsoft-secure-score-devices.md @@ -1,5 +1,5 @@ --- -title: Overview of Microsoft Secure Score for Devices in Microsoft Defender Security Center +title: Microsoft Secure Score for Devices description: Your score for devices shows the collective security configuration state of your devices across application, operating system, network, accounts, and security controls. keywords: Microsoft Secure Score for Devices, mdatp Microsoft Secure Score for Devices, secure score, configuration score, threat and vulnerability management, security controls, improvement opportunities, security configuration score over time, security posture, baseline search.product: eADQiWindows 10XVcnh @@ -100,13 +100,6 @@ Improve your security configuration by remediating issues from the security reco ## Related topics - [Threat and vulnerability management overview](next-gen-threat-and-vuln-mgt.md) -- [Supported operating systems and platforms](tvm-supported-os.md) -- [Threat and vulnerability management dashboard](tvm-dashboard-insights.md) +- [Dashboard](tvm-dashboard-insights.md) - [Exposure score](tvm-exposure-score.md) - [Security recommendations](tvm-security-recommendation.md) -- [Remediation and exception](tvm-remediation.md) -- [Software inventory](tvm-software-inventory.md) -- [Weaknesses](tvm-weaknesses.md) -- [Scenarios](threat-and-vuln-mgt-scenarios.md) -- [APIs](next-gen-threat-and-vuln-mgt.md#apis) -- [Configure data access for threat and vulnerability management roles](https://docs.microsoft.com/windows/security/threat-protection/microsoft-defender-atp/user-roles#create-roles-and-assign-the-role-to-an-azure-active-directory-group) diff --git a/windows/security/threat-protection/microsoft-defender-atp/tvm-prerequisites.md b/windows/security/threat-protection/microsoft-defender-atp/tvm-prerequisites.md index 04ab0e13f8..437ee5c49d 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/tvm-prerequisites.md +++ b/windows/security/threat-protection/microsoft-defender-atp/tvm-prerequisites.md @@ -1,7 +1,7 @@ --- -title: Threat and vulnerability management -description: This new capability uses a game-changing risk-based approach to the discovery, prioritization, and remediation of endpoint vulnerabilities and misconfigurations. -keywords: threat & vulnerability management, threat and vulnerability management, MDATP TVM, MDATP-TVM, vulnerability management, vulnerability assessment, threat and vulnerability scanning, secure configuration assessment, microsoft defender atp, microsoft defender atp, endpoint vulnerabilities, next generation +title: Prerequisites & permissions - threat and vulnerability management +description: Before you begin using threat and vulnerability management, make sure you have the relevant configurations and permissions. +keywords: threat & vulnerability management permissions prerequisites, threat and vulnerability management permissions prerequisites, MDATP TVM permissions prerequisites, vulnerability management search.product: eADQiWindows 10XVcnh search.appverid: met150 ms.prod: w10 @@ -62,10 +62,12 @@ For more information, see [Create and manage roles for role-based access control - **Threat and vulnerability management - Exception handling** - Create new exceptions and manage active exceptions - **Threat and vulnerability management - Remediation handling** - Submit new remediation requests, create tickets, and manage existing remediation activities -For more information, see [RBAC permission options](user-roles.md##permission-options) +For more information, see [RBAC permission options](user-roles.md#permission-options) -## See also +## Related articles +- [Threat and vulnerability management overview](next-gen-threat-and-vuln-mgt.md) - [Supported operating systems and platforms](tvm-supported-os.md) +- [Assign device value](tvm-assign-device-value.md) - [Threat and vulnerability management dashboard](tvm-dashboard-insights.md) -- [Exposure score](tvm-exposure-score.md) + diff --git a/windows/security/threat-protection/microsoft-defender-atp/tvm-remediation.md b/windows/security/threat-protection/microsoft-defender-atp/tvm-remediation.md index 784f4d7a44..328a47fcfc 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/tvm-remediation.md +++ b/windows/security/threat-protection/microsoft-defender-atp/tvm-remediation.md @@ -22,15 +22,11 @@ ms.topic: conceptual [!INCLUDE [Microsoft 365 Defender rebranding](../../includes/microsoft-defender.md)] - **Applies to:** - [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) >Want to experience Microsoft Defender ATP? [Sign up for a free trial.](https://www.microsoft.com/microsoft-365/windows/microsoft-defender-atp?ocid=docs-wdatp-portaloverview-abovefoldlink) ->[!NOTE] ->To use this capability, enable your Microsoft Intune connections. Navigate to **Settings** > **General** > **Advanced features**. Scroll down and look for **Microsoft Intune connection**. By default, the toggle is turned off. Turn your **Microsoft Intune connection** toggle on. - ## Request remediation The threat and vulnerability management capability in Microsoft Defender ATP bridges the gap between Security and IT administrators through the remediation request workflow. Security admins like you can request for the IT Administrator to remediate a vulnerability from the **Security recommendation** pages to Intune. @@ -43,13 +39,15 @@ See [Use Intune to remediate vulnerabilities identified by Microsoft Defender AT ### Remediation request steps -1. Select a security recommendation you would like to request remediation for, and then select **Remediation options**. +1. Go to the threat and vulnerability management navigation menu in the Microsoft Defender Security Center, and select [**Security recommendations**](tvm-security-recommendation.md). -2. Fill out the form, including what you are requesting remediation for, priority, due date, and optional notes. Select **Submit request**. Submitting a remediation request creates a remediation activity item within threat and vulnerability management, which can be used for monitoring the remediation progress for this recommendation. This will not trigger a remediation or apply any changes to devices. +2. Select a security recommendation you would like to request remediation for, and then select **Remediation options**. -3. Notify your IT Administrator about the new request and have them log into Intune to approve or reject the request and start a package deployment. +3. Fill out the form, including what you are requesting remediation for, priority, due date, and optional notes. Select **Submit request**. Submitting a remediation request creates a remediation activity item within threat and vulnerability management, which can be used for monitoring the remediation progress for this recommendation. This will not trigger a remediation or apply any changes to devices. -4. Go to the [**Remediation**](tvm-remediation.md) page to view the status of your remediation request. +4. Notify your IT Administrator about the new request and have them log into Intune to approve or reject the request and start a package deployment. + +5. Go to the [**Remediation**](tvm-remediation.md) page to view the status of your remediation request. If you want to check how the ticket shows up in Intune, see [Use Intune to remediate vulnerabilities identified by Microsoft Defender ATP](https://docs.microsoft.com/intune/atp-manage-vulnerabilities) for details. @@ -60,16 +58,12 @@ After your organization's cybersecurity weaknesses are identified and mapped to Lower your organization's exposure from vulnerabilities and increase your security configuration by remediating the security recommendations. -## Navigate to the Remediation page +## View your remediation activities -You can access the Remediation page a few different ways: +When you submit a remediation request from the Security recommendations page, it kicks-off a remediation activity. A security task is created that can be tracked in the threat and vulnerability management **Remediation** page, and a remediation ticket is created in Microsoft Intune. -- Threat and vulnerability management navigation menu in the [Microsoft Defender Security Center](portal-overview.md) -- Top remediation activities card in the [threat and vulnerability management dashboard](tvm-dashboard-insights.md) - -### Navigation menu - -Go to the threat and vulnerability management navigation menu and select **Remediation**. It will open the list of remediation activities and exceptions found in your organization. +Once you are in the Remediation page, select the remediation activity that you want to view. You can follow the remediation steps, track progress, view the related recommendation, export to CSV, or mark as complete. +![Example of the Remediation page, with a selected remediation activity, and that activity's flyout listing the description, IT service and device management tools, and device remediation progress.](images/remediation_flyouteolsw.png) ### Top remediation activities in the dashboard @@ -77,25 +71,8 @@ View **Top remediation activities** in the [threat and vulnerability management ![Example of Top remediation activities card with a table that lists top activities that were generated from security recommendations.](images/tvm-remediation-activities-card.png) -## Remediation activities - -When you [submit a remediation request](tvm-security-recommendation.md#request-remediation) from the [Security recommendations page](tvm-security-recommendation.md), it kicks-off a remediation activity. A security task is created that can be tracked in the threat and vulnerability management **Remediation** page, and a remediation ticket is created in Microsoft Intune. - -Once you are in the Remediation page, select the remediation activity that you want to view. You can follow the remediation steps, track progress, view the related recommendation, export to CSV, or mark as complete. -![Example of the Remediation page, with a selected remediation activity, and that activity's flyout listing the description, IT service and device management tools, and device remediation progress.](images/remediation_flyouteolsw.png) - - -## Related topics +## Related articles - [Threat and vulnerability management overview](next-gen-threat-and-vuln-mgt.md) -- [Supported operating systems and platforms](tvm-supported-os.md) -- [Threat and vulnerability management dashboard](tvm-dashboard-insights.md) -- [Exposure score](tvm-exposure-score.md) -- [Microsoft Secure Score for Devices](tvm-microsoft-secure-score-devices.md) -- [Security recommendations](tvm-security-recommendation.md) -- [Software inventory](tvm-software-inventory.md) -- [Weaknesses](tvm-weaknesses.md) -- [Event timeline](threat-and-vuln-mgt-event-timeline.md) -- [Scenarios](threat-and-vuln-mgt-scenarios.md) -- [APIs](next-gen-threat-and-vuln-mgt.md#apis) -- [Configure data access for threat and vulnerability management roles](user-roles.md#create-roles-and-assign-the-role-to-an-azure-active-directory-group) +- [Dashboard](tvm-dashboard-insights.md) +- [Security recommendations](tvm-security-recommendation.md) \ No newline at end of file diff --git a/windows/security/threat-protection/microsoft-defender-atp/tvm-security-recommendation.md b/windows/security/threat-protection/microsoft-defender-atp/tvm-security-recommendation.md index 4fa0f5695a..a59b92154b 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/tvm-security-recommendation.md +++ b/windows/security/threat-protection/microsoft-defender-atp/tvm-security-recommendation.md @@ -22,10 +22,10 @@ ms.topic: conceptual [!INCLUDE [Microsoft 365 Defender rebranding](../../includes/microsoft-defender.md)] - **Applies to:** - [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) +- [Threat and vulnerability management](next-gen-threat-and-vuln-mgt.md) >Want to experience Microsoft Defender ATP? [Sign up for a free trial.](https://www.microsoft.com/microsoft-365/windows/microsoft-defender-atp?ocid=docs-wdatp-portaloverview-abovefoldlink) @@ -79,7 +79,7 @@ The color of the **Exposed devices** graph changes as the trend changes. If the ### Icons -Useful icons also quickly call your attention to: +Useful icons also quickly call your attention to: - ![arrow hitting a target](images/tvm_alert_icon.png) possible active alerts - ![red bug](images/tvm_bug_icon.png) associated public exploits - ![light bulb](images/tvm_insight_icon.png) recommendation insights @@ -94,16 +94,16 @@ From the flyout, you can choose any of the following options: - **Open software page** - Open the software page to get more context on the software and how it's distributed. The information can include threat context, associated recommendations, weaknesses discovered, number of exposed devices, discovered vulnerabilities, names and detailed of devices with the software installed, and version distribution. -- [**Remediation options**](tvm-security-recommendation.md#request-remediation) - Submit a remediation request to open a ticket in Microsoft Intune for your IT Administrator to pick up and address. +- [**Remediation options**](tvm-remediation.md) - Submit a remediation request to open a ticket in Microsoft Intune for your IT Administrator to pick up and address. -- [**Exception options**](tvm-security-recommendation.md#file-for-exception) - Submit an exception, provide justification, and set exception duration if you can't remediate the issue yet. +- [**Exception options**](tvm-exception.md) - Submit an exception, provide justification, and set exception duration if you can't remediate the issue yet. >[!NOTE] >When a change is made on a device, it typically takes two hours for the data to be reflected in the Microsoft Defender Security Center. However, it may sometimes take longer. -### Investigate changes in machine exposure or impact +### Investigate changes in device exposure or impact -If there is a large jump in the number of exposed machines, or a sharp increase in the impact on your organization exposure score and configuration score, then that security recommendation is worth investigating. +If there is a large jump in the number of exposed devices, or a sharp increase in the impact on your organization exposure score and configuration score, then that security recommendation is worth investigating. 1. Select the recommendation and **Open software page** 2. Select the **Event timeline** tab to view all the impactful events related to that software, such as new vulnerabilities or new public exploits. [Learn more about event timeline](threat-and-vuln-mgt-event-timeline.md) @@ -123,17 +123,12 @@ You can report a false positive when you see any vague, inaccurate, incomplete, 4. Select **Submit**. Your feedback is immediately sent to the threat and vulnerability management experts. -## Related topics +## Related articles - [Threat and vulnerability management overview](next-gen-threat-and-vuln-mgt.md) -- [Supported operating systems and platforms](tvm-supported-os.md) -- [Threat and vulnerability management dashboard](tvm-dashboard-insights.md) +- [Dashboard](tvm-dashboard-insights.md) - [Exposure score](tvm-exposure-score.md) - [Microsoft Secure Score for Devices](tvm-microsoft-secure-score-devices.md) -- [Remediation and exception](tvm-remediation.md) -- [Software inventory](tvm-software-inventory.md) -- [Weaknesses](tvm-weaknesses.md) +- [Remediate vulnerabilities](tvm-remediation.md) +- [Create and view exceptions for security recommendations](tvm-exceptions.md) - [Event timeline](threat-and-vuln-mgt-event-timeline.md) -- [Scenarios](threat-and-vuln-mgt-scenarios.md) -- [APIs](next-gen-threat-and-vuln-mgt.md#apis) -- [Configure data access for threat and vulnerability management roles](user-roles.md#create-roles-and-assign-the-role-to-an-azure-active-directory-group) diff --git a/windows/security/threat-protection/microsoft-defender-atp/tvm-software-inventory.md b/windows/security/threat-protection/microsoft-defender-atp/tvm-software-inventory.md index 03f4ad48e6..d34335654a 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/tvm-software-inventory.md +++ b/windows/security/threat-protection/microsoft-defender-atp/tvm-software-inventory.md @@ -22,7 +22,6 @@ ms.topic: conceptual [!INCLUDE [Microsoft 365 Defender rebranding](../../includes/microsoft-defender.md)] - **Applies to:** - [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://go.microsoft.com/fwlink/p/?linkid=2069559) - [Threat and vulnerability management](next-gen-threat-and-vuln-mgt.md) @@ -86,7 +85,7 @@ Report a false positive when you see any vague, inaccurate, or incomplete inform 3. From the flyout pane, select the inaccuracy category from the drop-down menu, fill in your email address, and details about the inaccuracy. 4. Select **Submit**. Your feedback is immediately sent to the threat and vulnerability management experts. -## Related topics +## Related articles - [Threat and vulnerability management overview](next-gen-threat-and-vuln-mgt.md) - [Security recommendations](tvm-security-recommendation.md) diff --git a/windows/security/threat-protection/microsoft-defender-atp/tvm-supported-os.md b/windows/security/threat-protection/microsoft-defender-atp/tvm-supported-os.md index e533863d57..8802d9cf10 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/tvm-supported-os.md +++ b/windows/security/threat-protection/microsoft-defender-atp/tvm-supported-os.md @@ -1,6 +1,6 @@ --- title: Supported operating systems and platforms for threat and vulnerability management -description: Before you begin, ensure that you meet the operating system or platform requisites for threat and vulnerability management so the activities in your all devices are properly accounted for. +description: Ensure that you meet the operating system or platform requisites for threat and vulnerability management, so the activities in your all devices are properly accounted for. keywords: threat & vulnerability management, threat and vulnerability management, operating system, platform requirements, prerequisites, mdatp-tvm supported os, mdatp-tvm, search.appverid: met150 search.product: eADQiWindows 10XVcnh @@ -48,7 +48,7 @@ Windows Server 2019 | Operating System (OS) vulnerabilities
Software product macOS 10.13 "High Sierra" and above | Operating System (OS) vulnerabilities
Software product vulnerabilities Linux | Not supported (planned) -## Related topics +## Related articles - [Threat and vulnerability management overview](next-gen-threat-and-vuln-mgt.md) - [Prerequisites & permissions](tvm-prerequisites.md) diff --git a/windows/security/threat-protection/microsoft-defender-atp/tvm-weaknesses.md b/windows/security/threat-protection/microsoft-defender-atp/tvm-weaknesses.md index b2b0021f69..ae152f9f21 100644 --- a/windows/security/threat-protection/microsoft-defender-atp/tvm-weaknesses.md +++ b/windows/security/threat-protection/microsoft-defender-atp/tvm-weaknesses.md @@ -70,7 +70,7 @@ Remediate the vulnerabilities in exposed devices to reduce the risk to your asse ### Breach and threat insights -View related breach and threat insights in the **Threat** column when the icons are colored red. +View any related breach and threat insights in the **Threat** column when the icons are colored red. >[!NOTE] > Always prioritize recommendations that are associated with ongoing threats. These recommendations are marked with the threat insight icon ![Simple drawing of a red bug.](images/tvm_bug_icon.png) and breach insight icon ![Simple drawing of an arrow hitting a target.](images/tvm_alert_icon.png). @@ -78,13 +78,13 @@ View related breach and threat insights in the **Threat** column when the icons The breach insights icon is highlighted if there's a vulnerability found in your organization. ![Example of a breach insights text that could show up when hovering over icon. This one says "possible active alert is associated with this recommendation.](images/tvm-breach-insights.png) -The threat insights icon is highlighted if there are associated exploits in the vulnerability found in your organization. Hovering over the icon shows whether the threat is a part of an exploit kit, or connected to specific advanced persistent campaigns or activity groups. When available, there is a link to a Threat Analytics report with zero-day exploitation news, disclosures, or related security advisories. +The threat insights icon is highlighted if there are associated exploits in the vulnerability found in your organization. Hovering over the icon shows whether the threat is a part of an exploit kit, or connected to specific advanced persistent campaigns or activity groups. When available, there's a link to a Threat Analytics report with zero-day exploitation news, disclosures, or related security advisories. ![Threat insights text that that could show up when hovering over icon. This one has multiple bullet points and linked text.](images/tvm-threat-insights.png) ### Gain vulnerability insights -If you select a CVE, a flyout panel will open with more information, including the vulnerability description, details, threat insights, and exposed devices. +If you select a CVE, a flyout panel will open with more information such as the vulnerability description, details, threat insights, and exposed devices. The "OS Feature" category is shown in relevant scenarios. @@ -137,7 +137,7 @@ Report a false positive when you see any vague, inaccurate, or incomplete inform 3. Select the inaccuracy category from the drop-down menu and fill in your email address and inaccuracy details. 4. Select **Submit**. Your feedback is immediately sent to the threat and vulnerability management experts. -## Related topics +## Related articles - [Threat and vulnerability management overview](next-gen-threat-and-vuln-mgt.md) - [Security recommendations](tvm-security-recommendation.md) From 470c7b461c81f52a684493ae589c090f9a3193d9 Mon Sep 17 00:00:00 2001 From: VARADHARAJAN K <3296790+RAJU2529@users.noreply.github.com> Date: Sat, 17 Oct 2020 16:54:30 +0530 Subject: [PATCH 32/50] Update windows/security/threat-protection/index.md accepted Co-authored-by: Trond B. Krokli <38162891+illfated@users.noreply.github.com> --- windows/security/threat-protection/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/security/threat-protection/index.md b/windows/security/threat-protection/index.md index 3763417926..5873b326d0 100644 --- a/windows/security/threat-protection/index.md +++ b/windows/security/threat-protection/index.md @@ -19,7 +19,7 @@ ms.topic: conceptual # Threat Protection [Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP)](https://docs.microsoft.com/windows/security/threat-protection/microsoft-defender-atp/microsoft-defender-advanced-threat-protection) is a unified platform for preventative protection, post-breach detection, automated investigation, and response. Microsoft Defender ATP protects endpoints from cyber threats; detects advanced attacks and data breaches, automates security incidents and improves security posture. ->[!TIP] +> [!TIP] > Enable your users to access cloud services and on-premises applications with ease and enable modern management capabilities for all devices. For more information, see [Secure your remote workforce](https://docs.microsoft.com/enterprise-mobility-security/remote-work/).

Microsoft Defender ATP

From d73e0a401052b2abd11f49532e9a37d76f33dbc5 Mon Sep 17 00:00:00 2001 From: VARADHARAJAN K <3296790+RAJU2529@users.noreply.github.com> Date: Sat, 17 Oct 2020 19:59:34 +0530 Subject: [PATCH 33/50] added simplifying deployment of SSU link as per the user feedback #8478, so i added a simplifying-on-premises-deployment-of-SSU link. --- windows/deployment/update/servicing-stack-updates.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/windows/deployment/update/servicing-stack-updates.md b/windows/deployment/update/servicing-stack-updates.md index 49d29f4d8a..3ad8432738 100644 --- a/windows/deployment/update/servicing-stack-updates.md +++ b/windows/deployment/update/servicing-stack-updates.md @@ -28,6 +28,8 @@ Servicing stack updates provide fixes to the servicing stack, the component that Servicing stack updates improve the reliability of the update process to mitigate potential issues while installing the latest quality updates and feature updates. If you don't install the latest servicing stack update, there's a risk that your device can't be updated with the latest Microsoft security fixes. +See this [Simplifing Deployment of Servicing Stack Updates](https://techcommunity.microsoft.com/t5/windows-it-pro-blog/simplifying-on-premises-deployment-of-servicing-stack-updates/ba-p/1646039) + ## When are they released? Servicing stack update are released depending on new issues or vulnerabilities. In rare occasions a servicing stack update may need to be released on demand to address an issue impacting systems installing the monthly security update. Starting in November 2018 new servicing stack updates will be classified as "Security" with a severity rating of "Critical." From 6c90d2ae9c752f696655ced332343b29b4f42b18 Mon Sep 17 00:00:00 2001 From: ImranHabib <47118050+joinimran@users.noreply.github.com> Date: Mon, 19 Oct 2020 17:18:02 +0500 Subject: [PATCH 34/50] Correction in Syntax As mentioned by the user, * was missing the statement. Problem: https://github.com/MicrosoftDocs/windows-itpro-docs/issues/8211 --- windows/client-management/mdm/firewall-csp.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/windows/client-management/mdm/firewall-csp.md b/windows/client-management/mdm/firewall-csp.md index 1fae08c646..64c5a2f5d7 100644 --- a/windows/client-management/mdm/firewall-csp.md +++ b/windows/client-management/mdm/firewall-csp.md @@ -248,9 +248,9 @@ Sample syncxml to provision the firewall settings to evaluate

Value type is string. Supported operations are Add, Get, Replace, and Delete.

**FirewallRules/*FirewallRuleName*/LocalAddressRanges** -

Comma separated list of local addresses covered by the rule. The default value is "". Valid tokens include:

+

Comma separated list of local addresses covered by the rule. The default value is "*". Valid tokens include: