This commit is contained in:
Diana Damenova 2024-04-04 19:10:42 -04:00
Родитель ef7a74aee7
Коммит e86c17507a
10 изменённых файлов: 128 добавлений и 54 удалений

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

@ -53,7 +53,7 @@ query: |
entityMappings: entityMappings:
- entityType: Account - entityType: Account
fieldMappings: fieldMappings:
- identifier: Name - identifier: FullName
columnName: TargetUserPrincipalName columnName: TargetUserPrincipalName
- identifier: Name - identifier: Name
columnName: TargetAccountName columnName: TargetAccountName
@ -65,7 +65,7 @@ entityMappings:
columnName: TargetAadUserId columnName: TargetAadUserId
- entityType: Account - entityType: Account
fieldMappings: fieldMappings:
- identifier: Name - identifier: FullName
columnName: InitiatingAccountName columnName: InitiatingAccountName
- identifier: Name - identifier: Name
columnName: InitiatingAccountName columnName: InitiatingAccountName
@ -75,5 +75,5 @@ entityMappings:
fieldMappings: fieldMappings:
- identifier: AadUserId - identifier: AadUserId
columnName: InitiatingAadUserId columnName: InitiatingAadUserId
version: 1.0.6 version: 1.0.7
kind: Scheduled kind: Scheduled

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

@ -27,23 +27,34 @@ query: |
| where EventID == 4688 | where EventID == 4688
| where (CommandLine has_all ('reg', 'add', 'HKLM\\SOFTWARE\\Policies\\', '/v','/t', 'REG_DWORD', '/d', '/f') and CommandLine has_any('DisableRealtimeMonitoring', 'UseTPMKey', 'UseTPMKeyPIN', 'UseAdvancedStartup', 'EnableBDEWithNoTPM', 'RecoveryKeyMessageSource')) | where (CommandLine has_all ('reg', 'add', 'HKLM\\SOFTWARE\\Policies\\', '/v','/t', 'REG_DWORD', '/d', '/f') and CommandLine has_any('DisableRealtimeMonitoring', 'UseTPMKey', 'UseTPMKeyPIN', 'UseAdvancedStartup', 'EnableBDEWithNoTPM', 'RecoveryKeyMessageSource'))
or CommandLine has_all ('reg', 'add', 'HKLM\\SOFTWARE\\Policies\\', '/v','/t', 'REG_DWORD', '/d', '/f', 'RecoveryKeyMessage', 'Your drives are Encrypted!', '@') or CommandLine has_all ('reg', 'add', 'HKLM\\SOFTWARE\\Policies\\', '/v','/t', 'REG_DWORD', '/d', '/f', 'RecoveryKeyMessage', 'Your drives are Encrypted!', '@')
| project TimeGenerated, HostCustomEntity = Computer, AccountCustomEntity = Account, AccountDomain, ProcessName, ProcessNameFullPath = NewProcessName, EventID, Activity, CommandLine, EventSourceName, Type | project TimeGenerated, Computer, Account, AccountDomain, ProcessName, ProcessNameFullPath = NewProcessName, EventID, Activity, CommandLine, EventSourceName, Type
), ),
(DeviceProcessEvents (DeviceProcessEvents
| where (InitiatingProcessCommandLine has_all(@'"reg"', 'add', @'"HKLM\SOFTWARE\Policies\', '/v','/t', 'REG_DWORD', '/d', '/f') | where (InitiatingProcessCommandLine has_all(@'"reg"', 'add', @'"HKLM\SOFTWARE\Policies\', '/v','/t', 'REG_DWORD', '/d', '/f')
and InitiatingProcessCommandLine has_any('DisableRealtimeMonitoring', 'UseTPMKey', 'UseTPMKeyPIN', 'UseAdvancedStartup', 'EnableBDEWithNoTPM', 'RecoveryKeyMessageSource') ) and InitiatingProcessCommandLine has_any('DisableRealtimeMonitoring', 'UseTPMKey', 'UseTPMKeyPIN', 'UseAdvancedStartup', 'EnableBDEWithNoTPM', 'RecoveryKeyMessageSource') )
or InitiatingProcessCommandLine has_all('"reg"', 'add', @'"HKLM\SOFTWARE\Policies\', '/v','/t', 'REG_DWORD', '/d', '/f', 'RecoveryKeyMessage', 'Your drives are Encrypted!', '@') or InitiatingProcessCommandLine has_all('"reg"', 'add', @'"HKLM\SOFTWARE\Policies\', '/v','/t', 'REG_DWORD', '/d', '/f', 'RecoveryKeyMessage', 'Your drives are Encrypted!', '@')
| extend timestamp = TimeGenerated, AccountCustomEntity = InitiatingProcessAccountName, HostCustomEntity = DeviceName | extend timestamp = TimeGenerated, Account = InitiatingProcessAccountName, Computer = DeviceName
) )
) )
| extend HostName = tostring(split(Computer, ".")[0]), DomainIndex = toint(indexof(Computer, '.'))
| extend HostNameDomain = iff(DomainIndex != -1, substring(Computer, DomainIndex + 1), Computer)
| extend AccountName = tostring(split(Account, @'\')[1]), AccountNTDomain = tostring(split(Account, @'\')[0])
entityMappings: entityMappings:
- entityType: Account - entityType: Account
fieldMappings: fieldMappings:
- identifier: FullName - identifier: FullName
columnName: AccountCustomEntity columnName: Account
- identifier: Name
columnName: AccountName
- identifier: UPNSuffix
columnName: AccountNTDomain
- entityType: Host - entityType: Host
fieldMappings: fieldMappings:
- identifier: FullName - identifier: FullName
columnName: HostCustomEntity columnName: Computer
version: 1.0.1 - identifier: HostName
columnName: HostName
- identifier: DnsDomain
columnName: HostNameDomain
version: 1.0.2
kind: Scheduled kind: Scheduled

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

@ -26,21 +26,32 @@ query: |
(SecurityEvent (SecurityEvent
| where EventID==4688 | where EventID==4688
| where CommandLine has "wmic computersystem get domain" and ParentProcessName has "dllhost.exe" | where CommandLine has "wmic computersystem get domain" and ParentProcessName has "dllhost.exe"
| project TimeGenerated, HostCustomEntity = Computer, AccountCustomEntity = Account, AccountDomain, ProcessName, ProcessNameFullPath = NewProcessName, EventID, Activity, CommandLine, EventSourceName, Type | project TimeGenerated, Computer, Account, AccountDomain, ProcessName, ProcessNameFullPath = NewProcessName, EventID, Activity, CommandLine, EventSourceName, Type
), ),
(DeviceProcessEvents (DeviceProcessEvents
| where ProcessCommandLine has "wmic computersystem get domain" and InitiatingProcessFileName =~ "dllhost.exe" and InitiatingProcessCommandLine has "dllhost.exe" | where ProcessCommandLine has "wmic computersystem get domain" and InitiatingProcessFileName =~ "dllhost.exe" and InitiatingProcessCommandLine has "dllhost.exe"
| extend timestamp = TimeGenerated, AccountCustomEntity = InitiatingProcessAccountName, HostCustomEntity = DeviceName | extend timestamp = TimeGenerated, Account = InitiatingProcessAccountName, Computer = DeviceName
) )
) )
| extend HostName = tostring(split(Computer, ".")[0]), DomainIndex = toint(indexof(Computer, '.'))
| extend HostNameDomain = iff(DomainIndex != -1, substring(Computer, DomainIndex + 1), Computer)
| extend AccountName = tostring(split(Account, @'\')[1]), AccountNTDomain = tostring(split(Account, @'\')[0])
entityMappings: entityMappings:
- entityType: Account - entityType: Account
fieldMappings: fieldMappings:
- identifier: FullName - identifier: FullName
columnName: AccountCustomEntity columnName: Account
- identifier: Name
columnName: AccountName
- identifier: UPNSuffix
columnName: AccountNTDomain
- entityType: Host - entityType: Host
fieldMappings: fieldMappings:
- identifier: FullName - identifier: FullName
columnName: HostCustomEntity columnName: Computer
version: 1.0.2 - identifier: HostName
columnName: HostName
- identifier: DnsDomain
columnName: HostNameDomain
version: 1.0.3
kind: Scheduled kind: Scheduled

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

@ -26,14 +26,18 @@ query: |
| project Percent, UserPrincipalName, Location, AppDisplayName, RiskState | project Percent, UserPrincipalName, Location, AppDisplayName, RiskState
// | lookup kind=inner _GetWatchlist('<Your Watchlist Name>') on $left.UserPrincipalName == $right.SearchKey // | lookup kind=inner _GetWatchlist('<Your Watchlist Name>') on $left.UserPrincipalName == $right.SearchKey
| sort by Percent desc | sort by Percent desc
| extend AccountCustomEntity = UserPrincipalName | extend AccountName = tostring(split(UserPrincipalName, "@")[0]), AccountUPNSuffix = tostring(split(UserPrincipalName, "@")[1])
eventGroupingSettings: eventGroupingSettings:
aggregationKind: SingleAlert aggregationKind: SingleAlert
entityMappings: entityMappings:
- entityType: Account - entityType: Account
fieldMappings: fieldMappings:
- identifier: FullName - identifier: FullName
columnName: AccountCustomEntity columnName: UserPrincipalName
- identifier: Name
columnName: AccountName
- identifier: UPNSuffix
columnName: AccountUPNSuffix
incidentConfiguration: incidentConfiguration:
createIncident: true createIncident: true
groupingConfiguration: groupingConfiguration:
@ -43,5 +47,5 @@ incidentConfiguration:
matchingMethod: Selected matchingMethod: Selected
groupByEntities: groupByEntities:
- Account - Account
version: 1.1.3 version: 1.1.4
kind: Scheduled kind: Scheduled

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

@ -43,17 +43,17 @@ query: |
// Calculate the time between first and last logon attempt (AttemptPeriodLength) // Calculate the time between first and last logon attempt (AttemptPeriodLength)
| extend TimeBetweenLogonAttempts = LatestLogonAttempt - FirstLogonAttempt | extend TimeBetweenLogonAttempts = LatestLogonAttempt - FirstLogonAttempt
| where TotalLogonAttempts >= threshold | where TotalLogonAttempts >= threshold
| project FirstLogonAttempt, LatestLogonAttempt, TimeBetweenLogonAttempts, TotalLogonAttempts, SourceAddress = RemoteIP, DestinationHost = Computer, DestinationAddress = HostIP | project FirstLogonAttempt, LatestLogonAttempt, TimeBetweenLogonAttempts, TotalLogonAttempts, SourceAddress = RemoteIP, Computer, HostIP
| sort by DestinationHost asc nulls last | sort by Computer asc nulls last
| extend timestamp = FirstLogonAttempt, HostCustomEntity = DestinationHost, IPCustomEntity = DestinationAddress | extend timestamp = FirstLogonAttempt
entityMappings: entityMappings:
- entityType: Host - entityType: Host
fieldMappings: fieldMappings:
- identifier: FullName - identifier: FullName
columnName: HostCustomEntity columnName: Computer
- entityType: IP - entityType: IP
fieldMappings: fieldMappings:
- identifier: Address - identifier: Address
columnName: IPCustomEntity columnName: HostIP
version: 1.0.3 version: 1.0.4
kind: Scheduled kind: Scheduled

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

@ -47,19 +47,30 @@ query: |
| summarize Audit_TimeGenerated = arg_max(Audit_TimeGenerated, *) by IndicatorId, Url | summarize Audit_TimeGenerated = arg_max(Audit_TimeGenerated, *) by IndicatorId, Url
| project Audit_TimeGenerated, Description, ActivityGroupNames, IndicatorId, ThreatType, ExpirationDateTime, ConfidenceScore, | project Audit_TimeGenerated, Description, ActivityGroupNames, IndicatorId, ThreatType, ExpirationDateTime, ConfidenceScore,
OperationName, Identity, userPrincipalName, TargetResourceDisplayName, Url OperationName, Identity, userPrincipalName, TargetResourceDisplayName, Url
| extend timestamp = Audit_TimeGenerated, AccountCustomEntity = userPrincipalName, HostCustomEntity = TargetResourceDisplayName, URLCustomEntity = Url | extend timestamp = Audit_TimeGenerated
| extend AccountName = tostring(split(userPrincipalName, "@")[0]), AccountUPNSuffix = tostring(split(userPrincipalName, "@")[1])
| extend HostName = tostring(split(TargetResourceDisplayName, ".")[0]), DomainIndex = toint(indexof(TargetResourceDisplayName, '.'))
| extend HostNameDomain = iff(DomainIndex != -1, substring(TargetResourceDisplayName, DomainIndex + 1), TargetResourceDisplayName)
entityMappings: entityMappings:
- entityType: Account - entityType: Account
fieldMappings: fieldMappings:
- identifier: FullName - identifier: FullName
columnName: AccountCustomEntity columnName: userPrincipalName
- identifier: Name
columnName: AccountName
- identifier: UPNSuffix
columnName: AccountUPNSuffix
- entityType: Host - entityType: Host
fieldMappings: fieldMappings:
- identifier: FullName - identifier: FullName
columnName: HostCustomEntity columnName: TargetResourceDisplayName
- identifier: HostName
columnName: HostName
- identifier: DnsDomain
columnName: HostNameDomain
- entityType: URL - entityType: URL
fieldMappings: fieldMappings:
- identifier: Url - identifier: Url
columnName: URLCustomEntity columnName: Url
version: 1.2.5 version: 1.2.6
kind: Scheduled kind: Scheduled

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

@ -68,20 +68,26 @@ query: |
) on $left.DomainName==$right.DnsQuery ) on $left.DomainName==$right.DnsQuery
| where DNS_TimeGenerated < ExpirationDateTime | where DNS_TimeGenerated < ExpirationDateTime
| project LatestIndicatorTime, Description, ActivityGroupNames, IndicatorId, ThreatType, ExpirationDateTime, ConfidenceScore, Url, DNS_TimeGenerated, Dvc, SrcIpAddr, DnsQuery, DnsQueryType | project LatestIndicatorTime, Description, ActivityGroupNames, IndicatorId, ThreatType, ExpirationDateTime, ConfidenceScore, Url, DNS_TimeGenerated, Dvc, SrcIpAddr, DnsQuery, DnsQueryType
| extend timestamp = DNS_TimeGenerated, HostCustomEntity = Dvc, IPCustomEntity = SrcIpAddr, URLCustomEntity = Url | extend timestamp = DNS_TimeGenerated
| extend HostName = tostring(split(Dvc, ".")[0]), DomainIndex = toint(indexof(Dvc, '.'))
| extend HostNameDomain = iff(DomainIndex != -1, substring(Dvc, DomainIndex + 1), Dvc)
entityMappings: entityMappings:
- entityType: Host - entityType: Host
fieldMappings: fieldMappings:
- identifier: FullName - identifier: FullName
columnName: HostCustomEntity columnName: Dvc
- identifier: HostName
columnName: HostName
- identifier: DnsDomain
columnName: HostNameDomain
- entityType: IP - entityType: IP
fieldMappings: fieldMappings:
- identifier: Address - identifier: Address
columnName: IPCustomEntity columnName: SrcIpAddr
- entityType: URL - entityType: URL
fieldMappings: fieldMappings:
- identifier: Url - identifier: Url
columnName: URLCustomEntity columnName: Url
customDetails: customDetails:
LatestIndicatorTime: LatestIndicatorTime LatestIndicatorTime: LatestIndicatorTime
Description: Description Description: Description
@ -94,5 +100,5 @@ customDetails:
SourceIPAddress: SrcIpAddr SourceIPAddress: SrcIpAddr
DnsQuery: DnsQuery DnsQuery: DnsQuery
QueryType: DnsQueryType QueryType: DnsQueryType
version: 1.1.5 version: 1.1.6
kind: Scheduled kind: Scheduled

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

@ -41,13 +41,13 @@ query: |
| where ObjectName endswith ".jsp" | where ObjectName endswith ".jsp"
| summarize by ParentProcessName, Account, Computer, ObjectName, ProcessName, timekey= bin(TimeGenerated, time_window), TimeGenerated, SubjectLogonId) | summarize by ParentProcessName, Account, Computer, ObjectName, ProcessName, timekey= bin(TimeGenerated, time_window), TimeGenerated, SubjectLogonId)
on timekey, Computer, SubjectLogonId on timekey, Computer, SubjectLogonId
| extend timestamp = TimeGenerated, AccountCustomEntity = Account, HostCustomEntity = Computer | extend timestamp = TimeGenerated, Account, Computer
), ),
(DeviceFileEvents (DeviceFileEvents
| where InitiatingProcessFileName has_any ("java.exe", "javaw.exe") | where InitiatingProcessFileName has_any ("java.exe", "javaw.exe")
| where InitiatingProcessCommandLine has "SysAidServer" | where InitiatingProcessCommandLine has "SysAidServer"
| where FileName endswith ".jsp" | where FileName endswith ".jsp"
| extend timestamp = TimeGenerated, AccountCustomEntity = InitiatingProcessAccountName, HostCustomEntity = DeviceName | extend timestamp = TimeGenerated, Account = InitiatingProcessAccountName, Computer = DeviceName
), ),
(imFileEvent (imFileEvent
| where TimeGenerated > ago(timeframe) | where TimeGenerated > ago(timeframe)
@ -55,25 +55,36 @@ query: |
| where ActingProcessName has_any ("java.exe", "javaw.exe") | where ActingProcessName has_any ("java.exe", "javaw.exe")
| where ActingProcessCommandLine has "SysAidServer" | where ActingProcessCommandLine has "SysAidServer"
| where FilePath endswith ".jsp" | where FilePath endswith ".jsp"
| extend timestamp = TimeGenerated, AccountCustomEntity = ActorUsername, HostCustomEntity = DvcHostname | extend timestamp = TimeGenerated, Account = ActorUsername, Computer = DvcHostname
) )
) )
| extend AccountName = tostring(split(Account, @'\')[1]), AccountNTDomain = tostring(split(Account, @'\')[0])
| extend HostName = tostring(split(Computer, ".")[0]), DomainIndex = toint(indexof(Computer, '.'))
| extend HostNameDomain = iff(DomainIndex != -1, substring(Computer, DomainIndex + 1), Computer)
entityMappings: entityMappings:
- entityType: Account - entityType: Account
fieldMappings: fieldMappings:
- identifier: FullName - identifier: FullName
columnName: AccountCustomEntity columnName: Account
- identifier: Name
columnName: AccountName
- identifier: NTDomain
columnName: AccountNTDomain
- entityType: Host - entityType: Host
fieldMappings: fieldMappings:
- identifier: FullName - identifier: FullName
columnName: HostCustomEntity columnName: Computer
version: 1.0.1 - identifier: HostName
columnName: HostName
- identifier: DnsDomain
columnName: HostNameDomain
version: 1.0.2
kind: Scheduled kind: Scheduled
metadata: metadata:
source: source:
kind: Scheduled kind: Scheduled
author: author:
name: Ajeet Prakash name: Microsoft Security Research
support: support:
tier: Community tier: Community
categories: categories:

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

@ -38,26 +38,36 @@ query: |
(ParentProcessName has_any (file_path3)) (ParentProcessName has_any (file_path3))
| extend Account = strcat(EventData.SubjectDomainName,"\\", EventData.SubjectUserName) | extend Account = strcat(EventData.SubjectDomainName,"\\", EventData.SubjectUserName)
| extend NewProcessId = tostring(EventData.NewProcessId) | extend NewProcessId = tostring(EventData.NewProcessId)
| extend IPCustomEntity = tostring(EventData.IpAddress) | extend IP = tostring(EventData.IpAddress)
| project TimeGenerated, Computer, NewProcessName, ParentProcessName, Account, NewProcessId, Type, IPCustomEntity | project TimeGenerated, Computer, NewProcessName, ParentProcessName, Account, NewProcessId, Type, IP
| extend timestamp = TimeGenerated, HostCustomEntity = Computer , AccountCustomEntity = Account, ProcessCustomEntity = NewProcessName, Alert = 'SOURGUM IOC detected' | extend timestamp = TimeGenerated, Alert = 'SOURGUM IOC detected'
| extend AccountName = tostring(split(Account, @'\')[1]), AccountNTDomain = tostring(split(Account, @'\')[0])
| extend HostName = tostring(split(Computer, ".")[0]), DomainIndex = toint(indexof(Computer, '.'))
| extend HostNameDomain = iff(DomainIndex != -1, substring(Computer, DomainIndex + 1), Computer)
entityMappings: entityMappings:
- entityType: Account - entityType: Account
fieldMappings: fieldMappings:
- identifier: FullName - identifier: FullName
columnName: AccountCustomEntity columnName: Account
- identifier: Name
columnName: AccountName
- identifier: UPNSuffix
columnName: AccountNTDomain
- entityType: Host - entityType: Host
fieldMappings: fieldMappings:
- identifier: FullName - identifier: FullName
columnName: HostCustomEntity columnName: Computer
- identifier: HostName
columnName: HostName
- identifier: DnsDomain
columnName: HostNameDomain
- entityType: IP - entityType: IP
fieldMappings: fieldMappings:
- identifier: Address - identifier: Address
columnName: IPCustomEntity columnName: IP
- entityType: Process - entityType: Process
fieldMappings: fieldMappings:
- identifier: ProcessId - identifier: ProcessId
columnName: ProcessCustomEntity columnName: NewProcessName
version: 1.0.3 version: 1.0.4
kind: Scheduled kind: Scheduled

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

@ -34,21 +34,31 @@ query: |
| extend timestamp = TimeGenerated, Computer, Account, File = tostring(split(NewProcessName, '\\', -1)[-1]), AlertDetail = 'Chia crypto IOC detected' | extend timestamp = TimeGenerated, Computer, Account, File = tostring(split(NewProcessName, '\\', -1)[-1]), AlertDetail = 'Chia crypto IOC detected'
| extend FilePath = replace_string(NewProcessName, File, '') | extend FilePath = replace_string(NewProcessName, File, '')
| project TimeGenerated, timestamp, File, AlertDetail, FilePath,Computer, NewProcessName, ParentProcessName, Account, NewProcessId, Type | project TimeGenerated, timestamp, File, AlertDetail, FilePath,Computer, NewProcessName, ParentProcessName, Account, NewProcessId, Type
| extend AccountCustomEntity = Account, HostCustomEntity = Computer, FileCustomEntity = File, FilePathCustomEntity = FilePath | extend AccountName = tostring(split(Account, @'\')[1]), AccountNTDomain = tostring(split(Account, @'\')[0])
| extend HostName = tostring(split(Computer, ".")[0]), DomainIndex = toint(indexof(Computer, '.'))
| extend HostNameDomain = iff(DomainIndex != -1, substring(Computer, DomainIndex + 1), Computer)
entityMappings: entityMappings:
- entityType: Account - entityType: Account
fieldMappings: fieldMappings:
- identifier: FullName - identifier: FullName
columnName: AccountCustomEntity columnName: Account
- identifier: Name
columnName: AccountName
- identifier: UPNSuffix
columnName: AccountNTDomain
- entityType: Host - entityType: Host
fieldMappings: fieldMappings:
- identifier: FullName - identifier: FullName
columnName: HostCustomEntity columnName: Computer
- identifier: HostName
columnName: HostName
- identifier: DnsDomain
columnName: HostNameDomain
- entityType: File - entityType: File
fieldMappings: fieldMappings:
- identifier: Name - identifier: Name
columnName: FileCustomEntity columnName: File
- identifier: Directory - identifier: Directory
columnName: FilePathCustomEntity columnName: FilePath
version: 1.0.3 version: 1.0.4
kind: Scheduled kind: Scheduled