Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
1db759d
feat(bec): add full BEC case workflow
Zacgoose Aug 24, 2026
711c251
refactor(bec): drop dead run outputs and duplicate reads from the inv…
Zacgoose Sep 6, 2026
7a02913
refactor(bec): inline the single-use containment wrappers
Zacgoose Sep 6, 2026
d565108
refactor(bec): trim the endpoints to what the UI calls
Zacgoose Sep 6, 2026
f91fe9d
refactor(bec): share the case-page predicates and drop unreachable UI
Zacgoose Sep 6, 2026
f937f12
fix(bec): resolve mobile-device ids on the mailbox and keep the alert…
Zacgoose Sep 6, 2026
5dbccf8
chore(openapi): regenerate for the BEC endpoint changes
Zacgoose Sep 6, 2026
8a969d1
fix(bec): alert form describes the action's four-step default
Zacgoose Sep 6, 2026
8a9d2a8
refactor(bec): full is the only investigation mode
Zacgoose Sep 6, 2026
c41d502
refactor(bec): evidence package without hashes or export records
Zacgoose Sep 6, 2026
ffd7e40
refactor(bec): describe findings as data instead of bespoke renderers
Zacgoose Sep 6, 2026
f52fbd6
fix(bec): keep transient Intune errors as failures and name skipped b…
Zacgoose Sep 6, 2026
e195bb7
Update openapi.json
Zacgoose Sep 6, 2026
655371a
fix(bec): keep user-derived text out of the evidence download console…
Zacgoose Sep 6, 2026
6fdd17a
fix(bec): count containment runs from the stored history, not a missi…
Zacgoose Sep 6, 2026
06a185f
test(bec): cover the remaining endpoints, collectors and mutators
Zacgoose Sep 6, 2026
3e15b74
fix(bec): correlate audit-log activity by host and keep the raw recor…
Zacgoose Sep 6, 2026
769911f
fix(bec): skip the Intune device check on tenants without an Intune plan
Zacgoose Sep 6, 2026
e055949
fix(bec): start each evidence list at ten cards on a phone
Zacgoose Sep 6, 2026
7bad2e8
refactor(bec): preflight every licence gate up front through Get-CIPP…
Zacgoose Sep 6, 2026
84f7418
refactor(bec): read every log to the end of the window instead of a r…
Zacgoose Sep 7, 2026
3b5d845
fix(bec): date inbox rules from their audit trail, keep their full de…
Zacgoose Sep 7, 2026
0137810
feat(bec): flag guest invites and user creation, show new users by type
Zacgoose Sep 7, 2026
adac02b
feat(bec): classify every audited actor and list partner and CIPP act…
Zacgoose Sep 7, 2026
dbef885
feat(bec): make the by-user view a real grouping with a run-history d…
Zacgoose Sep 9, 2026
c4a653c
fix(bec): stop the flat run cache from clobbering the by-user grouping
Zacgoose Sep 9, 2026
380aa7e
Update get-cipp-formatting.jsx
Zacgoose Sep 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
144 changes: 144 additions & 0 deletions backend/Config/BecHeuristics.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
{
"window": {
"days": 7
},
"caps": {
"auditLogPages": 10,
"mailActivityPages": 10
},
"score": {
"thresholds": {
"high": 7,
"medium": 4
},
"newUsersThreshold": 5,
"weights": {
"NewRules": 3,
"InboxRuleChanges": 3,
"PermissionChangesTargetingUser": 2,
"PermissionChanges": 1,
"NewApps": 1,
"NewUsers": 1,
"SafelistChanges": 2,
"SuspiciousRules": 5,
"MaliciousApps": 5,
"ForeignSuccessfulSignIns": 3,
"ForeignActivity": 3,
"AnonymousLinks": 3,
"MassMail": 3,
"RecentMfaMethods": 2,
"RecentIntuneDevices": 2,
"FlaggedDelegations": 2,
"RiskyUserGrants": 3,
"CatalogUserGrants": 5,
"RiskyTransportRuleChanges": 4,
"FlaggedMailboxAddIns": 1,
"TyposquatSenders": 3,
"DefenderDetections": 3,
"FlaggedDirectoryAudits": 2,
"RecentRegisteredDevices": 2,
"ForeignNonInteractiveSignIns": 3,
"SuspiciousMailActivity": 2,
"RiskyUserHigh": 4,
"RiskyUserMedium": 2,
"RiskyUserLow": 1,
"ConfirmedCompromised": 5
}
},
"inboxRules": {
"suspiciousFolderPattern": "RSS",
"lowVisibilityFolderRegex": "(?i)(rss|archive|deleted|junk|conversation history|notes|sync issues)",
"sensitiveNameRegex": "(?i)(invoice|payment|security|alert|verify|microsoft|admin)",
"sensitiveKeywordRegex": "(?i)(invoice|payment|wire|remittance|bank|swift|iban|ach|routing|account number|beneficiary|payroll|password|credential|verif|urgent|confidential)"
},
"phishingSubjectPatterns": {
"Urgent action language": "(?i)urgent.{0,25}(action|response).{0,25}required",
"Account verification language": "(?i)(verify|validate).{0,25}(account|identity|password)",
"Account suspension language": "(?i)(suspend|disable|expire).{0,25}(account|mailbox|access)",
"Prize or lottery language": "(?i)\\b(winner|lottery|prize|gift card)\\b",
"Invoice or payment language": "(?i)\\b(invoice|payment|wire|remittance)\\b"
},
"phishingKeywordPattern": "(?i)\\b(urgent|verify|suspend(?:ed)?|password|credential|invoice|payment|wire|gift card|confidential)\\b",
"typosquat": {
"minDistance": 1,
"maxDistance": 2
},
"riskyScopes": {
"regex": "(?i)(\\.ReadWrite(\\.All)?$|\\.All$|Mail\\.|Files\\.|Directory\\.|RoleManagement\\.|offline_access)"
},
"transportRules": {
"operations": [
"New-TransportRule",
"Set-TransportRule",
"Enable-TransportRule",
"Disable-TransportRule",
"Remove-TransportRule"
],
"riskyParameterRegex": "(?i)^(BlindCopyTo|RedirectMessageTo|CopyTo|AddToRecipients|AddManagerAsRecipientType|RouteMessageOutboundConnector|ModerateMessageByUser|ModerateMessageByManager)$",
"recentParameterRegex": "(?i)^(DeleteMessage|Quarantine|SetSCL|RemoveHeader|SetHeaderName)$",
"descriptionRegex": "(?i)(redirect|blind copy|bcc|delete|quarantine|set the spam confidence)"
},
"directoryAudit": {
"flaggedActivities": [
"User registered security info",
"User registered all required security info",
"User started security info registration",
"User changed default security info",
"User deleted security info",
"Admin registered security info",
"Update user",
"Reset password (by admin)",
"Change user password",
"Reset user password",
"Update StsRefreshTokenValidFrom Timestamp",
"Consent to application",
"Add OAuth2PermissionGrant",
"Add app role assignment to service principal",
"Add app role assignment grant to user",
"Add service principal",
"Add service principal credentials",
"Add delegated permission grant",
"Register device",
"Add device",
"Add registered owner to device",
"Add registered users to device",
"Invite external user",
"Add user",
"Add member to role",
"Add eligible member to role",
"Disable Strong Authentication",
"Update user attributes (StrongAuthentication)"
]
},
"mailActivity": {
"userOperations": [
"MailItemsAccessed",
"HardDelete",
"SoftDelete",
"MoveToDeletedItems",
"Send"
],
"mailboxOwnerOperations": [
"SendAs",
"SendOnBehalf"
],
"hardDeleteThreshold": 20
},
"sentMail": {
"repeatSubjectMessages": 5,
"repeatSubjectRecipients": 20,
"minRepeatedSubjectMessages": 3,
"burstMessages": 10,
"burstRecipients": 30,
"burstWindowMinutes": 10
},
"mailboxAddIns": {
"trustedProviderRegex": "(?i)^microsoft"
},
"delegations": {
"folderScopes": [
"Calendar",
"Inbox"
]
}
}
Loading
Loading