## User - **User:** Mike Swanson (mike) - **Machine:** GURU-BEAST-ROG - **Role:** admin --- ## Session Summary Mike requested an account status check for barbara@barbaragrygutis.com, initially assuming the account lived on Neptune Exchange / ACG-DC16. RMM agents on both servers were queried via GuruRMM (both online, site: DF Server Storage). Neither returned any AD user or Exchange mailbox — the account did not exist on ACG infrastructure. A disconnected mailbox search on Neptune also returned nothing. MX record lookup revealed the domain points to Microsoft 365 (barbaragrygutis-com.mail.protection.outlook.com), not Neptune. The tenant had not yet been onboarded to the ComputerGuru MSP app suite. Mike directed generating a Tenant Admin consent URL, which was sent to Barbara's Global Admin. After she consented, `onboard-tenant.sh` was run twice — the first pass created all SPs and assigned all directory roles but hit Graph replication lag on some appRoleAssignments; the second pass cleaned up all remaining permission gaps cleanly. All 5 apps are now fully onboarded (Defender skipped — no MDE license). With the tenant onboarded, the Security Investigator app was used to pull Barbara's account status and sign-in logs. The account is enabled, cloud-only, with a password unchanged since December 2021. Sign-in logs revealed an active credential spray attack: 100+ blocked attempts over May 27-29 from Tor exit nodes, Linode VPS infrastructure, Hurricane Electric tunnels, and European proxy nodes — all blocked by Microsoft malicious IP detection (error 50053). Zero successful sign-ins were found in the 30-day log window. No mail forwarding and no inbox rules were identified. Critically, the tenant has no Conditional Access policies at all. MFA detail check showed one registered device: Microsoft Authenticator on an iPhone 13 Pro Max (app version 6.8.1, SoftwareTokenActivated). No backup phone number registered. The `createdDateTime` field on the Authenticator registration was null, so the registration date cannot be confirmed. Mike elected not to take remediation action at this time. A wiki article was created at `wiki/clients/barbaragrygutis.md` and a Syncro ticket (#32349) was opened under Barbara Grygutis Sculpture LLC (customer ID 133348) documenting the findings and pending remediation steps. --- ## Key Decisions - Used RMM agents on ACG-DC16 and NEPTUNE (both enrolled in GuruRMM, site: DF Server Storage) rather than WinRM after WinRM timed out on both external and internal IPs for Neptune. - Onboarded the tenant before querying account status — the Security Investigator app required consent to pull sign-in logs and auth methods. - Re-ran `onboard-tenant.sh` a second time to backfill 4 appRoleAssignments that failed on first pass due to Graph SP replication delay (5-second sleep insufficient for a fresh tenant). - No remediation taken (password reset, session revocation, CA policies) per Mike's direction — ticket opened for follow-up instead. - Tenant added to `tenant-consent.html` consent dashboard and immediately marked done after successful onboarding. - Session log placed under `clients/barbaragrygutis/` (new client directory) to match wiki slug structure. --- ## Problems Encountered - **WinRM timeout on Neptune:** Both external (67.206.163.124) and internal (172.16.3.11) IPs timed out on port 5985. Resolved by switching to GuruRMM RMM agents on both machines. - **`pywinrm` not installed:** Module not found on system Python and discord-bot venv. Installed via `py -m pip install pywinrm` — moot once RMM approach was used. - **Graph replication lag on first onboard-tenant.sh run:** 4 appRoleAssignment grants failed with "Resource does not exist" immediately after SP creation. Resolved by re-running the script after a short interval; all grants succeeded on the second pass (idempotent). - **Empty jq output on initial sign-in queries:** Filter queries using `$filter=userId eq '...'` returned empty output due to shell variable interpolation issue in the heredoc. Resolved by switching to URL-encoded query strings in the curl URL directly. - **Sign-in log query initially returned no results:** First attempts at querying `auditLogs/signIns` returned empty — turned out to be a `jq` parse failure (control characters in response). Resolved by switching to `curl -w "\nHTTP:%{http_code}"` and processing raw JSON directly. --- ## Configuration Changes - **Created:** `wiki/clients/barbaragrygutis.md` — new client wiki article - **Modified:** `.claude/skills/remediation-tool/references/tenant-consent.html` — added Barbara Grygutis entry, status set to `done` - **Created:** `clients/barbaragrygutis/session-logs/2026-05-29-session.md` — this file --- ## Credentials & Secrets No new credentials created. Vault paths accessed: - `infrastructure/gururmm-server.sops.yaml` — GuruRMM API credentials (for RMM agent dispatch) - `clients/dataforth/neptune-exchange.sops.yaml` — Neptune Exchange credentials (attempted WinRM, unused) MSP app credentials used (read from vault at token acquisition time): - `msp-tools/computerguru-security-investigator.sops.yaml` - `msp-tools/computerguru-tenant-admin.sops.yaml` --- ## Infrastructure & Servers | Host | Role | Notes | |---|---|---| | NEPTUNE | Exchange Server 2016 | ACG-hosted, site: DF Server Storage. GuruRMM agent enrolled. WinRM not accessible externally or on 172.16.3.11 | | ACG-DC16 | Windows DC | ACG domain controller, site: DF Server Storage. GuruRMM agent enrolled. No AD account found for barbara@ | | barbaragrygutis.com M365 | Tenant | Tenant ID: `25998ddc-49e6-4234-9396-6c152ce4ea69`. MX: barbaragrygutis-com.mail.protection.outlook.com | --- ## Commands & Outputs ```bash # MX check nslookup -type=MX barbaragrygutis.com 8.8.8.8 # Result: barbaragrygutis-com.mail.protection.outlook.com (M365) # Tenant ID resolution bash .claude/skills/remediation-tool/scripts/resolve-tenant.sh barbaragrygutis.com # Result: 25998ddc-49e6-4234-9396-6c152ce4ea69 # Onboarding (run twice — second pass clean) bash .claude/skills/remediation-tool/scripts/onboard-tenant.sh barbaragrygutis.com # Result: [SUCCESS] Onboarding complete # RMM commands dispatched: # - ACG-DC16: Get-ADUser search by mail + UPN → no user found # - NEPTUNE: Get-Mailbox + Get-Recipient wildcard search → no mailbox found # - NEPTUNE: Get-MailboxStatistics disconnected mailboxes → zero disconnected mailboxes ``` **Sign-in attack summary (from Graph API):** - 100 attempts in 30-day window, earliest 2026-05-27T15:15:28Z, latest 2026-05-29T17:41:50Z - All errorCode 50053 (blocked: malicious IP) - 100 unique IPs across Tor, Linode, Hurricane Electric, Limestone Networks, European proxy ranges - Apps: Microsoft Azure CLI, Microsoft Online Services, OfficeHome, One Outlook Web --- ## Pending / Incomplete Tasks - [ ] Confirm Barbara still controls the iPhone 13 Pro Max with Authenticator registered on account - [ ] Force password reset (password is 4.5 years old and account is under active attack) - [ ] Deploy CA policy: Require MFA for all users - [ ] Deploy CA policy: Block legacy authentication - [ ] Consider geo-restriction CA policy (all legitimate use expected to be US) - [ ] Investigate auto-reply status — currently active/scheduled, may confirm account liveness to attackers - [ ] Investigate Syncro duplicate: customer ID 641406 (grygutisstudios@dokotacom.net) — possible secondary contact or stale record --- ## Update: 16:40 PT — Security Defaults check Checked `identitySecurityDefaultsEnforcementPolicy` on the barbaragrygutis.com tenant. **Security Defaults: ENABLED** Baseline protections active: MFA enforced for all users (14-day grace on new sign-ins), legacy authentication blocked, privileged action protection. This explains why the credential spray is being blocked at the Microsoft layer. Security Defaults and custom CA policies are mutually exclusive — if granular CA is added in future, Security Defaults must be disabled first and replaced with equivalent policies. Decision: leave account untouched until Barbara confirms she still has the iPhone 13 Pro Max with Authenticator registered. Security Defaults provide adequate baseline protection in the interim. --- ## Reference Information - **Syncro ticket:** #32349 — https://computerguru.syncromsp.com/tickets/111566564 - **Syncro customer:** Barbara Grygutis Sculpture LLC — ID 133348 - **M365 tenant ID:** 25998ddc-49e6-4234-9396-6c152ce4ea69 - **Barbara's user object ID (Entra):** 11b4966e-1e5d-47f4-ad27-57d4713fab61 - **MFA device:** Authenticator ID 8f0e1723-18f6-40d4-8cc1-c4795840bba9 (iPhone 13 Pro Max) - **Consent dashboard:** `.claude/skills/remediation-tool/references/tenant-consent.html` - **Wiki article:** `wiki/clients/barbaragrygutis.md` - **GuruRMM commands dispatched:** - ACG-DC16 cmd: f1ebd858-1186-4317-ac78-62696067047b - NEPTUNE mailbox cmd: a60781c7-cdc2-42a9-9c4b-370f9cc9f015 - NEPTUNE disconnected cmd: 3d997d11-a288-413a-ac14-c89091de2b4a