Merge branch 'master' of https://github.com/Azure/Azure-Sentinel into feature/t-shfeli/AddKindToSolutionsAndDetections

This commit is contained in:
ShaniFelig 2021-10-24 15:36:22 +03:00
Родитель 8431708fd0 12122ea11a
Коммит 1e43960ff2
204 изменённых файлов: 21225 добавлений и 562 удалений

Просмотреть файл

@ -0,0 +1,197 @@
{
"Name": "CoreAzureBackup",
"Properties": [
{
"Name": "AgentVersion",
"Type": "String"
},
{
"Name": "AzureBackupAgentVersion",
"Type": "string"
},
{
"Name": "AzureDataCenter",
"Type": "String"
},
{
"Name": "BackupItemAppVersion",
"Type": "String"
},
{
"Name": "BackupItemFriendlyName",
"Type": "String"
},
{
"Name": "BackupItemFrontEndSize",
"Type": "real"
},
{
"Name": "BackupItemName",
"Type": "String"
},
{
"Name": "BackupItemProtectionState",
"Type": "String"
},
{
"Name": "BackupItemType",
"Type": "String"
},
{
"Name": "BackupItemUniqueId",
"Type": "String"
},
{
"Name": "BackupManagementServerName",
"Type": "String"
},
{
"Name": "BackupManagementServerOSVersion",
"Type": "String"
},
{
"Name": "BackupManagementServerType",
"Type": "String"
},
{
"Name": "BackupManagementServerUniqueId",
"Type": "String"
},
{
"Name": "BackupManagementServerVersion",
"Type": "String"
},
{
"Name": "BackupManagementType",
"Type": "String"
},
{
"Name": "Category",
"Type": "String"
},
{
"Name": "LatestRecoveryPointLocation",
"Type": "String"
},
{
"Name": "LatestRecoveryPointTime",
"Type": "datetime"
},
{
"Name": "OldestRecoveryPointLocation",
"Type": "String"
},
{
"Name": "OldestRecoveryPointTime",
"Type": "datetime"
},
{
"Name": "OperationName",
"Type": "String"
},
{
"Name": "PolicyUniqueId",
"Type": "String"
},
{
"Name": "ProtectedContainerFriendlyName",
"Type": "String"
},
{
"Name": "ProtectedContainerLocation",
"Type": "String"
},
{
"Name": "ProtectedContainerName",
"Type": "String"
},
{
"Name": "ProtectedContainerOSType",
"Type": "String"
},
{
"Name": "ProtectedContainerOSVersion",
"Type": "String"
},
{
"Name": "ProtectedContainerProtectionState",
"Type": "String"
},
{
"Name": "ProtectedContainerType",
"Type": "string"
},
{
"Name": "ProtectedContainerUniqueId",
"Type": "String"
},
{
"Name": "ProtectedContainerWorkloadType",
"Type": "String"
},
{
"Name": "ProtectionGroupName",
"Type": "String"
},
{
"Name": "ResourceGroupName",
"Type": "String"
},
{
"Name": "ResourceId",
"Type": "String"
},
{
"Name": "_ResourceId",
"Type": "String"
},
{
"Name": "SchemaVersion",
"Type": "string"
},
{
"Name": "SecondaryBackupProtectionState",
"Type": "String"
},
{
"Name": "SourceSystem",
"Type": "String"
},
{
"Name": "State",
"Type": "String"
},
{
"Name": "StorageReplicationType",
"Type": "String"
},
{
"Name": "SubscriptionId",
"Type": "String"
},
{
"Name": "_SubscriptionId",
"Type": "String"
},
{
"Name": "TimeGenerated",
"Type": "datetime"
},
{
"Name": "Type",
"Type": "String"
},
{
"Name": "VaultName",
"Type": "String"
},
{
"Name": "VaultTags",
"Type": "String"
},
{
"Name": "VaultUniqueId",
"Type": "String"
}
]
}

Просмотреть файл

@ -1,7 +1,10 @@
id: acfdee3f-b794-404a-aeba-ef6a1fa08ad1
name: Azure DevOps Agent Pool Created Then Deleted
description: |
'As well as adding build agents to an existing pool to execute malicious activity within a pipeline an attacker could create a complete new agent pool and use this for execution. Azure DevOps allows for the creation of agent pools with Azure hosted infrastructure or self-hosted infrastructure. Given the additional customizability of self-hosted agents this detection focuses on the creation of new self-hosted pools. To further reduce false positive rates the detection looks for pools created and deleted relatively quickly (within 7 days by default), as an attacker is likely to remove a malicious pool once used in order to reduce/remove evidence of their activity.'
'As well as adding build agents to an existing pool to execute malicious activity within a pipeline, an attacker could create a complete new agent pool and use this for execution.
Azure DevOps allows for the creation of agent pools with Azure hosted infrastructure or self-hosted infrastructure. Given the additional customizability of self-hosted agents this
detection focuses on the creation of new self-hosted pools. To further reduce false positive rates the detection looks for pools created and deleted relatively quickly (within 7 days by default),
as an attacker is likely to remove a malicious pool once used in order to reduce/remove evidence of their activity.'
severity: High
requiredDataConnectors: []
queryFrequency: 7d
@ -45,5 +48,5 @@ entityMappings:
fieldMappings:
- identifier: Address
columnName: IPCustomEntity
version: 1.0.0
version: 1.0.1
kind: Scheduled

Просмотреть файл

@ -1,7 +1,9 @@
id: 4e8238bd-ff4f-4126-a9f6-09b3b6801b3d
name: Azure DevOps Audit Stream Disabled
description: |
'Azure DevOps allow for audit logs to streamed to external storage solutions such as SIEM solutions. An attacker looking to hide malicious Azure DevOps activity from defenders may look to disable data streams before conducting activity and them re-enabling them after (so as not to raise data threshold-based alarms). Looking for disabled audit streams can identify this activity, and due to the nature of the action its unlikely to have a high false positive rate.'
'Azure DevOps allow for audit logs to be streamed to external storage solutions such as SIEM solutions. An attacker looking to hide malicious Azure DevOps activity from defenders may look to disable data streams
before conducting activity and then re-enabling the stream after (so as not to raise data threshold-based alarms). Looking for disabled audit streams can identify this activity, and due to the nature of the action
its unlikely to have a high false positive rate.'
severity: High
requiredDataConnectors: []
queryFrequency: 1d
@ -27,5 +29,5 @@ entityMappings:
fieldMappings:
- identifier: Address
columnName: IPCustomEntity
version: 1.0.0
version: 1.0.1
kind: Scheduled

Просмотреть файл

@ -1,7 +1,8 @@
id: bf07ca9c-e408-443a-8939-6860a45a929e
name: Azure DevOps - New Extension Added
name: Azure DevOps New Extension Added
description: |
'Extensions added additional features to Azure DevOps. An attacker could use a malicious extension to conduct malicious activity. This query looks for new extensions that are not from a configurable list of approved publishers.'
'Extensions add additional features to Azure DevOps. An attacker could use a malicious extension to conduct malicious activity.
This query looks for new extensions that are not from a configurable list of approved publishers.'
severity: Low
requiredDataConnectors: []
queryFrequency: 1d
@ -30,5 +31,5 @@ entityMappings:
fieldMappings:
- identifier: Address
columnName: IPCustomEntity
version: 1.0.0
version: 1.0.1
kind: Scheduled

Просмотреть файл

@ -1,7 +1,9 @@
id: 5f0d80db-3415-4265-9d52-8466b7372e3a
name: Azure DevOps - PAT used with Browser.
name: Azure DevOps PAT used with Browser.
description: |
'Personal Access Tokens (PATs) are used as an alternate password to authenticate into Azure DevOps. PATs are intended for programmatic access for use in code or applications. Given this they can be prone to attacker theft if not adequately secured. This queries looks for the use of a PAT in authentication but from a User Agent indicating a browser. This should not be normal activity and could be an indicator of an attacker using a stolen PAT.'
'Personal Access Tokens (PATs) are used as an alternate password to authenticate into Azure DevOps. PATs are intended for programmatic access use in code or applications.
This can be prone to attacker theft if not adequately secured. This query looks for the use of a PAT in authentication but from a User Agent indicating a browser.
This should not be normal activity and could be an indicator of an attacker using a stolen PAT.'
severity: Medium
requiredDataConnectors: []
queryFrequency: 1d
@ -27,5 +29,5 @@ entityMappings:
fieldMappings:
- identifier: Address
columnName: IPCustomEntity
version: 1.0.0
version: 1.0.1
kind: Scheduled

Просмотреть файл

@ -1,7 +1,9 @@
id: 155e9134-d5ad-4a6f-88f3-99c220040b66
name: Azure DevOps Pipleine modified by a New User.
name: Azure DevOps Pipeline modified by a new user.
description: |
'There are several potential pipeline steps that could be modified by an attacker to inject malicious code into the build cycle. A likely attacker path is the modification to an existing pipeline that they have access to. This detection looks for users modifying a pipeline when they have not previously been observed modifying or creating that pipeline before. This query also joins events with data to Azure AD Identity Protection (AAD IdP) in order to show if the user conducting the action has any associated AAD IdP alerts, you can also chose to filter this detection to only alert when the user also has AAD IdP alerts associated with them.'
'There are several potential pipeline steps that could be modified by an attacker to inject malicious code into the build cycle. A likely attacker path is the modification to an existing pipeline that they have access to.
This detection looks for users modifying a pipeline when they have not previously been observed modifying or creating that pipeline before. This query also joins events with data to Azure AD Identity Protection (AAD IdP)
in order to show if the user conducting the action has any associated AAD IdP alerts. You can also choose to filter this detection to only alert when the user also has AAD IdP alerts associated with them.'
severity: Medium
requiredDataConnectors: []
queryFrequency: 1d
@ -54,5 +56,5 @@ entityMappings:
fieldMappings:
- identifier: Address
columnName: IPCustomEntity
version: 1.0.0
version: 1.0.1
kind: Scheduled

Просмотреть файл

@ -1,7 +1,7 @@
id: 71d374e0-1cf8-4e50-aecd-ab6c519795c2
name: Azure DevOps - Retention Reduced to Zero
name: Azure DevOps Retention Reduced to Zero
description: |
'AzureDevOps retains items such as run records and produced artifacts for a configurable amount of time. An attacker looking to reduce the footprint left by their malicious activity may look to reduce the retention time for artifacts and runs to 0.'
'AzureDevOps retains items such as run records and produced artifacts for a configurable amount of time. An attacker looking to reduce the footprint left by their malicious activity may look to reduce the retention time for artifacts and runs to 0.'
severity: Low
requiredDataConnectors: []
queryFrequency: 1d
@ -28,5 +28,5 @@ entityMappings:
fieldMappings:
- identifier: Address
columnName: IPCustomEntity
version: 1.0.0
version: 1.0.1
kind: Scheduled

Просмотреть файл

@ -1,7 +1,8 @@
id: 4ca74dc0-8352-4ac5-893c-73571cc78331
name: Azure DevOps - Variable Secret Not Secured
name: Azure DevOps Variable Secret Not Secured
description: |
'Credentials used in the build process may be stored as Azure DevOps variables. To secure these variables they should be stored in KeyVault or marked as secrets. This detection looks for new variables added with names that suggest they are credentials but where they are not set as Secrets or stored in KeyVault.'
'Credentials used in the build process may be stored as Azure DevOps variables. To secure these variables they should be stored in KeyVault or marked as Secrets.
This detection looks for new variables added with names that suggest they are credentials but where they are not set as Secrets or stored in KeyVault.'
severity: Medium
requiredDataConnectors: []
queryFrequency: 1d
@ -33,5 +34,5 @@ entityMappings:
fieldMappings:
- identifier: Address
columnName: IPCustomEntity
version: 1.0.0
version: 1.0.1
kind: Scheduled

Просмотреть файл

@ -1,7 +1,10 @@
id: 3b9a44d7-c651-45ed-816c-eae583a6f2f1
name: ADO Build Variable Modified by New User.
name: Azure DevOps Build Variable Modified by New User.
description: |
'Variables can be configured and used at any stage of the build process in Azure DevOps to inject values. An attacker with the required permissions could modify or add to these variables to conduct malicious activity such as changing paths or remote endpoints called during the build. As variables are often changed by users just detecting these changes would have a high false positive rate. This detection looks for modifications to variable groups where that user has not been observed modifying them before.'
'Variables can be configured and used at any stage of the build process in Azure DevOps to inject values. An attacker with the required permissions could modify
or add to these variables to conduct malicious activity such as changing paths or remote endpoints called during the build. As variables are often changed by users,
just detecting these changes would have a high false positive rate. This detection looks for modifications to variable groups where that user has not been observed
modifying them before.'
severity: Medium
requiredDataConnectors: []
queryFrequency: 1d
@ -42,5 +45,5 @@ entityMappings:
fieldMappings:
- identifier: Address
columnName: IPCustomEntity
version: 1.0.0
version: 1.0.1
kind: Scheduled

Просмотреть файл

@ -1,7 +1,7 @@
id: 89e6adbd-612c-4fbe-bc3d-32f81baf3b6c
name: Azure DevOps Administrator Group Monitoring
description: |
'This detection monitors for additions to project or project collection administration groups in an Azure DevOps Organization.'
'This detection monitors for additions to projects or project collection administration groups in an Azure DevOps Organization.'
severity: Medium
requiredDataConnectors: []
queryFrequency: 4h
@ -38,5 +38,5 @@ entityMappings:
fieldMappings:
- identifier: Address
columnName: IPCustomEntity
version: 1.0.0
version: 1.0.1
kind: Scheduled

Просмотреть файл

@ -1,7 +1,7 @@
id: 4d8de9e6-263e-4845-8618-cd23a4f58b70
name: Azure DevOps Pull Request Policy Bypassing - Historic Allowlist
name: Azure DevOps Pull Request Policy Bypassing - Historic allow list
description: |
'This detection builds a Allowlist of historic PR policy bypasses and compares to recent history, flagging a non manually allowlisted, non historic pull request bypass.'
'This detection builds an allow list of historic PR policy bypasses and compares to recent history, flagging pull request bypasses that are not manually in the allow list and not historically included in the allow list.'
severity: Medium
requiredDataConnectors: []
queryFrequency: 3h
@ -39,5 +39,5 @@ entityMappings:
fieldMappings:
- identifier: Address
columnName: IPCustomEntity
version: 1.0.0
version: 1.0.1
kind: Scheduled

Просмотреть файл

@ -1,8 +1,8 @@
id: 5efb0cfd-063d-417a-803b-562eae5b0301
name: Azure DevOps Service Conection Addition/Abuse - Historic Allowlist
name: Azure DevOps Service Connection Addition/Abuse - Historic allow list
description: |
'This detection builds a allowlist of historic service connection use by Builds and Releases and compares to recent history, flagging growth of service connection use in non manually allowlisted, non historically allowlisted Build/Release runs.
This is to determine if someone is hijacking a build/release and adding many service connections in order to abuse or dump credentials from service connections.'
'This detection builds an allow list of historic service connection use by Builds and Releases and compares to recent history, flagging growth of service connection use which are not manually included in the allow list and
not historically included in the allow list Build/Release runs. This is to determine if someone is hijacking a build/release and adding many service connections in order to abuse or dump credentials from service connections.'
severity: Medium
requiredDataConnectors: []
queryFrequency: 6h
@ -58,5 +58,5 @@ entityMappings:
fieldMappings:
- identifier: FullName
columnName: AccountCustomEntity
version: 1.0.0
version: 1.0.1
kind: Scheduled

Просмотреть файл

@ -1,7 +1,7 @@
id: ac891683-53c3-4f86-86b4-c361708e2b2b
name: Azure DevOps Personal Access Token (PAT) misuse
description: |
'This Alert detects whenever a PAT is used in ways that PATs are not normally used. May require Allowlisting and baselining.
'This Alert detects whenever a PAT is used in ways that PATs are not normally used. May require an allow list and baselining.
Reference - https://docs.microsoft.com/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops&tabs=preview-page
Use this query for baselining:
AzureDevOpsAuditing
@ -41,5 +41,5 @@ entityMappings:
fieldMappings:
- identifier: Address
columnName: IPCustomEntity
version: 1.0.0
version: 1.0.1
kind: Scheduled

Просмотреть файл

@ -1,7 +1,7 @@
id: d564ff12-8f53-41b8-8649-44f76b37b99f
name: Azure DevOps Service Conection Abuse
name: Azure DevOps Service Connection Abuse
description: |
'Flags builds/releases that use a large number of service connections if they aren't manually allowlisted.
'Flags builds/releases that use a large number of service connections if they aren't manually in the allow list.
This is to determine if someone is hijacking a build/release and adding many service connections in order to abuse
or dump credentials from service connections.'
severity: Medium
@ -38,5 +38,5 @@ query: |
Type == "Build", strcat('https://dev.azure.com/', OrganizationName, '/', ProjectName, '/_build?definitionId=', DefId),
strcat('https://dev.azure.com/', OrganizationName, '/', ProjectName, '/_release?_a=releases&view=mine&definitionId=', DefId))
| extend timestamp = StartTime
version: 1.0.0
version: 1.0.1
kind: Scheduled

Просмотреть файл

@ -1,7 +1,8 @@
id: adc32a33-1cd6-46f5-8801-e3ed8337885f
name: External Upstream Source Added to Azure DevOps Feed
description: |
'The detection looks for new external sources added to an Azure DevOps feed. An allow list can be customized to explicitly allow known good sources. An attacker could look to add a malicious feed in order to inject malicious packages into a build pipeline.'
'The detection looks for new external sources added to an Azure DevOps feed. An allow list can be customized to explicitly allow known good sources.
An attacker could look to add a malicious feed in order to inject malicious packages into a build pipeline.'
severity: Medium
requiredDataConnectors: []
queryFrequency: 1d
@ -44,5 +45,5 @@ entityMappings:
fieldMappings:
- identifier: Address
columnName: IPCustomEntity
version: 1.0.0
version: 1.0.1
kind: Scheduled

Просмотреть файл

@ -1,7 +1,10 @@
id: 4ce177b3-56b1-4f0e-b83e-27eed4cb0b16
name: New Agent Added to Pool by New User or of a New OS Type.
name: New Agent Added to Pool by New User or Added to a New OS Type.
description: |
'As seen in attacks such as SolarWinds attackers can look to subvert a build process by controlling build servers. Azure DevOps uses agent pools to execute pipeline tasks. An attacker could insert compromised agents that they control into the pools in order to execute malicious code. This query looks for users adding agents to pools they have not added agents to before, or adding agents to a pool of an OS that has not been added to that pool before. This detection has potential for false positives so has a configurable allow list to allow for certain users to be excluded from the logic.'
'As seen in attacks such as SolarWinds attackers can look to subvert a build process by controlling build servers. Azure DevOps uses agent pools to execute pipeline tasks.
An attacker could insert compromised agents that they control into the pools in order to execute malicious code. This query looks for users adding agents to pools they have
not added agents to before, or adding agents to a pool of an OS that has not been added to that pool before. This detection has potential for false positives so has a
configurable allow list to allow for certain users to be excluded from the logic.'
severity: Medium
requiredDataConnectors: []
queryFrequency: 1d
@ -61,5 +64,5 @@ entityMappings:
fieldMappings:
- identifier: Address
columnName: IPCustomEntity
version: 1.0.0
version: 1.0.1
kind: Scheduled

Просмотреть файл

@ -1,7 +1,10 @@
id: 35ce9aff-1708-45b8-a295-5e9a307f5f17
name: New PA, PCA, or PCAS added to Azure DevOps
description: |
'In order for an attacker to be able to conduct many potential attacks against Azure DevOps they will need to gain elevated permissions. This detection looks for users being granted key administrative permissions. If the principal of least privilege is applied the number of users granted these permissions should be small. Note that permissions can also be granted via Azure AD groups and monitoring of these should also be conducted.'
'In order for an attacker to be able to conduct many potential attacks against Azure DevOps they will need to gain elevated permissions.
This detection looks for users being granted key administrative permissions. If the principal of least privilege is applied, the number of
users granted these permissions should be small. Note that permissions can also be granted via Azure AD groups and monitoring of these
should also be conducted.'
severity: Medium
requiredDataConnectors: []
queryFrequency: 1d
@ -39,5 +42,5 @@ entityMappings:
fieldMappings:
- identifier: Address
columnName: IPCustomEntity
version: 1.0.0
version: 1.0.1
kind: Scheduled

Просмотреть файл

@ -1,7 +1,8 @@
id: 500c103a-0319-4d56-8e99-3cec8d860757
name: Sign-ins from IPs that attempt sign-ins to disabled accounts
description: |
'Identifies IPs with failed attempts to sign in to one or more disabled accounts signed in successfully to another account.
'Identifies IPs with failed attempts to sign in to one or more disabled accounts and where that same IP has had successful signins from other accounts.
This could indicate an attacker who obtained credentials for a list of accounts and is attempting to login with those accounts, some of which may have already been disabled.
References: https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-sign-ins-error-codes
50057 - User account is disabled. The account has been disabled by an administrator.'
severity: Medium
@ -29,14 +30,14 @@ query: |
| where ResultType == "50057"
| where ResultDescription == "User account is disabled. The account has been disabled by an administrator."
| summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), disabledAccountLoginAttempts = count(),
disabledAccountsTargeted = dcount(UserPrincipalName), applicationsTargeted = dcount(AppDisplayName), disabledAccountSet = makeset(UserPrincipalName),
applicationSet = makeset(AppDisplayName) by IPAddress, Type
disabledAccountsTargeted = dcount(UserPrincipalName), applicationsTargeted = dcount(AppDisplayName), disabledAccountSet = make_set(UserPrincipalName),
applicationSet = make_set(AppDisplayName) by IPAddress, Type
| order by disabledAccountLoginAttempts desc
| join kind= leftouter (
// Consider these IPs suspicious - and alert any related successful sign-ins
SigninLogs
table(tableName)
| where ResultType == 0
| summarize successfulAccountSigninCount = dcount(UserPrincipalName), successfulAccountSigninSet = makeset(UserPrincipalName, 15) by IPAddress, Type
| summarize successfulAccountSigninCount = dcount(UserPrincipalName), successfulAccountSigninSet = make_set(UserPrincipalName, 15) by IPAddress, Type
// Assume IPs associated with sign-ins from 100+ distinct user accounts are safe
| where successfulAccountSigninCount < 100
) on IPAddress
@ -55,5 +56,5 @@ entityMappings:
fieldMappings:
- identifier: Address
columnName: IPCustomEntity
version: 1.0.0
kind: Scheduled
version: 1.1.0
kind: Scheduled

Просмотреть файл

@ -17,44 +17,66 @@ Tactics:
- LateralMovement
- Collection
query: |
let SuccessfulLoginEventId = 4624;
let FailedLoginEventId = 4625;
let MostFailedLogins = (v_Account_Name:string, v_Account_NTDomain:string, v_Account_UPNSuffix:string){
SecurityEvent
| extend p_Account_Name = case(
// Handles mixed use scenario of NTDomain\AccountName@UPNSuffix
v_Account_Name has '@' and v_Account_Name has '\\', tostring(split(tostring(split(v_Account_Name, '\\')[1]),'@')[0]),
v_Account_Name has '@', tostring(split(v_Account_Name, '@')[0]),
v_Account_Name has '\\', tostring(split(v_Account_Name, '\\')[1]),
v_Account_Name
)
| extend p_Account_UPNSuffix = case(
v_Account_UPNSuffix has '@', tostring(split(v_Account_UPNSuffix, '@')[1]),
v_Account_UPNSuffix has '\\', tostring(split(v_Account_UPNSuffix, '\\')[0]),
v_Account_UPNSuffix
)
| extend p_Account_NTDomain = case(
v_Account_NTDomain has '\\', tostring(split(v_Account_UPNSuffix, '\\')[0]),
v_Account_NTDomain
)
// parse Account sections
| extend Account_UPNSuffix = iff(Account has '@', tostring(split(Account,'@')[1]),'')
| extend Account_NTDomain = iff(Account has '\\', tostring(split(Account,'\\')[0]),'')
| extend Account_Name = extract(@'^([^\\]*\\)?([^@]+)@?',2,Account)
// filter by account: Name has to match, NTDomain and UPNSuffix should not be different
| where ( (isnotempty(Account_Name) and Account_Name==p_Account_Name)
and
iff(isnotempty(p_Account_NTDomain) and isnotempty(Account_NTDomain) ,p_Account_NTDomain==Account_NTDomain,true )
and
iff(isnotempty(p_Account_UPNSuffix) and isnotempty(Account_UPNSuffix) ,p_Account_UPNSuffix==Account_UPNSuffix,true )
)
| summarize Host_Aux_SuccessfulLoginCount = countif(EventID==SuccessfulLoginEventId), Host_Aux_FailedLoginsCount = countif(EventID==FailedLoginEventId), Host_Aux_LogonTypes=make_set(LogonType)
by Computer, Account, SourceComputerId, _ResourceId
| top 10 by Host_Aux_FailedLoginsCount
| parse Computer with Host_NTDomain '\\' *
| extend Host_HostName = tostring(split(Computer,'.')[0]),
Host_DnsDomain = strcat_array(array_slice(split(Computer,'.'),1,256),'.'), Host_OMSAgentID=SourceComputerId, Host_AzureID = _ResourceId
| project-away Computer, Account, _ResourceId, SourceComputerId
};
MostFailedLogins('<Name>','<NTDomain>','<UPNSuffix>')
let isimAuthenticationInstalled=toscalar(union isfuzzy=true (datatable(Test:string)[]), (imAuthentication| take 0) | getschema | count | project Exists=(Count>1));
let Legacy = (v_Account_Name:string, v_Account_NTDomain:string, v_Account_UPNSuffix:string){
(datatable(exists:int)[1] | where not(isimAuthenticationInstalled)) | join
(
SecurityEvent
| extend p_Account_Name = case(
// Handles mixed use scenario of NTDomain\AccountName@UPNSuffix
v_Account_Name has '@' and v_Account_Name has '\\', tostring(split(tostring(split(v_Account_Name, '\\')[1]),'@')[0]),
v_Account_Name has '@', tostring(split(v_Account_Name, '@')[0]),
v_Account_Name has '\\', tostring(split(v_Account_Name, '\\')[1]),
v_Account_Name
)
| extend p_Account_UPNSuffix = case(
v_Account_UPNSuffix has '@', tostring(split(v_Account_UPNSuffix, '@')[1]),
v_Account_UPNSuffix has '\\', tostring(split(v_Account_UPNSuffix, '\\')[0]),
v_Account_UPNSuffix
)
| extend p_Account_NTDomain = case(
v_Account_NTDomain has '\\', tostring(split(v_Account_UPNSuffix, '\\')[0]),
v_Account_NTDomain
)
// parse Account sections
| extend Account_UPNSuffix = iff(Account has '@', tostring(split(Account,'@')[1]),'')
| extend Account_NTDomain = iff(Account has '\\', tostring(split(Account,'\\')[0]),'')
| extend Account_Name = extract(@'^([^\\]*\\)?([^@]+)@?',2,Account)
// filter by account: Name has to match, NTDomain and UPNSuffix should not be different
| where ( (isnotempty(Account_Name) and Account_Name==p_Account_Name)
and
iff(isnotempty(p_Account_NTDomain) and isnotempty(Account_NTDomain) ,p_Account_NTDomain==Account_NTDomain,true )
and
iff(isnotempty(p_Account_UPNSuffix) and isnotempty(Account_UPNSuffix) ,p_Account_UPNSuffix==Account_UPNSuffix,true )
)
| summarize Host_Aux_SuccessfulLoginCount = countif(EventID==SuccessfulLoginEventId)
, Host_Aux_FailedLoginsCount = countif(EventID==FailedLoginEventId)
, Host_Aux_LogonTypes=make_set(LogonType)
by Computer, Account, SourceComputerId, _ResourceId
| top 10 by Host_Aux_FailedLoginsCount
| parse Computer with Host_NTDomain '\\' *
| extend Host_HostName = tostring(split(Computer,'.')[0]),
Host_DnsDomain = strcat_array(array_slice(split(Computer,'.'),1,256),'.')
, Host_OMSAgentID=SourceComputerId, Host_AzureID = _ResourceId
| project-away Computer, Account, _ResourceId, SourceComputerId
| extend exists=int(1) ) on exists | project-away exists, exists1
};
let Normalized = (v_Account_Name:string, v_Account_NTDomain:string, v_Account_UPNSuffix:string){
(datatable(exists:int)[1] | where isimAuthenticationInstalled) | join
(
imAuthentication(starttime=ago(24h),targetusername_has=v_Account_Name)
| where isnotempty(TargetDvcHostname)
//* postfiltering *//
| where TargetUsername has v_Account_Name
| summarize Host_Aux_SuccessfulLoginCount = countif(EventResult=='Success')
, Host_Aux_FailedLoginsCount = countif(EventResult=='Failure')
, Host_Aux_LogonTypes=make_set(EventSubType)
by TargetDvcHostname, TargetDvcId
| top 10 by Host_Aux_FailedLoginsCount
| parse TargetDvcHostname with Host_NTDomain '\\' *
| extend Host_UnstructuredName = TargetDvcHostname
| project-keep Host_*
| extend exists=int(1) ) on exists | project-away exists, exists1
};
union isfuzzy=true Legacy('<Name>','<NTDomain>','<UPNSuffix>'),Normalized('<Name>','<NTDomain>','<UPNSuffix>')

Просмотреть файл

@ -16,9 +16,11 @@ Tactics:
- LateralMovement
- Collection
query: |
let GetAllIPbyAccount = (v_Account_Name:string){
OfficeActivity
let isimAuthenticationInstalled=toscalar(union isfuzzy=true (datatable(Test:string)[]), (imAuthentication| take 0) | getschema | count | project Exists=(Count>1));
let Legacy = (v_Account_Name:string){
(datatable(exists:int)[1] | where not(isimAuthenticationInstalled)) // if table is not installed this table is [1]
| join
(OfficeActivity
| extend v_Account_Name = case(
v_Account_Name has '@', tostring(split(v_Account_Name, '@')[0]),
v_Account_Name has '\\', tostring(split(v_Account_Name, '\\')[1]),
@ -29,7 +31,15 @@ query: |
| summarize min(TimeGenerated), max(TimeGenerated), IP_Aux_info = makeset(info) by ClientIP
| project IP_Aux_StartTime = min_TimeGenerated, IP_Aux_EndTime = max_TimeGenerated, ClientIP, IP_Aux_info
| project-rename IP_Address=ClientIP
| top 10 by IP_Aux_StartTime desc nulls last
| top 10 by IP_Aux_StartTime desc nulls last | extend exists=int(1)) on exists
| project-away exists, exists1
};
// change <Name> value below
GetAllIPbyAccount ('<Name>')
let Normalized = (v_Account_Name:string){
(datatable(exists:int)[1] | where isimAuthenticationInstalled)
| join (
imAuthentication(targetusername_has=v_Account_Name)
| summarize IP_Aux_StartTime=min(TimeGenerated), IP_Aux_EndTime=max(TimeGenerated) by SrcDvcIpAddr
| project-rename IP_Address=SrcDvcIpAddr
| top 10 by IP_Aux_StartTime desc nulls last | extend exists=int(1)) on exists | project-away exists, exists1
};
union isfuzzy=true Legacy('<Name>'), Normalized('<Name>')

Просмотреть файл

@ -19,7 +19,7 @@
{
"type": "savedSearches",
"apiVersion": "2020-08-01",
"name": "imAuthentication",
"name": "ASimAuthentication",
"dependsOn": [
"[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
],
@ -27,8 +27,8 @@
"etag": "*",
"displayName": "ASIM Source Agnostic Authentication Parser",
"category": "Security",
"FunctionAlias": "imAuthentication",
"query": "union isfuzzy=true\nvimAuthenticationEmpty\n , vimAuthenticationAADManagedIdentitySignInLogs\n , vimAuthenticationAADNonInteractiveUserSignInLogs\n , vimAuthenticationAADServicePrincipalSignInLogs\n , vimAuthenticationSigninLogs\n , vimAuthenticationAWSCloudTrail\n , vimAuthenticationOktaSSO\n , vimAuthenticationWindowsSecurityEvent\n , vimAuthenticationM365Defender\n , vimAuthenticationMicrosoftWindowsEvent\n",
"FunctionAlias": "ASimAuthentication",
"query": "union isfuzzy=true\nvimAuthenticationEmpty\n , ASimAuthenticationAADManagedIdentitySignInLogs\n , ASimAuthenticationAADNonInteractiveUserSignInLogs\n , ASimAuthenticationAADServicePrincipalSignInLogs\n , ASimAuthenticationSigninLogs\n , ASimAuthenticationAWSCloudTrail\n , ASimAuthenticationOktaSSO\n , ASimAuthenticationWindowsSecurityEvent\n , ASimAuthenticationM365Defender\n , ASimAuthenticationMicrosoftWindowsEvent\n , ASimAuthenticationMD4IoT",
"version": 1
}
}

Просмотреть файл

@ -1,6 +1,6 @@
# ASIM Authentication Normalization source agnostic parser
This template deploys the ASIM Authentication source agnostic parser. The parser is a part of the Azure Sentinel Information Mode.
This template deploys the ASIM Authentication source agnostic parser. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
@ -12,4 +12,4 @@ For more information, see:
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FAuthenticationGeneric%2FAuthenticationGeneric.json)
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FASimAuthentication%2FASimAuthentication.json)

Просмотреть файл

@ -19,7 +19,7 @@
{
"type": "savedSearches",
"apiVersion": "2020-08-01",
"name": "vimAuthenticationAADManagedIdentitySignInLogs",
"name": "ASimAuthenticationAADManagedIdentitySignInLogs",
"dependsOn": [
"[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
],
@ -27,7 +27,7 @@
"etag": "*",
"displayName": "Azure active directory managed identity authentication",
"category": "Security",
"FunctionAlias": "vimAuthenticationAADManagedIdentitySignInLogs",
"FunctionAlias": "ASimAuthenticationAADManagedIdentitySignInLogs",
"query": "let AADMIAuthentication=(){\n AADManagedIdentitySignInLogs\n | extend\n EventVendor = 'Microsoft'\n , EventProduct = 'AAD Managed Identity'\n , EventCount=int(1)\n , EventSchemaVersion='0.1.0'\n , EventResult = iff (ResultType ==0, 'Success', 'Failure')\n //, EventOriginalResultDetails = ResultType\n , EventOriginalResultDetails = coalesce(ResultDescription, ResultType)\n , EventStartTime = TimeGenerated\n , EventEndTime= TimeGenerated\n , EventType= 'Logon'\n , Location = todynamic(LocationDetails)\n , TargetAppId = ResourceIdentity \n , TargetAppName=ResourceDisplayName\n , TargetUserType='ServicePrincipal'\n , TargetUsername=ServicePrincipalName\n , TargetUserId=ServicePrincipalId\n , TargetUsernameType='Simple'\n , TargetUserIdType='AADID'\n | extend\n SrcGeoCity=tostring(Location.city)\n , SrcGeoCountry=tostring(Location.countryOrRegion)\n , SrcGeoLatitude=toreal(Location.geoCoordinates.latitude)\n , SrcGeoLongitude=toreal(Location.geoCoordinates.longitude)\n | project-rename\n EventOriginalUid = Id\n , TargetSessionId = CorrelationId\n , SrcDvcIpAddr = IPAddress\n | project-reorder\n TimeGenerated\n ,EventProduct\n , EventOriginalUid\n , EventResult\n //, EventOriginalResultDetails \n , EventOriginalResultDetails\n , EventStartTime\n , EventEndTime\n , TargetSessionId\n , SrcGeoCountry\n , SrcGeoCity\n , TargetAppName\n , TargetAppId\n | lookup AADSTSErrorCodes on ResultType\n // ** Aliases\n | extend \n User=TargetUsername\n , LogonTarget=ResourceIdentity\n , Dvc=EventVendor\n };\nAADMIAuthentication",
"version": 1
}

Просмотреть файл

@ -0,0 +1,15 @@
# Azure active directory managed identity signin logs ASIM Authentication Normalization Parser
This template deploys the ASIM Authentication schema parser for Azure active directory managed identity signin logs. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
For more information, see:
- [Normalization and the Azure Sentinel Information Model (ASIM)](https://aka.ms/AzSentinelNormalization)
- [Azure Sentinel Authentication normalization schema reference](https://aka.ms/AzSentinelAuthenticationDoc)
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FASimAuthenticationAADManagedIdentity%2FASimAuthenticationAADManagedIdentity.json)

Просмотреть файл

@ -19,7 +19,7 @@
{
"type": "savedSearches",
"apiVersion": "2020-08-01",
"name": "vimAuthenticationAADNonInteractiveUserSignInLogs",
"name": "ASimAuthenticationAADNonInteractiveUserSignInLogs",
"dependsOn": [
"[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
],
@ -27,7 +27,7 @@
"etag": "*",
"displayName": "Azure active directory non interactive authentication",
"category": "Security",
"FunctionAlias": "vimAuthenticationAADNonInteractiveUserSignInLogs",
"FunctionAlias": "ASimAuthenticationAADNonInteractiveUserSignInLogs",
"query": "let AADNIAuthentication=(){\n AADNonInteractiveUserSignInLogs\n | extend\n EventVendor = 'Microsoft'\n , EventProduct = 'AAD Non Interactive'\n , EventSchemaVersion='0.1.0'\n , EventCount=int(1)\n , EventResult = iff (ResultType ==0, 'Success', 'Failure')\n , EventOriginalResultDetails = coalesce(ResultDescription, ResultType)\n , EventStartTime = TimeGenerated\n , EventEndTime= TimeGenerated\n , EventType= 'Logon'\n , SrcDvcId=tostring(todynamic(DeviceDetail).deviceId)\n , SrcDvcHostname =tostring(todynamic(DeviceDetail).displayName)\n , SrcDvcOs=tostring(todynamic(DeviceDetail).operatingSystem)\n , Location = todynamic(LocationDetails)\n , TargetAppId = ResourceIdentity \n , TargetUserType='NonInteractive'\n , TargetUsernameType='Upn'\n , TargetUserIdType='AADID'\n , TargetAppName=ResourceDisplayName\n | extend\n SrcGeoCity=tostring(Location.city)\n , SrcGeoCountry=tostring(Location.countryOrRegion)\n , SrcGeoLatitude=toreal(Location.geoCoordinates.latitude)\n , SrcGeoLongitude=toreal(Location.geoCoordinates.longitude)\n | project-rename\n EventOriginalUid =Id\n , LogonMethod = AuthenticationRequirement\n , HttpUserAgent=UserAgent\n , TargetSessionId=CorrelationId\n , TargetUserId = UserId\n , TargetUsername=UserPrincipalName\n , SrcDvcIpAddr=IPAddress\n | lookup AADSTSErrorCodes on ResultType\n | project-reorder\n TimeGenerated\n ,EventProduct\n , EventOriginalUid\n , EventResult\n , EventOriginalResultDetails\n , EventStartTime\n , EventEndTime\n , LogonMethod \n , TargetSessionId\n , TargetUserId\n , TargetUsername\n , SrcDvcId\n , SrcDvcHostname \n , SrcDvcOs\n , HttpUserAgent \n , SrcGeoCountry\n , SrcGeoCity\n , TargetAppId\n , TargetAppName\n // ** Aliases\n | extend \n User=TargetUsername\n , LogonTarget=ResourceIdentity\n , Dvc=EventVendor};\nAADNIAuthentication",
"version": 1
}

Просмотреть файл

@ -0,0 +1,15 @@
# Azure active directory nonInteractive signin logs ASIM Authentication Normalization Parser
This template deploys the ASIM Authentication schema parser for Azure active directory nonInteractive signin logs. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
For more information, see:
- [Normalization and the Azure Sentinel Information Model (ASIM)](https://aka.ms/AzSentinelNormalization)
- [Azure Sentinel Authentication normalization schema reference](https://aka.ms/AzSentinelAuthenticationDoc)
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FASimAuthenticationAADNonInteractive%2FASimAuthenticationAADNonInteractive.json)

Просмотреть файл

@ -19,7 +19,7 @@
{
"type": "savedSearches",
"apiVersion": "2020-08-01",
"name": "vimAuthenticationAADServicePrincipalSignInLogs",
"name": "ASimAuthenticationAADServicePrincipalSignInLogs",
"dependsOn": [
"[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
],
@ -27,7 +27,7 @@
"etag": "*",
"displayName": "Azure active directory service principal authentication",
"category": "Security",
"FunctionAlias": "vimAuthenticationAADServicePrincipalSignInLogs",
"FunctionAlias": "ASimAuthenticationAADServicePrincipalSignInLogs",
"query": "let AADSvcPrincipal=(){\n AADServicePrincipalSignInLogs\n | extend\n EventVendor = 'Microsoft'\n , EventProduct = 'AAD Service Principal'\n , EventCount=int(1)\n , EventSchemaVersion='0.1.0'\n , EventResult = iff (ResultType ==0, 'Success', 'Failure')\n //, EventResultDetails= ResultType\n , EventOriginalResultDetails = coalesce(ResultDescription, ResultType)\n , EventStartTime = TimeGenerated\n , EventEndTime= TimeGenerated\n , EventType= 'Logon'\n , Location = todynamic(LocationDetails)\n , TargetAppId = ResourceIdentity \n , TargetAppName=ResourceDisplayName\n , TargetUserType='ServicePrincipal'\n , TargetUsername=ServicePrincipalName\n , TargetUserId=ServicePrincipalId\n , TargetUsernameType='Simple'\n , TargetUserIdType='AADID'\n | extend\n SrcGeoCity=tostring(Location.city)\n , SrcGeoCountry=tostring(Location.countryOrRegion)\n , SrcGeoLatitude=toreal(Location.geoCoordinates.latitude)\n , SrcGeoLongitude=toreal(Location.geoCoordinates.longitude)\n | project-rename\n EventOriginalUid =Id\n , TargetSessionId=CorrelationId\n , SrcDvcIpAddr=IPAddress\n | lookup AADSTSErrorCodes on ResultType\n | project-reorder\n TimeGenerated\n ,EventProduct\n , EventOriginalUid\n , EventResult\n //, EventResultDetails\n , EventOriginalResultDetails\n , EventStartTime\n , EventEndTime\n , TargetSessionId\n , SrcGeoCity\n , SrcGeoCountry\n , TargetAppId\n // ** Aliases\n | extend \n User=TargetUsername\n , LogonTarget=ResourceIdentity\n , Dvc=EventVendor};\nAADSvcPrincipal",
"version": 1
}

Просмотреть файл

@ -0,0 +1,15 @@
# Azure active directory service principal signin logs ASIM Authentication Normalization Parser
This template deploys the ASIM Authentication schema parser for Azure active directory service principal signin logs. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
For more information, see:
- [Normalization and the Azure Sentinel Information Model (ASIM)](https://aka.ms/AzSentinelNormalization)
- [Azure Sentinel Authentication normalization schema reference](https://aka.ms/AzSentinelAuthenticationDoc)
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FASimAuthenticationAADServicePrincipalSignInLogs%2FASimAuthenticationAADServicePrincipalSignInLogs.json)

Просмотреть файл

@ -19,7 +19,7 @@
{
"type": "savedSearches",
"apiVersion": "2020-08-01",
"name": "vimAuthenticationSigninLogs",
"name": "ASimAuthenticationSigninLogs",
"dependsOn": [
"[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
],
@ -27,8 +27,8 @@
"etag": "*",
"displayName": "Azure active directory authentication",
"category": "Security",
"FunctionAlias": "vimAuthenticationSigninLogs",
"query": "let AADSigninLogs=(){\nSigninLogs\n| extend\n EventVendor = 'Microsoft'\n , EventProduct = 'AAD Sign In Logs'\n , EventCount=int(1)\n , EventSchemaVersion='0.1.0'\n , EventResult = iff (ResultType ==0, 'Success', 'Failure')\n , EventOriginalResultDetails = coalesce(ResultDescription, ResultType)\n , EventStartTime = TimeGenerated\n , EventEndTime= TimeGenerated\n , EventType= 'Logon'\n , SrcDvcId=tostring(DeviceDetail.deviceId)\n , SrcDvcHostname =tostring(DeviceDetail.displayName)\n , SrcDvcOs=tostring(DeviceDetail.operatingSystem)\n // , SrcBrowser= tostring(DeviceDetail.browser)\n , Location = todynamic(LocationDetails)\n , TargetUsernameType='Upn'\n , TargetUserIdType='AADID'\n| extend\n SrcGeoCity=tostring(Location.city)\n , SrcGeoCountry=tostring(Location.countryOrRegion)\n , SrcGeoLatitude=toreal(Location.geoCoordinates.latitude)\n , SrcGeoLongitude=toreal(Location.geoCoordinates.longitude)\n | lookup AADSTSErrorCodes on ResultType\n | project-rename\n EventOriginalUid =Id\n , LogonMethod = AuthenticationRequirement\n , HttpUserAgent=UserAgent\n , TargetSessionId=CorrelationId\n , TargetUserId = UserId\n , TargetUsername=UserPrincipalName\n , TargetUserType=UserType\n , TargetAppId = ResourceIdentity\n , TargetAppName=ResourceDisplayName\n | project-reorder\n TimeGenerated\n ,EventProduct\n , EventOriginalUid\n , EventResult\n , EventOriginalResultDetails\n , EventStartTime\n , EventEndTime\n , LogonMethod \n , TargetSessionId\n , TargetUserId\n , TargetUsername\n , SrcDvcId\n , SrcDvcHostname \n , SrcDvcOs\n , HttpUserAgent \n , SrcGeoCity\n , SrcGeoCountry\n , TargetAppId\n , TargetAppName\n // ** Aliases\n | extend \n User=TargetUsername\n , LogonTarget=TargetAppName\n , Dvc=EventVendor};\n AADSigninLogs",
"FunctionAlias": "ASimAuthenticationSigninLogs",
"query": "let AADSigninLogs=(){\nSigninLogs\n| extend\n EventVendor = 'Microsoft'\n , EventProduct = 'AAD Sign In Logs'\n , EventCount=int(1)\n , EventSchemaVersion='0.1.0'\n , EventResult = iff (ResultType ==0, 'Success', 'Failure')\n , EventOriginalResultDetails = coalesce(ResultDescription, ResultType)\n , EventStartTime = TimeGenerated\n , EventEndTime= TimeGenerated\n , EventType= 'Logon'\n , SrcDvcId=tostring(DeviceDetail.deviceId)\n , SrcDvcHostname =tostring(DeviceDetail.displayName)\n , SrcDvcOs=tostring(DeviceDetail.operatingSystem)\n // , SrcBrowser= tostring(DeviceDetail.browser)\n , Location = todynamic(LocationDetails)\n , TargetUsernameType='Upn'\n , TargetUserIdType='AADID'\n , SrcDvcIpAddr=IPAddress\n| extend\n SrcGeoCity=tostring(Location.city)\n , SrcGeoCountry=tostring(Location.countryOrRegion)\n , SrcGeoLatitude=toreal(Location.geoCoordinates.latitude)\n , SrcGeoLongitude=toreal(Location.geoCoordinates.longitude)\n | lookup AADSTSErrorCodes on ResultType\n | project-rename\n EventOriginalUid =Id\n , LogonMethod = AuthenticationRequirement\n , HttpUserAgent=UserAgent\n , TargetSessionId=CorrelationId\n , TargetUserId = UserId\n , TargetUsername=UserPrincipalName\n , TargetUserType=UserType\n , TargetAppId = ResourceIdentity\n , TargetAppName=ResourceDisplayName\n | project-reorder\n TimeGenerated\n ,EventProduct\n , EventOriginalUid\n , EventResult\n , EventOriginalResultDetails\n , EventStartTime\n , EventEndTime\n , LogonMethod \n , TargetSessionId\n , TargetUserId\n , TargetUsername\n , SrcDvcId\n , SrcDvcHostname \n , SrcDvcOs\n , HttpUserAgent \n , SrcGeoCity\n , SrcGeoCountry\n , TargetAppId\n , TargetAppName\n , SrcDvcIpAddr\n // ** Aliases\n | extend \n User=TargetUsername\n , LogonTarget=TargetAppName\n , Dvc=EventVendor};\n AADSigninLogs\n",
"version": 1
}
}

Просмотреть файл

@ -0,0 +1,15 @@
# Azure SigninLogs ASIM Authentication Normalization Parser
This template deploys the ASIM Authentication schema parser for Azure SigninLogs. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
For more information, see:
- [Normalization and the Azure Sentinel Information Model (ASIM)](https://aka.ms/AzSentinelNormalization)
- [Azure Sentinel Authentication normalization schema reference](https://aka.ms/AzSentinelAuthenticationDoc)
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FASimAuthenticationAADSigninLogs%2FASimAuthenticationAADSigninLogs.json)

Просмотреть файл

@ -19,7 +19,7 @@
{
"type": "savedSearches",
"apiVersion": "2020-08-01",
"name": "vimAuthenticationAWSCloudTrail",
"name": "ASimAuthenticationAWSCloudTrail",
"dependsOn": [
"[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
],
@ -27,7 +27,7 @@
"etag": "*",
"displayName": "ASIM AWS authentication",
"category": "Security",
"FunctionAlias": "vimAuthenticationAWSCloudTrail",
"FunctionAlias": "ASimAuthenticationAWSCloudTrail",
"query": "let AWSLogon=(){\nAWSCloudTrail\n | where EventName == 'ConsoleLogin'\n | extend\n EventVendor = 'AWS'\n , EventProduct='AWSCloudTrail'\n , EventCount=int(1)\n , EventSchemaVersion='0.1.0'\n , EventResult= iff (ResponseElements has_cs 'Success', 'Success', 'Failure')\n , EventStartTime=TimeGenerated\n , EventEndTime=TimeGenerated\n , EventType='Logon'\n , LogonMethod=iff(AdditionalEventData has '\"MFAUsed\": \"No\"', 'NoMFA', 'MFA')\n , TargetUrl =tostring(todynamic(AdditionalEventData).LoginTo)\n , TargetUsernameType='Simple'\n , TargetUserIdType='AWSId'\n | project-rename\n EventOriginalUid= AwsEventId\n , EventOriginalResultDetails= ErrorMessage\n , TargetUsername= UserIdentityUserName\n , TargetUserType=UserIdentityType\n , TargetUserId=UserIdentityAccountId \n , SrcDvcIpAddr=SourceIpAddress\n , HttpUserAgent=UserAgent\n// **** Aliases\n| extend\n User=TargetUsername\n , LogonTarget=tostring(split(TargetUrl,'?')[0])\n , Dvc=EventVendor\n };\n AWSLogon\n",
"version": 1
}

Просмотреть файл

@ -0,0 +1,15 @@
# Amazon web services cloud trail ASIM Authentication Normalization Parser
This template deploys the ASIM Authentication schema parser for Amazon web services cloud trail. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
For more information, see:
- [Normalization and the Azure Sentinel Information Model (ASIM)](https://aka.ms/AzSentinelNormalization)
- [Azure Sentinel Authentication normalization schema reference](https://aka.ms/AzSentinelAuthenticationDoc)
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FASimAuthenticationAWSCloudTrail%2FASimAuthenticationAWSCloudTrail.json)

Просмотреть файл

@ -0,0 +1,38 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspaceName": {
"type": "string"
},
"location": {
"type": "string"
}
},
"resources": [
{
"type": "Microsoft.OperationalInsights/workspaces",
"apiVersion": "2017-03-15-preview",
"name": "[parameters('workspaceName')]",
"location": "[parameters('location')]",
"resources": [
{
"type": "savedSearches",
"apiVersion": "2020-08-01",
"name": "ASimAuthenticationM365Defender",
"dependsOn": [
"[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
],
"properties": {
"etag": "*",
"displayName": "ASIM Microsoft 365 Defender DeviceLogonEvent Authentication parser",
"category": "Security",
"FunctionAlias": "ASimAuthenticationM365Defender",
"query": "let FaliureReason=datatable(EventOriginalResultDetails:string, EventResultDetails:string)[\n 'InvalidUserNameOrPassword','No such user or password'\n ];\nlet AuthM365D=(){\n DeviceLogonEvents \n //\n | project-rename \n EventOriginalResultDetails=FailureReason \n | extend \n // ---- Event\n EventSubType=iff(LogonType=='Remote interactive (RDP) logons','RemoteInteractive',LogonType)\n , EventCount=int(1)\n , EventStartTime=TimeGenerated\n , EventEndTime=TimeGenerated\n , EventOriginalType = LogonType\n , EventProduct='M365 Defender for EndPoint'\n , EventResult = case(ActionType =='LogonSuccess', 'Success'\n , ActionType=='LogonFailed', 'Failure'\n , ActionType=='LogonAttempted', 'NA'\n , 'NA')\n , EventSchemaVersion='0.1.0'\n , EventType='Logon'\n , EventVendor ='Microsoft'\n // ---- Target and Actor Users\n | project-rename \n TargetUserId=AccountSid\n , ActorUserId =InitiatingProcessAccountSid\n , ActorUserUpn=InitiatingProcessAccountUpn\n , ActorUserObjectId=InitiatingProcessAccountObjectId\n | extend \n TargetUserIdType ='SID'\n , TargetUsername = strcat(AccountDomain,'\\\\',AccountName)\n , TargetUsernameType='Windows'\n , ActorUserIdType='SID'\n , ActorUsername=coalesce(ActorUserUpn, strcat(InitiatingProcessAccountDomain,'\\\\',InitiatingProcessAccountName)) // InitiatingProcessAccountName\n , ActorUsernameType=case(isnotempty( ActorUserUpn), 'Upn/Email'\n , isnotempty(InitiatingProcessAccountDomain), 'Windows'\n , 'Simple')\n , TargetDvcHostname=tostring(split(DeviceName,'.')[0])\n , TargetDvcFQDN=DeviceName\n | project-rename \n LogonProtocol=Protocol\n , TargetDvcId=DeviceId\n , SrcDvcIpAddr=RemoteIP\n , OriginalEventUid=ReportId\n , SrcDvcHostname=RemoteDeviceName \n //\n , ActingProcessCommandLine = InitiatingProcessCommandLine\n , ActingProcessCreationTime=InitiatingProcessCreationTime\n , ActingProcessPath=InitiatingProcessFolderPath\n , ActingProcessId=InitiatingProcessId\n , ActingProcessMD5=InitiatingProcessMD5\n , ActingProcessSHA1=InitiatingProcessSHA1\n , ActingProcessSHA256= InitiatingProcessSHA256\n , ActingProcessIntegrityLevel= InitiatingProcessIntegrityLevel\n , ActingProcessTokenElevation=InitiatingProcessTokenElevation\n , ParentProcessName=InitiatingProcessParentFileName\n , ParentProcessId=InitiatingProcessParentId\n , ParentProcessCreationTime=InitiatingProcessParentCreationTime\n | extend \n ActingProcessName=iff(ActingProcessPath hassuffix InitiatingProcessFileName\n , ActingProcessPath\n , strcat(ActingProcessPath,'\\\\',InitiatingProcessFileName))\n , TargetDvcHostnameType='FQDN'\n , TargetDvcIdType='MDE'\n , TargetPortNumber=RemotePort\n , TargetSessionId = tostring(LogonId)\n | lookup FaliureReason on EventOriginalResultDetails \n // TargetUrl \n // ----------- Alias\n | extend \n User=TargetUsername \n , LogonTarget=TargetDvcHostname\n , Dvc=TargetDvcHostname\n };AuthM365D\n",
"version": 1
}
}
]
}
]
}

Просмотреть файл

@ -0,0 +1,15 @@
# M365 Defender ASIM Authentication Normalization Parser
This template deploys the ASIM Authentication schema parser for M365 Defender. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
For more information, see:
- [Normalization and the Azure Sentinel Information Model (ASIM)](https://aka.ms/AzSentinelNormalization)
- [Azure Sentinel Authentication normalization schema reference](https://aka.ms/AzSentinelAuthenticationDoc)
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FASimAuthenticationM365D%2FASimAuthenticationM365D.json)

Просмотреть файл

@ -12,4 +12,4 @@ For more information, see:
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FAuthenticationM365Defender%2FAuthenticationM365Defender.json)
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FASimAuthenticationM365Defender%2FASimAuthenticationM365Defender.json)

Просмотреть файл

@ -19,15 +19,15 @@
{
"type": "savedSearches",
"apiVersion": "2020-08-01",
"name": "vimAuthenticationMD4IoT",
"name": "ASimAuthenticationMD4IoT",
"dependsOn": [
"[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
],
"properties": {
"etag": "*",
"displayName": "ASIM Azure Defender for IoT Authentication Parser",
"displayName": "ASIM Authentication Parser for Microsoft Defender for IoT - Endpoint",
"category": "Security",
"FunctionAlias": "vimAuthenticationMD4IoT",
"FunctionAlias": "ASimAuthenticationMD4IoT",
"query": "let Authentication_MD4IoT=()\n {\n SecurityIoTRawEvent \n | where RawEventName == \"Login\" \n | extend\n EventDetails = todynamic(EventDetails)\n //\n | extend\n EventOriginalUid = tostring(EventDetails.OriginalEventId), \n EventProduct = 'Azure Defender for IoT',\n EventCount=int(1),\n EventVendor = 'Microsoft', \n EventSchemaVersion = '0.1.0', \n EventStartTime = todatetime(EventDetails.TimestampUTC), \n EventEndTime = todatetime(TimeGenerated), \n EventType = iff (EventDetails.Operation == 'Logout', 'Logoff', 'Logon'), \n EventResult = iff (EventDetails.Operation == 'LoginFailed', 'Failure', 'Success') \n //\n | extend\n ActingProcessId = tostring(EventDetails.ProcessId), \n ActingProcessName = tostring(EventDetails.Executable), // -- Linux input device or service used to authenticate, for example pts/1, tty1, pts/0, ssh:notty \n DvcOs = iif (EventDetails.MessageSource == \"Linux\", \"Linux\", \"Windows\"), // -- Intermediate fix\n TargetUsernameType = \"Simple\",\n TargetUsername = tostring(EventDetails.UserName),\n SrcIpAddr = tostring(EventDetails.RemoteAddress) \n | project-rename\n DvcHostname = DeviceId, \n EventProductVersion = AgentVersion, // -- Not available in Windows\n _ResourceId = AssociatedResourceId, \n _SubscriptionId = AzureSubscriptionId \n //\n // -- aliases\n | extend \n User = TargetUsername, \n Process = ActingProcessName, \n Dvc = DvcHostname,\n SrcDvcIpAddr = SrcIpAddr,\n IpAddr = SrcIpAddr\n };\n Authentication_MD4IoT",
"version": 1
}

Просмотреть файл

@ -0,0 +1,15 @@
# Microsoft Defender for IoT - Endpoint ASIM Authentication Normalization Parser
This template deploys the ASIM Authentication schema parser for Microsoft Defender for IoT - Endpoint. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
For more information, see:
- [Normalization and the Azure Sentinel Information Model (ASIM)](https://aka.ms/AzSentinelNormalization)
- [Azure Sentinel Authentication normalization schema reference](https://aka.ms/AzSentinelAuthenticationDoc)
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FASimAuthenticationMicrosoftMD4IoT%2FASimAuthenticationMicrosoftMD4IoT.json)

Просмотреть файл

@ -0,0 +1,15 @@
# Microsoft Windows Events ASIM Authentication Normalization Parser
This template deploys the ASIM Authentication schema parser for Microsoft Windows Events. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
For more information, see:
- [Normalization and the Azure Sentinel Information Model (ASIM)](https://aka.ms/AzSentinelNormalization)
- [Azure Sentinel Authentication normalization schema reference](https://aka.ms/AzSentinelAuthenticationDoc)
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FASimAuthenticationMicrosoftWindowsEvent%2FASimAuthenticationMicrosoftWindowsEvent.json)

Просмотреть файл

@ -19,7 +19,7 @@
{
"type": "savedSearches",
"apiVersion": "2020-08-01",
"name": "vimAuthenticationOktaSSO",
"name": "ASimAuthenticationOktaSSO",
"dependsOn": [
"[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
],
@ -27,8 +27,8 @@
"etag": "*",
"displayName": "ASIM Okta identity management authentication parser",
"category": "Security",
"FunctionAlias": "vimAuthenticationOktaSSO",
"query": "let OktaSignin=(){\n let OktaSuccessfulOutcome = dynamic(['SUCCESS', 'ALLOW']);\n let OktaFailedOutcome = dynamic(['FAILURE', 'SKIPPED','DENY']);\n let OktaSigninEvents=dynamic(['user.session.start', 'user.session.end']);\n // https://developer.okta.com/docs/reference/api/event-types/#catalog\n Okta_CL\n | where eventType_s_s in (OktaSigninEvents)\n | extend \n EventProduct='Okta'\n , EventVendor='Okta'\n , EventCount=int(1)\n , EventSchemaVersion='0.1.0'\n , EventResult = case (outcome_result_s_s in (OktaSuccessfulOutcome), 'Success',outcome_result_s_s in (OktaFailedOutcome),'Failure', 'Partial')\n , EventStartTime=TimeGenerated\n , EventEndTime=TimeGenerated\n , EventType=iff(eventType_s_s hassuffix 'start', 'Logon', 'Logoff')\n , EventSubType=legacyEventType_s_s\n , TargetUserIdType='OktaId'\n , TargetUsernameType='Upn'\n , SrcGeoLatitude=toreal(client_geographicalContext_geolocation_lat_d_s)\n , SrcGeoLongitude=toreal(client_geographicalContext_geolocation_lon_d_s)\n , ActingAppType = \"Browser\"\n | project-rename \n EventMessage=displayMessage_s_s\n ,EventOriginalResultDetails=outcome_reason_s_s\n , LogonMethod = authenticationContext_credentialType_s_s\n , TargetSessionId=authenticationContext_externalSessionId_s_s\n , TargetUserId= actor_id_s_s\n , TargetUsername=actor_alternateId_s_s\n , TargetUserType=actor_type_s_s\n , SrcDvcOs=client_userAgent_os_s_s\n , HttpUserAgent=client_userAgent_rawUserAgent_s_s\n , ActingAppName = client_userAgent_browser_s_s\n , SrcIsp=securityContext_isp_s_s\n , SrcGeoCity=client_geographicalContext_city_s_s\n , SrcGeoCountry=client_geographicalContext_country_s_s\n , EventOriginalUid = uuid_g_g\n | project-reorder\n EventProduct\n , EventOriginalUid\n , TimeGenerated\n , EventMessage\n , EventResult\n , EventOriginalResultDetails\n , EventStartTime\n , EventEndTime\n , EventType\n , EventSubType\n , LogonMethod\n , TargetSessionId\n , TargetUserId\n , TargetUsername\n , TargetUserType\n , SrcDvcOs\n , HttpUserAgent\n , SrcIsp\n , SrcGeoCity\n , SrcGeoCountry\n , SrcGeoLongitude\n , SrcGeoLatitude\n // ** Aliases\n | extend \n User=TargetUsername\n , Dvc=EventVendor\n };\nOktaSignin\n",
"FunctionAlias": "ASimAuthenticationOktaSSO",
"query": "let OktaSignin=(){\n let OktaSuccessfulOutcome = dynamic(['SUCCESS', 'ALLOW']);\n let OktaFailedOutcome = dynamic(['FAILURE', 'SKIPPED','DENY']);\n let OktaSigninEvents=dynamic(['user.session.start', 'user.session.end']);\n // https://developer.okta.com/docs/reference/api/event-types/#catalog\n Okta_CL\n | where eventType_s_s in (OktaSigninEvents)\n | extend \n EventProduct='Okta'\n , EventVendor='Okta'\n , EventCount=int(1)\n , EventSchemaVersion='0.1.0'\n , EventResult = case (outcome_result_s_s in (OktaSuccessfulOutcome), 'Success',outcome_result_s_s in (OktaFailedOutcome),'Failure', 'Partial')\n , EventStartTime=TimeGenerated\n , EventEndTime=TimeGenerated\n , EventType=iff(eventType_s_s hassuffix 'start', 'Logon', 'Logoff')\n , EventSubType=legacyEventType_s_s\n , TargetUserIdType='OktaId'\n , TargetUsernameType='Upn'\n , SrcGeoLatitude=toreal(client_geographicalContext_geolocation_lat_d)\n , SrcGeoLongitude=toreal(client_geographicalContext_geolocation_lon_d)\n , ActingAppType = \"Browser\"\n | project-rename \n EventMessage=displayMessage_s_s\n ,EventOriginalResultDetails=outcome_reason_s_s\n , LogonMethod = authenticationContext_credentialType_s_s\n , TargetSessionId=authenticationContext_externalSessionId_s_s\n , TargetUserId= actor_id_s_s\n , TargetUsername=actor_alternateId_s_s\n , TargetUserType=actor_type_s_s\n , SrcDvcOs=client_userAgent_os_s_s\n , HttpUserAgent=client_userAgent_rawUserAgent_s_s\n , ActingAppName = client_userAgent_browser_s_s\n , SrcIsp=securityContext_isp_s_s\n , SrcGeoCity=client_geographicalContext_city_s_s\n , SrcGeoCountry=client_geographicalContext_country_s_s\n , EventOriginalUid = uuid_g_g\n | project-reorder\n EventProduct\n , EventOriginalUid\n , TimeGenerated\n , EventMessage\n , EventResult\n , EventOriginalResultDetails\n , EventStartTime\n , EventEndTime\n , EventType\n , EventSubType\n , LogonMethod\n , TargetSessionId\n , TargetUserId\n , TargetUsername\n , TargetUserType\n , SrcDvcOs\n , HttpUserAgent\n , SrcIsp\n , SrcGeoCity\n , SrcGeoCountry\n , SrcGeoLongitude\n , SrcGeoLatitude\n // ** Aliases\n | extend \n User=TargetUsername\n , Dvc=EventVendor\n };\nOktaSignin\n",
"version": 1
}
}

Просмотреть файл

@ -0,0 +1,15 @@
# Okta identity management ASIM Authentication Normalization Parser
This template deploys the ASIM Authentication schema parser for Okta identity management. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
For more information, see:
- [Normalization and the Azure Sentinel Information Model (ASIM)](https://aka.ms/AzSentinelNormalization)
- [Azure Sentinel Authentication normalization schema reference](https://aka.ms/AzSentinelAuthenticationDoc)
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FASimAuthenticationOktaOSS%2FASimAuthenticationOktaOSS.json)

Просмотреть файл

@ -1,6 +1,6 @@
# Microsoft Windows Events ASIM Authentication Normalization Parser
This template deploys the ASIM Authentication schema parser for Microsoft Windows Events. The parser is a part of the Azure Sentinel Information Mode.
This template deploys the ASIM Authentication schema parser for Microsoft Windows Events. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
@ -12,4 +12,4 @@ For more information, see:
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FAuthenticationMicrosoftWindowsEvent%2FAuthenticationMicrosoftWindowsEvent.json)
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FASimAuthenticationWindowsSecurityEvent%2FASimAuthenticationWindowsSecurityEvent.json)

Просмотреть файл

@ -1,15 +0,0 @@
# Azure Defender 4 IoT ASIM Authentication Normalization Parser
This template deploys the ASIM Authentication schema parser for Azure Defender 4 IoT. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
For more information, see:
- [Normalization and the Azure Sentinel Information Model (ASIM)](https://aka.ms/AzSentinelNormalization)
- [Azure Sentinel Authentication normalization schema reference](https://aka.ms/AzSentinelAuthenticationDoc)
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FAuthenticationMicrosoftMD4IoT%2FAuthenticationMicrosoftMD4IoT.json)

Просмотреть файл

@ -1,15 +0,0 @@
# Microsoft Windows ASIM Authentication Normalization Parser
This template deploys the ASIM Authentication schema parser for Microsoft Windows. The parser is a part of the Azure Sentinel Information Mode.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
For more information, see:
- [Normalization and the Azure Sentinel Information Model (ASIM)](https://aka.ms/AzSentinelNormalization)
- [Azure Sentinel Authentication normalization schema reference](https://aka.ms/AzSentinelAuthenticationDoc)
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FAuthenticationWindowsSecurityEvent%2FAuthenticationWindowsSecurityEvent.json)

Просмотреть файл

@ -1,277 +0,0 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspaceName": {
"type": "string"
},
"location": {
"type": "string"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAADSTSErrCodes",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/AADSTSErrorCodes/AADSTSErrorCodes.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAAuthenticationEmpty",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/AuthenticationEmpty/AuthenticationEmpty.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAuthenticationGeneric",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/AuthenticationGeneric/AuthenticationGeneric.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAuthenticationAADManagedIdentity",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/AuthenticationAADManagedIdentity/AuthenticationAADManagedIdentity.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAuthenticationAADNonInteractive",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/AuthenticationAADNonInteractive/AuthenticationAADNonInteractive.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAuthenticationAADServicePrincipalSignInLogs",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/AuthenticationAADServicePrincipalSignInLogs/AuthenticationAADServicePrincipalSignInLogs.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAuthenticationAADSigninLogs",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/AuthenticationAADSigninLogs/AuthenticationAADSigninLogs.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAuthenticationAWSCloudTrail",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/AuthenticationAWSCloudTrail/AuthenticationAWSCloudTrail.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAuthenticationM365Defender",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/AuthenticationM365Defender/AuthenticationM365Defender.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAuthenticationOktaOSS",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/AuthenticationOktaOSS/AuthenticationOktaOSS.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAuthenticationWindowsSecurityEvent",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/AuthenticationWindowsSecurityEvent/AuthenticationWindowsSecurityEvent.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAuthenticationMicrosoftMD4IoT",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/AuthenticationMicrosoftMD4IoT/AuthenticationMicrosoftMD4IoT.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedvimAuthenticationMicrosoftWindowsEvent",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/AuthenticationMicrosoftWindowsEvent/AuthenticationMicrosoftWindowsEvent.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
}
],
"outputs": {
}
}

Просмотреть файл

@ -1,17 +0,0 @@
# Authentication - Azure Sentinel Information Model
This template deploys the following:
* imAuthentication - Authentication events from all normalized authentication providers
* vimAuthenticationAADManagedIdentitySignInLogs
* vimAuthenticationAADNonInteractiveUserSignInLogs
* vimAuthenticationAADServicePrincipalSignInLogs
* vimAuthenticationSigninLogs
* vimAuthenticationAWSCloudTrail
* vimAuthenticationOktaSSO
* vimAuthenticationWindowsSecurityEvent
* vimAuthenticationMicrosoftWindowsEvent
* vimAuthenticationMD4IoT
* AADSTSErrorCodes
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://aka.ms/AzSentinelAuthenticationARM)

Просмотреть файл

@ -0,0 +1,14 @@
# ASIM Authentication Normalization source agnostic parser
This template deploys the ASIM Authentication schema parser for Microsoft Windows Events. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
For more information, see:
- [Normalization and the Azure Sentinel Information Model (ASIM)](https://aka.ms/AzSentinelNormalization)
- [Azure Sentinel Authentication normalization schema reference](https://aka.ms/AzSentinelAuthenticationDoc)
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FimAuthentication%2FimAuthentication.json)

Просмотреть файл

@ -0,0 +1,39 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspaceName": {
"type": "string"
},
"location": {
"type": "string"
}
},
"resources": [
{
"type": "Microsoft.OperationalInsights/workspaces",
"apiVersion": "2017-03-15-preview",
"name": "[parameters('workspaceName')]",
"location": "[parameters('location')]",
"resources": [
{
"type": "savedSearches",
"apiVersion": "2020-08-01",
"name": "imAuthentication",
"dependsOn": [
"[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
],
"properties": {
"etag": "*",
"displayName": "ASIM Source Agnostic Authentication Parser",
"category": "Security",
"FunctionAlias": "imAuthentication",
"query": "let imAuthentication=(starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string=\"*\"){\nunion isfuzzy=true\nvimAuthenticationEmpty\n , vimAuthenticationAADManagedIdentitySignInLogs(starttime, endtime, targetusername_has)\n , vimAuthenticationAADNonInteractiveUserSignInLogs(starttime, endtime, targetusername_has)\n , vimAuthenticationAADServicePrincipalSignInLogs(starttime, endtime, targetusername_has)\n , vimAuthenticationSigninLogs(starttime, endtime, targetusername_has)\n , vimAuthenticationAWSCloudTrail(starttime, endtime, targetusername_has)\n , vimAuthenticationOktaSSO(starttime, endtime, targetusername_has)\n , vimAuthenticationWindowsSecurityEvent(starttime, endtime, targetusername_has)\n , vimAuthenticationM365Defender(starttime, endtime, targetusername_has)\n , vimAuthenticationMicrosoftWindowsEvent(starttime, endtime, targetusername_has)\n , vimAuthenticationMD4IoT(starttime, endtime, targetusername_has)\n };\n imAuthentication(starttime, endtime, targetusername_has)\n",
"version": 1,
"functionParameters": "starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string='*'"
}
}
]
}
]
}

Просмотреть файл

@ -1,6 +1,6 @@
# Azure active directory managed identity signin logs ASIM Authentication Normalization Parser
This template deploys the ASIM Authentication schema parser for Azure active directory managed identity signin logs. The parser is a part of the Azure Sentinel Information Mode.
This template deploys the ASIM Authentication schema parser for Azure active directory managed identity signin logs. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
@ -12,4 +12,4 @@ For more information, see:
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FAuthenticationAADManagedIdentity%2FAuthenticationAADManagedIdentity.json)
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FvimAuthenticationAADManagedIdentity%2FvimAuthenticationAADManagedIdentity.json)

Просмотреть файл

@ -0,0 +1,39 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspaceName": {
"type": "string"
},
"location": {
"type": "string"
}
},
"resources": [
{
"type": "Microsoft.OperationalInsights/workspaces",
"apiVersion": "2017-03-15-preview",
"name": "[parameters('workspaceName')]",
"location": "[parameters('location')]",
"resources": [
{
"type": "savedSearches",
"apiVersion": "2020-08-01",
"name": "vimAuthenticationAADManagedIdentitySignInLogs",
"dependsOn": [
"[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
],
"properties": {
"etag": "*",
"displayName": "Azure active directory managed identity authentication",
"category": "Security",
"FunctionAlias": "vimAuthenticationAADManagedIdentitySignInLogs",
"query": "let AADMIAuthentication=(starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string=\"*\"){\n AADManagedIdentitySignInLogs\n // ************************************************************************* \n // <Prefilterring>\n // *************************************************************************\n | where \n (isnull(starttime) or TimeGenerated >= starttime) \n and (isnull(endtime) or TimeGenerated <= starttime)\n and (targetusername_has=='*' or (ServicePrincipalName has targetusername_has))\n // ************************************************************************* \n // </Prefilterring>\n // ************************************************************************* \n | extend\n EventVendor = 'Microsoft'\n , EventProduct = 'AAD Managed Identity'\n , EventCount=int(1)\n , EventSchemaVersion='0.1.0'\n , EventResult = iff (ResultType ==0, 'Success', 'Failure')\n //, EventOriginalResultDetails = ResultType\n , EventOriginalResultDetails = coalesce(ResultDescription, ResultType)\n , EventStartTime = TimeGenerated\n , EventEndTime= TimeGenerated\n , EventType= 'Logon'\n , Location = todynamic(LocationDetails)\n , TargetAppId = ResourceIdentity \n , TargetAppName=ResourceDisplayName\n , TargetUserType='ServicePrincipal'\n , TargetUsername=ServicePrincipalName\n , TargetUserId=ServicePrincipalId\n , TargetUsernameType='Simple'\n , TargetUserIdType='AADID'\n | extend\n SrcGeoCity=tostring(Location.city)\n , SrcGeoCountry=tostring(Location.countryOrRegion)\n , SrcGeoLatitude=toreal(Location.geoCoordinates.latitude)\n , SrcGeoLongitude=toreal(Location.geoCoordinates.longitude)\n | project-rename\n EventOriginalUid = Id\n , TargetSessionId = CorrelationId\n , SrcDvcIpAddr = IPAddress\n | project-reorder\n TimeGenerated\n ,EventProduct\n , EventOriginalUid\n , EventResult\n //, EventOriginalResultDetails \n , EventOriginalResultDetails\n , EventStartTime\n , EventEndTime\n , TargetSessionId\n , SrcGeoCountry\n , SrcGeoCity\n , TargetAppName\n , TargetAppId\n | lookup AADSTSErrorCodes on ResultType\n // ** Aliases\n | extend \n User=TargetUsername\n , LogonTarget=ResourceIdentity\n , Dvc=EventVendor\n };\nAADMIAuthentication(starttime, endtime, targetusername_has)",
"version": 1,
"functionParameters": "starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string='*'"
}
}
]
}
]
}

Просмотреть файл

@ -1,6 +1,6 @@
# Azure active directory nonInteractive signin logs ASIM Authentication Normalization Parser
This template deploys the ASIM Authentication schema parser for Azure active directory nonInteractive signin logs. The parser is a part of the Azure Sentinel Information Mode.
This template deploys the ASIM Authentication schema parser for Azure active directory nonInteractive signin logs. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
@ -12,4 +12,4 @@ For more information, see:
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FAuthenticationAADNonInteractive%2FAuthenticationAADNonInteractive.json)
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FvimAuthenticationAADNonInteractive%2FvimAuthenticationAADNonInteractive.json)

Просмотреть файл

@ -0,0 +1,39 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspaceName": {
"type": "string"
},
"location": {
"type": "string"
}
},
"resources": [
{
"type": "Microsoft.OperationalInsights/workspaces",
"apiVersion": "2017-03-15-preview",
"name": "[parameters('workspaceName')]",
"location": "[parameters('location')]",
"resources": [
{
"type": "savedSearches",
"apiVersion": "2020-08-01",
"name": "vimAuthenticationAADNonInteractiveUserSignInLogs",
"dependsOn": [
"[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
],
"properties": {
"etag": "*",
"displayName": "Azure active directory non interactive authentication",
"category": "Security",
"FunctionAlias": "vimAuthenticationAADNonInteractiveUserSignInLogs",
"query": "let AADNIAuthentication=(starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string=\"*\"){\n AADNonInteractiveUserSignInLogs\n // ************************************************************************* \n // <Prefilterring>\n // *************************************************************************\n | where \n (isnull(starttime) or TimeGenerated >= starttime) \n and (isnull(endtime) or TimeGenerated <= starttime)\n and (targetusername_has=='*' or (UserPrincipalName has targetusername_has ))\n // ************************************************************************* \n // </Prefilterring>\n // ************************************************************************* \n | extend\n EventVendor = 'Microsoft'\n , EventProduct = 'AAD Non Interactive'\n , EventSchemaVersion='0.1.0'\n , EventCount=int(1)\n , EventResult = iff (ResultType ==0, 'Success', 'Failure')\n , EventOriginalResultDetails = coalesce(ResultDescription, ResultType)\n , EventStartTime = TimeGenerated\n , EventEndTime= TimeGenerated\n , EventType= 'Logon'\n , SrcDvcId=tostring(todynamic(DeviceDetail).deviceId)\n , SrcDvcHostname =tostring(todynamic(DeviceDetail).displayName)\n , SrcDvcOs=tostring(todynamic(DeviceDetail).operatingSystem)\n , Location = todynamic(LocationDetails)\n , TargetAppId = ResourceIdentity \n , TargetUserType='NonInteractive'\n , TargetUsernameType='Upn'\n , TargetUserIdType='AADID'\n , TargetAppName=ResourceDisplayName\n | extend\n SrcGeoCity=tostring(Location.city)\n , SrcGeoCountry=tostring(Location.countryOrRegion)\n , SrcGeoLatitude=toreal(Location.geoCoordinates.latitude)\n , SrcGeoLongitude=toreal(Location.geoCoordinates.longitude)\n | project-rename\n EventOriginalUid =Id\n , LogonMethod = AuthenticationRequirement\n , HttpUserAgent=UserAgent\n , TargetSessionId=CorrelationId\n , TargetUserId = UserId\n , TargetUsername=UserPrincipalName\n , SrcDvcIpAddr=IPAddress\n | lookup AADSTSErrorCodes on ResultType\n | project-reorder\n TimeGenerated\n ,EventProduct\n , EventOriginalUid\n , EventResult\n , EventOriginalResultDetails\n , EventStartTime\n , EventEndTime\n , LogonMethod \n , TargetSessionId\n , TargetUserId\n , TargetUsername\n , SrcDvcId\n , SrcDvcHostname \n , SrcDvcOs\n , HttpUserAgent \n , SrcGeoCountry\n , SrcGeoCity\n , TargetAppId\n , TargetAppName\n // ** Aliases\n | extend \n User=TargetUsername\n , LogonTarget=ResourceIdentity\n , Dvc=EventVendor};\nAADNIAuthentication(starttime, endtime, targetusername_has)",
"version": 1,
"functionParameters": "starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string='*'"
}
}
]
}
]
}

Просмотреть файл

@ -1,6 +1,6 @@
# Azure active directory service principal signin logs ASIM Authentication Normalization Parser
This template deploys the ASIM Authentication schema parser for Azure active directory service principal signin logs. The parser is a part of the Azure Sentinel Information Mode.
This template deploys the ASIM Authentication schema parser for Azure active directory service principal signin logs. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
@ -12,4 +12,4 @@ For more information, see:
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FAuthenticationAADServicePrincipalSignInLogs%2FAuthenticationAADServicePrincipalSignInLogs.json)
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FvimAuthenticationAADServicePrincipalSignInLogs%2FvimAuthenticationAADServicePrincipalSignInLogs.json)

Просмотреть файл

@ -0,0 +1,39 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspaceName": {
"type": "string"
},
"location": {
"type": "string"
}
},
"resources": [
{
"type": "Microsoft.OperationalInsights/workspaces",
"apiVersion": "2017-03-15-preview",
"name": "[parameters('workspaceName')]",
"location": "[parameters('location')]",
"resources": [
{
"type": "savedSearches",
"apiVersion": "2020-08-01",
"name": "vimAuthenticationAADServicePrincipalSignInLogs",
"dependsOn": [
"[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
],
"properties": {
"etag": "*",
"displayName": "Azure active directory service principal authentication",
"category": "Security",
"FunctionAlias": "vimAuthenticationAADServicePrincipalSignInLogs",
"query": "let AADSvcPrincipal=(starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string=\"*\"){\n AADServicePrincipalSignInLogs\n // ************************************************************************* \n // <Prefilterring>\n // *************************************************************************\n | where \n (isnull(starttime) or TimeGenerated >= starttime)\n and (isnull(endtime) or TimeGenerated <= starttime) \n and (targetusername_has=='*' or (ServicePrincipalName =~ targetusername_has))\n // ************************************************************************* \n // </Prefilterring>\n // ************************************************************************* \n | extend\n EventVendor = 'Microsoft'\n , EventProduct = 'AAD Service Principal'\n , EventCount=int(1)\n , EventSchemaVersion='0.1.0'\n , EventResult = iff (ResultType ==0, 'Success', 'Failure')\n //, EventResultDetails= ResultType\n , EventOriginalResultDetails = coalesce(ResultDescription, ResultType)\n , EventStartTime = TimeGenerated\n , EventEndTime= TimeGenerated\n , EventType= 'Logon'\n , Location = todynamic(LocationDetails)\n , TargetAppId = ResourceIdentity \n , TargetAppName=ResourceDisplayName\n , TargetUserType='ServicePrincipal'\n , TargetUsername=ServicePrincipalName\n , TargetUserId=ServicePrincipalId\n , TargetUsernameType='Simple'\n , TargetUserIdType='AADID'\n | extend\n SrcGeoCity=tostring(Location.city)\n , SrcGeoCountry=tostring(Location.countryOrRegion)\n , SrcGeoLatitude=toreal(Location.geoCoordinates.latitude)\n , SrcGeoLongitude=toreal(Location.geoCoordinates.longitude)\n | project-rename\n EventOriginalUid =Id\n , TargetSessionId=CorrelationId\n , SrcDvcIpAddr=IPAddress\n | lookup AADSTSErrorCodes on ResultType\n | project-reorder\n TimeGenerated\n ,EventProduct\n , EventOriginalUid\n , EventResult\n //, EventResultDetails\n , EventOriginalResultDetails\n , EventStartTime\n , EventEndTime\n , TargetSessionId\n , SrcGeoCity\n , SrcGeoCountry\n , TargetAppId\n // ** Aliases\n | extend \n User=TargetUsername\n , LogonTarget=ResourceIdentity\n , Dvc=EventVendor};\nAADSvcPrincipal(starttime, endtime, targetusername_has)",
"version": 1,
"functionParameters": "starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string='*'"
}
}
]
}
]
}

Просмотреть файл

@ -1,6 +1,6 @@
# Azure SigninLogs ASIM Authentication Normalization Parser
This template deploys the ASIM Authentication schema parser for Azure SigninLogs. The parser is a part of the Azure Sentinel Information Mode.
This template deploys the ASIM Authentication schema parser for Azure SigninLogs. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
@ -12,4 +12,4 @@ For more information, see:
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FAuthenticationAADSigninLogs%2FAuthenticationAADSigninLogs.json)
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FvimAuthenticationAADSigninLogs%2FvimAuthenticationAADSigninLogs.json)

Просмотреть файл

@ -0,0 +1,39 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspaceName": {
"type": "string"
},
"location": {
"type": "string"
}
},
"resources": [
{
"type": "Microsoft.OperationalInsights/workspaces",
"apiVersion": "2017-03-15-preview",
"name": "[parameters('workspaceName')]",
"location": "[parameters('location')]",
"resources": [
{
"type": "savedSearches",
"apiVersion": "2020-08-01",
"name": "vimAuthenticationSigninLogs",
"dependsOn": [
"[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
],
"properties": {
"etag": "*",
"displayName": "Azure active directory authentication",
"category": "Security",
"FunctionAlias": "vimAuthenticationSigninLogs",
"query": "let AADSigninLogs=(starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string=\"*\"){\nSigninLogs\n// ************************************************************************* \n// <Prefilterring>\n// *************************************************************************\n| where \n (isnull(starttime) or TimeGenerated >= starttime) \n and (isnull(endtime) or TimeGenerated <= starttime) \n and (targetusername_has=='*' or (UserPrincipalName has targetusername_has ))\n// ************************************************************************* \n// </Prefilterring>\n// ************************************************************************* \n| extend\n EventVendor = 'Microsoft'\n , EventProduct = 'AAD Sign In Logs'\n , EventCount=int(1)\n , EventSchemaVersion='0.1.0'\n , EventResult = iff (ResultType ==0, 'Success', 'Failure')\n , EventOriginalResultDetails = coalesce(ResultDescription, ResultType)\n , EventStartTime = TimeGenerated\n , EventEndTime= TimeGenerated\n , EventType= 'Logon'\n , SrcDvcId=tostring(DeviceDetail.deviceId)\n , SrcDvcHostname =tostring(DeviceDetail.displayName)\n , SrcDvcOs=tostring(DeviceDetail.operatingSystem)\n // , SrcBrowser= tostring(DeviceDetail.browser)\n , Location = todynamic(LocationDetails)\n , TargetUsernameType='Upn'\n , TargetUserIdType='AADID'\n , SrcDvcIpAddr=IPAddress\n| extend\n SrcGeoCity=tostring(Location.city)\n , SrcGeoCountry=tostring(Location.countryOrRegion)\n , SrcGeoLatitude=toreal(Location.geoCoordinates.latitude)\n , SrcGeoLongitude=toreal(Location.geoCoordinates.longitude)\n | lookup AADSTSErrorCodes on ResultType\n | project-rename\n EventOriginalUid =Id\n , LogonMethod = AuthenticationRequirement\n , HttpUserAgent=UserAgent\n , TargetSessionId=CorrelationId\n , TargetUserId = UserId\n , TargetUsername=UserPrincipalName\n , TargetUserType=UserType\n , TargetAppId = ResourceIdentity\n , TargetAppName=ResourceDisplayName\n | project-reorder\n TimeGenerated\n ,EventProduct\n , EventOriginalUid\n , EventResult\n , EventOriginalResultDetails\n , EventStartTime\n , EventEndTime\n , LogonMethod \n , TargetSessionId\n , TargetUserId\n , TargetUsername\n , SrcDvcId\n , SrcDvcHostname \n , SrcDvcOs\n , HttpUserAgent \n , SrcGeoCity\n , SrcGeoCountry\n , TargetAppId\n , TargetAppName\n , SrcDvcIpAddr\n // ** Aliases\n | extend \n User=TargetUsername\n , LogonTarget=TargetAppName\n , Dvc=EventVendor};\n AADSigninLogs(starttime, endtime, targetusername_has)\n",
"version": 1,
"functionParameters": "starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string='*'"
}
}
]
}
]
}

Просмотреть файл

@ -1,6 +1,6 @@
# Amazon web services cloud trail ASIM Authentication Normalization Parser
This template deploys the ASIM Authentication schema parser for Amazon web services cloud trail. The parser is a part of the Azure Sentinel Information Mode.
This template deploys the ASIM Authentication schema parser for Amazon web services cloud trail. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
@ -12,4 +12,4 @@ For more information, see:
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FAuthenticationAWSCloudTrail%2FAuthenticationAWSCloudTrail.json)
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FvimAuthenticationAWSCloudTrail%2FvimAuthenticationAWSCloudTrail.json)

Просмотреть файл

@ -0,0 +1,39 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspaceName": {
"type": "string"
},
"location": {
"type": "string"
}
},
"resources": [
{
"type": "Microsoft.OperationalInsights/workspaces",
"apiVersion": "2017-03-15-preview",
"name": "[parameters('workspaceName')]",
"location": "[parameters('location')]",
"resources": [
{
"type": "savedSearches",
"apiVersion": "2020-08-01",
"name": "vimAuthenticationAWSCloudTrail",
"dependsOn": [
"[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
],
"properties": {
"etag": "*",
"displayName": "ASIM AWS authentication",
"category": "Security",
"FunctionAlias": "vimAuthenticationAWSCloudTrail",
"query": "let AWSLogon=(starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string=\"*\"){\nAWSCloudTrail\n// ************************************************************************* \n// <Prefilterring>\n// *************************************************************************\n| where \n (isnull(starttime) or TimeGenerated >= starttime) \n and (isnull(endtime) or TimeGenerated <= starttime) \n and (targetusername_has=='*' or (UserIdentityUserName has targetusername_has ))\n// ************************************************************************* \n// </Prefilterring>\n// ************************************************************************* \n | where EventName == 'ConsoleLogin'\n | extend\n EventVendor = 'AWS'\n , EventProduct='AWSCloudTrail'\n , EventCount=int(1)\n , EventSchemaVersion='0.1.0'\n , EventResult= iff (ResponseElements has_cs 'Success', 'Success', 'Failure')\n , EventStartTime=TimeGenerated\n , EventEndTime=TimeGenerated\n , EventType='Logon'\n , LogonMethod=iff(AdditionalEventData has '\"MFAUsed\": \"No\"', 'NoMFA', 'MFA')\n , TargetUrl =tostring(todynamic(AdditionalEventData).LoginTo)\n , TargetUsernameType='Simple'\n , TargetUserIdType='AWSId'\n | project-rename\n EventOriginalUid= AwsEventId\n , EventOriginalResultDetails= ErrorMessage\n , TargetUsername= UserIdentityUserName\n , TargetUserType=UserIdentityType\n , TargetUserId=UserIdentityAccountId \n , SrcDvcIpAddr=SourceIpAddress\n , HttpUserAgent=UserAgent\n// **** Aliases\n| extend\n User=TargetUsername\n , LogonTarget=tostring(split(TargetUrl,'?')[0])\n , Dvc=EventVendor\n };\n AWSLogon(starttime, endtime, targetusername_has)\n",
"version": 1,
"functionParameters": "starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string='*'"
}
}
]
}
]
}

Просмотреть файл

@ -12,4 +12,4 @@ For more information, see:
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FAuthenticationEmpty%2FAuthenticationEmpty.json)
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FvimAuthenticationEmpty%2FvimAuthenticationEmpty.json)

Просмотреть файл

@ -0,0 +1,15 @@
# M365 Defender ASIM Authentication Normalization Parser
This template deploys the ASIM Authentication schema parser for M365 Defender. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
For more information, see:
- [Normalization and the Azure Sentinel Information Model (ASIM)](https://aka.ms/AzSentinelNormalization)
- [Azure Sentinel Authentication normalization schema reference](https://aka.ms/AzSentinelAuthenticationDoc)
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FvimAuthenticationM365D%2FvimAuthenticationM365D.json)

Просмотреть файл

@ -0,0 +1,39 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspaceName": {
"type": "string"
},
"location": {
"type": "string"
}
},
"resources": [
{
"type": "Microsoft.OperationalInsights/workspaces",
"apiVersion": "2017-03-15-preview",
"name": "[parameters('workspaceName')]",
"location": "[parameters('location')]",
"resources": [
{
"type": "savedSearches",
"apiVersion": "2020-08-01",
"name": "vimAuthenticationM365Defender",
"dependsOn": [
"[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
],
"properties": {
"etag": "*",
"displayName": "ASIM Microsoft 365 Defender DeviceLogonEvent Authentication parser",
"category": "Security",
"FunctionAlias": "vimAuthenticationM365Defender",
"query": "let FaliureReason=datatable(EventOriginalResultDetails:string, EventResultDetails:string)[\n 'InvalidUserNameOrPassword','No such user or password'\n ];\nlet AuthM365D=(starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string=\"*\"){\n DeviceLogonEvents \n// ************************************************************************* \n// <Prefilterring>\n// *************************************************************************\n| where \n (isnull(starttime) or TimeGenerated >= starttime) \n and (isnull(endtime) or TimeGenerated <= starttime) \n and (targetusername_has=='*' or (AccountName has targetusername_has))\n// ************************************************************************* \n// </Prefilterring>\n// ************************************************************************* \n //\n | project-rename \n EventOriginalResultDetails=FailureReason \n | extend \n // ---- Event\n EventSubType=iff(LogonType=='Remote interactive (RDP) logons','RemoteInteractive',LogonType)\n , EventCount=int(1)\n , EventStartTime=TimeGenerated\n , EventEndTime=TimeGenerated\n , EventOriginalType = LogonType\n , EventProduct='M365 Defender for EndPoint'\n , EventResult = case(ActionType =='LogonSuccess', 'Success'\n , ActionType=='LogonFailed', 'Failure'\n , ActionType=='LogonAttempted', 'NA'\n , 'NA')\n , EventSchemaVersion='0.1.0'\n , EventType='Logon'\n , EventVendor ='Microsoft'\n // ---- Target and Actor Users\n | project-rename \n TargetUserId=AccountSid\n , ActorUserId =InitiatingProcessAccountSid\n , ActorUserUpn=InitiatingProcessAccountUpn\n , ActorUserObjectId=InitiatingProcessAccountObjectId\n | extend \n TargetUserIdType ='SID'\n , TargetUsername = strcat(AccountDomain,'\\\\',AccountName)\n , TargetUsernameType='Windows'\n , ActorUserIdType='SID'\n , ActorUsername=coalesce(ActorUserUpn, strcat(InitiatingProcessAccountDomain,'\\\\',InitiatingProcessAccountName)) // InitiatingProcessAccountName\n , ActorUsernameType=case(isnotempty( ActorUserUpn), 'Upn/Email'\n , isnotempty(InitiatingProcessAccountDomain), 'Windows'\n , 'Simple')\n , TargetDvcHostname=tostring(split(DeviceName,'.')[0])\n , TargetDvcFQDN=DeviceName\n | project-rename \n LogonProtocol=Protocol\n , TargetDvcId=DeviceId\n , SrcDvcIpAddr=RemoteIP\n , OriginalEventUid=ReportId\n , SrcDvcHostname=RemoteDeviceName \n //\n , ActingProcessCommandLine = InitiatingProcessCommandLine\n , ActingProcessCreationTime=InitiatingProcessCreationTime\n , ActingProcessPath=InitiatingProcessFolderPath\n , ActingProcessId=InitiatingProcessId\n , ActingProcessMD5=InitiatingProcessMD5\n , ActingProcessSHA1=InitiatingProcessSHA1\n , ActingProcessSHA256= InitiatingProcessSHA256\n , ActingProcessIntegrityLevel= InitiatingProcessIntegrityLevel\n , ActingProcessTokenElevation=InitiatingProcessTokenElevation\n , ParentProcessName=InitiatingProcessParentFileName\n , ParentProcessId=InitiatingProcessParentId\n , ParentProcessCreationTime=InitiatingProcessParentCreationTime\n | extend \n ActingProcessName=iff(ActingProcessPath hassuffix InitiatingProcessFileName\n , ActingProcessPath\n , strcat(ActingProcessPath,'\\\\',InitiatingProcessFileName))\n , TargetDvcHostnameType='FQDN'\n , TargetDvcIdType='MDE'\n , TargetPortNumber=RemotePort\n , TargetSessionId = tostring(LogonId)\n | lookup FaliureReason on EventOriginalResultDetails \n // TargetUrl \n // ----------- Alias\n | extend \n User=TargetUsername \n , LogonTarget=TargetDvcHostname\n , Dvc=TargetDvcHostname\n };AuthM365D(starttime, endtime, targetusername_has)",
"version": 1,
"functionParameters": "starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string='*'"
}
}
]
}
]
}

Просмотреть файл

@ -0,0 +1,15 @@
# Microsoft Defender for IoT - Endpoint ASIM Authentication Normalization Parser
This template deploys the ASIM Authentication schema parser for Microsoft Defender for IoT - Endpoint. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
For more information, see:
- [Normalization and the Azure Sentinel Information Model (ASIM)](https://aka.ms/AzSentinelNormalization)
- [Azure Sentinel Authentication normalization schema reference](https://aka.ms/AzSentinelAuthenticationDoc)
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FvimAuthenticationMicrosoftMD4IoT%2FvimAuthenticationMicrosoftMD4IoT.json)

Просмотреть файл

@ -0,0 +1,39 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspaceName": {
"type": "string"
},
"location": {
"type": "string"
}
},
"resources": [
{
"type": "Microsoft.OperationalInsights/workspaces",
"apiVersion": "2017-03-15-preview",
"name": "[parameters('workspaceName')]",
"location": "[parameters('location')]",
"resources": [
{
"type": "savedSearches",
"apiVersion": "2020-08-01",
"name": "vimAuthenticationMD4IoT",
"dependsOn": [
"[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
],
"properties": {
"etag": "*",
"displayName": "ASIM Authentication Parser for Microsoft Defender for IoT - Endpoint",
"category": "Security",
"FunctionAlias": "vimAuthenticationMD4IoT",
"query": "let Authentication_MD4IoT=(starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string=\"*\")\n {\n SecurityIoTRawEvent \n | where RawEventName == \"Login\"\n // ************************************************************************* \n // <Prefilterring>\n // *************************************************************************\n | where \n (isnull(starttime) or TimeGenerated >= starttime) \n and (isnull(endtime) or TimeGenerated <= starttime)\n and (targetusername_has=='*' or EventDetails has targetusername_has)\n // ************************************************************************* \n // </Prefilterring>\n // ************************************************************************* \n | extend\n EventDetails = todynamic(EventDetails)\n //\n | extend\n EventOriginalUid = tostring(EventDetails.OriginalEventId), \n EventProduct = 'Azure Defender for IoT',\n EventCount=int(1),\n EventVendor = 'Microsoft', \n EventSchemaVersion = '0.1.0', \n EventStartTime = todatetime(EventDetails.TimestampUTC), \n EventEndTime = todatetime(TimeGenerated), \n EventType = iff (EventDetails.Operation == 'Logout', 'Logoff', 'Logon'), \n EventResult = iff (EventDetails.Operation == 'LoginFailed', 'Failure', 'Success') \n //\n | extend\n ActingProcessId = tostring(EventDetails.ProcessId), \n ActingProcessName = tostring(EventDetails.Executable), // -- Linux input device or service used to authenticate, for example pts/1, tty1, pts/0, ssh:notty \n DvcOs = iif (EventDetails.MessageSource == \"Linux\", \"Linux\", \"Windows\"), // -- Intermediate fix\n TargetUsernameType = \"Simple\",\n TargetUsername = tostring(EventDetails.UserName),\n // ************************************************************************* \n // <Postfilterring>\n // *************************************************************************\n | where \n (targetusername_has=='*' or TargetUsername has targetusername_has)\n // ************************************************************************* \n // <Postfilterring>\n // *************************************************************************\n SrcIpAddr = tostring(EventDetails.RemoteAddress) \n | project-rename\n DvcHostname = DeviceId, \n EventProductVersion = AgentVersion, // -- Not available in Windows\n _ResourceId = AssociatedResourceId, \n _SubscriptionId = AzureSubscriptionId \n //\n // -- aliases\n | extend \n User = TargetUsername, \n Process = ActingProcessName, \n Dvc = DvcHostname,\n SrcDvcIpAddr = SrcIpAddr,\n IpAddr = SrcIpAddr\n };\n Authentication_MD4IoT(starttime, endtime, targetusername_has)",
"version": 1,
"functionParameters": "starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string='*'"
}
}
]
}
]
}

Просмотреть файл

@ -0,0 +1,15 @@
# Microsoft Windows Events ASIM Authentication Normalization Parser
This template deploys the ASIM Authentication schema parser for Microsoft Windows Events. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
For more information, see:
- [Normalization and the Azure Sentinel Information Model (ASIM)](https://aka.ms/AzSentinelNormalization)
- [Azure Sentinel Authentication normalization schema reference](https://aka.ms/AzSentinelAuthenticationDoc)
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FvimAuthenticationMicrosoftWindowsEvent%2FvimAuthenticationMicrosoftWindowsEvent.json)

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -1,6 +1,6 @@
# Okta identity management ASIM Authentication Normalization Parser
This template deploys the ASIM Authentication schema parser for Okta identity management. The parser is a part of the Azure Sentinel Information Mode.
This template deploys the ASIM Authentication schema parser for Okta identity management. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
@ -12,4 +12,4 @@ For more information, see:
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FAuthenticationOktaOSS%2FAuthenticationOktaOSS.json)
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FvimAuthenticationOktaOSS%2FvimAuthenticationOktaOSS.json)

Просмотреть файл

@ -0,0 +1,39 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspaceName": {
"type": "string"
},
"location": {
"type": "string"
}
},
"resources": [
{
"type": "Microsoft.OperationalInsights/workspaces",
"apiVersion": "2017-03-15-preview",
"name": "[parameters('workspaceName')]",
"location": "[parameters('location')]",
"resources": [
{
"type": "savedSearches",
"apiVersion": "2020-08-01",
"name": "vimAuthenticationOktaSSO",
"dependsOn": [
"[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
],
"properties": {
"etag": "*",
"displayName": "ASIM Okta identity management authentication parser",
"category": "Security",
"FunctionAlias": "vimAuthenticationOktaSSO",
"query": "let OktaSignin=(starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string=\"*\"){\n let OktaSuccessfulOutcome = dynamic(['SUCCESS', 'ALLOW']);\n let OktaFailedOutcome = dynamic(['FAILURE', 'SKIPPED','DENY']);\n let OktaSigninEvents=dynamic(['user.session.start', 'user.session.end']);\n // https://developer.okta.com/docs/reference/api/event-types/#catalog\n Okta_CL\n // ************************************************************************* \n // <Prefilterring>\n // *************************************************************************\n | where \n (isnull(starttime) or TimeGenerated >= starttime) \n and (isnull(endtime) or TimeGenerated <= starttime)\n and (targetusername_has=='*' or (actor_alternateId_s has targetusername_has))\n // ************************************************************************* \n // </Prefilterring>\n // ************************************************************************* \n | where eventType_s in (OktaSigninEvents)\n | extend \n EventProduct='Okta'\n , EventVendor='Okta'\n , EventCount=int(1)\n , EventSchemaVersion='0.1.0'\n , EventResult = case (outcome_result_s in (OktaSuccessfulOutcome), 'Success',outcome_result_s in (OktaFailedOutcome),'Failure', 'Partial')\n , EventStartTime=TimeGenerated\n , EventEndTime=TimeGenerated\n , EventType=iff(eventType_s hassuffix 'start', 'Logon', 'Logoff')\n , EventSubType=legacyEventType_s\n , TargetUserIdType='OktaId'\n , TargetUsernameType='Upn'\n , SrcGeoLatitude=toreal(client_geographicalContext_geolocation_lat_d)\n , SrcGeoLongitude=toreal(client_geographicalContext_geolocation_lon_d)\n , ActingAppType = \"Browser\"\n | project-rename \n EventMessage=displayMessage_s\n ,EventOriginalResultDetails=outcome_reason_s\n , LogonMethod = authenticationContext_credentialType_s\n , TargetSessionId=authenticationContext_externalSessionId_s\n , TargetUserId= actor_id_s\n , TargetUsername=actor_alternateId_s\n , TargetUserType=actor_type_s\n , SrcDvcOs=client_userAgent_os_s\n , HttpUserAgent=client_userAgent_rawUserAgent_s\n , ActingAppName = client_userAgent_browser_s\n , SrcIsp=securityContext_isp_s\n , SrcGeoCity=client_geographicalContext_city_s\n , SrcGeoCountry=client_geographicalContext_country_s\n , EventOriginalUid = uuid_g_g\n | project-reorder\n EventProduct\n , EventOriginalUid\n , TimeGenerated\n , EventMessage\n , EventResult\n , EventOriginalResultDetails\n , EventStartTime\n , EventEndTime\n , EventType\n , EventSubType\n , LogonMethod\n , TargetSessionId\n , TargetUserId\n , TargetUsername\n , TargetUserType\n , SrcDvcOs\n , HttpUserAgent\n , SrcIsp\n , SrcGeoCity\n , SrcGeoCountry\n , SrcGeoLongitude\n , SrcGeoLatitude\n // ** Aliases\n | extend \n User=TargetUsername\n , Dvc=EventVendor\n };\nOktaSignin(starttime, endtime, targetusername_has)\n",
"version": 1,
"functionParameters": "starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string='*'"
}
}
]
}
]
}

Просмотреть файл

@ -0,0 +1,15 @@
# Microsoft Security Events ASIM Authentication Normalization Parser
This template deploys the ASIM Authentication schema parser for Microsoft Security Events. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
For more information, see:
- [Normalization and the Azure Sentinel Information Model (ASIM)](https://aka.ms/AzSentinelNormalization)
- [Azure Sentinel Authentication normalization schema reference](https://aka.ms/AzSentinelAuthenticationDoc)
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimAuthentication%2FARM%2FvimAuthenticationWindowsSecurityEvent%2FvimAuthenticationWindowsSecurityEvent.json)

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -0,0 +1,476 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspaceName": {
"type": "string"
},
"location": {
"type": "string"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAADSTSErrCodes",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/AADSTSErrorCodes/AADSTSErrorCodes.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAuthenticationAADManagedIdentity",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/ASimAuthenticationAADManagedIdentity/ASimAuthenticationAADManagedIdentity.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAuthenticationAADNonInteractive",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/ASimAuthenticationAADNonInteractive/ASimAuthenticationAADNonInteractive.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAuthenticationAADServicePrincipalSignInLogs",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/ASimAuthenticationAADServicePrincipalSignInLogs/ASimAuthenticationAADServicePrincipalSignInLogs.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAuthenticationAADSigninLogs",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/ASimAuthenticationAADSigninLogs/ASimAuthenticationAADSigninLogs.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAuthenticationAWSCloudTrail",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/ASimAuthenticationAWSCloudTrail/ASimAuthenticationAWSCloudTrail.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAuthenticationGeneric",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/ASimAuthentication/ASimAuthentication.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAuthenticationM365D",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/ASimAuthenticationM365D/ASimAuthenticationM365D.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAuthenticationMicrosoftMD4IoT",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/ASimAuthenticationMicrosoftMD4IoT/ASimAuthenticationMicrosoftMD4IoT.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAuthenticationMicrosoftWindowsEvent",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/ASimAuthenticationMicrosoftWindowsEvent/ASimAuthenticationMicrosoftWindowsEvent.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAuthenticationOktaOSS",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/ASimAuthenticationOktaOSS/ASimAuthenticationOktaOSS.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedAuthenticationWindowsSecurityEvent",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/ASimAuthenticationWindowsSecurityEvent/ASimAuthenticationWindowsSecurityEvent.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedimAuthenticationGeneric",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/imAuthentication/imAuthentication.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedvimAuthenticationAADManagedIdentity",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/vimAuthenticationAADManagedIdentity/vimAuthenticationAADManagedIdentity.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedvimAuthenticationAADNonInteractive",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/vimAuthenticationAADNonInteractive/vimAuthenticationAADNonInteractive.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedvimAuthenticationAADServicePrincipalSignInLogs",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/vimAuthenticationAADServicePrincipalSignInLogs/vimAuthenticationAADServicePrincipalSignInLogs.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedvimAuthenticationAADSigninLogs",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/vimAuthenticationAADSigninLogs/vimAuthenticationAADSigninLogs.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedvimAuthenticationAWSCloudTrail",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/vimAuthenticationAWSCloudTrail/vimAuthenticationAWSCloudTrail.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedvimAuthenticationM365D",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/vimAuthenticationM365D/vimAuthenticationM365D.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedvimAuthenticationMicrosoftMD4IoT",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/vimAuthenticationMicrosoftMD4IoT/vimAuthenticationMicrosoftMD4IoT.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedvimAuthenticationMicrosoftWindowsEvent",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/vimAuthenticationMicrosoftWindowsEvent/vimAuthenticationMicrosoftWindowsEvent.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedvimAuthenticationOktaOSS",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/vimAuthenticationOktaOSS/vimAuthenticationOktaOSS.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedvimAuthenticationWindowsSecurityEvent",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Parsers/ASimAuthentication/ARM/vimAuthenticationWindowsSecurityEvent/vimAuthenticationWindowsSecurityEvent.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"workspaceName": {
"value": "[parameters('workspaceName')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
}
],
"outputs": {}
}

Просмотреть файл

@ -14,7 +14,7 @@ References:
Link: https:/aka.ms/AzSentinelNormalization
Description: |
This Query creates an empty table of the authentication schema.
ParserName: imAuthentication
ParserName: ASimAuthentication
ParserQuery: |
union isfuzzy=true
vimAuthenticationEmpty

Просмотреть файл

@ -14,7 +14,7 @@ References:
Link: https:/aka.ms/AzSentinelNormalization
Description: |
This Query Parser maps Azure Active Directory Managed Identity sign in logs (AADManagedIdentitySignInLogs) to the Azure Sentinel Information Model authenticaion schema.
ParserName: vimAuthenticationAADManagedIdentitySignInLogs
ParserName: ASimAuthenticationAADManagedIdentitySignInLogs
ParserQuery: |
let AADMIAuthentication=(){
AADManagedIdentitySignInLogs

Просмотреть файл

@ -14,7 +14,7 @@ References:
Link: https://aka.ms/AzSentinelAuthenticationDoc
Description: |
This Query Parser maps Azure Active Directory Non Interactive sign in logs (AADNonInteractiveUserSignInLogs) to the Azure Sentinel Information Model authenticaion schema.
ParserName: vimAuthenticationAADNonInteractiveUserSignInLogs
ParserName: ASimAuthenticationAADNonInteractiveUserSignInLogs
ParserQuery: |
let AADNIAuthentication=(){
AADNonInteractiveUserSignInLogs

Просмотреть файл

@ -14,7 +14,7 @@ References:
Link: https://aka.ms/AzSentinelAuthenticationDoc
Description: |
This Query Parser maps Azure Active Directory Service Principal sign in logs (AADServicePrincipalSignInLogs) to the Azure Sentinel Information Model authenticaion schema.
ParserName: vimAuthenticationAADServicePrincipalSignInLogs
ParserName: ASimAuthenticationAADServicePrincipalSignInLogs
ParserQuery: |
let AADSvcPrincipal=(){
AADServicePrincipalSignInLogs

Просмотреть файл

@ -14,7 +14,7 @@ References:
Link: https://aka.ms/AzSentinelAuthenticationDoc
Description: |
This Query Parser maps Azure Active Directory Signin logs (SigninLogs) to the Azure Sentinel Information Model authenticaion schema.
ParserName: vimAuthenticationSigninLogs
ParserName: ASimAuthenticationSigninLogs
ParserQuery: |
let AADSigninLogs=(){
SigninLogs

Просмотреть файл

@ -14,7 +14,7 @@ References:
Link: https:/aka.ms/AzSentinelNormalization
Description: |
This Query Parser maps Amazon Web Service sign in logs (AWSCloudTrail) to the Azure Sentinel Information Model authenticaion schema.
ParserName: vimAuthenticationAWSCloudTrail
ParserName: ASimAuthenticationAWSCloudTrail
ParserQuery: |
let AWSLogon=(){
AWSCloudTrail

Просмотреть файл

@ -14,7 +14,7 @@ References:
Link: https:/aka.ms/AzSentinelNormalization
Description: |
This Query Parser maps M365 Defender Device Logon Events (DeviceLogonEvents) to the Azure Sentinel Information Model authenticaion schema.
ParserName: vimAuthenticationM365Defender
ParserName: ASimAuthenticationM365Defender
ParserQuery: |
let FaliureReason=datatable(EventOriginalResultDetails:string, EventResultDetails:string)[
'InvalidUserNameOrPassword','No such user or password'

Просмотреть файл

@ -13,7 +13,7 @@ References:
- Title: ASIM
Link: https:/aka.ms/AzSentinelNormalization
Description: ASIM Azure Defender for IoT Authentication Parser
ParserName: vimAuthenticationMD4IoT
ParserName: ASimAuthenticationMD4IoT
ParserQuery: |
let Authentication_MD4IoT=()
{

Просмотреть файл

@ -14,7 +14,7 @@ References:
Link: https:/aka.ms/AzSentinelNormalization
Description: |
This Query Parser maps Windows sign in logs (WindowsEvent) to the Azure Sentinel Information Model authenticaion schema.
ParserName: vimAuthenticationMicrosoftWindowsEvent
ParserName: ASimAuthenticationMicrosoftWindowsEvent
ParserQuery: |
let LogonEvents=dynamic([4624,4625]);
let LogoffEvents=dynamic([4634,4647]);

Просмотреть файл

@ -14,7 +14,7 @@ References:
Link: https:/aka.ms/AzSentinelNormalization
Description: |
This Query Parser maps Okta sign in logs (Okta_CL) to the Azure Sentinel Information Model authenticaion schema.
ParserName: vimAuthenticationOktaSSO
ParserName: ASimAuthenticationOktaSSO
ParserQuery: |
let OktaSignin=(){
let OktaSuccessfulOutcome = dynamic(['SUCCESS', 'ALLOW']);
@ -22,36 +22,36 @@ ParserQuery: |
let OktaSigninEvents=dynamic(['user.session.start', 'user.session.end']);
// https://developer.okta.com/docs/reference/api/event-types/#catalog
Okta_CL
| where eventType_s_s in (OktaSigninEvents)
| where eventType_s in (OktaSigninEvents)
| extend
EventProduct='Okta'
, EventVendor='Okta'
, EventCount=int(1)
, EventSchemaVersion='0.1.0'
, EventResult = case (outcome_result_s_s in (OktaSuccessfulOutcome), 'Success',outcome_result_s_s in (OktaFailedOutcome),'Failure', 'Partial')
, EventResult = case (outcome_result_s in (OktaSuccessfulOutcome), 'Success',outcome_result_s in (OktaFailedOutcome),'Failure', 'Partial')
, EventStartTime=TimeGenerated
, EventEndTime=TimeGenerated
, EventType=iff(eventType_s_s hassuffix 'start', 'Logon', 'Logoff')
, EventSubType=legacyEventType_s_s
, EventType=iff(eventType_s hassuffix 'start', 'Logon', 'Logoff')
, EventSubType=legacyEventType_s
, TargetUserIdType='OktaId'
, TargetUsernameType='Upn'
, SrcGeoLatitude=toreal(client_geographicalContext_geolocation_lat_d_s)
, SrcGeoLongitude=toreal(client_geographicalContext_geolocation_lon_d_s)
, SrcGeoLatitude=toreal(client_geographicalContext_geolocation_lat_d)
, SrcGeoLongitude=toreal(client_geographicalContext_geolocation_lon_d)
, ActingAppType = "Browser"
| project-rename
EventMessage=displayMessage_s_s
,EventOriginalResultDetails=outcome_reason_s_s
, LogonMethod = authenticationContext_credentialType_s_s
, TargetSessionId=authenticationContext_externalSessionId_s_s
, TargetUserId= actor_id_s_s
, TargetUsername=actor_alternateId_s_s
, TargetUserType=actor_type_s_s
, SrcDvcOs=client_userAgent_os_s_s
, HttpUserAgent=client_userAgent_rawUserAgent_s_s
, ActingAppName = client_userAgent_browser_s_s
, SrcIsp=securityContext_isp_s_s
, SrcGeoCity=client_geographicalContext_city_s_s
, SrcGeoCountry=client_geographicalContext_country_s_s
EventMessage=displayMessage_s
,EventOriginalResultDetails=outcome_reason_s
, LogonMethod = authenticationContext_credentialType_s
, TargetSessionId=authenticationContext_externalSessionId_s
, TargetUserId= actor_id_s
, TargetUsername=actor_alternateId_s
, TargetUserType=actor_type_s
, SrcDvcOs=client_userAgent_os_s
, HttpUserAgent=client_userAgent_rawUserAgent_s
, ActingAppName = client_userAgent_browser_s
, SrcIsp=securityContext_isp_s
, SrcGeoCity=client_geographicalContext_city_s
, SrcGeoCountry=client_geographicalContext_country_s
, EventOriginalUid = uuid_g_g
| project-reorder
EventProduct

Просмотреть файл

@ -14,7 +14,7 @@ References:
Link: https:/aka.ms/AzSentinelNormalization
Description: |
This Query Parser maps Windows Active Directory sign in logs (SecurityEvent) to the Azure Sentinel Information Model authenticaion schema.
ParserName: vimAuthenticationWindowsSecurityEvent
ParserName: ASimAuthenticationWindowsSecurityEvent
ParserQuery: |
let LogonEvents=dynamic([4624,4625]);
let LogoffEvents=dynamic([4634,4647]);

Просмотреть файл

@ -0,0 +1,43 @@
Parser:
Title: ASIM Source Agnostic Authentication Parser
Version: '0.0'
LastUpdated: June 9, 2021
Product:
Name: Microsoft Windows Events
Normalization:
Schema: Authentication
Version: '0.1.0'
References:
- Title: ASIM Authentication Schema
Link: https://aka.ms/AzSentinelAuthenticationDoc
- Title: ASIM
Link: https:/aka.ms/AzSentinelNormalization
Description: |
This Query creates an empty table of the authentication schema.
ParserName: imAuthentication
ParserParams:
- Name: starttime
Type: datetime
Default: datetime(null)
- Name: endtime
Type: datetime
Default: datetime(null)
- Name: targetusername_has
Type: string
Default: '*'
ParserQuery: |
let imAuthentication=(starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string="*"){
union isfuzzy=true
vimAuthenticationEmpty
, vimAuthenticationAADManagedIdentitySignInLogs(starttime, endtime, targetusername_has)
, vimAuthenticationAADNonInteractiveUserSignInLogs(starttime, endtime, targetusername_has)
, vimAuthenticationAADServicePrincipalSignInLogs(starttime, endtime, targetusername_has)
, vimAuthenticationSigninLogs(starttime, endtime, targetusername_has)
, vimAuthenticationAWSCloudTrail(starttime, endtime, targetusername_has)
, vimAuthenticationOktaSSO(starttime, endtime, targetusername_has)
, vimAuthenticationWindowsSecurityEvent(starttime, endtime, targetusername_has)
, vimAuthenticationM365Defender(starttime, endtime, targetusername_has)
, vimAuthenticationMicrosoftWindowsEvent(starttime, endtime, targetusername_has)
, vimAuthenticationMD4IoT(starttime, endtime, targetusername_has)
};
imAuthentication(starttime, endtime, targetusername_has)

Просмотреть файл

@ -0,0 +1,90 @@
Parser:
Title: Azure active directory managed identity authentication
Version: '0.1.0'
LastUpdated: June 17, 2021
Product:
Name: Azure active directory managed identity signin logs
Normalization:
Schema: Authentication
Version: 0.1.0'
References:
- Title: ASIM Authentication Schema
Link: https://aka.ms/AzSentinelAuthenticationDoc
- Title: ASIM
Link: https:/aka.ms/AzSentinelNormalization
Description: |
This Query Parser maps Azure Active Directory Managed Identity sign in logs (AADManagedIdentitySignInLogs) to the Azure Sentinel Information Model authenticaion schema.
ParserName: vimAuthenticationAADManagedIdentitySignInLogs
ParserParams:
- Name: starttime
Type: datetime
Default: datetime(null)
- Name: endtime
Type: datetime
Default: datetime(null)
- Name: targetusername_has
Type: string
Default: '*'
ParserQuery: |
let AADMIAuthentication=(starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string="*"){
AADManagedIdentitySignInLogs
// *************************************************************************
// <Prefilterring>
// *************************************************************************
| where
(isnull(starttime) or TimeGenerated >= starttime)
and (isnull(endtime) or TimeGenerated <= starttime)
and (targetusername_has=='*' or (ServicePrincipalName has targetusername_has))
// *************************************************************************
// </Prefilterring>
// *************************************************************************
| extend
EventVendor = 'Microsoft'
, EventProduct = 'AAD Managed Identity'
, EventCount=int(1)
, EventSchemaVersion='0.1.0'
, EventResult = iff (ResultType ==0, 'Success', 'Failure')
//, EventOriginalResultDetails = ResultType
, EventOriginalResultDetails = coalesce(ResultDescription, ResultType)
, EventStartTime = TimeGenerated
, EventEndTime= TimeGenerated
, EventType= 'Logon'
, Location = todynamic(LocationDetails)
, TargetAppId = ResourceIdentity
, TargetAppName=ResourceDisplayName
, TargetUserType='ServicePrincipal'
, TargetUsername=ServicePrincipalName
, TargetUserId=ServicePrincipalId
, TargetUsernameType='Simple'
, TargetUserIdType='AADID'
| extend
SrcGeoCity=tostring(Location.city)
, SrcGeoCountry=tostring(Location.countryOrRegion)
, SrcGeoLatitude=toreal(Location.geoCoordinates.latitude)
, SrcGeoLongitude=toreal(Location.geoCoordinates.longitude)
| project-rename
EventOriginalUid = Id
, TargetSessionId = CorrelationId
, SrcDvcIpAddr = IPAddress
| project-reorder
TimeGenerated
,EventProduct
, EventOriginalUid
, EventResult
//, EventOriginalResultDetails
, EventOriginalResultDetails
, EventStartTime
, EventEndTime
, TargetSessionId
, SrcGeoCountry
, SrcGeoCity
, TargetAppName
, TargetAppId
| lookup AADSTSErrorCodes on ResultType
// ** Aliases
| extend
User=TargetUsername
, LogonTarget=ResourceIdentity
, Dvc=EventVendor
};
AADMIAuthentication(starttime, endtime, targetusername_has)

Просмотреть файл

@ -0,0 +1,99 @@
Parser:
Title: Azure active directory non interactive authentication
Version: '0.0'
LastUpdated: June 3, 2021
Product:
Name: Azure active directory nonInteractive signin logs
Normalization:
Schema: Authentication
Version: '0.1.0'
References:
- Title: Using functions
Link: https://docs.microsoft.com/azure/azure-monitor/log-query/function
- Title: Authentication schema documentation
Link: https://aka.ms/AzSentinelAuthenticationDoc
Description: |
This Query Parser maps Azure Active Directory Non Interactive sign in logs (AADNonInteractiveUserSignInLogs) to the Azure Sentinel Information Model authenticaion schema.
ParserName: vimAuthenticationAADNonInteractiveUserSignInLogs
ParserParams:
- Name: starttime
Type: datetime
Default: datetime(null)
- Name: endtime
Type: datetime
Default: datetime(null)
- Name: targetusername_has
Type: string
Default: '*'
ParserQuery: |
let AADNIAuthentication=(starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string="*"){
AADNonInteractiveUserSignInLogs
// *************************************************************************
// <Prefilterring>
// *************************************************************************
| where
(isnull(starttime) or TimeGenerated >= starttime)
and (isnull(endtime) or TimeGenerated <= starttime)
and (targetusername_has=='*' or (UserPrincipalName has targetusername_has ))
// *************************************************************************
// </Prefilterring>
// *************************************************************************
| extend
EventVendor = 'Microsoft'
, EventProduct = 'AAD Non Interactive'
, EventSchemaVersion='0.1.0'
, EventCount=int(1)
, EventResult = iff (ResultType ==0, 'Success', 'Failure')
, EventOriginalResultDetails = coalesce(ResultDescription, ResultType)
, EventStartTime = TimeGenerated
, EventEndTime= TimeGenerated
, EventType= 'Logon'
, SrcDvcId=tostring(todynamic(DeviceDetail).deviceId)
, SrcDvcHostname =tostring(todynamic(DeviceDetail).displayName)
, SrcDvcOs=tostring(todynamic(DeviceDetail).operatingSystem)
, Location = todynamic(LocationDetails)
, TargetAppId = ResourceIdentity
, TargetUserType='NonInteractive'
, TargetUsernameType='Upn'
, TargetUserIdType='AADID'
, TargetAppName=ResourceDisplayName
| extend
SrcGeoCity=tostring(Location.city)
, SrcGeoCountry=tostring(Location.countryOrRegion)
, SrcGeoLatitude=toreal(Location.geoCoordinates.latitude)
, SrcGeoLongitude=toreal(Location.geoCoordinates.longitude)
| project-rename
EventOriginalUid =Id
, LogonMethod = AuthenticationRequirement
, HttpUserAgent=UserAgent
, TargetSessionId=CorrelationId
, TargetUserId = UserId
, TargetUsername=UserPrincipalName
, SrcDvcIpAddr=IPAddress
| lookup AADSTSErrorCodes on ResultType
| project-reorder
TimeGenerated
,EventProduct
, EventOriginalUid
, EventResult
, EventOriginalResultDetails
, EventStartTime
, EventEndTime
, LogonMethod
, TargetSessionId
, TargetUserId
, TargetUsername
, SrcDvcId
, SrcDvcHostname
, SrcDvcOs
, HttpUserAgent
, SrcGeoCountry
, SrcGeoCity
, TargetAppId
, TargetAppName
// ** Aliases
| extend
User=TargetUsername
, LogonTarget=ResourceIdentity
, Dvc=EventVendor};
AADNIAuthentication(starttime, endtime, targetusername_has)

Просмотреть файл

@ -0,0 +1,88 @@
Parser:
Title: Azure active directory service principal authentication
Version: '0.0'
LastUpdated: June 3, 2021
Product:
Name: Azure active directory service principal signin logs
Normalization:
Schema: Authentication
Version: '0.1.0'
References:
- Title: Using functions
Link: https://docs.microsoft.com/azure/azure-monitor/log-query/function
- Title: Authentication schema documentation
Link: https://aka.ms/AzSentinelAuthenticationDoc
Description: |
This Query Parser maps Azure Active Directory Service Principal sign in logs (AADServicePrincipalSignInLogs) to the Azure Sentinel Information Model authenticaion schema.
ParserName: vimAuthenticationAADServicePrincipalSignInLogs
ParserParams:
- Name: starttime
Type: datetime
Default: datetime(null)
- Name: endtime
Type: datetime
Default: datetime(null)
- Name: targetusername_has
Type: string
Default: '*'
ParserQuery: |
let AADSvcPrincipal=(starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string="*"){
AADServicePrincipalSignInLogs
// *************************************************************************
// <Prefilterring>
// *************************************************************************
| where
(isnull(starttime) or TimeGenerated >= starttime)
and (isnull(endtime) or TimeGenerated <= starttime)
and (targetusername_has=='*' or (ServicePrincipalName =~ targetusername_has))
// *************************************************************************
// </Prefilterring>
// *************************************************************************
| extend
EventVendor = 'Microsoft'
, EventProduct = 'AAD Service Principal'
, EventCount=int(1)
, EventSchemaVersion='0.1.0'
, EventResult = iff (ResultType ==0, 'Success', 'Failure')
//, EventResultDetails= ResultType
, EventOriginalResultDetails = coalesce(ResultDescription, ResultType)
, EventStartTime = TimeGenerated
, EventEndTime= TimeGenerated
, EventType= 'Logon'
, Location = todynamic(LocationDetails)
, TargetAppId = ResourceIdentity
, TargetAppName=ResourceDisplayName
, TargetUserType='ServicePrincipal'
, TargetUsername=ServicePrincipalName
, TargetUserId=ServicePrincipalId
, TargetUsernameType='Simple'
, TargetUserIdType='AADID'
| extend
SrcGeoCity=tostring(Location.city)
, SrcGeoCountry=tostring(Location.countryOrRegion)
, SrcGeoLatitude=toreal(Location.geoCoordinates.latitude)
, SrcGeoLongitude=toreal(Location.geoCoordinates.longitude)
| project-rename
EventOriginalUid =Id
, TargetSessionId=CorrelationId
, SrcDvcIpAddr=IPAddress
| lookup AADSTSErrorCodes on ResultType
| project-reorder
TimeGenerated
,EventProduct
, EventOriginalUid
, EventResult
//, EventResultDetails
, EventOriginalResultDetails
, EventStartTime
, EventEndTime
, TargetSessionId
, SrcGeoCity
, SrcGeoCountry
, TargetAppId
// ** Aliases
| extend
User=TargetUsername
, LogonTarget=ResourceIdentity
, Dvc=EventVendor};
AADSvcPrincipal(starttime, endtime, targetusername_has)

Просмотреть файл

@ -0,0 +1,101 @@
Parser:
Title: Azure active directory authentication
Version: '0.0'
LastUpdated: June 3, 2021
Product:
Name: Azure SigninLogs
Normalization:
Schema: Authentication
Version: '0.1.0'
References:
- Title: Using functions
Link: https://docs.microsoft.com/azure/azure-monitor/log-query/function
- Title: Authentication schema documentation
Link: https://aka.ms/AzSentinelAuthenticationDoc
Description: |
This Query Parser maps Azure Active Directory Signin logs (SigninLogs) to the Azure Sentinel Information Model authenticaion schema.
ParserName: vimAuthenticationSigninLogs
ParserParams:
- Name: starttime
Type: datetime
Default: datetime(null)
- Name: endtime
Type: datetime
Default: datetime(null)
- Name: targetusername_has
Type: string
Default: '*'
ParserQuery: |
let AADSigninLogs=(starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string="*"){
SigninLogs
// *************************************************************************
// <Prefilterring>
// *************************************************************************
| where
(isnull(starttime) or TimeGenerated >= starttime)
and (isnull(endtime) or TimeGenerated <= starttime)
and (targetusername_has=='*' or (UserPrincipalName has targetusername_has ))
// *************************************************************************
// </Prefilterring>
// *************************************************************************
| extend
EventVendor = 'Microsoft'
, EventProduct = 'AAD Sign In Logs'
, EventCount=int(1)
, EventSchemaVersion='0.1.0'
, EventResult = iff (ResultType ==0, 'Success', 'Failure')
, EventOriginalResultDetails = coalesce(ResultDescription, ResultType)
, EventStartTime = TimeGenerated
, EventEndTime= TimeGenerated
, EventType= 'Logon'
, SrcDvcId=tostring(DeviceDetail.deviceId)
, SrcDvcHostname =tostring(DeviceDetail.displayName)
, SrcDvcOs=tostring(DeviceDetail.operatingSystem)
// , SrcBrowser= tostring(DeviceDetail.browser)
, Location = todynamic(LocationDetails)
, TargetUsernameType='Upn'
, TargetUserIdType='AADID'
, SrcDvcIpAddr=IPAddress
| extend
SrcGeoCity=tostring(Location.city)
, SrcGeoCountry=tostring(Location.countryOrRegion)
, SrcGeoLatitude=toreal(Location.geoCoordinates.latitude)
, SrcGeoLongitude=toreal(Location.geoCoordinates.longitude)
| lookup AADSTSErrorCodes on ResultType
| project-rename
EventOriginalUid =Id
, LogonMethod = AuthenticationRequirement
, HttpUserAgent=UserAgent
, TargetSessionId=CorrelationId
, TargetUserId = UserId
, TargetUsername=UserPrincipalName
, TargetUserType=UserType
, TargetAppId = ResourceIdentity
, TargetAppName=ResourceDisplayName
| project-reorder
TimeGenerated
,EventProduct
, EventOriginalUid
, EventResult
, EventOriginalResultDetails
, EventStartTime
, EventEndTime
, LogonMethod
, TargetSessionId
, TargetUserId
, TargetUsername
, SrcDvcId
, SrcDvcHostname
, SrcDvcOs
, HttpUserAgent
, SrcGeoCity
, SrcGeoCountry
, TargetAppId
, TargetAppName
, SrcDvcIpAddr
// ** Aliases
| extend
User=TargetUsername
, LogonTarget=TargetAppName
, Dvc=EventVendor};
AADSigninLogs(starttime, endtime, targetusername_has)

Просмотреть файл

@ -0,0 +1,69 @@
Parser:
Title: ASIM AWS authentication
Version: '0.1.0'
LastUpdated: June 17, 2021
Product:
Name: Amazon web services cloud trail
Normalization:
Schema: Authentication
Version: '0.1.0'
References:
- Title: ASIM Authentication Schema
Link: https://aka.ms/AzSentinelAuthenticationDoc
- Title: ASIM
Link: https:/aka.ms/AzSentinelNormalization
Description: |
This Query Parser maps Amazon Web Service sign in logs (AWSCloudTrail) to the Azure Sentinel Information Model authenticaion schema.
ParserName: vimAuthenticationAWSCloudTrail
ParserParams:
- Name: starttime
Type: datetime
Default: datetime(null)
- Name: endtime
Type: datetime
Default: datetime(null)
- Name: targetusername_has
Type: string
Default: '*'
ParserQuery: |
let AWSLogon=(starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string="*"){
AWSCloudTrail
// *************************************************************************
// <Prefilterring>
// *************************************************************************
| where
(isnull(starttime) or TimeGenerated >= starttime)
and (isnull(endtime) or TimeGenerated <= starttime)
and (targetusername_has=='*' or (UserIdentityPrincipalid has targetusername_has ))
// *************************************************************************
// </Prefilterring>
// *************************************************************************
| where EventName == 'ConsoleLogin'
| extend
EventVendor = 'AWS'
, EventProduct='AWSCloudTrail'
, EventCount=int(1)
, EventSchemaVersion='0.1.0'
, EventResult= iff (ResponseElements has_cs 'Success', 'Success', 'Failure')
, EventStartTime=TimeGenerated
, EventEndTime=TimeGenerated
, EventType='Logon'
, LogonMethod=iff(AdditionalEventData has '"MFAUsed": "No"', 'NoMFA', 'MFA')
, TargetUrl =tostring(todynamic(AdditionalEventData).LoginTo)
, TargetUsernameType='Simple'
, TargetUserIdType='AWSId'
, TargetUsername= tostring(split(UserIdentityPrincipalid,':',1))
| project-rename
EventOriginalUid= AwsEventId
, EventOriginalResultDetails= ErrorMessage
, TargetUserType=UserIdentityType
, TargetUserId=UserIdentityAccountId
, SrcDvcIpAddr=SourceIpAddress
, HttpUserAgent=UserAgent
// **** Aliases
| extend
User=TargetUsername
, LogonTarget=tostring(split(TargetUrl,'?')[0])
, Dvc=EventVendor
};
AWSLogon(starttime, endtime, targetusername_has)

Просмотреть файл

@ -0,0 +1,113 @@
Parser:
Title: ASIM Microsoft 365 Defender DeviceLogonEvent Authentication parser
Version: '0.1.0'
LastUpdated: July 1, 2021
Product:
Name: M365 Defender
Normalization:
Schema: Authentication
Version: '0.1.0'
References:
- Title: ASIM Authentication Schema
Link: https://aka.ms/AzSentinelAuthenticationDoc
- Title: ASIM
Link: https:/aka.ms/AzSentinelNormalization
Description: |
This Query Parser maps M365 Defender Device Logon Events (DeviceLogonEvents) to the Azure Sentinel Information Model authenticaion schema.
ParserName: vimAuthenticationM365Defender
ParserParams:
- Name: starttime
Type: datetime
Default: datetime(null)
- Name: endtime
Type: datetime
Default: datetime(null)
- Name: targetusername_has
Type: string
Default: '*'
ParserQuery: |
let FaliureReason=datatable(EventOriginalResultDetails:string, EventResultDetails:string)[
'InvalidUserNameOrPassword','No such user or password'
];
let AuthM365D=(starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string="*"){
DeviceLogonEvents
// *************************************************************************
// <Prefilterring>
// *************************************************************************
| where
(isnull(starttime) or TimeGenerated >= starttime)
and (isnull(endtime) or TimeGenerated <= starttime)
and (targetusername_has=='*' or (AccountName has targetusername_has))
// *************************************************************************
// </Prefilterring>
// *************************************************************************
//
| project-rename
EventOriginalResultDetails=FailureReason
| extend
// ---- Event
EventSubType=iff(LogonType=='Remote interactive (RDP) logons','RemoteInteractive',LogonType)
, EventCount=int(1)
, EventStartTime=TimeGenerated
, EventEndTime=TimeGenerated
, EventOriginalType = LogonType
, EventProduct='M365 Defender for EndPoint'
, EventResult = case(ActionType =='LogonSuccess', 'Success'
, ActionType=='LogonFailed', 'Failure'
, ActionType=='LogonAttempted', 'NA'
, 'NA')
, EventSchemaVersion='0.1.0'
, EventType='Logon'
, EventVendor ='Microsoft'
// ---- Target and Actor Users
| project-rename
TargetUserId=AccountSid
, ActorUserId =InitiatingProcessAccountSid
, ActorUserUpn=InitiatingProcessAccountUpn
, ActorUserObjectId=InitiatingProcessAccountObjectId
| extend
TargetUserIdType ='SID'
, TargetUsername = strcat(AccountDomain,'\\',AccountName)
, TargetUsernameType='Windows'
, ActorUserIdType='SID'
, ActorUsername=coalesce(ActorUserUpn, strcat(InitiatingProcessAccountDomain,'\\',InitiatingProcessAccountName)) // InitiatingProcessAccountName
, ActorUsernameType=case(isnotempty( ActorUserUpn), 'Upn/Email'
, isnotempty(InitiatingProcessAccountDomain), 'Windows'
, 'Simple')
, TargetDvcHostname=tostring(split(DeviceName,'.')[0])
, TargetDvcFQDN=DeviceName
| project-rename
LogonProtocol=Protocol
, TargetDvcId=DeviceId
, SrcDvcIpAddr=RemoteIP
, OriginalEventUid=ReportId
, SrcDvcHostname=RemoteDeviceName
//
, ActingProcessCommandLine = InitiatingProcessCommandLine
, ActingProcessCreationTime=InitiatingProcessCreationTime
, ActingProcessPath=InitiatingProcessFolderPath
, ActingProcessId=InitiatingProcessId
, ActingProcessMD5=InitiatingProcessMD5
, ActingProcessSHA1=InitiatingProcessSHA1
, ActingProcessSHA256= InitiatingProcessSHA256
, ActingProcessIntegrityLevel= InitiatingProcessIntegrityLevel
, ActingProcessTokenElevation=InitiatingProcessTokenElevation
, ParentProcessName=InitiatingProcessParentFileName
, ParentProcessId=InitiatingProcessParentId
, ParentProcessCreationTime=InitiatingProcessParentCreationTime
| extend
ActingProcessName=iff(ActingProcessPath hassuffix InitiatingProcessFileName
, ActingProcessPath
, strcat(ActingProcessPath,'\\',InitiatingProcessFileName))
, TargetDvcHostnameType='FQDN'
, TargetDvcIdType='MDE'
, TargetPortNumber=RemotePort
, TargetSessionId = tostring(LogonId)
| lookup FaliureReason on EventOriginalResultDetails
// TargetUrl
// ----------- Alias
| extend
User=TargetUsername
, LogonTarget=TargetDvcHostname
, Dvc=TargetDvcHostname
};AuthM365D(starttime, endtime, targetusername_has)

Просмотреть файл

@ -0,0 +1,85 @@
Parser:
Title: ASIM Authentication Parser for Microsoft Defender for IoT - Endpoint
Version: '0.1.0'
LastUpdated: Aug 16, 2021
Product:
Name: Microsoft Defender for IoT - Endpoint
Normalization:
Schema: Authentication
Version: '0.1.0'
References:
- Title: ASIM Authentication Schema
Link: https://aka.ms/AzSentinelAuthenticationDoc
- Title: ASIM
Link: https:/aka.ms/AzSentinelNormalization
Description: ASIM Azure Defender for IoT Authentication Parser
ParserName: vimAuthenticationMD4IoT
ParserParams:
- Name: starttime
Type: datetime
Default: datetime(null)
- Name: endtime
Type: datetime
Default: datetime(null)
- Name: targetusername_has
Type: string
Default: '*'
ParserQuery: |
let Authentication_MD4IoT=(starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string="*")
{
SecurityIoTRawEvent
| where RawEventName == "Login"
// *************************************************************************
// <Prefilterring>
// *************************************************************************
| where
(isnull(starttime) or TimeGenerated >= starttime)
and (isnull(endtime) or TimeGenerated <= starttime)
and (targetusername_has=='*' or EventDetails has targetusername_has)
// *************************************************************************
// </Prefilterring>
// *************************************************************************
| extend
EventDetails = todynamic(EventDetails)
//
| extend
EventOriginalUid = tostring(EventDetails.OriginalEventId),
EventProduct = 'Azure Defender for IoT',
EventCount=int(1),
EventVendor = 'Microsoft',
EventSchemaVersion = '0.1.0',
EventStartTime = todatetime(EventDetails.TimestampUTC),
EventEndTime = todatetime(TimeGenerated),
EventType = iff (EventDetails.Operation == 'Logout', 'Logoff', 'Logon'),
EventResult = iff (EventDetails.Operation == 'LoginFailed', 'Failure', 'Success')
//
| extend
ActingProcessId = tostring(EventDetails.ProcessId),
ActingProcessName = tostring(EventDetails.Executable), // -- Linux input device or service used to authenticate, for example pts/1, tty1, pts/0, ssh:notty
DvcOs = iif (EventDetails.MessageSource == "Linux", "Linux", "Windows"), // -- Intermediate fix
TargetUsernameType = "Simple",
TargetUsername = tostring(EventDetails.UserName)
// *************************************************************************
// <Postfilterring>
// *************************************************************************
| where
(targetusername_has=='*' or TargetUsername has targetusername_has)
// *************************************************************************
// <Postfilterring>
// *************************************************************************
| extend SrcIpAddr = tostring(EventDetails.RemoteAddress)
| project-rename
DvcHostname = DeviceId,
EventProductVersion = AgentVersion, // -- Not available in Windows
_ResourceId = AssociatedResourceId,
_SubscriptionId = AzureSubscriptionId
//
// -- aliases
| extend
User = TargetUsername,
Process = ActingProcessName,
Dvc = DvcHostname,
SrcDvcIpAddr = SrcIpAddr,
IpAddr = SrcIpAddr
};
Authentication_MD4IoT(starttime, endtime, targetusername_has)

Просмотреть файл

@ -0,0 +1,160 @@
Parser:
Title: Microsoft Windows Events Logon and Logoff
Version: '1.0.0'
LastUpdated: Aug 8, 2021
Product:
Name: Microsoft Windows Events
Normalization:
Schema: Authentication
Version: '0.1.0'
References:
- Title: ASIM Authentication Schema
Link: https://aka.ms/AzSentinelAuthenticationDoc
- Title: ASIM
Link: https:/aka.ms/AzSentinelNormalization
Description: |
This Query Parser maps Windows sign in logs (WindowsEvent) to the Azure Sentinel Information Model authenticaion schema.
ParserName: vimAuthenticationMicrosoftWindowsEvent
ParserParams:
- Name: starttime
Type: datetime
Default: datetime(null)
- Name: endtime
Type: datetime
Default: datetime(null)
- Name: targetusername_has
Type: string
Default: '*'
ParserQuery: |
let LogonEvents=dynamic([4624,4625]);
let LogoffEvents=dynamic([4634,4647]);
let LogonTypes=datatable(LogonType:string, EventSubType:string)[
2, 'Interactive',
3, 'Network',
4, 'Batch',
5, 'Service',
7, 'Unlock',
8, 'NetworkCleartext',
9, 'NewCredentials',
10, 'RemoteInteractive',
11, 'CachedInteractive'];
// https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/quick-reference-troubleshooting-netlogon-error-codes/ba-p/256000
let LogonStatus=datatable
(EventStatus:string,EventOriginalResultDetails:string, EventResultDetails:string)[
'0x80090325', 'SEC_E_UNTRUSTED_ROOT','Other',
'0xc0000064', 'STATUS_NO_SUCH_USER','No such user or password',
'0xc000006f', 'STATUS_INVALID_LOGON_HOURS','Logon violates policy',
'0xc0000070', 'STATUS_INVALID_WORKSTATION','Logon violates policy',
'0xc0000071', 'STATUS_PASSWORD_EXPIRED','Password expired',
'0xc0000072', 'STATUS_ACCOUNT_DISABLED','User disabled',
'0xc0000133', 'STATUS_TIME_DIFFERENCE_AT_DC','Other',
'0xc000018d', 'STATUS_TRUSTED_RELATIONSHIP_FAILURE','Other',
'0xc0000193', 'STATUS_ACCOUNT_EXPIRED','Account expired',
'0xc0000380', 'STATUS_SMARTCARD_WRONG_PIN','Other',
'0xc0000381', 'STATUS_SMARTCARD_CARD_BLOCKED','Other',
'0xc0000382', 'STATUS_SMARTCARD_CARD_NOT_AUTHENTICATED','Other',
'0xc0000383', 'STATUS_SMARTCARD_NO_CARD','Other',
'0xc0000384', 'STATUS_SMARTCARD_NO_KEY_CONTAINER','Other',
'0xc0000385', 'STATUS_SMARTCARD_NO_CERTIFICATE','Other',
'0xc0000386', 'STATUS_SMARTCARD_NO_KEYSET','Other',
'0xc0000387', 'STATUS_SMARTCARD_IO_ERROR','Other',
'0xc0000388', 'STATUS_DOWNGRADE_DETECTED','Other',
'0xc0000389', 'STATUS_SMARTCARD_CERT_REVOKED','Other',
'0x80090302', 'SEC_E_UNSUPPORTED_FUNCTION','Other',
'0x80090308', 'SEC_E_INVALID_TOKEN','Other',
'0x8009030e', 'SEC_E_NO_CREDENTIALS','Other',
'0xc0000008', 'STATUS_INVALID_HANDLE','Other',
'0xc0000017', 'STATUS_NO_MEMORY','Other',
'0xc0000022', 'STATUS_ACCESS_DENIED','Other',
'0xc0000034', 'STATUS_OBJECT_NAME_NOT_FOUND','Other',
'0xc000005e', 'STATUS_NO_LOGON_SERVERS','Other',
'0xc000006a', 'STATUS_WRONG_PASSWORD','Incorrect password',
'0xc000006d', 'STATUS_LOGON_FAILURE','Other',
'0xc000006e', 'STATUS_ACCOUNT_RESTRICTION','Logon violates policy',
'0xc0000073', 'STATUS_NONE_MAPPED','Other',
'0xc00000fe', 'STATUS_NO_SUCH_PACKAGE','Other',
'0xc000009a', 'STATUS_INSUFFICIENT_RESOURCES','Other',
'0xc00000dc', 'STATUS_INVALID_SERVER_STATE','Other',
'0xc0000106', 'STATUS_NAME_TOO_LONG','Other',
'0xc000010b', 'STATUS_INVALID_LOGON_TYPE','Logon violates policy',
'0xc000015b', 'STATUS_LOGON_TYPE_NOT_GRANTED','Logon violates policy',
'0xc000018b', 'STATUS_NO_TRUST_SAM_ACCOUNT','Logon violates policy',
'0xc0000224', 'STATUS_PASSWORD_MUST_CHANGE','Other',
'0xc0000234', 'STATUS_ACCOUNT_LOCKED_OUT','User locked',
'0xc00002ee', 'STATUS_UNFINISHED_CONTEXT_DELETED','Other'];
let WinLogon=(starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string="*"){
WindowsEvent
// *************************************************************************
// <Prefilterring>
// *************************************************************************
| where
(isnull(starttime) or TimeGenerated >= starttime)
and (isnull(endtime) or TimeGenerated <= starttime)
and (targetusername_has=='*' or EventData.TargetUserName has targetusername_has)
// *************************************************************************
// </Prefilterring>
// *************************************************************************
| where Provider == 'Microsoft-Windows-Security-Auditing'
| where EventID in (LogonEvents) or EventID in (LogoffEvents)
| extend LogonProtocol = tostring(EventData.AuthenticationPackageName),
SrcDvcIpAddr = tostring(EventData.IpAddress),
TargetPortNumber = toint(EventData.IpPort),
LogonGuid = tostring(EventData.LogonGuid),
LogonType = tostring(EventData.LogonType),
ActingProcessCreationTime = EventData.ProcessCreationTime,
ActingProcessId = tostring(toint(EventData.ProcessId)),
ActingProcessName = tostring(EventData.ProcessName),
Status = tostring(EventData.Status),
ActorSessionId = tostring(EventData.SubjectLogonId),
ActorUsername = tostring(iff (EventData.SubjectDomainName == '-', EventData.SubjectUserName, strcat(EventData.SubjectDomainName, @"\" , EventData.SubjectUserName))),
ActorUserId = tostring(EventData.SubjectUserSid),
SubStatus = tostring(EventData.SubStatus),
TargetDomainName = tostring(EventData.TargetDomainName),
TargetSessionId = tostring(EventData.TargetLogonId),
TargetUserId = tostring(EventData.TargetUserSid),
TargetUsername = tostring(iff (EventData.TargetDomainName == '-', EventData.TargetUserName, strcat(EventData.TargetDomainName, @"\" , EventData.TargetUserName)))
// *************************************************************************
// <Postfilterring>
// *************************************************************************
| where (targetusername_has=='*' or TargetUsername has targetusername_has),
// *************************************************************************
// <Postfilterring>
// *************************************************************************
| extend
SrcDvcHostname = tostring(EventData.WorkstationName),
EventProduct = "Security Events"
| extend EventStatus= iff(SubStatus=='0x0',Status,SubStatus)
// -- creating EventMessage matching EventMessage in SecurityEvent table
| extend EventMessage = case(EventID == 4634, "4634 - An account was logged off.",
EventID == 4625, "4625 - An account failed to log on.",
EventID == 4624 ,"4624 - An account was successfully logged on.",
"4647 - User initiated logoff."),
EventResult = iff(EventID == 4625, 'Failure', 'Success')
| project-rename
TargetDvcHostname = Computer
// , TargetUserType=AccountType - no AccountType in windowsEvents
// , EventOriginalUid = EventOriginId - no EventOriginalId in WindowsEvents
, EventOriginId=EventID
| extend EventCount=int(1)
, EventSchemaVersion='0.1.0'
, ActorUserIdType='SID'
, TargetUserIdType='SID'
, EventVendor='Microsoft'
, EventStartTime =TimeGenerated
, EventEndTime=TimeGenerated
, EventType=iff(EventOriginId in (LogoffEvents), 'Logoff', 'Logon')
, ActorUsername = tostring(EventData.SubjectUserName)
, ActorUsernameType= iff(EventData.SubjectDomainName == '-','Simple', 'Windows' )
, TargetUsername = tostring(EventData.TargetUsername)
, TargetUsernameType=iff (TargetDomainName == '-', 'Simple', 'Windows')
, SrcDvcOs = 'Windows'
, EventStatus= iff(SubStatus=='0x0',Status,SubStatus)
| lookup LogonStatus on EventStatus
| lookup LogonTypes on LogonType
/// ** Aliases
| extend
User=TargetUsername
, LogonTarget=TargetDvcHostname
, Dvc=SrcDvcHostname
};
WinLogon(starttime, endtime, targetusername_has)

Просмотреть файл

@ -0,0 +1,104 @@
Parser:
Title: ASIM Okta identity management authentication parser
Version: '0.1.0'
LastUpdated: June 17, 2021
Product:
Name: Okta identity management
Normalization:
Schema: Authentication
Version: '0.1.0'
References:
- Title: ASIM Authentication Schema
Link: https://aka.ms/AzSentinelAuthenticationDoc
- Title: ASIM
Link: https:/aka.ms/AzSentinelNormalization
Description: |
This Query Parser maps Okta sign in logs (Okta_CL) to the Azure Sentinel Information Model authenticaion schema.
ParserName: vimAuthenticationOktaSSO
ParserParams:
- Name: starttime
Type: datetime
Default: datetime(null)
- Name: endtime
Type: datetime
Default: datetime(null)
- Name: targetusername_has
Type: string
Default: '*'
ParserQuery: |
let OktaSignin=(starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string="*"){
let OktaSuccessfulOutcome = dynamic(['SUCCESS', 'ALLOW']);
let OktaFailedOutcome = dynamic(['FAILURE', 'SKIPPED','DENY']);
let OktaSigninEvents=dynamic(['user.session.start', 'user.session.end']);
// https://developer.okta.com/docs/reference/api/event-types/#catalog
Okta_CL
// *************************************************************************
// <Prefilterring>
// *************************************************************************
| where
(isnull(starttime) or TimeGenerated >= starttime)
and (isnull(endtime) or TimeGenerated <= starttime)
and (targetusername_has=='*' or (actor_alternateId_s has targetusername_has))
// *************************************************************************
// </Prefilterring>
// *************************************************************************
| where eventType_s in (OktaSigninEvents)
| extend
EventProduct='Okta'
, EventVendor='Okta'
, EventCount=int(1)
, EventSchemaVersion='0.1.0'
, EventResult = case (outcome_result_s in (OktaSuccessfulOutcome), 'Success',outcome_result_s in (OktaFailedOutcome),'Failure', 'Partial')
, EventStartTime=TimeGenerated
, EventEndTime=TimeGenerated
, EventType=iff(eventType_s hassuffix 'start', 'Logon', 'Logoff')
, EventSubType=legacyEventType_s
, TargetUserIdType='OktaId'
, TargetUsernameType='Upn'
, SrcGeoLatitude=toreal(client_geographicalContext_geolocation_lat_d)
, SrcGeoLongitude=toreal(client_geographicalContext_geolocation_lon_d)
, ActingAppType = "Browser"
| project-rename
EventMessage=displayMessage_s
,EventOriginalResultDetails=outcome_reason_s
, LogonMethod = authenticationContext_credentialType_s
, TargetSessionId=authenticationContext_externalSessionId_s
, TargetUserId= actor_id_s
, TargetUsername=actor_alternateId_s
, TargetUserType=actor_type_s
, SrcDvcOs=client_userAgent_os_s
, HttpUserAgent=client_userAgent_rawUserAgent_s
, ActingAppName = client_userAgent_browser_s
, SrcIsp=securityContext_isp_s
, SrcGeoCity=client_geographicalContext_city_s
, SrcGeoCountry=client_geographicalContext_country_s
, EventOriginalUid = uuid_g_g
| project-reorder
EventProduct
, EventOriginalUid
, TimeGenerated
, EventMessage
, EventResult
, EventOriginalResultDetails
, EventStartTime
, EventEndTime
, EventType
, EventSubType
, LogonMethod
, TargetSessionId
, TargetUserId
, TargetUsername
, TargetUserType
, SrcDvcOs
, HttpUserAgent
, SrcIsp
, SrcGeoCity
, SrcGeoCountry
, SrcGeoLongitude
, SrcGeoLatitude
// ** Aliases
| extend
User=TargetUsername
, Dvc=EventVendor
};
OktaSignin(starttime, endtime, targetusername_has)

Просмотреть файл

@ -0,0 +1,158 @@
Parser:
Title: Microsoft Windows Logon and Logoff
Version: '0.1.0'
LastUpdated: June 17, 2021
Product:
Name: Microsoft Windows Events
Normalization:
Schema: Authentication
Version: '0.1.0'
References:
- Title: ASIM Authentication Schema
Link: https://aka.ms/AzSentinelAuthenticationDoc
- Title: ASIM
Link: https:/aka.ms/AzSentinelNormalization
Description: |
This Query Parser maps Windows Active Directory sign in logs (SecurityEvent) to the Azure Sentinel Information Model authenticaion schema.
ParserName: vimAuthenticationWindowsSecurityEvent
ParserParams:
- Name: starttime
Type: datetime
Default: datetime(null)
- Name: endtime
Type: datetime
Default: datetime(null)
- Name: targetusername_has
Type: string
Default: '*'
ParserQuery: |
let LogonEvents=dynamic([4624,4625]);
let LogoffEvents=dynamic([4634,4647]);
let LogonTypes=datatable(LogonType:int, EventSubType:string)[
2, 'Interactive',
3, 'Network',
4, 'Batch',
5, 'Service',
7, 'Unlock',
8, 'NetworkCleartext',
9, 'NewCredentials',
10, 'RemoteInteractive',
11, 'CachedInteractive'
];
// https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/quick-reference-troubleshooting-netlogon-error-codes/ba-p/256000
let LogonStatus=datatable
(EventStatus:string,EventOriginalResultDetails:string, EventResultDetails:string)[
'0x80090325', 'SEC_E_UNTRUSTED_ROOT','Other',
'0xc0000064', 'STATUS_NO_SUCH_USER','No such user or password',
'0xc000006f', 'STATUS_INVALID_LOGON_HOURS','Logon violates policy',
'0xc0000070', 'STATUS_INVALID_WORKSTATION','Logon violates policy',
'0xc0000071', 'STATUS_PASSWORD_EXPIRED','Password expired',
'0xc0000072', 'STATUS_ACCOUNT_DISABLED','User disabled',
'0xc0000133', 'STATUS_TIME_DIFFERENCE_AT_DC','Other',
'0xc000018d', 'STATUS_TRUSTED_RELATIONSHIP_FAILURE','Other',
'0xc0000193', 'STATUS_ACCOUNT_EXPIRED','Account expired',
'0xc0000380', 'STATUS_SMARTCARD_WRONG_PIN','Other',
'0xc0000381', 'STATUS_SMARTCARD_CARD_BLOCKED','Other',
'0xc0000382', 'STATUS_SMARTCARD_CARD_NOT_AUTHENTICATED','Other',
'0xc0000383', 'STATUS_SMARTCARD_NO_CARD','Other',
'0xc0000384', 'STATUS_SMARTCARD_NO_KEY_CONTAINER','Other',
'0xc0000385', 'STATUS_SMARTCARD_NO_CERTIFICATE','Other',
'0xc0000386', 'STATUS_SMARTCARD_NO_KEYSET','Other',
'0xc0000387', 'STATUS_SMARTCARD_IO_ERROR','Other',
'0xc0000388', 'STATUS_DOWNGRADE_DETECTED','Other',
'0xc0000389', 'STATUS_SMARTCARD_CERT_REVOKED','Other',
'0x80090302', 'SEC_E_UNSUPPORTED_FUNCTION','Other',
'0x80090308', 'SEC_E_INVALID_TOKEN','Other',
'0x8009030e', 'SEC_E_NO_CREDENTIALS','Other',
'0xc0000008', 'STATUS_INVALID_HANDLE','Other',
'0xc0000017', 'STATUS_NO_MEMORY','Other',
'0xc0000022', 'STATUS_ACCESS_DENIED','Other',
'0xc0000034', 'STATUS_OBJECT_NAME_NOT_FOUND','Other',
'0xc000005e', 'STATUS_NO_LOGON_SERVERS','Other',
'0xc000006a', 'STATUS_WRONG_PASSWORD','Incorrect password',
'0xc000006d', 'STATUS_LOGON_FAILURE','Other',
'0xc000006e', 'STATUS_ACCOUNT_RESTRICTION','Logon violates policy',
'0xc0000073', 'STATUS_NONE_MAPPED','Other',
'0xc00000fe', 'STATUS_NO_SUCH_PACKAGE','Other',
'0xc000009a', 'STATUS_INSUFFICIENT_RESOURCES','Other',
'0xc00000dc', 'STATUS_INVALID_SERVER_STATE','Other',
'0xc0000106', 'STATUS_NAME_TOO_LONG','Other',
'0xc000010b', 'STATUS_INVALID_LOGON_TYPE','Logon violates policy',
'0xc000015b', 'STATUS_LOGON_TYPE_NOT_GRANTED','Logon violates policy',
'0xc000018b', 'STATUS_NO_TRUST_SAM_ACCOUNT','Logon violates policy',
'0xc0000224', 'STATUS_PASSWORD_MUST_CHANGE','Other',
'0xc0000234', 'STATUS_ACCOUNT_LOCKED_OUT','User locked',
'0xc00002ee', 'STATUS_UNFINISHED_CONTEXT_DELETED','Other'];
let WinLogon=(starttime:datetime=datetime(null), endtime:datetime=datetime(null), targetusername_has:string="*"){
SecurityEvent
// *************************************************************************
// <Prefilterring>
// *************************************************************************
| where
(isnull(starttime) or TimeGenerated >= starttime)
and (isnull(endtime) or TimeGenerated <= starttime)
and (targetusername_has=='*' or TargetUserName has targetusername_has)
// *************************************************************************
// </Prefilterring>
// *************************************************************************
| where EventID in (LogonEvents) or
EventID in (LogoffEvents)
| project-rename
EventMessage = Activity
, ActorSessionId=SubjectLogonId
, TargetSessionId=TargetLogonId
, ActorUserId=SubjectUserSid
, TargetUserId =TargetUserSid
, TargetUserType=AccountType
, SrcDvcHostname = WorkstationName
, TargetDvcHostname = Computer
, EventOriginalUid = EventOriginId
, LogonProtocol=AuthenticationPackageName
, SrcDvcIpAddr=IpAddress
| extend EventOriginId=EventID | project-away EventID
| extend EventResult = iff(EventOriginId == 4625, 'Failure', 'Success')
, EventCount=int(1)
, EventSchemaVersion='0.1.0'
, EventProduct = "Security Event"
, ActorUserIdType='SID'
, TargetUserIdType='SID'
, EventVendor='Microsoft'
, EventStartTime =TimeGenerated
, EventEndTime=TimeGenerated
, EventType=iff(EventOriginId in (LogoffEvents), 'Logoff', 'Logon')
, ActorUsername = iff (SubjectDomainName == '-', SubjectUserName, SubjectAccount)
, ActorUsernameType= iff(SubjectDomainName == '-','Simple', 'Windows' )
, TargetUsername = iff (TargetDomainName == '-', trim(@'\\',TargetUserName), trim(@'\\',TargetAccount))
, TargetUsernameType=iff (TargetDomainName == '-', 'Simple', 'Windows')
, SrcDvcOs = 'Windows'
, EventStatus= iff(SubStatus=='0x0',Status,SubStatus)
| lookup LogonStatus on EventStatus
| lookup LogonTypes on LogonType
| project-reorder
TimeGenerated
, EventProduct
, EventMessage
, EventResult
, EventOriginalResultDetails
, EventStartTime
, EventEndTime
, EventType
, EventSubType
, ActorSessionId
, TargetSessionId
, ActorUserId
, ActorUsername
, TargetUserId
, TargetUsername
, TargetUserType
, SrcDvcOs
, TargetDvcHostname
, LogonProtocol
, ImpersonationLevel
/// ** Aliases
| extend
User=TargetUsername
, LogonTarget=TargetDvcHostname
, Dvc=SrcDvcHostname
};
WinLogon(starttime, endtime, targetusername_has)

Просмотреть файл

@ -22,7 +22,8 @@ To deploy all parsers to your workspace using ARM templates use the button below
This template deploys the following parsers:
- Source agnostic parsers:
- imAuthentication - Authentication events from all normalized authentication providers
- ASimAuthentication - Authentication events from all normalized authentication providers
- imAuthentication - Use this parser, which supports the optimization parameters desribed below, when using Authentication logs in your content such as detection, hunting queries or workbooks. You can also use it interactively if you want to optimize your query
- vimAuthenticationEmpty - Empty ASim Authentication table
- Source specific parsers:
@ -36,3 +37,19 @@ This template deploys the following parsers:
- **Windows Security Events** collecting using the Log Analytics Agent or Azure Monitor Agent - vimAuthenticationWindowsSecurityEvent
- **Windows Events** collecting using the Azure Monitor Agent - vimAuthenticationMicrosoftWindowsEvent. Note that those are the same original events as Windows Security events, but collected to the WindowsEvent table, for example when collecting using Windows Event Forwarding.
- **Microsoft Defender for IoT - Endpoint**, reporting Linux authentication events - vimAuthenticationMD4IoT
## Parser parameters
Parametersize parsers support the following parameters which allow for pre-filtering and therefore significantly enhance parser perofrmance. All parameters are optional. The results will match all of the used parameters (AND logic).
To use parameters, set their value as you invoke the parser, for example
`imAuthentication (targetusername_has = 'mike') | ...`
Supported parameters:
| Name | Type | Default value |
|----------|-----------|---------------|
| starttime| datetime | datetime(null)|
| endtime | datetime | datetime(null) |
| targetusername | string | '*' |

Просмотреть файл

@ -0,0 +1,39 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspaceName": {
"type": "string"
},
"location": {
"type": "string"
}
},
"resources": [
{
"type": "Microsoft.OperationalInsights/workspaces",
"apiVersion": "2017-03-15-preview",
"name": "[parameters('workspaceName')]",
"location": "[parameters('location')]",
"resources": [
{
"type": "savedSearches",
"apiVersion": "2020-08-01",
"name": "ASimDnszScalerZIA",
"dependsOn": [
"[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
],
"properties": {
"etag": "*",
"displayName": "zScaler ZIA DNS",
"category": "Security",
"FunctionAlias": "ASimDnszScalerZIA",
"query": "let zScalerDNSevents=(disabled:bool=false){\n CommonSecurityLog \n | where not(disabled)\n | where DeviceProduct == \"NSSDNSlog\"\n | project-rename\n Dvc=Computer , \n SrcIpAddr = SourceIP, \n SrcUsername = SourceUserName,\n DstIpAddr = DestinationIP, \n DstPortNumber = DestinationPort, \n EventProductVersion = DeviceVersion, \n DnsQueryTypeName = DeviceCustomString4, \n DnsQuery = DeviceCustomString5, \n DnsDuration = DeviceCustomNumber1, \n Department = DeviceCustomString1, // Not part of the schema\n reqaction = DeviceCustomString2, \n resaction = DeviceCustomString3 \n | extend\n EventCount=int(1), \n EventStartTime=TimeGenerated, \n EventVendor = \"zScaler\", \n EventProduct = \"ZIA DNS\", \n EventSchemaVersion=\"0.1.2\", \n EventEndTime=TimeGenerated, \n SrcUsernameType = \"Upn\",\n EventSubType = iff(resaction == 'None', 'request', 'response'), \n DvcAction = iff(resaction == 'None', reqaction, resaction), \n EventResultDetails = iff (DeviceCustomString6 matches regex '^\\\\d', 'NOERROR', DeviceCustomString6), \n EventType = 'Query', \n UrlCategory = extract(\"cat=(.*)\", 1, AdditionalExtensions), \n DnsRuleName = strcat (FlexString1, \" / \", FlexString2)\n | extend \n EventResult = case (\n EventSubType == 'request', 'NA', \n EventResultDetails == 'NOERROR', 'Success',\n 'Failure'),\n DnsResponseName = iff (EventResultDetails == 'NOERROR', DeviceCustomString6, '')\n // -- Aliases\n | extend\n DnsResponseCodeName = EventResultDetails,\n Domain = DnsQuery,\n IpAddr = SrcIpAddr,\n DvcHostname = Dvc,\n Duration = DnsDuration,\n User = SrcUsername\n // -- Backward Compatibility\n | extend\n Query=DnsQuery, \n QueryTypeName=DnsQueryTypeName, \n ResponseName=DnsResponseName, \n ResponseCodeName=DnsResponseCodeName\n };\nzScalerDNSevents (disabled)",
"version": 1,
"functionParameters": "disabled:bool=False"
}
}
]
}
]
}

Просмотреть файл

@ -0,0 +1,15 @@
# zScaler ZIA DNS ASIM Normalization Parser
This template deploys the ASIM DNS schema parser for zScaler ZIA DNS. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
For more information, see:
- [Normalization and the Azure Sentinel Information Model (ASIM)](https://aka.ms/AzSentinelNormalization)
- [Azure Sentinel Dns normalization schema reference](https://aka.ms/AzSentinelDnsDoc)
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimDns%2FARM%2FASimDnszScalerZIA%2FASimDnszScalerZIA.json)

Просмотреть файл

@ -0,0 +1,15 @@
# zScaler ZIA DNS ASIM Normalization Parser
This template deploys the ASIM DNS schema parser for zScaler ZIA DNS. The parser is a part of the Azure Sentinel Information Model.
The Azure Sentinel Information Mode (ASIM) enables you to use and create source-agnostic content, simplifying your analysis of the data in your Azure Sentinel workspace.
For more information, see:
- [Normalization and the Azure Sentinel Information Model (ASIM)](https://aka.ms/AzSentinelNormalization)
- [Azure Sentinel Dns normalization schema reference](https://aka.ms/AzSentinelDnsDoc)
<br>
[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FAzure-Sentinel%2Fmaster%2FParsers%2FASimDns%2FARM%2FvimDnszScalerZIA%2FvimDnszScalerZIA.json)

Просмотреть файл

@ -0,0 +1,39 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspaceName": {
"type": "string"
},
"location": {
"type": "string"
}
},
"resources": [
{
"type": "Microsoft.OperationalInsights/workspaces",
"apiVersion": "2017-03-15-preview",
"name": "[parameters('workspaceName')]",
"location": "[parameters('location')]",
"resources": [
{
"type": "savedSearches",
"apiVersion": "2020-08-01",
"name": "vimDnszScalerZIA",
"dependsOn": [
"[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
],
"properties": {
"etag": "*",
"displayName": "zScaler ZIA DNS",
"category": "Security",
"FunctionAlias": "vimDnszScalerZIA",
"query": "let zScalerDNSevents=(\n starttime:datetime=datetime(null), endtime:datetime=datetime(null)\n , srcipaddr:string='*'\n , domain_has_any:dynamic=dynamic([]) \n , responsecodename:string='*', response_has_ipv4:string='*'\n , response_has_any_prefix:dynamic=dynamic([]) , eventtype:string='Query'\n , disabled:bool=false\n){\n CommonSecurityLog \n | where not(disabled)\n | where DeviceProduct == \"NSSDNSlog\"\n // -- Pre-parsing filtering\n | where\n (eventtype in ('lookup', 'Query')\n and (isnull(starttime) or TimeGenerated >= starttime)\n and (isnull(endtime) or TimeGenerated <= endtime) \n and (srcipaddr=='*' or SourceIP==srcipaddr)\n and (array_length(domain_has_any) == 0 or DeviceCustomString5 has_any (domain_has_any))\n and (response_has_ipv4=='*' or has_ipv4(DeviceCustomString6,response_has_ipv4) )\n and (array_length(response_has_any_prefix) == 0 or has_any_ipv4_prefix(DeviceCustomString6, response_has_any_prefix))\n and (responsecodename in ('*', 'NOERROR') or DeviceCustomString6 =~ responsecodename)) // NOERROR is determined only later\n | extend\n EventResultDetails = iff (DeviceCustomString6 matches regex '^\\\\d', 'NOERROR', DeviceCustomString6)\n | where\n (responsecodename=='*' or EventResultDetails =~ responsecodename)\n // --\n | project-rename\n Dvc=Computer , \n SrcIpAddr = SourceIP, \n SrcUsername = SourceUserName,\n DstIpAddr = DestinationIP, \n DstPortNumber = DestinationPort, \n EventProductVersion = DeviceVersion, \n DnsQueryTypeName = DeviceCustomString4, \n DnsQuery = DeviceCustomString5, \n DnsDuration = DeviceCustomNumber1, \n Department = DeviceCustomString1, // Not part of the schema\n reqaction = DeviceCustomString2, \n resaction = DeviceCustomString3 \n | extend\n EventCount=int(1), \n EventStartTime=TimeGenerated, \n EventVendor = \"zScaler\", \n EventProduct = \"ZIA DNS\", \n EventSchemaVersion=\"0.1.2\", \n EventEndTime=TimeGenerated, \n SrcUsernameType = \"Upn\",\n EventSubType = iff(resaction == 'None', 'request', 'response'), \n DvcAction = iff(resaction == 'None', reqaction, resaction), \n EventType = 'Query', \n UrlCategory = extract(\"cat=(.*)\", 1, AdditionalExtensions), \n DnsRuleName = strcat (FlexString1, \" / \", FlexString2)\n | extend \n EventResult = case (\n EventSubType == 'request', 'NA', \n EventResultDetails == 'NOERROR', 'Success',\n 'Failure'),\n DnsResponseName = iff (EventResultDetails == 'NOERROR', DeviceCustomString6, '')\n // -- Aliases\n | extend\n DnsResponseCodeName = EventResultDetails,\n Domain = DnsQuery,\n IpAddr = SrcIpAddr,\n DvcHostname = Dvc,\n Duration = DnsDuration,\n User = SrcUsername\n // -- Backward Compatibility\n | extend\n Query=DnsQuery, \n QueryTypeName=DnsQueryTypeName, \n ResponseName=DnsResponseName, \n ResponseCodeName=DnsResponseCodeName\n };\nzScalerDNSevents (starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, disabled)",
"version": 1,
"functionParameters": "starttime:datetime=datetime(null), endtime:datetime=datetime(null), srcipaddr:string='*', domain_has_any:dynamic=dynamic([]), responsecodename:string='*', response_has_ipv4:string='*', response_has_any_prefix:dynamic=dynamic([]), eventtype:string='lookup', disabled:bool=False"
}
}
]
}
]
}

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше