Write-ups
Field-tested pentest methodology, assessment paths, and practical security notes. Specific CVE analysis lives in Research.
S01Complete seriesExternal Perimeter Intelligence
5/5 parts77 min total
External Perimeter Intelligence
- 01Pentest · 14 minThe External Perimeter Is a Graph. The Port List Is Only One View.1 diagram4 table↗
- 02Pentest · 14 minThe Domain Resolved. Ownership Was Still a Hypothesis.2 diagram4 table↗
- 03Pentest · 16 minThe Vendor Was Out of Scope. The Trust Boundary Was Not.2 diagram3 table↗
- 04Pentest · 16 minThe Service Was Observed. The Application Was Still Unknown.2 diagram3 table↗
- 05Pentest · 17 minThe Login Page Was Public. The Identity Boundary Was Somewhere Else.2 diagram4 table↗
S02Complete seriesmacOS Security Boundaries
4/4 parts53 min total
macOS Security Boundaries
- 01Pentest · 20 minThe App Was Sandboxed. The XPC Boundary Still Needed Authorization.2 diagram3 evidence4 code5 table↗
- 02Pentest · 11 minThe Permission Was Granted. The Data Use Still Needed a Policy.2 diagram1 code3 table↗
- 03Pentest · 11 minThe Helper Was Registered. Its Lifetime Outlived the App.2 diagram1 code2 table↗
- 04Pentest · 11 minThe Event Was Visible. The Detection Still Needed Context.2 diagram1 code2 table↗
S03Series in progressiOS Security Boundaries
1/4 parts16 min total
iOS Security Boundaries
S04Complete seriesATM Security Assessment
5/5 parts68 min total
ATM Security Assessment
- 01Pentest · 15 minThe ATM Was Locked Down. The Transaction Path Was Not.1 diagram1 table↗
- 02Pentest · 17 minThe BIOS Had a Password. The Boot Chain Still Needed Trust.1 diagram1 table↗
- 03Pentest · 12 minThe Desktop Was Hidden. The Execution Boundary Was Not.1 diagram1 table↗
- 04Pentest · 12 minThe Device API Was Standard. Authorization Was Assumed.1 diagram1 table↗
- 05Pentest · 12 minOne ATM Was Contained. The Fleet Trust Path Was Not.1 diagram1 table↗
S05Complete seriesBrowser-to-Native Trust Boundaries
3/3 parts51 min total
Browser-to-Native Trust Boundaries
- 01Vulnerability Research · 18 minThe Extension Was Sandboxed. The Native Host Was Not.2 diagram1 evidence7 code6 table↗
- 02Vulnerability Research · 21 minThe Page Never Had Permission. The Extension Did.2 diagram1 evidence8 code8 table↗
- 03Vulnerability Research · 12 minThe Package Was Signed. The Update Was Still a Security Decision.2 diagram1 evidence6 code5 table↗
S06Series in progressAnatomy of a Red Team Operation
1/8 parts18 min total
Anatomy of a Red Team Operation
S07Complete seriesWhen Access Checks Fail
3/3 parts25 min total
When Access Checks Fail
- 01Cloud Security · 8 minThe Pipeline Has No Secret. It Still Has a Cloud Identity.1 diagram2 code1 table↗
- 02Web Security · 8 minThe Signature Is Valid. The Token Still Belongs Somewhere Else.1 diagram2 code1 table↗
- 03Web Security · 9 minThe Request Stayed Server-Side. The Credential Did Not.1 diagram2 code1 table↗
S08Complete seriesTesting the Ransomware Playbook
5/5 parts34 min total
Testing the Ransomware Playbook
- 01Pentest · 7 minThey Do Not Break In. They Log In.1 diagram2 code1 table↗
- 02Pentest · 7 minEnumeration Cannot Be Prevented. Ask Whether It Was Seen.1 diagram2 code1 table↗
- 03Pentest · 7 minAffiliates Do Not Find Novel Paths. They Find Yours.1 diagram1 code1 table↗
- 04Pentest · 7 minThe Blast Radius Is One Number. Almost Nobody Has Measured It.1 diagram2 code1 table↗
- 05Pentest · 6 minThe Last Two Steps Are Not in Scope. What Makes Them Survivable Is.1 diagram1 code1 table↗
S09Complete seriesInternal Network Triage
4/4 parts30 min total
Internal Network Triage
- 01Pentest · 7 minKerberoasting Triage: Most Service Tickets Are a Waste of Your Time1 diagram2 code1 table↗
- 02Pentest · 7 minSMB Signing Is On. That Closed One Edge, Not the Graph.1 diagram2 code1 table↗
- 03Pentest · 8 minDelegation Triage: You Were Taught the Rare One1 diagram3 code1 table↗
- 04Pentest · 8 minBloodHound Path Triage: The Shortest Path Is Usually the One That Expires First1 diagram2 evidence3 code2 table↗
Casefile visualThree False Alarms in a Privileged Helper Sweep
Seven third-party helpers run as root on this Mac. I checked whether each one authenticates the process talking to it, was wrong three times in a row, and found nothing. The interesting part is why each cheap method failed.
Casefile visualThe Container Was Non-Root. The Node Was Still One Mount Away.
A container security methodology that measures mounts, runtime authority, kernel controls, and workload identity instead of treating a non-root UID or a passing policy check as proof of isolation.
Casefile visualAI Vulnerability Discovery: One Frontier Model or Three Specialists?
A reproducible benchmark design for the decision security teams actually face: spend the same research budget on repeated runs of one strong model, or on a diverse model team—and count only vulnerabilities that survive root-cause review, reproduction, and a fixed-version negative control.
Casefile visualThe Model Proposed the Action. The Broker Decided Whether It Could Exist.
A practical architecture for AI-assisted pentest execution: resolve scope outside the model, classify side effects, issue short-lived capabilities, deny high-impact authority, and preserve a decision record that can be independently verified.
Casefile visualThe Hardening Score Went Up. The Attack Path Stayed Open.
A practical Linux hardening methodology that uses Lynis as a sensor, established baselines as context, and controlled retesting to prove which changes reduce attack paths without breaking the service.
Casefile visualThe Model Found the Vulnerability. The Tool Call Became the Incident.
A balanced operating model for AI-assisted pentesting: where models improve coverage and evidence work, where excessive agency turns a valid test into a destructive action, and how to keep cloud, shell, and Domain Admin authority outside the model.
Casefile visualThe Handshake Was Captured. The Network Was Not.
A Wi-Fi assessment methodology that separates radio visibility, network identity, authentication, client trust, and post-association access before calling a wireless test successful.
Casefile visualThe Model Is Not the Target. The Pipeline Is.
A field methodology for using MITRE ATLAS without turning an AI assessment into matrix theatre: map the production system, follow authority into tools and data, test reachable attack paths, and label the evidence only after impact is proven.
Casefile visualActive Directory Hardening Is a Sequence, Not a Score
A scanner score cannot tell you whether a helpdesk account can still reach Domain Admin. This is the order I use to turn AD hardening signals into broken attack paths, tested controls, and recoverable identity infrastructure.
Casefile visualThe Patch Is a Disclosure. The Bug Is in the Delta.
Patch diffing turns the vendor's fix into a map to the vulnerability. The workflow is not 'find the bug' — it is 'find the change, read it backwards, and hunt the same class everywhere else.'
Casefile visualAD CS ESC4: The Template Nobody Owned
How an ordinary AD CS permission becomes Domain Admin — and why ESC4 is the cause every ESC1 write-up skips.
Casefile visualAndroid App Links: The Link Was Verified. The Action Was Not.
A field methodology for Android App Links that separates domain ownership, route validation, application state, and server-side authorization before calling a deep link secure.
Casefile visualCloud IAM Privilege Escalation: Every Permission Is Individually Fine. The Chain Is Not.
CSPM and least-privilege tools grade each IAM policy on its own, and on its own nearly every policy passes. Cloud privilege escalation is a path across roles, accounts, and trust — and a scanner that cannot see the path cannot flag the risk.
Casefile visualThe Flow Is Standard. The Bypass Is in the Half You Skipped.
OAuth 2.0 and OIDC vulnerabilities are almost never in the specification. They are in the parts implementations leave out — state, PKCE, exact redirect matching, audience validation — and the flow runs perfectly while each omission sits there waiting.
Casefile visualThe Path Your Proxy Blocks Is Not the Path Your App Runs
When authorisation and routing are done by different software, they parse the URL differently. The bypass is not in either component — it is in the order they run.
Longer-form analysis, straight to your inbox.
I publish extended research and field notes on Substack alongside this site. Subscribe to get notified when new content drops.
