You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -158,7 +157,6 @@ Uses AADinternals to run Eight security checks on the tenant.
158
157
Performs a read-only analysis of the user-assignment scope for Microsoft Entra Conditional Access policies. The script resolves direct and transitive group memberships, active supported directory roles, policy inclusions and exclusions, and policy state, then explains why each policy targets, excludes, or does not target the specified user.
159
158
The script does not calculate whether every policy will trigger during a specific authentication attempt. Conditional Access runtime conditions such as cloud application, device compliance, platform, location, user or sign-in risk, client type, and authentication flow require the Conditional Access What If tool or sign-in-log evidence.
@@ -173,7 +171,6 @@ Microsoft Graph Command Line Tools must be granted. If not you will be prompted
173
171
Demonstrates how a privileged Microsoft Graph administrator can programmatically create a user-specific delegated permission grant between a client service principal and Microsoft Graph, then assign the client application to the selected user. The delegated grant authorizes the application to call Microsoft Graph on behalf of that user, subject to the granted scopes and the user’s own effective permissions.
174
172
This administrative workflow illustrates one mechanism that can be abused after a highly privileged identity or application is compromised. The script does not create a malicious application, perform consent phishing, obtain tokens, or independently bypass MFA. Because it modifies tenant consent and application assignments using highly privileged Graph permissions, it should be used only in an isolated lab or explicitly authorized administrative workflow.
Sends an authorized email through Microsoft Graph using app-only client-credentials authentication and the Mail.Send application permission. The script accepts configurable sender, recipient, subject, and message-body values, reads the application secret from an environment variable, supports a dry-run mode, and returns detailed Microsoft Graph errors without printing or storing access tokens.
188
185
The Entra application must have the Microsoft Graph Mail.Send application permission with administrator consent. Because this permission can provide broad mail-sending capability, Exchange Online App RBAC should be used to restrict the application to approved sender mailboxes. An HTTP 202 Accepted response confirms that Microsoft Graph accepted the message for processing, but does not guarantee final delivery.
189
186
190
-
Use like so:
191
187
```powershell
192
188
$secureSecret = Read-Host "Enter the application client secret" -AsSecureString
193
189
@@ -218,7 +214,6 @@ This read-only script audits Azure Storage accounts across all subscriptions acc
218
214
219
215
This script consumes the container CSV generated by Get-AzureStorageAnonymousAccess.ps1 and performs unauthenticated curl.exe tests against each applicable Blob container. It checks anonymous container enumeration and can optionally validate exact-object access using a one-byte range request when the CSV contains an ExactBlobName column.
@@ -244,13 +239,14 @@ The script queries Microsoft Graph and therefore does not require a corporate ne
244
239
---
245
240
### `Get-DisabledUsersLicenses6.ps1`
246
241
247
-
Scans the tenant for disabled Microsoft 365 users via Microsoft Graph and resolves their assigned licenses into readable names.
248
-
Outputs a formatted table and optionally exports a CSV; preserves dry‑run behavior so no changes are made unless explicitly requested.
242
+
Scans Microsoft Entra ID for disabled users who still have assigned Microsoft licenses and resolves license SKU identifiers into readable product names. The script exports one row per user-license assignment, distinguishes direct licensing from group-based licensing, identifies the assigning group, and records assignment state and errors.
243
+
An optional per-user summary consolidates each disabled account’s licenses and assignment methods for easier license-reclamation review. The script is completely read-only and does not modify users, groups, or license assignments.
Tenant-wide audit of default user role permissions, privileged directory roles, and high-privilege Azure RBAC assignments—highlighting only users who exceed the locked-down defaults.
306
302
Must have Graph API permissions Policy.Read.All to use this script
307
303
308
-
Use like so:
309
-
`.\Audit-AllUsersRolePerms.ps1`
304
+
```powershell
305
+
.\Audit-AllUsersRolePerms.ps1
306
+
```
310
307
311
308
---
312
309
👉** automate creation of malicious-looking OAuth authorization flows (device‑code and consent URLs) used in consent‑phishing simulations **
@@ -330,15 +327,16 @@ Generates OAuth device‑code or authorization URLs and associated tracking arti
330
327
Using Azure Hybrif Workers? Keep an eye on your Runbook without cikickety-clicking the portal.
Useful for identifying stale mailbox rules, broken forwarding logic, and forwarding-related exfiltration risk. Microsoft documents that Inbox rules can forward or redirect mailbox messages, and Microsoft also warns that automatic forwarding can be abused after account compromise for data disclosure/exfiltration.
@@ -399,8 +396,6 @@ This script is useful for identifying stale, orphaned, or risky Teams that may n
399
396
400
397
The script does **not** delete, archive, or modify any Teams.
401
398
402
-
Use like so:
403
-
404
399
```powershell
405
400
.\Review-TeamsLifecycleCleanupCandidates.ps1
406
401
```
@@ -435,8 +430,6 @@ This script is useful for reviewing stale B2B/guest accounts before disabling or
435
430
436
431
The script does **not** block, delete, or modify users.
437
432
438
-
Use like so:
439
-
440
433
```powershell
441
434
.\Report-InactiveGuestUsers-150Days.ps1
442
435
```
@@ -447,8 +440,9 @@ Use like so:
447
440
448
441
Audits Active Directory permissions for a given user and all the groups they belong to, within a specified LDAP container. It reports every Access Control Entry (ACE) that grants the user or their groups any rights on objects under the search base.
Each row in the output indicates a single permission grant:
454
448
- ObjectDN
@@ -467,8 +461,9 @@ Keep an eye out for anything that shows
467
461
468
462
Audits explicit ACLs for a single account under a given AD container. It dumps every Access Control Entry (ACE) on objects beneath your search base where the ACE’s IdentityReference exactly matches the provided username.
Provides a controlled way to disable Kerberos pre-authentication for an Active Directory user by flipping a single bit in their userAccountControl attribute. It also gives you clear visibility into which flags are set on that user object both before and after the change. Modifying the userAccountControl attribute in Active Directory isn’t something a standard domain user can do by default. You'll get "Exception calling "SetInfo" with "0" argument(s): "Access is denied."
The Python svcript uses strictly LDAP3 to enumerate the AD users (use the -dc-ip parameter to specify your Domain Controller IP).
637
640
Then it will attempt to write "temp" to attributes to determine if any is writeable.
638
641
Although not the most elegent solution - it works! It will write a users.cvs file, which should only contain your own AD account-any others are worhty of ivestigation!
0 commit comments