<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[THOR Collective Dispatch]]></title><description><![CDATA[A hub for threat hunters (thrunters) and security professionals. Explore cutting-edge ideas, practical frameworks, and community-driven insights in cybersecurity. Powered by collaboration, innovation, and a relentless pursuit of a safer digital world.]]></description><link>https://dispatch.thorcollective.com</link><image><url>https://substackcdn.com/image/fetch/$s_!8mB0!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0d0d66-07ae-4f5b-a26a-b6d91cfc488e_1280x1280.png</url><title>THOR Collective Dispatch</title><link>https://dispatch.thorcollective.com</link></image><generator>Substack</generator><lastBuildDate>Tue, 28 Apr 2026 19:47:49 GMT</lastBuildDate><atom:link href="https://dispatch.thorcollective.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[THOR Collective]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[dispatch@thorcollective.com]]></webMaster><itunes:owner><itunes:email><![CDATA[dispatch@thorcollective.com]]></itunes:email><itunes:name><![CDATA[Sydney Marrone]]></itunes:name></itunes:owner><itunes:author><![CDATA[Sydney Marrone]]></itunes:author><googleplay:owner><![CDATA[dispatch@thorcollective.com]]></googleplay:owner><googleplay:email><![CDATA[dispatch@thorcollective.com]]></googleplay:email><googleplay:author><![CDATA[Sydney Marrone]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Hunting the Infostealer-to-SaaS Pipeline: When Third-Party Trust Becomes Lateral Movement]]></title><description><![CDATA[Your vendors have OAuth tokens to your environment. Do you know who else does?]]></description><link>https://dispatch.thorcollective.com/p/hunting-the-infostealer-to-saas-pipeline</link><guid isPermaLink="false">https://dispatch.thorcollective.com/p/hunting-the-infostealer-to-saas-pipeline</guid><dc:creator><![CDATA[Lauren Proehl]]></dc:creator><pubDate>Tue, 28 Apr 2026 15:29:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!FiuY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1819bfe3-9ee0-44a5-a794-0530a9d200a1_2506x1664.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FiuY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1819bfe3-9ee0-44a5-a794-0530a9d200a1_2506x1664.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FiuY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1819bfe3-9ee0-44a5-a794-0530a9d200a1_2506x1664.png 424w, https://substackcdn.com/image/fetch/$s_!FiuY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1819bfe3-9ee0-44a5-a794-0530a9d200a1_2506x1664.png 848w, https://substackcdn.com/image/fetch/$s_!FiuY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1819bfe3-9ee0-44a5-a794-0530a9d200a1_2506x1664.png 1272w, https://substackcdn.com/image/fetch/$s_!FiuY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1819bfe3-9ee0-44a5-a794-0530a9d200a1_2506x1664.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FiuY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1819bfe3-9ee0-44a5-a794-0530a9d200a1_2506x1664.png" width="1456" height="967" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1819bfe3-9ee0-44a5-a794-0530a9d200a1_2506x1664.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:967,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8900948,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://dispatch.thorcollective.com/i/195757921?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1819bfe3-9ee0-44a5-a794-0530a9d200a1_2506x1664.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FiuY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1819bfe3-9ee0-44a5-a794-0530a9d200a1_2506x1664.png 424w, https://substackcdn.com/image/fetch/$s_!FiuY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1819bfe3-9ee0-44a5-a794-0530a9d200a1_2506x1664.png 848w, https://substackcdn.com/image/fetch/$s_!FiuY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1819bfe3-9ee0-44a5-a794-0530a9d200a1_2506x1664.png 1272w, https://substackcdn.com/image/fetch/$s_!FiuY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1819bfe3-9ee0-44a5-a794-0530a9d200a1_2506x1664.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>The Pattern</h2><p>In April 2026, Vercel disclosed a breach that followed an attack chain worth studying. Not because the techniques were novel, but because the pattern is universal and almost nobody is hunting for it.</p><p>The short version: an infostealer infection on a third-party vendor&#8217;s employee machine harvested OAuth tokens. One of those tokens belonged to a trust relationship between the vendor&#8217;s application and a Vercel employee&#8217;s corporate Google Workspace account. The attacker inherited that access, pivoted into Vercel&#8217;s internal environments, and exfiltrated data. The attacker never phished the Vercel employee, bypassing their MFA, or touching their endpoint.</p><p>The breach wasn&#8217;t about Vercel specifically. It was about a pattern that exists in every organization: employees grant third-party applications OAuth access to corporate identity providers, creating persistent trust relationships that can be weaponized if the third party is compromised. The attacker doesn&#8217;t need to compromise <em>you</em>. They need to compromise anyone you trust.</p><p>This post breaks that pattern into four huntable behaviors. The Vercel/Context.ai incident is used as an illustrative case, but the hunts are designed to detect this pattern regardless of which vendor, which identity provider, or which attacker is involved.</p><div><hr></div><h2>Understanding the Attack Chain</h2><p>The pattern decomposes into four phases. Each phase has distinct observable behaviors that can be hunted independently:</p><p><strong>Phase 1 &#8212; Initial Compromise (Third-Party Endpoint)</strong><br>An employee at a third-party vendor has their endpoint compromised by infostealer malware. The malware harvests credentials, session cookies, and OAuth tokens from the machine. In the Vercel case, this was Lumma Stealer delivered via a trojanized game cheat download on a Context.ai employee&#8217;s machine.</p><p><strong>Phase 2 &#8212; Token Harvesting and Abuse</strong><br>The stolen OAuth tokens include grants that the vendor&#8217;s application holds against <em>your</em> enterprise identity provider. These are legitimate tokens issued through a legitimate consent flow. The only thing illegitimate is who&#8217;s using them. In the Vercel case, Context.ai&#8217;s OAuth app had been granted <code>Allow All</code> permissions on a Vercel employee&#8217;s Google Workspace.</p><p><strong>Phase 3 &#8212; Lateral Movement via Trust Relationship</strong><br>The attacker uses the harvested tokens to authenticate as the trusted third-party application and access your environment. From your identity provider&#8217;s perspective, this looks like a normal API call from an authorized application. In the Vercel case, the attacker used Context.ai&#8217;s token to access the employee&#8217;s Google Workspace, then pivoted into Vercel&#8217;s platform environments.</p><p><strong>Phase 4 &#8212; Objective Completion</strong><br>With access to your environment through the trusted application, the attacker pursues their objective: data exfiltration, secrets harvesting, persistence establishment. In the Vercel case, the attacker enumerated and decrypted environment variables.</p><p>Each phase maps to a hunt below.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/p/hunting-the-infostealer-to-saas-pipeline?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading THOR Collective Dispatch! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/p/hunting-the-infostealer-to-saas-pipeline?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://dispatch.thorcollective.com/p/hunting-the-infostealer-to-saas-pipeline?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><p></p><div><hr></div><h2>Hunt 1: Uncontrolled Third-Party OAuth Grants</h2><p><strong>Behavior you&#8217;re hunting</strong>: Employees granting OAuth consent to third-party applications (especially AI and productivity tools) that hold persistent, over-permissioned access to your identity provider.</p><p><strong>Why this matters</strong>: This is the precondition that makes the entire attack chain possible. Without an existing OAuth trust relationship, a compromised third party can&#8217;t pivot into your environment. Every unmanaged OAuth grant is a lateral movement path waiting to be activated.</p><h3>What to Look For</h3><p>The specific indicators are consistent regardless of which identity provider you&#8217;re running:</p><ul><li><p><strong>Over-permissioned scopes</strong>: Applications with broad access like full Drive/OneDrive read-write, full Mail access, directory administration, or blanket <code>Allow All</code> grants. Any scope that gives the application access beyond what its stated function requires.</p></li><li><p><strong>Shadow applications</strong>: Apps that aren&#8217;t on your approved SaaS inventory. Single-user signups are the highest risk. One employee tried a tool, clicked through a consent screen, and created a trust relationship your security team doesn&#8217;t know about.</p></li><li><p><strong>AI and productivity tools</strong>: The explosion of AI-powered SaaS means employees are self-provisioning tools at a rate that outpaces any approval process. These tools typically request broad data access (Drive, email, calendar) to function, creating exactly the kind of over-permissioned grants this pattern exploits.</p></li><li><p><strong>Stale grants</strong>: Applications the employee no longer uses but the OAuth grant persists. The vendor may have been acquired, shut down, or deprioritized security, but the token is still live.</p></li></ul><h3>Google Workspace</h3><p>Navigate to <code>Admin Console &#8594; Security &#8594; API Controls &#8594; Third-party app access</code>. This shows every third-party application with OAuth access across your domain, the scopes granted, and which users consented.</p><p>For audit log hunting, filter OAuth Token events for <code>authorize</code> actions:</p><pre><code><code>Event: authorize
Scope contains: drive OR gmail OR admin.directory OR calendar
Time: Last 180 days
</code></code></pre><p>Prioritize any grant where the scope includes broad permissions and the application isn&#8217;t in your approved inventory.</p><h3>Microsoft Entra ID</h3><p>Navigate to <code>Entra Admin Center &#8594; Enterprise Applications &#8594; All Applications</code>. Review permissions granted, focusing on:</p><ul><li><p>Applications with delegated permissions consented by individual users (not admin-granted)</p></li><li><p><code>Directory.ReadWrite.All</code>, <code>Mail.ReadWrite</code>, <code>Files.ReadWrite.All</code>, or <code>User.ReadWrite.All</code> scopes</p></li><li><p>Service principals with owners who are standard users. This is the service principal ownership abuse vector where compromising a regular user gives the attacker the ability to add credentials to a privileged app registration</p></li></ul><pre><code><code>AuditLogs
| where OperationName == "Consent to application"
| extend AppName = tostring(TargetResources[0].displayName)
| extend Scopes = tostring(TargetResources[0].modifiedProperties[0].newValue)
| extend User = tostring(InitiatedBy.user.userPrincipalName)
| where Scopes has_any ("Directory.ReadWrite", "Mail.ReadWrite", "Files.ReadWrite")
| project TimeGenerated, User, AppName, Scopes
| sort by TimeGenerated desc
</code></code></pre><h3>The Deliverable</h3><p>A complete inventory of third-party OAuth grants with: application name and client ID, scopes granted, consenting users, whether the application is on your approved SaaS inventory, and a risk assessment. Any application that is (a) not approved and (b) holds broad permissions should be reviewed for immediate revocation.</p><h3>Vercel Case Reference</h3><p>The specific indicators from the Vercel breach to check for in your environment:</p><pre><code><code>OAuth Client ID (app):        110671459871-30f1spbu0hptbs60cb4vsmv79i7bbvqj.apps.googleusercontent.com
OAuth Client ID (extension):  110671459871-f3cq3okebd3jcg1lllmroqejdbka8cqq.apps.googleusercontent.com
Chrome Extension ID:          omddlmnhcofjbnbflmjginpjjblphbgk
</code></code></pre><p>Check for these specifically, but the hunt is about finding <em>all</em> uncontrolled grants. These are just today&#8217;s IOCs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!b9pZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F049c1939-bf94-4831-9566-487295292479_1280x720.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!b9pZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F049c1939-bf94-4831-9566-487295292479_1280x720.jpeg 424w, https://substackcdn.com/image/fetch/$s_!b9pZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F049c1939-bf94-4831-9566-487295292479_1280x720.jpeg 848w, https://substackcdn.com/image/fetch/$s_!b9pZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F049c1939-bf94-4831-9566-487295292479_1280x720.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!b9pZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F049c1939-bf94-4831-9566-487295292479_1280x720.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!b9pZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F049c1939-bf94-4831-9566-487295292479_1280x720.jpeg" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/049c1939-bf94-4831-9566-487295292479_1280x720.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Reginald Skulinski Eating / Disappointed (Monster House) | Know Your Meme&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Reginald Skulinski Eating / Disappointed (Monster House) | Know Your Meme" title="Reginald Skulinski Eating / Disappointed (Monster House) | Know Your Meme" srcset="https://substackcdn.com/image/fetch/$s_!b9pZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F049c1939-bf94-4831-9566-487295292479_1280x720.jpeg 424w, https://substackcdn.com/image/fetch/$s_!b9pZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F049c1939-bf94-4831-9566-487295292479_1280x720.jpeg 848w, https://substackcdn.com/image/fetch/$s_!b9pZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F049c1939-bf94-4831-9566-487295292479_1280x720.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!b9pZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F049c1939-bf94-4831-9566-487295292479_1280x720.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">finding 20 apps with overly permissive read/write perms in your admin portal like</figcaption></figure></div><div><hr></div><h2>Hunt 2: Infostealer Exposure in Your Trust Chain</h2><p><strong>Behavior you&#8217;re hunting</strong>: Evidence that credentials, tokens, or session data from your employees, or from employees at vendors who hold OAuth grants against your environment, have been harvested by infostealer malware.</p><p><strong>Why this matters</strong>: Infostealers are the initial access vector that feeds this entire pattern. But here&#8217;s the uncomfortable part: the Vercel breach didn&#8217;t start because a <em>Vercel</em> employee got hit. It started because a <em>vendor&#8217;s</em> employee got hit. You can run flawless endpoint hygiene internally and still be exposed through a third party&#8217;s compromised machine.</p><p>This hunt has two prongs: checking your own exposure and assessing your trust chain.</p><h3>Your Own Exposure</h3><p><strong>Threat intelligence feed checks</strong>: Several services aggregate infostealer logs and index them by corporate domain.</p><ul><li><p><strong>Hudson Rock</strong> (hudsonrock.com): large infostealer log database, searchable by domain. They first attributed the Context.ai compromise to Lumma Stealer.</p></li><li><p><strong>Flare</strong> (flare.io): dark web and infostealer market monitoring.</p></li><li><p><strong>SpyCloud</strong> (spycloud.com): specializes in infostealer-derived credential exposure.</p></li><li><p><strong>Have I Been Pwned</strong> (haveibeenpwned.com): more breach-focused than infostealer-focused, but a baseline check.</p></li></ul><p>Query for your corporate domain(s). Any hits should be treated as active compromise indicators, not historical data points. If an employee&#8217;s tokens appear in an infostealer log, assume the tokens are in adversary hands until proven otherwise.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yhHo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708f8b83-3092-4592-991d-56e3487bfd97_494x263.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yhHo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708f8b83-3092-4592-991d-56e3487bfd97_494x263.png 424w, https://substackcdn.com/image/fetch/$s_!yhHo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708f8b83-3092-4592-991d-56e3487bfd97_494x263.png 848w, https://substackcdn.com/image/fetch/$s_!yhHo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708f8b83-3092-4592-991d-56e3487bfd97_494x263.png 1272w, https://substackcdn.com/image/fetch/$s_!yhHo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708f8b83-3092-4592-991d-56e3487bfd97_494x263.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yhHo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708f8b83-3092-4592-991d-56e3487bfd97_494x263.png" width="494" height="263" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/708f8b83-3092-4592-991d-56e3487bfd97_494x263.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:263,&quot;width&quot;:494,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:225955,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://dispatch.thorcollective.com/i/195757921?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708f8b83-3092-4592-991d-56e3487bfd97_494x263.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yhHo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708f8b83-3092-4592-991d-56e3487bfd97_494x263.png 424w, https://substackcdn.com/image/fetch/$s_!yhHo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708f8b83-3092-4592-991d-56e3487bfd97_494x263.png 848w, https://substackcdn.com/image/fetch/$s_!yhHo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708f8b83-3092-4592-991d-56e3487bfd97_494x263.png 1272w, https://substackcdn.com/image/fetch/$s_!yhHo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708f8b83-3092-4592-991d-56e3487bfd97_494x263.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p><strong>Endpoint behavioral hunting</strong> (if you have EDR):</p><p>Key file paths to monitor for unauthorized access:</p><pre><code><code># Browser credential stores (Chrome/Edge)
%LOCALAPPDATA%\Google\Chrome\User Data\Default\Login Data
%LOCALAPPDATA%\Google\Chrome\User Data\Default\Cookies
%LOCALAPPDATA%\Google\Chrome\User Data\Default\Web Data
%LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Login Data

# Token caches
~/.config/gcloud/credentials.db
~/.config/gcloud/access_tokens.db
~/.aws/credentials
~/.azure/msal_token_cache.json
</code></code></pre><p>Hunt for:</p><ul><li><p>Processes accessing these files that aren&#8217;t the browser itself or an approved password manager</p></li><li><p>Processes reading from multiple browser profile directories in sequence (the signature &#8220;harvest everything&#8221; behavior of infostealers)</p></li><li><p>Outbound connections shortly after credential store access, especially to unfamiliar infrastructure</p></li></ul><h3>Your Trust Chain Exposure</h3><p>This is harder and less comfortable. The vendors who hold OAuth grants against your identity provider have employees with endpoints. Those endpoints can be compromised. When they are, the tokens those vendors hold <em>for your environment</em> may be in the exfiltrated data.</p><p>What you can do:</p><ul><li><p>Cross-reference your OAuth grant inventory (from Hunt 1) with infostealer exposure feeds. If a vendor&#8217;s domain appears in Hudson Rock or similar, and that vendor holds OAuth grants against your IdP, that&#8217;s a high-priority risk.</p></li><li><p>For critical vendors (those with broad OAuth scopes), ask directly about their endpoint security posture and infostealer monitoring during your next vendor security review.</p></li><li><p>Monitor for public disclosure of vendor compromises. The window between a vendor&#8217;s compromise and their disclosure is exactly when you&#8217;re most exposed.</p></li></ul><h3>The Uncomfortable Truth</h3><p>There&#8217;s a gap in this hunt that&#8217;s worth acknowledging: you can check if <em>your</em> employees are compromised, and you can reactively learn about <em>vendor</em> compromises through intelligence feeds or disclosure. But you can&#8217;t continuously monitor whether every vendor employee with access to tokens that touch your environment has a clean endpoint. This is a structural limitation of the OAuth trust model, and it&#8217;s why Hunt 1 (reducing the attack surface by controlling OAuth grants) is ultimately more impactful than Hunt 2 (detecting after the fact).</p><div><hr></div><h2>Hunt 3: Anomalous Third-Party Application Behavior</h2><p><strong>Behavior you&#8217;re hunting</strong>: OAuth-authenticated API access from a trusted third-party application that deviates from the application&#8217;s established behavioral baseline, indicating that someone other than the vendor is driving the API calls.</p><p><strong>Why this matters</strong>: When an attacker uses a stolen OAuth token, the access appears to come from the legitimate application. Your IdP logs will show the app&#8217;s client ID making authorized API calls within its granted scopes. The access is technically legitimate. The only detectable anomaly is in <em>how</em> the token is being used: the behavioral pattern, not the authentication event.</p><h3>Behavioral Indicators</h3><p>These indicators apply regardless of identity provider or which third-party application is involved:</p><p><strong>Geographic anomalies</strong>: An OAuth app that normally makes API calls from a cloud provider&#8217;s IP range (the vendor&#8217;s infrastructure) suddenly making calls from a different geographic region, a residential ISP, a VPN provider, or a hosting provider not associated with the vendor. This is the strongest signal. It means someone other than the vendor is using the token.</p><p><strong>Temporal anomalies</strong>: API access outside the application&#8217;s normal operating pattern. A productivity tool that typically makes requests during business hours suddenly making calls at 3 AM. A synchronization service that normally runs on a schedule suddenly making ad-hoc requests.</p><p><strong>Volume anomalies</strong>: A sudden spike in API calls. An app that normally makes a handful of requests per day suddenly enumerating entire Drive contents or pulling large volumes of email. The &#8220;smash and grab&#8221; pattern is distinctive: rapid, sequential access to resources the application previously accessed infrequently or not at all.</p><p><strong>Access pattern changes</strong>: An application accessing resources or API endpoints it has scopes for but hasn&#8217;t historically used. The OAuth grant may allow broad access, but the legitimate application&#8217;s normal behavior only touches a subset. An attacker with the same token will use it differently.</p><h3>Google Workspace</h3><p>Use the Workspace audit logs to profile OAuth application behavior. The key log sources are Drive log events, Gmail log events, and OAuth Token log events under <code>Admin Console &#8594; Reporting &#8594; Audit and Investigation</code>.</p><p>Look for:</p><pre><code><code>Drive Audit Log:
Event: view OR download
Actor: [OAuth app client ID]
Volume: &gt; 50 events in 1 hour (adjust based on baseline)
</code></code></pre><p>And via the Reports API:</p><pre><code><code>GET https://admin.googleapis.com/admin/reports/v1/activity/users/all/applications/token
</code></code></pre><p>Filter for token activity events associated with applications identified as high-risk in Hunt 1. Correlate IP addresses against the vendor&#8217;s known infrastructure ranges.</p><h3>Microsoft Entra ID</h3><p>Service principal sign-in logs are the primary data source:</p><pre><code><code>AADServicePrincipalSignInLogs
| where TimeGenerated &gt; ago(30d)
| extend AppName = tostring(ServicePrincipalName)
| summarize
    DistinctIPs = dcount(IPAddress),
    IPs = make_set(IPAddress),
    Locations = make_set(LocationDetails.city),
    CallCount = count()
    by AppName, AppId
| where DistinctIPs &gt; 3
| sort by DistinctIPs desc
</code></code></pre><p>This surfaces service principals authenticating from an unusual number of distinct IPs, a potential indicator of credential misuse. Also hunt for new credentials being added to service principals, which is a persistence technique:</p><pre><code><code>AuditLogs
| where OperationName has "Add service principal credentials"
| extend AppName = tostring(TargetResources[0].displayName)
| extend Actor = tostring(InitiatedBy.user.userPrincipalName)
| project TimeGenerated, Actor, AppName, OperationName
</code></code></pre><h3>Building a Baseline</h3><p>This hunt is only as good as your behavioral baseline. If you don&#8217;t know what normal looks like for an OAuth application, you can&#8217;t detect abnormal. Start by profiling the high-risk applications from Hunt 1:</p><ul><li><p>What IP ranges do they normally authenticate from?</p></li><li><p>What times of day do they make API calls?</p></li><li><p>What resources do they typically access?</p></li><li><p>What&#8217;s their normal API call volume?</p></li></ul><p>Document the baseline. Then alert on deviation. This doesn&#8217;t have to be sophisticated. Even a weekly manual review of OAuth app activity for your top-risk applications is better than nothing.</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support our work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div><hr></div><h2>Hunt 4: Trust Boundary Lateral Movement</h2><p><strong>Behavior you&#8217;re hunting</strong>: Compromise of an identity provider account (via OAuth token abuse or any other means) being leveraged to access downstream platforms: CI/CD systems, cloud infrastructure, code repositories, PaaS environments, secrets managers.</p><p><strong>Why this matters</strong>: Owning a Workspace or M365 identity is rarely the objective. It&#8217;s a waypoint. The attacker wants what that identity can reach. In modern environments, a single identity is often federated across dozens of platforms via SSO, linked credentials, and stored secrets. In the Vercel case, Workspace access led to platform environment access and secrets exfiltration. In your environment, the blast radius may be different, but the movement pattern is the same.</p><h3>Map the Blast Radius First</h3><p>Before you can hunt for this movement, you need to understand what&#8217;s reachable from a compromised identity. For each user with high-risk third-party OAuth grants:</p><ul><li><p><strong>SSO-connected applications</strong>: What can this identity access via Google/Microsoft SSO? Each is a pivot target if that identity is compromised. Most organizations underestimate how many platforms are SSO-connected.</p></li><li><p><strong>Stored secrets in email and cloud storage</strong>: API keys, connection strings, passwords, tokens sitting in email threads, shared Drive folders, or OneNote notebooks. Attackers search for these immediately upon gaining email/Drive access.</p></li><li><p><strong>CI/CD and PaaS integrations</strong>: Does this user have access to deployment platforms, build systems, or cloud consoles? Are there environment variables or secrets in those platforms stored in plaintext or not marked as <code>sensitive</code>?</p></li><li><p><strong>Browser-synced credentials</strong>: If the user syncs their browser profile with their corporate identity, a Workspace/M365 compromise may expose their entire browser password store.</p></li></ul><h3>Detection Queries</h3><p><strong>SSO session correlation:</strong></p><p>Look for SSO-initiated sessions in downstream platforms that correlate temporally with suspicious activity in your identity provider:</p><pre><code><code>SignInLogs (downstream platform):
Authentication method: SSO
User: [users with high-risk OAuth grants]
Correlate with: unusual OAuth app activity from Hunt 3
</code></code></pre><p>The specific log sources depend on your platform stack, but the logic is consistent: if you see anomalous OAuth token usage in your IdP, check whether the affected identity subsequently created sessions in connected platforms.</p><p><strong>Secrets and environment variable access:</strong></p><pre><code><code>GitHub:   org.update_actions_secret, repo.update_actions_secret
AWS:      CloudTrail GetSecretValue, GetParameter (SSM)
GCP:      Secret Manager AccessSecretVersion
Azure:    Key Vault SecretGet
PaaS:     Environment variable access events (check audit logs)
</code></code></pre><p>On Vercel, Netlify, and similar platforms, pay special attention to variables not configured as <code>sensitive</code> or <code>encrypted</code>, which may be readable to any authenticated user with project access.</p><p><strong>Email and cloud storage enumeration:</strong></p><p>The rapid-fire pattern of an attacker enumerating everything they can reach through a compromised identity:</p><ul><li><p>Drive/OneDrive: high-volume <code>view</code>, <code>download</code>, or <code>copy</code> events in a short window, especially against files the user doesn&#8217;t typically access</p></li><li><p>Email: API-based access to mailbox contents (as opposed to normal interactive use), particularly bulk read patterns</p></li><li><p>Across both: access from the same anomalous IP/geo identified in Hunt 3</p></li></ul><div><hr></div><h2>Hardening Against the Pattern</h2><p>Hunting finds current exposure. Hardening reduces future attack surface. These recommendations map to the four phases of the attack chain:</p><p><strong>Reduce the trust surface (Phase 2 prevention):</strong></p><ul><li><p>Implement an OAuth app allowlist in your identity provider. Block user consent for unapproved applications.</p></li><li><p>Restrict broad scopes by default. No third-party app gets <code>Allow All</code> or equivalent without explicit security review.</p></li><li><p>Alert on new OAuth consent events, especially for high-privilege scopes.</p></li><li><p>Conduct quarterly reviews of active OAuth grants and revoke stale or unnecessary ones.</p></li><li><p>Establish a lightweight process for employees to request approval for new SaaS tools rather than self-provisioning with corporate credentials.</p></li></ul><p><strong>Limit the blast radius (Phase 3/4 prevention):</strong></p><ul><li><p>Default all secrets, environment variables, and API keys to encrypted/sensitive storage in every platform. The Vercel breach specifically exploited variables that weren&#8217;t marked sensitive.</p></li><li><p>Audit CI/CD and PaaS platforms for secrets stored in plaintext.</p></li><li><p>Enforce short-lived access tokens (5-15 minutes) with appropriately scoped refresh tokens where your IdP supports it.</p></li><li><p>Implement token binding or sender-constrained tokens to make stolen tokens unusable from unauthorized devices.</p></li><li><p>Segment SSO access. Not every identity needs access to every connected platform.</p></li></ul><p><strong>Build resilience (detection and response):</strong></p><ul><li><p>Monitor infostealer exposure feeds for your corporate domains and critical vendor domains.</p></li><li><p>Baseline OAuth application behavior and alert on deviation.</p></li><li><p>Rotate tokens and secrets immediately upon any suspected identity compromise, including when a <em>vendor</em> discloses a compromise.</p></li><li><p>Maintain a runbook for &#8220;third-party vendor compromise&#8221; that includes identifying all OAuth grants from that vendor, revoking them, auditing access logs for the affected period, and rotating any secrets the affected identities could reach.</p></li></ul><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pUS2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e902dbc-e34e-4273-b63d-c9dd706e5f4a_1200x655.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pUS2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e902dbc-e34e-4273-b63d-c9dd706e5f4a_1200x655.png 424w, https://substackcdn.com/image/fetch/$s_!pUS2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e902dbc-e34e-4273-b63d-c9dd706e5f4a_1200x655.png 848w, https://substackcdn.com/image/fetch/$s_!pUS2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e902dbc-e34e-4273-b63d-c9dd706e5f4a_1200x655.png 1272w, https://substackcdn.com/image/fetch/$s_!pUS2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e902dbc-e34e-4273-b63d-c9dd706e5f4a_1200x655.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pUS2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e902dbc-e34e-4273-b63d-c9dd706e5f4a_1200x655.png" width="1200" height="655" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1e902dbc-e34e-4273-b63d-c9dd706e5f4a_1200x655.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:655,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The Vercel Hack: How One AI Tool Cracked Open the Internet's Deployment  Stack | by Faisal haque | Apr, 2026 | Artificial Intelligence in Plain  English&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Vercel Hack: How One AI Tool Cracked Open the Internet's Deployment  Stack | by Faisal haque | Apr, 2026 | Artificial Intelligence in Plain  English" title="The Vercel Hack: How One AI Tool Cracked Open the Internet's Deployment  Stack | by Faisal haque | Apr, 2026 | Artificial Intelligence in Plain  English" srcset="https://substackcdn.com/image/fetch/$s_!pUS2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e902dbc-e34e-4273-b63d-c9dd706e5f4a_1200x655.png 424w, https://substackcdn.com/image/fetch/$s_!pUS2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e902dbc-e34e-4273-b63d-c9dd706e5f4a_1200x655.png 848w, https://substackcdn.com/image/fetch/$s_!pUS2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e902dbc-e34e-4273-b63d-c9dd706e5f4a_1200x655.png 1272w, https://substackcdn.com/image/fetch/$s_!pUS2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e902dbc-e34e-4273-b63d-c9dd706e5f4a_1200x655.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">credit Faisal Haque - https://ai.plainenglish.io/the-vercel-hack-how-one-ai-tool-cracked-open-the-internets-deployment-stack-562303c026f0...</figcaption></figure></div><h2>Vercel/Context.ai IOCs</h2><p>For immediate operational use. These are specific to the April 2026 Vercel incident and should be checked alongside the broader hunts above:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nBI2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94b659e1-02bb-4e31-9bfd-d04539faa4fe_1760x808.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nBI2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94b659e1-02bb-4e31-9bfd-d04539faa4fe_1760x808.png 424w, https://substackcdn.com/image/fetch/$s_!nBI2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94b659e1-02bb-4e31-9bfd-d04539faa4fe_1760x808.png 848w, https://substackcdn.com/image/fetch/$s_!nBI2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94b659e1-02bb-4e31-9bfd-d04539faa4fe_1760x808.png 1272w, https://substackcdn.com/image/fetch/$s_!nBI2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94b659e1-02bb-4e31-9bfd-d04539faa4fe_1760x808.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nBI2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94b659e1-02bb-4e31-9bfd-d04539faa4fe_1760x808.png" width="1456" height="668" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/94b659e1-02bb-4e31-9bfd-d04539faa4fe_1760x808.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:668,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:142115,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://dispatch.thorcollective.com/i/195757921?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94b659e1-02bb-4e31-9bfd-d04539faa4fe_1760x808.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nBI2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94b659e1-02bb-4e31-9bfd-d04539faa4fe_1760x808.png 424w, https://substackcdn.com/image/fetch/$s_!nBI2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94b659e1-02bb-4e31-9bfd-d04539faa4fe_1760x808.png 848w, https://substackcdn.com/image/fetch/$s_!nBI2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94b659e1-02bb-4e31-9bfd-d04539faa4fe_1760x808.png 1272w, https://substackcdn.com/image/fetch/$s_!nBI2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94b659e1-02bb-4e31-9bfd-d04539faa4fe_1760x808.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>and because I spent too many years hand keying IOCs from photos and PDFs:<br><br><code>110671459871-30f1spbu0hptbs60cb4vsmv79i7bbvqj.apps.googleusercontent.com
110671459871-f3cq3okebd3jcg1lllmroqejdbka8cqq.apps.googleusercontent.com
omddlmnhcofjbnbflmjginpjjblphbgk
beta.context.ai
</code></p><div><hr></div><h2>The Bigger Picture</h2><p>The Vercel/Context.ai breach is a clean example of a pattern that&#8217;s been building for years: as organizations adopt more SaaS tools, they create more trust relationships, and each trust relationship is a lateral movement path that bypasses traditional perimeter and endpoint controls. The attacker doesn&#8217;t need to beat your security. They need to beat the security of anyone you&#8217;ve granted trust to.</p><p>That&#8217;s not a problem you solve once. It&#8217;s a behavior you hunt for continuously.</p><p>Happy thrunting!</p><div><hr></div><p><em>The THOR Collective is a practitioner-driven cybersecurity collective focused on detection, hunting, and response tradecraft. Want to contribute? Reach out.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/p/hunting-the-infostealer-to-saas-pipeline/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://dispatch.thorcollective.com/p/hunting-the-infostealer-to-saas-pipeline/comments"><span>Leave a comment</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Three New Ways to Use HEARTH ]]></title><description><![CDATA[What Can I Hunt?, Coverage Map, and Context Graph]]></description><link>https://dispatch.thorcollective.com/p/three-new-ways-to-use-hearth</link><guid isPermaLink="false">https://dispatch.thorcollective.com/p/three-new-ways-to-use-hearth</guid><dc:creator><![CDATA[Sydney Marrone]]></dc:creator><pubDate>Wed, 22 Apr 2026 12:04:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!WAAN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61d2e08d-68c8-4e36-91b9-1338aa2f388d_500x500.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>HEARTH now has 160+ community-curated hunting hypotheses structured around the <a href="https://www.splunk.com/en_us/blog/security/peak-threat-hunting-framework.html">PEAK threat hunting framework:</a>&nbsp;Flames for hypothesis-driven hunts, Embers for baselining and exploration, and&nbsp;Alchemy for model-assisted work. That&#8217;s a lot of ground to cover, and the flat list view we shipped with was fine for browsing but not for answering the questions analysts actually ask at their desks: <em>What can I run with the logs I already have? Where are my coverage holes? Why does this hunt matter this week?</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>This release adds three new tabs that each answer one of those questions. None of them change the underlying hunt library &#8212; hunts still live as markdown in the repo and flow into <code>hunts-data.json</code> on build. The tabs are different lenses on the same data, plus a context graph layer that ties hunts back to the actors and campaigns driving them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WAAN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61d2e08d-68c8-4e36-91b9-1338aa2f388d_500x500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WAAN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61d2e08d-68c8-4e36-91b9-1338aa2f388d_500x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WAAN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61d2e08d-68c8-4e36-91b9-1338aa2f388d_500x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WAAN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61d2e08d-68c8-4e36-91b9-1338aa2f388d_500x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WAAN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61d2e08d-68c8-4e36-91b9-1338aa2f388d_500x500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WAAN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61d2e08d-68c8-4e36-91b9-1338aa2f388d_500x500.jpeg" width="500" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/61d2e08d-68c8-4e36-91b9-1338aa2f388d_500x500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WAAN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61d2e08d-68c8-4e36-91b9-1338aa2f388d_500x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WAAN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61d2e08d-68c8-4e36-91b9-1338aa2f388d_500x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WAAN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61d2e08d-68c8-4e36-91b9-1338aa2f388d_500x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WAAN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61d2e08d-68c8-4e36-91b9-1338aa2f388d_500x500.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here&#8217;s what shipped.</p><h2><strong>What Can I Hunt?</strong></h2><p><strong>The problem.</strong> You have an EDR, Zeek, Okta, and Microsoft 365 logs. You do not have a cloud trail from every CSP, you do not have full packet capture, and you are not going to read 130 markdown files to figure out which hunts are runnable tonight. The default question for any new hunter onboarding to an environment is &#8220;given my telemetry, what should I work on first?&#8221; &#8212; and until now HEARTH made you answer that by hand.</p><p><strong>How it works.</strong> The left sidebar lists data source categories pulled from a curated <code>datasource-mapping.json</code> &#8212; EDR, Network, Identity, Cloud, Email, and so on. Check the boxes for what you actually have. The right pane filters in real time to only hunts whose required data sources you can satisfy, then ranks them with a HuntRanker score that blends three signals:</p><ul><li><p><strong>Prevalence</strong> &#8212; how many active threat campaigns are currently leveraging the underlying techniques, shown as &#128293; hot, &#127777;&#65039; warm, or &#10052;&#65039; cold.</p></li><li><p><strong>Actor count</strong> &#8212; how many tracked threat actors are known to use the technique.</p></li><li><p><strong>Active campaigns</strong> &#8212; the live campaign count touching the technique right now.</p></li></ul><p>The top 5 cards float to the top as &#8220;highest-impact given current threat activity.&#8221; If you have a data source but the techniques under it have zero HEARTH hypotheses, a coverage gap alert fires with a CTA to submit one &#8212; this is how the library grows in the places it&#8217;s needed. Every card has a &#8220;View hypothesis&#8221; link that opens the rendered markdown straight from GitHub, so you can go from &#8220;what should I hunt?&#8221; to reading the full hypothesis, data requirements, and detection logic in one click.</p><p><strong>Who it&#8217;s for.</strong> SOC analysts and detection engineers onboarding to a new environment, hunt team leads building a sprint backlog, and anyone who wants to stop triaging a 130-row spreadsheet. The pitch is simple: tell us what telemetry you have, and we&#8217;ll tell you what&#8217;s worth hunting right now.</p><h2><strong>Coverage Map</strong></h2><p><strong>The problem.</strong> Leadership asks where your hunting program covers ATT&amp;CK and where it doesn&#8217;t. You want a single view that shows hunts mapped to techniques, color-coded by hunt type, with gaps called out &#8212; not a spreadsheet you have to re-render every quarter.</p><p><strong>How it works.</strong> The Coverage Map is an interactive data visualization graph placing hunts against ATT&amp;CK techniques. Nodes are color-coded by type so you can read the map at a glance:</p><ul><li><p>Orange &#8212; ATT&amp;CK technique</p></li><li><p>Purple &#8212; Flame hunt (hypothesis-driven)</p></li><li><p>Blue &#8212; Ember hunt (baselining/exploration)</p></li><li><p>Amber &#8212; Alchemy hunt (model-assisted)</p></li><li><p>Green &#8212; Data source</p></li><li><p>Red (glowing) &#8212; Coverage gap</p></li></ul><p>Tactic filter buttons across the top let you narrow to a single kill-chain phase &#8212; Credential Access, Persistence, Exfiltration, whatever you&#8217;re scoping. Click any node and a sidebar slides out with the full details: linked techniques, required data sources, hunt IDs, description.</p><p>The coverage gap nodes are the interesting ones. They surface techniques that public reporting has tied to active campaigns but that HEARTH does not yet have a hypothesis for. That&#8217;s your contribution backlog, sorted by relevance instead of by whim.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vX8J!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1186e0a0-d60b-4ecb-9749-d19c561a6cb9_667x375.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vX8J!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1186e0a0-d60b-4ecb-9749-d19c561a6cb9_667x375.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vX8J!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1186e0a0-d60b-4ecb-9749-d19c561a6cb9_667x375.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vX8J!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1186e0a0-d60b-4ecb-9749-d19c561a6cb9_667x375.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vX8J!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1186e0a0-d60b-4ecb-9749-d19c561a6cb9_667x375.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vX8J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1186e0a0-d60b-4ecb-9749-d19c561a6cb9_667x375.jpeg" width="667" height="375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1186e0a0-d60b-4ecb-9749-d19c561a6cb9_667x375.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:375,&quot;width&quot;:667,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vX8J!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1186e0a0-d60b-4ecb-9749-d19c561a6cb9_667x375.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vX8J!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1186e0a0-d60b-4ecb-9749-d19c561a6cb9_667x375.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vX8J!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1186e0a0-d60b-4ecb-9749-d19c561a6cb9_667x375.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vX8J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1186e0a0-d60b-4ecb-9749-d19c561a6cb9_667x375.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Who it&#8217;s for.</strong> Detection engineering leads building a coverage strategy, program leads pitching hunting maturity to stakeholders, and contributors looking for the highest-value gap to fill instead of writing yet another Mimikatz hunt.</p><h2><strong>Context Graph</strong></h2><p><strong>The problem.</strong> A hunt hypothesis on its own tells you what to look for, not why it matters this week. To prioritize, you need the full chain: which actor ran which campaign, which techniques did that campaign use, and which HEARTH hunts land on those techniques. That&#8217;s four entity types and a lot of edges, and it does not fit in a flat list.</p><p><strong>How it works.</strong> The Context Graph is a data visualization force-directed graph with four node types and real edges between them:</p><ul><li><p>Threat actors (red)</p></li><li><p>Campaigns (amber)</p></li><li><p>ATT&amp;CK techniques (orange)</p></li><li><p>HEARTH hunts (Flames, Embers, Alchemy in their respective colors)</p></li></ul><p>Edges reflect real relationships derived from public threat intel: actor X ran campaign Y, which used T1071.001, which HEARTH hunt H002 can detect. Hover any node for a tooltip with the metadata that matters &#8212; campaign dates, actor aliases, technique ID, hunt description. Click to expand the full sidebar.</p><p>The graph is kept up to date by enrichment scripts that pull data from public threat intelligence sources. You&#8217;re not looking at a snapshot someone committed last quarter; you&#8217;re looking at a live picture of what&#8217;s being reported on.</p><p><strong>Who it&#8217;s for.</strong> Threat intel analysts who need to connect reports to action, hunt program leads justifying prioritization to stakeholders, and researchers exploring what a given actor has actually been doing lately.</p><h2><strong>Putting it together</strong></h2><p>These tabs are designed to chain. A realistic workflow looks like this:</p><p>You read an advisory about an actor getting louder &#8212; pick your favorite. You jump into the <strong>Context Graph</strong>, find the actor node, and expand out to the campaigns and techniques they&#8217;ve been using. Two of those techniques look new and relevant to your environment.</p><p>From there you switch to the <strong>Coverage Map</strong> and filter by the tactics those techniques belong to. Three are covered by existing hunts; one is a red gap node. You note the gap as a contribution candidate and move on.</p><p>Finally you open <strong>&#127919; What Can I Hunt?</strong>, confirm your data source boxes are checked, and the three covered hunts sort into your top 5 based on current prevalence and actor count. You click through to the markdown, paste the detection logic into your platform of choice, and you&#8217;re running something meaningful by lunch.</p><p>That&#8217;s the whole point. Context Graph tells you what matters, Coverage Map tells you where you stand, and What Can I Hunt? tells you what to run. Same library, three different questions, one workflow.</p><h2><strong>Try it</strong></h2><p>All three tabs are live now at <strong><a href="https://hearth.thorcollective.com/">hearth.thorcollective.com</a></strong>. If you find a coverage gap worth filling, the contribution workflow is linked directly from the gap alerts &#8212; submit a hypothesis and it&#8217;ll flow through the normal PEAK review into the next build.</p><p>Feedback, bug reports, and new hunts all welcome. HEARTH is only as useful as the community makes it, and these tabs are meant to make that contribution loop tighter.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Mythos Won’t Kill Threat Hunting]]></title><description><![CDATA[It&#8217;ll Prove We Were Right]]></description><link>https://dispatch.thorcollective.com/p/mythos-wont-kill-threat-hunting</link><guid isPermaLink="false">https://dispatch.thorcollective.com/p/mythos-wont-kill-threat-hunting</guid><dc:creator><![CDATA[Sydney Marrone]]></dc:creator><pubDate>Mon, 13 Apr 2026 17:02:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!65p5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32680bf5-5458-46ca-a36c-aa9764ff45a4_567x500.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last week, a coalition of CISOs, SANS, OWASP, and the Cloud Security Alliance published a strategy briefing called <a href="https://labs.cloudsecurityalliance.org/wp-content/uploads/2026/04/mythosready.pdf">&#8220;The AI Vulnerability Storm: Building a &#8216;Mythos-ready&#8217; Security Program.&#8221;</a> If you haven&#8217;t read it yet, you should. The author list alone is stacked: Gadi Evron, Rob T. Lee, Jen Easterly, Bruce Schneier, Chris Inglis, Heather Adkins, Rob Joyce. It&#8217;s the kind of document that doesn&#8217;t happen unless people are genuinely worried.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>The headline is hard to ignore. Anthropic&#8217;s Claude Mythos can autonomously <a href="https://www.anthropic.com/glasswing">discover thousands of zero-day vulnerabilities</a> across major operating systems and browsers. A 72% exploit success rate. It found a 27-year-old OpenBSD bug nobody caught. Where Opus 4.6 generated two working Firefox exploits, Mythos generated 181 under identical conditions. The time between vulnerability discovery and a working exploit now looks like hours, not weeks.</p><p>The briefing lays out a 90-day plan for CISOs. It&#8217;s solid. But it&#8217;s written for people managing budgets and setting strategy.</p><p>We want to talk about what this means for the people actually doing the work.</p><p>This is a genuine inflection point. So naturally, the hot takes started rolling in: <em>AI will replace security analysts. Threat hunting is dead. Humans can&#8217;t keep up.</em></p><p>They&#8217;re wrong. And they&#8217;re wrong for the same reason they&#8217;ve always been wrong. They keep confusing finding bugs with finding adversaries.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!65p5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32680bf5-5458-46ca-a36c-aa9764ff45a4_567x500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!65p5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32680bf5-5458-46ca-a36c-aa9764ff45a4_567x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!65p5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32680bf5-5458-46ca-a36c-aa9764ff45a4_567x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!65p5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32680bf5-5458-46ca-a36c-aa9764ff45a4_567x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!65p5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32680bf5-5458-46ca-a36c-aa9764ff45a4_567x500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!65p5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32680bf5-5458-46ca-a36c-aa9764ff45a4_567x500.jpeg" width="567" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32680bf5-5458-46ca-a36c-aa9764ff45a4_567x500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:567,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!65p5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32680bf5-5458-46ca-a36c-aa9764ff45a4_567x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!65p5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32680bf5-5458-46ca-a36c-aa9764ff45a4_567x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!65p5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32680bf5-5458-46ca-a36c-aa9764ff45a4_567x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!65p5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32680bf5-5458-46ca-a36c-aa9764ff45a4_567x500.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>The Category Error That Won&#8217;t Die</strong></h2><p>Finding a bug in source code and finding an adversary living in your environment are fundamentally different problems. One is a code analysis challenge. The other is a behavioral detection problem. One looks at what software <em>could</em> do wrong. The other looks at what humans <em>are</em> doing wrong, inside your network, right now, with intent.</p><p>Could Mythos-class models eventually correlate authentication anomalies with lateral movement at 2 AM? Probably. Could they ask why a legitimate admin tool is running on a finance workstation outside a change window? Maybe. But that&#8217;s not a threat to hunting. That&#8217;s hunting getting faster. The methodology doesn&#8217;t go away because the tools got better. It gets more important because the volume and speed of what we&#8217;re up against just changed overnight.</p><h2><strong>The Model Isn&#8217;t the Moat (But It&#8217;s Not Nothing)</strong></h2><p>After Glasswing dropped, <a href="https://aisle.com/blog/ai-cybersecurity-after-mythos-the-jagged-frontier">AISLE ran Mythos&#8217;s showcase vulnerabilities</a> through small, cheap, open-weights models. Eight out of eight detected the flagship FreeBSD exploit. A 3.6 billion parameter model found it. Headlines followed: Mythos isn&#8217;t special, smaller models can do this too.</p><p>Not so fast.</p><p>AISLE isolated the vulnerable functions and pointed their models directly at them. That&#8217;s a very different problem than what Mythos did. Anthropic pointed Mythos at entire codebases with no guidance and told it to find something. It scoured millions of lines of code, identified the weak points, chained vulnerabilities together, and built working exploits. The targeting is the hard part, and AISLE skipped it.</p><p>But here&#8217;s what AISLE got right, and it matters for us: even with a frontier model, the value isn&#8217;t the model alone. It&#8217;s the system around it. The targeting. The methodology. The expertise that knows where to look and what to do with what you find.</p><p>That&#8217;s the threat hunting argument we&#8217;ve been making for a decade. The tool doesn&#8217;t matter. The SIEM doesn&#8217;t matter. What matters is the hypothesis, the iterative refinement, the human who understands the terrain. Every agentic security framework being built right now runs the same loop hunters have been running manually. Form hypothesis, collect data, analyze, iterate, improve the posture. We didn&#8217;t copy that from AI. AI copied that from us.</p><h2><strong>What Mythos Actually Changes</strong></h2><p>Mythos increases volume and speed. It does not change attacker behavior.</p><p>The biggest breaches we see today still come from the basics:</p><ul><li><p>credential abuse</p></li><li><p>phishing</p></li><li><p>supply chain compromise</p></li><li><p>misconfigurations</p></li></ul><p>Not zero-days.</p><p>Attackers still have to operate in your environment. And that shows up as behavior.</p><p>That&#8217;s what we hunt.</p><h2><strong>Detection Was Already Losing</strong></h2><p>Signature-based detection was already losing.</p><p>When exploitation happens faster than your patch cycle, detection tied to known CVEs is always late. You&#8217;re reacting after the exploit exists.</p><p>Threat hunting exists because of that gap.</p><p>Mythos doesn&#8217;t break the model.</p><p>It validates it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!03XJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4f7430f-633d-40e1-ac76-a444794dd3af_524x500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!03XJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4f7430f-633d-40e1-ac76-a444794dd3af_524x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!03XJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4f7430f-633d-40e1-ac76-a444794dd3af_524x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!03XJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4f7430f-633d-40e1-ac76-a444794dd3af_524x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!03XJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4f7430f-633d-40e1-ac76-a444794dd3af_524x500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!03XJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4f7430f-633d-40e1-ac76-a444794dd3af_524x500.jpeg" width="524" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d4f7430f-633d-40e1-ac76-a444794dd3af_524x500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:524,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!03XJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4f7430f-633d-40e1-ac76-a444794dd3af_524x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!03XJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4f7430f-633d-40e1-ac76-a444794dd3af_524x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!03XJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4f7430f-633d-40e1-ac76-a444794dd3af_524x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!03XJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4f7430f-633d-40e1-ac76-a444794dd3af_524x500.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>What Actually Scales</h2><p>When exploits can be generated at machine speed, the only thing that scales is behavioral hunting.</p><p>You&#8217;re not asking &#8220;was this CVE exploited.&#8221;</p><p>You&#8217;re asking:</p><ul><li><p>does this process tree make sense?</p></li><li><p>does this auth pattern match baseline?</p></li><li><p>why is this system talking to something new?</p></li><li><p>who wrote to this directory?</p></li></ul><p>None of that changes.</p><p>It just matters more.</p><h2><strong>The Real Problem: Memory</strong></h2><p>Most hunting programs don&#8217;t have memory.</p><p>Hunts get run, closed, and forgotten. Insights live in Slack. Knowledge walks out the door.</p><p>That was already inefficient.</p><p>At Mythos scale, it&#8217;s a failure mode.</p><p>If you can&#8217;t recall what you&#8217;ve already investigated, you can&#8217;t keep up.</p><h2><strong>What Needs to Change</strong></h2><p>The CSA briefing&#8217;s 90-day plan is good for CISOs. Here&#8217;s what it looks like translated to hunting operations:</p><p><strong>This week:</strong></p><ul><li><p>Assess behavior coverage, not just data</p></li><li><p>Baseline auth, DNS, service accounts</p></li><li><p>Write your hunts down</p></li></ul><p><strong>This month:</strong></p><ul><li><p>Use AI to accelerate, not replace</p></li><li><p>Generate hypotheses and draft queries faster</p></li><li><p>Add quality gates</p></li></ul><p><strong>This quarter:</strong></p><ul><li><p>Start building agents for repeatable work</p></li><li><p>CVE &#8594; hypothesis generation</p></li><li><p>baseline &#8594; drift detection</p></li><li><p>recommendations &#8594; tracking</p></li></ul><p>Humans decide.</p><p>Agents scale.</p><h2><strong>HEARTH: The Receipts</strong></h2><p>We keep saying &#8220;we hunt behavior.&#8221; Here&#8217;s what that looks like in practice.</p><p><a href="https://hearth.thorcollective.com/">HEARTH</a> is the community hypothesis library we built at THOR Collective. It currently has 133 hypotheses, 19 baselines, and 15 analytical models, all structured using the PEAK framework. Every hypothesis targets a specific adversary behavior, not a CVE.</p><p>When we mapped the Mythos briefing&#8217;s threat categories to HEARTH, the coverage held up better than we expected.</p><ul><li><p><strong>Supply chain attacks:</strong> npm compromise, VS Code extensions, PyPI poisoning, GitHub Actions abuse</p></li><li><p><strong>AI/agentic attack surface:</strong> MCP server abuse, prompt injection chains, LLM credential theft, autonomous recon</p></li><li><p><strong>Social engineering at scale:</strong> ClickFix variants, AI tool impersonation, fake VPN clients</p></li><li><p><strong>Baselines:</strong> non-human identities, DNS patterns, scheduled tasks, service account auth, PowerShell usage</p></li></ul><p>It&#8217;s not complete. We don&#8217;t yet cover things like detecting exploitation of newly discovered kernel-level bugs or tracking patch velocity against disclosure rates.</p><p>But the model holds.</p><p>A shared library of behavioral hypotheses is exactly the kind of infrastructure the CSA briefing points to when it says coalitions win. HEARTH is open source. Every hypothesis is a pull request away from better coverage.</p><h2><strong>The Five Levels</strong></h2><p>The briefing calls for &#8220;Mythos-ready&#8221; programs but doesn&#8217;t define what that means. This is exactly the problem the <a href="https://agenticthreathuntingframework.com/">Agentic Threat Hunting Framework (ATHF)</a> was designed to solve.</p><ul><li><p><strong>Level 0: Ad hoc</strong> - Hunts live in Slack. No structure, no memory.</p></li><li><p><strong>Level 1: Documented</strong> - Hunts are written and stored.</p></li><li><p><strong>Level 2: Searchable</strong> - Hunt history can be queried and recalled, including by AI.</p></li><li><p><strong>Level 3: Generative</strong> - AI assists with hypotheses and execution.</p></li><li><p><strong>Level 4: Agentic</strong> - Agents handle monitoring, triage, and workflow execution.</p></li></ul><p>Most teams should be targeting Level 2 right now.</p><p>That&#8217;s the minimum viable response to this shift. Because at Mythos scale, memory isn&#8217;t optional.</p><p>It&#8217;s the difference between scaling and sinking.</p><h3><strong>The Bottom Line</strong></h3><p>Mythos didn&#8217;t change what threat hunting is.</p><p>It changed how fast we need to do it.</p><p><a href="https://www.splunk.com/en_us/blog/security/peak-threat-hunting-framework.html">PEAK</a> still works. Behavioral hunting still works.</p><p>You just need to move faster, remember more, and cover more ground.</p><p>The hunters who figure that out won&#8217;t just be fine. They&#8217;ll be the ones everyone else is depending on.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!u92u!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F326db02b-8dd9-4607-ac59-1aec2ea1a162_800x450.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u92u!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F326db02b-8dd9-4607-ac59-1aec2ea1a162_800x450.jpeg 424w, https://substackcdn.com/image/fetch/$s_!u92u!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F326db02b-8dd9-4607-ac59-1aec2ea1a162_800x450.jpeg 848w, https://substackcdn.com/image/fetch/$s_!u92u!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F326db02b-8dd9-4607-ac59-1aec2ea1a162_800x450.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!u92u!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F326db02b-8dd9-4607-ac59-1aec2ea1a162_800x450.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!u92u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F326db02b-8dd9-4607-ac59-1aec2ea1a162_800x450.jpeg" width="800" height="450" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/326db02b-8dd9-4607-ac59-1aec2ea1a162_800x450.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:450,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!u92u!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F326db02b-8dd9-4607-ac59-1aec2ea1a162_800x450.jpeg 424w, https://substackcdn.com/image/fetch/$s_!u92u!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F326db02b-8dd9-4607-ac59-1aec2ea1a162_800x450.jpeg 848w, https://substackcdn.com/image/fetch/$s_!u92u!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F326db02b-8dd9-4607-ac59-1aec2ea1a162_800x450.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!u92u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F326db02b-8dd9-4607-ac59-1aec2ea1a162_800x450.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Mythos didn&#8217;t change what threat hunting is.</p><p>It changed how fast we need to do it.</p><p>Happy thrunting!</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/p/mythos-wont-kill-threat-hunting/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://dispatch.thorcollective.com/p/mythos-wont-kill-threat-hunting/comments"><span>Leave a comment</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Vibe Coding The Holidays Away]]></title><description><![CDATA[A data-driven breakdown of what attackers are actually hunting for on the open internet &#8212; and what defenders should be watching.]]></description><link>https://dispatch.thorcollective.com/p/vibe-coding-the-holidays-away</link><guid isPermaLink="false">https://dispatch.thorcollective.com/p/vibe-coding-the-holidays-away</guid><pubDate>Tue, 31 Mar 2026 14:33:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!dXos!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18dceb4a-4220-403c-9c11-592ae2b489bc_2000x1090.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dXos!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18dceb4a-4220-403c-9c11-592ae2b489bc_2000x1090.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dXos!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18dceb4a-4220-403c-9c11-592ae2b489bc_2000x1090.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dXos!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18dceb4a-4220-403c-9c11-592ae2b489bc_2000x1090.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dXos!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18dceb4a-4220-403c-9c11-592ae2b489bc_2000x1090.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dXos!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18dceb4a-4220-403c-9c11-592ae2b489bc_2000x1090.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dXos!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18dceb4a-4220-403c-9c11-592ae2b489bc_2000x1090.jpeg" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/18dceb4a-4220-403c-9c11-592ae2b489bc_2000x1090.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:435086,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://dispatch.thorcollective.com/i/192687506?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18dceb4a-4220-403c-9c11-592ae2b489bc_2000x1090.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dXos!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18dceb4a-4220-403c-9c11-592ae2b489bc_2000x1090.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dXos!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18dceb4a-4220-403c-9c11-592ae2b489bc_2000x1090.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dXos!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18dceb4a-4220-403c-9c11-592ae2b489bc_2000x1090.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dXos!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18dceb4a-4220-403c-9c11-592ae2b489bc_2000x1090.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><br>Over the holiday break, I deployed a set of web honeypots on Digital Ocean and let them soak. No fancy banners, no fake login portals &#8212; just nginx instances logging every request to Loki, with a daily analysis pipeline crunching the data into structured threat models. The honeypots ran from January 1&#8211;16, 2026, collecting <strong>71,768 total requests</strong> from <strong>~400+ unique IPs per day</strong> across <strong>tens of thousands of unique URI paths</strong>.</p><p>Over the holidays I had some free time and decided to sit down and build out a project I had been kicking around for quite some time. I wanted to see if I couldn&#8217;t build a honeypot network across global AWS infrastructure, forward the goals to a single destination (my aggregator), and then analyze those logs to see if there were any noteworthy trends.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support our work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>What came back isn&#8217;t groundbreaking in the &#8220;zero-day&#8221; sense. But it paints one of the clearest pictures I&#8217;ve seen of what the automated internet actually looks like when it hits your infrastructure &#8212; and more importantly, what it&#8217;s looking for. If you&#8217;re building hunt hypotheses, tuning detections, or trying to prioritize hardening, this is the kind of ground truth that matters.</p><p>Here&#8217;s what the data said.</p><div><hr></div><h2><strong>The Shape of the Noise</strong></h2><p>Before diving into what was targeted, let&#8217;s look at the volume and rhythm.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jDFu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c7af79-ccc7-4124-af32-4c6b57c9d208_872x697.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jDFu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c7af79-ccc7-4124-af32-4c6b57c9d208_872x697.png 424w, https://substackcdn.com/image/fetch/$s_!jDFu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c7af79-ccc7-4124-af32-4c6b57c9d208_872x697.png 848w, https://substackcdn.com/image/fetch/$s_!jDFu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c7af79-ccc7-4124-af32-4c6b57c9d208_872x697.png 1272w, https://substackcdn.com/image/fetch/$s_!jDFu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c7af79-ccc7-4124-af32-4c6b57c9d208_872x697.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jDFu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c7af79-ccc7-4124-af32-4c6b57c9d208_872x697.png" width="872" height="697" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/86c7af79-ccc7-4124-af32-4c6b57c9d208_872x697.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:697,&quot;width&quot;:872,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:92132,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://dispatch.thorcollective.com/i/192687506?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c7af79-ccc7-4124-af32-4c6b57c9d208_872x697.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jDFu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c7af79-ccc7-4124-af32-4c6b57c9d208_872x697.png 424w, https://substackcdn.com/image/fetch/$s_!jDFu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c7af79-ccc7-4124-af32-4c6b57c9d208_872x697.png 848w, https://substackcdn.com/image/fetch/$s_!jDFu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c7af79-ccc7-4124-af32-4c6b57c9d208_872x697.png 1272w, https://substackcdn.com/image/fetch/$s_!jDFu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c7af79-ccc7-4124-af32-4c6b57c9d208_872x697.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Two things jump out immediately:</p><p><strong>The baseline is remarkably consistent.</strong> On quiet days, you&#8217;re looking at ~2,500 requests from 300&#8211;400 unique IPs. This is the internet&#8217;s ambient scanning noise, distributed across many sources running standard checklists. Your average exposed service gets probed roughly this much every single day whether you notice or not.</p><p><strong>The spikes tell a different story.</strong> January 5th saw a 6x volume surge driven by just three AWS-based /24 networks (13.59.55.0/24, 54.234.91.0/24, 54.175.183.0/24) running what appears to be coordinated broad enumeration. January 7th was even more dramatic &#8212; a single /24 (144.91.101.0/24) fired off 19,873 requests in 24 hours, cycling through nearly 20,000 unique URI paths. That&#8217;s one scanner working through a massive filename permutation list of backup files, config artifacts, and secret files across /api, /admin, /core, and /backup prefixes.</p><p>The contrast matters: Jan 7 had only 44 unique IPs but 20,000 unique URIs. A typical day has 350+ IPs but only 500&#8211;700 URIs. The spike wasn&#8217;t a DDoS &#8212; it was a single, methodical scanner running a very large dictionary. And honestly that&#8217;s just what the data showed because I hadn&#8217;t expected to get that many hits and logs were truncated to 20,000 lines.</p><div><hr></div><h2><strong>What They&#8217;re Actually Hunting For</strong></h2><p>Here&#8217;s where it gets actionable. Across 16 days, I classified every URI into families based on what technology or misconfiguration it targets. The top 10 families by total volume:</p><h3><strong>1. Environment Files &amp; Secrets &#8212; 12,365 hits (every single day)</strong></h3><p><strong>Paths:</strong> <code>/.env</code>, <code>/config.zip</code>, <code>/app/.env</code>, <code>/.env.ts</code>, <code>/api/env.zip</code>, <code>/.aws/credentials</code>, <code>/assets/credentials.json</code></p><p>This was the single most persistent category across the entire observation window. Every single day, scanners checked for exposed dotenv files, config archives, and cloud credential artifacts. The Jan 7 spike included 8,438 env-family requests alone &#8212; a massive run through <code>.env</code> path permutations.</p><p>The scanner toolkits aren&#8217;t just checking <code>/.env</code> anymore. Isaw probes for <code>.env.ts</code>, <code>.env.production</code>, <code>env.zip</code>, and even <code>/.aws/credentials</code> and <code>/.aws/config</code>. They&#8217;re adapting to modern deployment patterns.</p><p><strong>Hunt angle:</strong> If your org deploys to cloud infrastructure, check your external attack surface for any 200 responses to dotenv paths. One exposed <code>.env</code> file is a full credential compromise. Also worth hunting for any CI/CD pipelines that might accidentally publish these to web roots.</p><h3><strong>2. Application Files &amp; PHP Supply Chain &#8212; 10,903 hits (15 of 16 days)</strong></h3><p><strong>Paths:</strong> <code>/vendor/phpunit/phpunit/src/util/php/eval-stdin.php</code>, <code>/vendor/phpunit/phpunit/util/php/eval-stdin.php</code></p><p>Legacy PHP supply chain exploitation is alive and well. The phpunit <code>eval-stdin.php</code> path &#8212; a file that shouldn&#8217;t exist in production but does when vendor directories are accidentally web-accessible &#8212; was one of the most consistently probed targets. Multiple path variants are checked simultaneously, suggesting scanner dictionaries include known path permutations across different phpunit versions.</p><p>Beyond phpunit, this family includes broad <code>.php</code>, <code>.asp</code>, <code>.aspx</code>, <code>.jsp</code> probing, effectively fingerprinting what server-side technologies are present.</p><p><strong>Hunt angle:</strong> Check for web-accessible <code>/vendor/</code> directories in any PHP deployments. If phpunit eval-stdin is reachable, you have RCE. Also audit your build pipelines &#8212; do they strip vendor/test directories from production artifacts?</p><h3><strong>3. Backup File &amp; Config Artifact Enumeration &#8212; 6,500+ hits (concentrated spikes)</strong></h3><p><strong>Paths:</strong> <code>/api/error.bak</code>, <code>/admin/backup/database.bak</code>, <code>/core/backup/database.conf</code>, <code>/backup/database.cfg</code></p><p>The January 7th scanner drove this almost entirely. It systematically checked <code>/api</code>, <code>/admin</code>, <code>/core</code>, and <code>/backup</code> prefixes combined with backup extensions (<code>.bak</code>, <code>.cfg</code>, <code>.conf</code>, <code>.old</code>, <code>.save</code>, <code>.sql</code>). The approach was pure permutation &#8212; take common directory prefixes, combine with common sensitive filenames, append every backup extension in the book.</p><p>This is a numbers game. Across thousands of targets, even a tiny percentage of accidentally published database backups or config files yields immediate credential access.</p><p><strong>Hunt angle:</strong> Scan your own web roots for backup extension files. Any <code>.bak</code>, <code>.sql</code>, <code>.old</code>, <code>.cfg</code> file accessible via HTTP is a finding. Add deny rules at your web server/WAF layer for these extensions globally.</p><h3><strong>4. Login &amp; Authentication Surface Discovery &#8212; 2,262 hits (10 days)</strong></h3><p><strong>Paths:</strong> <code>/login</code>, <code>/api/login</code>, <code>/signin</code>, <code>/auth</code>, <code>/core/skin/login.aspx</code>, <code>/owa/auth/logon.aspx</code></p><p>Scanners are cataloging what authentication endpoints exist &#8212; not (yet) brute-forcing them, but mapping the surface. Isaw probes for generic login paths alongside specific product surfaces: ASP.NET login forms, Outlook Web Access, and API authentication endpoints.</p><p><strong>Hunt angle:</strong> This is reconnaissance. If these endpoints exist in your environment, ensure MFA is enforced, rate limiting is in place, and you&#8217;re monitoring for the credential stuffing that follows discovery.</p><h3><strong>5. Git Repository Exposure &#8212; 686 hits (13 of 16 days)</strong></h3><p><strong>Paths:</strong> <code>/.git/config</code>, <code>/.git/index</code>, <code>/.git/info/refs</code></p><p>Persistent, steady, and high-impact. Git exposure was checked almost every day with above-baseline emphasis. If <code>/.git/config</code> returns 200, an attacker can reconstruct your entire source code repository, including hardcoded secrets, internal API endpoints, and deployment configurations.</p><p><strong>Hunt angle:</strong> This is one of the easiest wins for external attack surface validation. Test your own internet-facing services for <code>/.git/config</code> access. Block all dotfile directories at the web server level.</p><h3><strong>6. WordPress &#8212; 551 hits (7 days)</strong></h3><p><strong>Paths:</strong> <code>/wp-config.php.bak</code>, <code>/wp-content/w3tc-config/master-preview.php</code>, <code>/xmlrpc.php</code>, <code>/wp-admin</code>, <code>/wp-login.php</code></p><p>WordPress scanning came in waves, not constantly. When it appeared, it focused on configuration file backups (<code>wp-config.php.bak</code>, <code>wp-config.php.old</code>) and known vulnerable plugin paths rather than just login brute-forcing.</p><h3><strong>7. Dev-Server / Vite File Read (</strong><code>/@fs/</code><strong>) &#8212; 350 hits (3 days, sharp spikes)</strong></h3><p><strong>Paths:</strong> <code>/@fs/etc/passwd?import=</code>, <code>/@fs/.docker.env?import=</code>, <code>/@fs/proc/self/environ?raw??=</code></p><p>This was one of the more interesting findings. The <code>/@fs/</code> pattern targets <strong>Vite dev server</strong> file-read vulnerabilities (CVE-2023-34092 and related). When a Vite dev server is accidentally exposed to the internet, the <code>/@fs/</code> prefix can read arbitrary files from the host filesystem.</p><p>The scanners were specifically targeting <code>/etc/passwd</code>, <code>.docker.env</code>, and <code>/proc/self/environ</code> through this path &#8212; all high-value for credential harvesting or container escape.</p><p><strong>Hunt angle:</strong> This is a great detection engineering target. Any production system responding to <code>/@fs/</code> requests has a dev server exposed. Hunt for Vite or similar dev servers bound to 0.0.0.0 in production environments. The <code>?import=</code> query parameter is highly specific and makes a clean detection signature.</p><h3><strong>8. Citrix Gateway (</strong><code>/+cscoe+/</code><strong>, </strong><code>/+cscol+/</code><strong>) &#8212; 201 hits (6 days)</strong></h3><p><strong>Paths:</strong> <code>/+cscoe+/logon.html</code>, <code>/+cscoe+/logon_forms.js</code>, <code>/+cscol+/java.jar</code></p><p>Perimeter device fingerprinting for Cisco/Citrix gateways. Consistent low-volume probing to identify if these appliances exist and are reachable. Once fingerprinted, follow-on exploitation of known CVEs is the playbook.</p><h3><strong>9. AI/LLM API Endpoint Discovery &#8212; 140 hits (appeared Jan 8)</strong></h3><p><strong>Paths:</strong> <code>/v1/messages</code>, <code>/v1/chat/completions</code>, <code>/openai/v1/chat/completions</code>, <code>/openai/deployments/gpt-4/chat/completions?api-version=2024-02-15-preview</code></p><p>This one caught my attention. Starting January 8th, Iobserved scanners probing for <strong>exposed LLM API endpoints</strong> &#8212; checking for OpenAI-compatible and Anthropic-style API paths. The requests targeted both generic paths (<code>/v1/chat/completions</code>) and Azure OpenAI deployment-specific paths with version parameters.</p><p>This is a relatively new addition to scanner dictionaries. Exposed LLM API proxies represent a direct financial risk (token theft/abuse) and a potential data exfiltration vector if the API has access to internal knowledge bases or RAG systems.</p><p><strong>Hunt angle:</strong> Search your environment for any services exposing <code>/v1/chat/completions</code> or <code>/v1/messages</code> to the internet without authentication. If you run LLM inference proxies, API gateways, or development endpoints, confirm they&#8217;re not accidentally internet-facing. This is a fresh hunting target that most orgs probably aren&#8217;t monitoring for yet.</p><h3><strong>10. Management Surfaces &#8212; Steady Background</strong></h3><p>Across the 16 days, Ialso saw consistent probing for:</p><ul><li><p><strong>Spring Boot Actuator</strong> (<code>/actuator</code>, <code>/actuator/gateway/routes</code>, <code>/env</code>, <code>/health</code>) &#8212; 118 hits across 6 days</p></li><li><p><strong>Docker Remote API</strong> (<code>/containers/json</code>) &#8212; 57 hits across 5 days</p></li><li><p><strong>Tomcat Manager</strong> (<code>/manager/text/list</code>, <code>/manager/html</code>) &#8212; 45 hits across 5 days</p></li><li><p><strong>GeoServer</strong> (<code>/geoserver/web</code>) &#8212; 29 hits across 2 days</p></li><li><p><strong>Trend Micro OfficeScan</strong> (<code>/officescan/console/cgi/cgichkmasterpwd.exe</code>) &#8212; appeared once</p></li></ul><p>Each of these individually is low volume. Collectively, they represent scanners maintaining checklists of management interfaces that, when exposed, provide immediate administrative access or sensitive configuration disclosure.</p><div><hr></div><h2></h2><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/p/vibe-coding-the-holidays-away?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading THOR Collective Dispatch! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/p/vibe-coding-the-holidays-away?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://dispatch.thorcollective.com/p/vibe-coding-the-holidays-away?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><h2><strong><br><br>The Scanner Ecosystem</strong></h2><h3><strong>Source Concentration</strong></h3><p>One of the clearest patterns was how <strong>source-concentrated</strong> the traffic was. The top 5 source networks accounted for the vast majority of requests:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gtp5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a19f4f-a27f-40e9-ad49-d138c22cec0f_813x338.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gtp5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a19f4f-a27f-40e9-ad49-d138c22cec0f_813x338.png 424w, https://substackcdn.com/image/fetch/$s_!Gtp5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a19f4f-a27f-40e9-ad49-d138c22cec0f_813x338.png 848w, https://substackcdn.com/image/fetch/$s_!Gtp5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a19f4f-a27f-40e9-ad49-d138c22cec0f_813x338.png 1272w, https://substackcdn.com/image/fetch/$s_!Gtp5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a19f4f-a27f-40e9-ad49-d138c22cec0f_813x338.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gtp5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a19f4f-a27f-40e9-ad49-d138c22cec0f_813x338.png" width="813" height="338" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29a19f4f-a27f-40e9-ad49-d138c22cec0f_813x338.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:338,&quot;width&quot;:813,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:39134,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://dispatch.thorcollective.com/i/192687506?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a19f4f-a27f-40e9-ad49-d138c22cec0f_813x338.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Gtp5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a19f4f-a27f-40e9-ad49-d138c22cec0f_813x338.png 424w, https://substackcdn.com/image/fetch/$s_!Gtp5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a19f4f-a27f-40e9-ad49-d138c22cec0f_813x338.png 848w, https://substackcdn.com/image/fetch/$s_!Gtp5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a19f4f-a27f-40e9-ad49-d138c22cec0f_813x338.png 1272w, https://substackcdn.com/image/fetch/$s_!Gtp5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a19f4f-a27f-40e9-ad49-d138c22cec0f_813x338.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The Jan 5 spike was three AWS /24s working together &#8212; likely a single operator using EC2 instances for distributed scanning. The Jan 7 spike was a single Contabo-hosted /24 running a much larger, more comprehensive dictionary against fewer targets.</p><p>Background noise comes from a rotating cast of 300&#8211;400 IPs per day, mostly running shorter, more focused checklists. The heavy hitters are episodic and concentrated.</p><h3><strong>Scanner Dictionary Evolution</strong></h3><p>Day-over-day, Itracked which URI families appeared as &#8220;new&#8221; &#8212; never seen before in the observation window. The pattern suggests scanner operators are <strong>actively refreshing their dictionaries</strong>:</p><ul><li><p><strong>Jan 1:</strong> Tomcat Manager, <code>.well-known/security.txt</code></p></li><li><p><strong>Jan 4:</strong> WordPress probing increase, <code>/@fs/</code> dev-server pattern appears</p></li><li><p><strong>Jan 5:</strong> Broad enumeration surge with <code>/@fs/</code> and secrets emphasis</p></li><li><p><strong>Jan 7:</strong> Massive backup/config permutation sweep (<code>/api</code>, <code>/admin</code>, <code>/core</code>, <code>/backup</code>)</p></li><li><p><strong>Jan 8:</strong> AI/LLM API endpoints (<code>/v1/messages</code>, <code>/openai/*</code>) appear for the first time</p></li><li><p><strong>Jan 11:</strong> GeoServer, OfficeScan fingerprinting</p></li><li><p><strong>Jan 12:</strong> Docker API, Exchange ECP export tool, AWS credential files</p></li><li><p><strong>Jan 14:</strong> VoIP/Polycom provisioning config fetches, embedded device login forms (<code>/boaform/admin/formlogin</code>)</p></li><li><p><strong>Jan 16:</strong> Increased Spring Actuator and embedded admin path checks</p></li></ul><p>The LLM endpoint probing starting Jan 8 is particularly notable &#8212; it suggests these scanning tools are being updated to reflect the current technology landscape, not just running stale lists from 2020.</p><div><hr></div><h2><strong>Defensive Takeaways</strong></h2><p>If you&#8217;re building hunts or hardening your environment based on this data, here&#8217;s where to start:</p><p><strong>Quick wins (external attack surface):</strong></p><ul><li><p>Block dotfile access (<code>/.env</code>, <code>/.git/*</code>, <code>/.aws/*</code>) at the edge. If any of these return 200 from your infrastructure, treat it as a confirmed finding.</p></li><li><p>Deny backup extensions (<code>.bak</code>, <code>.old</code>, <code>.cfg</code>, <code>.conf</code>, <code>.save</code>, <code>.sql</code>) across all web-accessible paths.</p></li><li><p>Validate that <code>/vendor/</code> directories are not web-accessible in PHP deployments.</p></li></ul><p><strong>Detection engineering targets:</strong></p><ul><li><p><code>/@fs/</code> requests with <code>?import=</code> parameter &#8212; highly specific Vite dev-server file read indicator.</p></li><li><p><code>/v1/chat/completions</code> or <code>/v1/messages</code> on unexpected hosts &#8212; exposed LLM infrastructure.</p></li><li><p><code>/containers/json</code> &#8212; Docker Remote API exposure check.</p></li><li><p><code>/actuator/gateway/routes</code> &#8212; Spring Cloud Gateway route disclosure.</p></li><li><p><code>/proc/self/environ</code> &#8212; local file read validation attempt.</p></li></ul><p><strong>Hunt hypotheses:</strong></p><ul><li><p>Are any internal dev servers (Vite, webpack-dev-server, Next.js dev mode) accidentally bound to external interfaces?</p></li><li><p>Do any CI/CD pipelines publish <code>.env</code>, <code>.git</code>, or vendor test directories to production web roots?</p></li><li><p>Are LLM API proxies, inference endpoints, or development servers exposed without authentication?</p></li><li><p>Are any Spring Boot services running with Actuator endpoints exposed and unauthenticated?</p></li></ul><div><hr></div><h2><strong>Methodology Notes</strong></h2><p>The honeypots were nginx instances forwarding all access logs to a centralized Loki instance via Grafana&#8217;s log aggregation stack. A daily Python analysis pipeline pulled the raw logs, classified URIs into technology families using regex-based rules, tracked source IP concentrations at the /24 level (to capture infrastructure patterns), and generated structured threat models with day-over-day delta analysis.</p><p>Request counts were capped at 20,000 per 24-hour window and 40,000 per 7-day window in the collection pipeline, meaning actual volumes on spike days (particularly Jan 5 and Jan 7) may have been higher than reported. The 16-day observation window provides a useful snapshot but shouldn&#8217;t be treated as a comprehensive survey &#8212; regional and temporal variation in scanning patterns is expected.</p><p>The raw data and analysis pipeline are available for anyone interested in replicating or extending this work. Reach out if you want to compare notes. Attached is also my github projects with the code so you can deploy this yourself!</p><p><a href="https://github.com/eliwoodward/Holiday-Honeypot-Vibecoded/tree/main">https://github.com/eliwoodward/Holiday-Honeypot-Vibecoded/tree/main</a></p><div><hr></div><p><em>Happy thrunting.</em> &#128293;<br><br></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/p/vibe-coding-the-holidays-away/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://dispatch.thorcollective.com/p/vibe-coding-the-holidays-away/comments"><span>Leave a comment</span></a></p>]]></content:encoded></item><item><title><![CDATA[All Roads Lead to Where You Already Are]]></title><description><![CDATA[The Unofficial Declassified Cybersecurity Beginner&#8217;s Guide]]></description><link>https://dispatch.thorcollective.com/p/all-roads-lead-to-where-you-already-are</link><guid isPermaLink="false">https://dispatch.thorcollective.com/p/all-roads-lead-to-where-you-already-are</guid><dc:creator><![CDATA[Bella San Lorenzo]]></dc:creator><pubDate>Tue, 10 Mar 2026 17:44:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ruqP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74819ddb-49b3-4539-984f-3c537123f9bf_500x500.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3><strong>print(&#8220;Welcome to Part II&#8221;)</strong></h3><p>Annnnnnnddddd, we&#8217;re back. If you&#8217;ve been following along, you may be a career existentialist! Congratulations, you&#8217;re in good company.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ejkb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df44150-5c95-4908-9255-e8d18c1bb853_1138x1114.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ejkb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df44150-5c95-4908-9255-e8d18c1bb853_1138x1114.png 424w, https://substackcdn.com/image/fetch/$s_!Ejkb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df44150-5c95-4908-9255-e8d18c1bb853_1138x1114.png 848w, https://substackcdn.com/image/fetch/$s_!Ejkb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df44150-5c95-4908-9255-e8d18c1bb853_1138x1114.png 1272w, https://substackcdn.com/image/fetch/$s_!Ejkb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df44150-5c95-4908-9255-e8d18c1bb853_1138x1114.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ejkb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df44150-5c95-4908-9255-e8d18c1bb853_1138x1114.png" width="576" height="563.8523725834798" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1df44150-5c95-4908-9255-e8d18c1bb853_1138x1114.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1114,&quot;width&quot;:1138,&quot;resizeWidth&quot;:576,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ejkb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df44150-5c95-4908-9255-e8d18c1bb853_1138x1114.png 424w, https://substackcdn.com/image/fetch/$s_!Ejkb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df44150-5c95-4908-9255-e8d18c1bb853_1138x1114.png 848w, https://substackcdn.com/image/fetch/$s_!Ejkb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df44150-5c95-4908-9255-e8d18c1bb853_1138x1114.png 1272w, https://substackcdn.com/image/fetch/$s_!Ejkb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df44150-5c95-4908-9255-e8d18c1bb853_1138x1114.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In <a href="https://dispatch.thorcollective.com/p/the-more-i-learn-the-less-i-know">Part I</a> of this guide, we talked about recognizing the cycle we find ourselves in when first considering a career in cybersecurity. Forcing ourselves to answer questions we don&#8217;t have enough context to ask, shaming ourselves for not knowing everything immediately, being fatigued by a surplus of varying resources&#8230;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>You&#8217;re here because you found security and you have an itch to scratch. Perhaps you met a security engineer, were inspired by research that you happened upon, felt that it was time for a change, or always wanted to enter the industry but never knew how. Or, perhaps, it is what the legends foretold and this field was always going to find you :)</p><p>Regardless of how you got here - the questions running through your head are indeed universal, and the most common answers are isolating. Let&#8217;s dive into how you can take control of this journey and break the cycle that has been holding you back from being the badass security engineer you are meant to be.</p><h3><strong>^Ctrl + C: Breaking the Loop</strong></h3><p><em>Stopping the Spiral Before It Stops You</em></p><ul><li><p><strong>Recognize the Pattern: </strong>The 7-step cycle from Part I isn&#8217;t productive learning - it&#8217;s anxiety masquerading as research. As soon as you recognize the existential loop starting, take a step away, get some fresh air, and give your mind a moment to breathe.</p></li><li><p><strong>Set a Timer:</strong> Literally. Give yourself 30 minutes and the grace to explore a rabbit hole, then force yourself to kill the process, realign, and refocus on the original task at hand.</p></li><li><p><strong>Ask Different Questions:</strong> Not &#8220;where do I fit in all of cybersecurity?&#8221; but &#8220;what problem do I want to solve right now?&#8221;</p></li></ul><h3><strong>chmod +x: Anticipating the Paralysis and Executing Accordingly</strong></h3><p><strong>When You Don&#8217;t Know Where to Start:</strong></p><ul><li><p><strong>Listen to Yourself: </strong>Pick the topic that made you feel something (curiosity, anger, excitement) most recently. I probably spent too much time trying to perfect the right topic for me &#8211; there is no correct answer; even seasoned security professionals take different paths before finding the thing that sticks.</p></li><li><p><strong>Do the Boring Stuff First:</strong> Can&#8217;t decide between malware research or threat hunting? Start with a basic tutorial; memorizing the advanced framework will do you no good, yet.</p></li><li><p><strong>Start a 2-Week Experiment:</strong> &#8220;I&#8217;m trying X for two weeks&#8221; is far less intimidating than &#8220;I&#8217;m committing to Y forever.&#8221;</p></li></ul><p><strong>When Imposter Syndrome Hits:</strong></p><ul><li><p><strong>Take Notes:</strong> Document what you <em>did</em> learn, <strong>not</strong> what you think you <em>should</em> know.</p></li><li><p><strong>Don&#8217;t Be Afraid to Ask Questions:</strong> Remember when not knowing something was fine? When you could just... ask? Somewhere between elementary school and now, we convinced ourselves that curiosity makes us look stupid. Of course you don&#8217;t know the latest IOC from last week&#8217;s attack. That&#8217;s okay! Understanding what IOCs are and why they matter will take you further than memorizing specific indicators that&#8217;ll be irrelevant in a month anyway.</p></li><li><p><strong>Network:</strong> This may be one of the strongest ways to challenge your imposter syndrome. Find one person who&#8217;s one (or a few) steps ahead of you and ask them a specific question. Have an industry leader you&#8217;re inspired by? Send them a message &#8211; I promise it&#8217;s worth pushing past the fear.</p></li><li><p><strong>Trust Yourself:</strong> You don&#8217;t need to be an expert to contribute. Curiosity and a passion for sharing knowledge are essential. The industry desperately needs new perspectives - yours included.</p></li></ul><p><strong>When Self-Doubt Creeps In:</strong></p><ul><li><p><strong>Reframe:</strong> &#8220;I don&#8217;t understand this yet&#8221; vs. &#8220;I&#8217;ll never understand this.&#8221; Every senior threat researcher was once someone staring at their first PCAP file with no idea what they were looking at. The difference isn&#8217;t talent &#8211; it&#8217;s persistence&#8230; the good kind ;)</p></li><li><p><strong>Build in Public:</strong> Leverage GitHub, Notion, CTF Time, TryHackMe, Hack The Box, and other platforms to record and share what you&#8217;ve learned, including projects or even an all-encompassing (and maybe slightly wordy) README.md, keeping track of the way you&#8217;ve managed your minutes. Not only will this help you show others what you&#8217;ve been up to, but it will also <em>keep you organized.</em></p></li><li><p><strong>Record Your Wins:</strong> Every small breakthrough, every solved challenge, every lightbulb moment deserves to be celebrated. Don&#8217;t let your instinct force you to finish one thing and barely breathe into the next &#8211; slow down and celebrate progress.</p></li></ul><h3><strong>The Moving Target Mindset</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AGNi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe80f75d-87f2-48d0-96b3-8618fa0e9a7c_250x263.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AGNi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe80f75d-87f2-48d0-96b3-8618fa0e9a7c_250x263.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AGNi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe80f75d-87f2-48d0-96b3-8618fa0e9a7c_250x263.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AGNi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe80f75d-87f2-48d0-96b3-8618fa0e9a7c_250x263.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AGNi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe80f75d-87f2-48d0-96b3-8618fa0e9a7c_250x263.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AGNi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe80f75d-87f2-48d0-96b3-8618fa0e9a7c_250x263.jpeg" width="250" height="263" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fe80f75d-87f2-48d0-96b3-8618fa0e9a7c_250x263.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:263,&quot;width&quot;:250,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AGNi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe80f75d-87f2-48d0-96b3-8618fa0e9a7c_250x263.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AGNi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe80f75d-87f2-48d0-96b3-8618fa0e9a7c_250x263.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AGNi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe80f75d-87f2-48d0-96b3-8618fa0e9a7c_250x263.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AGNi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe80f75d-87f2-48d0-96b3-8618fa0e9a7c_250x263.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Remember the knowledge depreciation problem?</em></p><p>Here&#8217;s the reality: fundamentals outlive tools every single time.</p><p>Python syntax changes. SIEM platforms get replaced. Specific CVEs become irrelevant. But understanding how to think like an attacker, how to correlate disparate data points, how to ask better questions &#8211; these don&#8217;t expire.</p><p>The mechanics of social engineering remain consistent even as delivery methods evolve. Network protocols evolve, sure, but how systems fundamentally communicate? That&#8217;s not going anywhere.</p><p>When you&#8217;re choosing what to learn, <em>prioritize concepts over implementations</em>. Learn <em>why</em> security engineering works, not just <em>how</em> different platforms approach a problem. Understand <em>what</em> makes OSINT effective, not just <em>which</em> tools are popular this year. The tools will change. Your ability to adapt is what will set you apart and help you grow alongside the field.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NwKu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F365b9d54-f672-4956-8aef-984255a79fe5_882x578.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NwKu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F365b9d54-f672-4956-8aef-984255a79fe5_882x578.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NwKu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F365b9d54-f672-4956-8aef-984255a79fe5_882x578.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NwKu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F365b9d54-f672-4956-8aef-984255a79fe5_882x578.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NwKu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F365b9d54-f672-4956-8aef-984255a79fe5_882x578.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NwKu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F365b9d54-f672-4956-8aef-984255a79fe5_882x578.jpeg" width="882" height="578" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/365b9d54-f672-4956-8aef-984255a79fe5_882x578.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:578,&quot;width&quot;:882,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A person in a suit and tie\n\nAI-generated content may be incorrect.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A person in a suit and tie

AI-generated content may be incorrect." title="A person in a suit and tie

AI-generated content may be incorrect." srcset="https://substackcdn.com/image/fetch/$s_!NwKu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F365b9d54-f672-4956-8aef-984255a79fe5_882x578.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NwKu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F365b9d54-f672-4956-8aef-984255a79fe5_882x578.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NwKu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F365b9d54-f672-4956-8aef-984255a79fe5_882x578.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NwKu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F365b9d54-f672-4956-8aef-984255a79fe5_882x578.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>Spiral vs. Progress: Knowing the Difference</strong></h3><p>Not all rabbit holes are bad. Some lead to breakthroughs. Here&#8217;s how to tell the difference:</p><p><strong>You&#8217;re in a productive learning spiral if:</strong></p><ul><li><p>You&#8217;re actively doing something (writing code, solving a challenge, building a project).</p></li><li><p>Each new question brings you closer to answering your original one.</p></li><li><p>You&#8217;re uncomfortable but engaged, not existential.</p></li></ul><p><strong>You&#8217;re in a paralysis spiral if:</strong></p><ul><li><p>You&#8217;re reading <em>about</em> learning more than actually learning.</p></li><li><p>You&#8217;ve opened 23 tabs but haven&#8217;t finished any of them.</p></li><li><p>The overwhelm is growing, not shrinking.</p></li><li><p>You feel more confused than when you started.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ruqP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74819ddb-49b3-4539-984f-3c537123f9bf_500x500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ruqP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74819ddb-49b3-4539-984f-3c537123f9bf_500x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ruqP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74819ddb-49b3-4539-984f-3c537123f9bf_500x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ruqP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74819ddb-49b3-4539-984f-3c537123f9bf_500x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ruqP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74819ddb-49b3-4539-984f-3c537123f9bf_500x500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ruqP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74819ddb-49b3-4539-984f-3c537123f9bf_500x500.jpeg" width="500" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/74819ddb-49b3-4539-984f-3c537123f9bf_500x500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ruqP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74819ddb-49b3-4539-984f-3c537123f9bf_500x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ruqP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74819ddb-49b3-4539-984f-3c537123f9bf_500x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ruqP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74819ddb-49b3-4539-984f-3c537123f9bf_500x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ruqP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74819ddb-49b3-4539-984f-3c537123f9bf_500x500.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The spiral doesn&#8217;t make you a failure. It makes you human. Curiosity is an essential trait for a threat intelligence; but, there&#8217;s a difference between structured investigations and unproductive rabbit holes. The former solves problems; the latter just feels like work and often leads to burn out. So, reader, if you have 23 tabs open, ask yourself &#8220;am I getting closer to an answer, or am I just scrolling?&#8221; - let the answer redirect you accordingly.</p><h3><strong>Exit 0</strong></h3><p>You will always feel behind, and at first, you&#8217;ll feel uncertain too. The goal isn&#8217;t to eliminate that uncertainty &#8211; it&#8217;s to function despite it. The field will always move faster than anyone can keep up. Tools will become obsolete. Frameworks will evolve. Threat actors will pivot.</p><p>And you&#8217;ll keep learning anyway.</p><p>Not because you&#8217;ve found the perfect path or the right specialization or finally feel qualified. But because you chose to start somewhere and then keep going. The geolocation CTF at 2 AM. The MITRE technique you finally understood. The first time a detection rule you wrote actually caught something. The GitHub project gaining traction, stars &amp; contributions&#8230;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PlXD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd951ee1-0ab4-4b0f-8654-506a512b7adb_562x446.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PlXD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd951ee1-0ab4-4b0f-8654-506a512b7adb_562x446.png 424w, https://substackcdn.com/image/fetch/$s_!PlXD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd951ee1-0ab4-4b0f-8654-506a512b7adb_562x446.png 848w, https://substackcdn.com/image/fetch/$s_!PlXD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd951ee1-0ab4-4b0f-8654-506a512b7adb_562x446.png 1272w, https://substackcdn.com/image/fetch/$s_!PlXD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd951ee1-0ab4-4b0f-8654-506a512b7adb_562x446.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PlXD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd951ee1-0ab4-4b0f-8654-506a512b7adb_562x446.png" width="562" height="446" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cd951ee1-0ab4-4b0f-8654-506a512b7adb_562x446.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:446,&quot;width&quot;:562,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A yellow star with black text\n\nAI-generated content may be incorrect.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A yellow star with black text

AI-generated content may be incorrect." title="A yellow star with black text

AI-generated content may be incorrect." srcset="https://substackcdn.com/image/fetch/$s_!PlXD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd951ee1-0ab4-4b0f-8654-506a512b7adb_562x446.png 424w, https://substackcdn.com/image/fetch/$s_!PlXD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd951ee1-0ab4-4b0f-8654-506a512b7adb_562x446.png 848w, https://substackcdn.com/image/fetch/$s_!PlXD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd951ee1-0ab4-4b0f-8654-506a512b7adb_562x446.png 1272w, https://substackcdn.com/image/fetch/$s_!PlXD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd951ee1-0ab4-4b0f-8654-506a512b7adb_562x446.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>These wins prove you can move forward even on a day when it feels like you&#8217;ve taken 10 steps back.</p><p>So, pick something. Anything. Give yourself two weeks. Then pick something else if you need to. The paralysis wants you to believe that choosing wrong is worse than not choosing at all. It&#8217;s lying.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[How I use LLMs For Security Work: Part 2]]></title><description><![CDATA[I previously wrote a blog for THOR Collective Dispatch about some basic examples of different approaches when it comes to LLMs.]]></description><link>https://dispatch.thorcollective.com/p/how-i-use-llms-for-security-work-e7f</link><guid isPermaLink="false">https://dispatch.thorcollective.com/p/how-i-use-llms-for-security-work-e7f</guid><dc:creator><![CDATA[Josh Rickard]]></dc:creator><pubDate>Thu, 05 Mar 2026 15:03:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!s-ZJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5af5dc56-8746-4b91-ac53-7779eaeaad7b_2816x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!s-ZJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5af5dc56-8746-4b91-ac53-7779eaeaad7b_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!s-ZJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5af5dc56-8746-4b91-ac53-7779eaeaad7b_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!s-ZJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5af5dc56-8746-4b91-ac53-7779eaeaad7b_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!s-ZJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5af5dc56-8746-4b91-ac53-7779eaeaad7b_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!s-ZJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5af5dc56-8746-4b91-ac53-7779eaeaad7b_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!s-ZJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5af5dc56-8746-4b91-ac53-7779eaeaad7b_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5af5dc56-8746-4b91-ac53-7779eaeaad7b_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:9336181,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://dispatch.thorcollective.com/i/189795560?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5af5dc56-8746-4b91-ac53-7779eaeaad7b_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!s-ZJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5af5dc56-8746-4b91-ac53-7779eaeaad7b_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!s-ZJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5af5dc56-8746-4b91-ac53-7779eaeaad7b_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!s-ZJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5af5dc56-8746-4b91-ac53-7779eaeaad7b_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!s-ZJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5af5dc56-8746-4b91-ac53-7779eaeaad7b_2816x1536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>I previously wrote a blog for THOR Collective Dispatch about some basic examples of different approaches when it comes to LLMs. It was cool and I hope it truly helps those starting out but I wanted to follow up and share some other more specific examples, including more &#8220;advanced&#8221; patterns that have worked for me over the past year or so.</p><p>We&#8217;ve all seen the scope, complexity and rise of usage of LLMs from products which integrate them, to all new product categories to ClawdBot. If you&#8217;re not familiar with all the facets of LLMs that&#8217;s okay but before I dive into these more advanced use cases, I think it&#8217;s advantageous to understand some terminology (at a high-level) when it comes to LLMs.</p><p>Once we have a firm grasp on these different concepts, I will provide some more concrete examples of how I have used LLMs in the past.</p><h2>Terminology</h2><p>This section defines some common (current) concepts related to LLMs but really, they are just Markdown with the exception that Assistants also may include code.</p><h3>Prompting</h3><p>Really this is exactly what I wrote about in my previous blog. In this approach/use you provide statement(s), with some minimal context, maybe some general requirements and either a question or a problem statement.</p><p>I&#8217;ve seen vibe coding thrown around but never cared to look it up but my understanding is that it&#8217;s either using speech to text and just describing your problems or just typing it out listening to some JL or Joey Cool (my current vibe). Often, I believe this approach of question, answer, fix, validate, test, fix, etc. is painful and can go awry pretty quick depending on the client used.</p><p>Vibe coding maybe useful for some but where the real work will happen in our industry will be in the trenches. You must know how to describe the problem you are trying to solve, which requires you to intimately know the problem.</p><h3>Agents</h3><p>Agents are the next &#8220;level&#8221; where there is very precise context given to an LLM. This context (which is really what this post is about) is about providing the guardrails for a request. Some provide this context in form of documentation, use cases, hard and loose requirements, gotchas, what not to do, perspectives including situational awareness statements and more. This can be 1,000-word document referencing 1 or 500 other documents to a single 50K (or more) prompt and typically includes extremely detailed descriptions, when to consider alternative options and especially negations of decisions.</p><h4>SKILLS.md</h4><p>Skills (e.g. SKILLS.md) are markdown files that essentially take everything a team knows about how to perform an action and writes a document that then feeds into an agent for absolute context, decision making, etc. These are almost identical to <code>agents</code> but I&#8217;ll let others decide where the naming concepts go.</p><h4>Workflows</h4><p>Workflows are like skills, but these are supposed to be directions for an LLM on how they should &#8220;analyze&#8221; or &#8220;examine&#8221; or &#8220;perform&#8221; the task being asked. For example, how to investigate an alert may have 1 or 15 steps defined including which tools (MCPs), how to interrupt results and how to make decisions before moving on to the next phase of the workflow.</p><p>I like to think of workflows in the same way we define/document playbooks but in markdown. I think a good starting place for more mature organizations would be to embed their existing incident response documentation and response playbooks into their Agents and/or Assistants. Iterate and go wild from there.</p><h3>Assistants</h3><p>This is the &#8220;newest&#8221; evolution (that I&#8217;m aware of) and I believe is where we are headed as an industry. Assitants are multi-faceted, customized and curated to tackle problems both big and small. These are the combination of multiple Workflows which trigger defined SKILLS.md and tools (MCP servers) and use multiple discrete agents to perform tasks along the way.</p><p>These are larger projects that allow someone to hook into how an LLM is called (via it&#8217;s API) - for example, this is how one such project called PAI works (btw, Daniel is definitely onto something here). These hooks are used to control the flow of operations all described in text and past decisions. It&#8217;s quite interesting but nuanced.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support our work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><h2>Context Is Key</h2><p>I know that&#8217;s a lot, but really the first thing you need to understand is that this is really just all text/Markdown files. Instead of designing and defining how to communicate with a services APIs using some abstraction integration pattern, you can provide the docs and in plain English define what the inputs and outputs should be along with when to use it and how to perceive the results.</p><p>With everything said so far, I&#8217;d like to switch gears to provide some examples of why context maters and describing your problem succinctly will provide more value than &#8220;vibing&#8221; (I&#8217;m old) your way through it.<br>Let&#8217;s take this simple example I ran across the other week. Let&#8217;s say that you want to automate logging into multiple Google Chrome Profiles (you MSSP &amp; thrunters know what I mean) and kick-off a simple hunt (search) in each. Why you may ask, because it&#8217;s tedious and you have to do what you have to do with the tools you have and really this is a silly example (and don&#8217;t really do this please).</p><p>Using this example, you may start up Claude Desktop/Code or Cursor and say:</p><pre><code><code>As a threat hunter, I want to create a python package and CLI utility which accepts a list of Google Chrome Profiles to open. I want this package to ensure the latest ChromeDriver is installed. For each provided Google Chrome Profile provided as input, I want this tool to only accept Chrome Profiles that exist on the system and do not create one if it doesn&#8217;t exist. Once validated, it should create a new browser instance that opens in the provided profile display name and the first tab is X url.
</code></code></pre><p>Doing this may result in some success (again this is a simple example) but more than likely it will never get it right because it will guess at which Profile and only if that name exists will it try and open that profile. It may also take a completely different approach and may solve, it but I&#8217;d honestly be surprised.</p><p>If I change this prompt by adding the following, giving it context, it will understand and find the correct answer because it has been given explicit instructions and a determined example output.</p><pre><code><code>&#8230; Ensure that the provided Google Chrome Profile name represents the display name shown within Google Chrome. For example, I have a profile named &#8220;Thrunting - X organization name&#8221; and it should match the input value&#8221;
</code></code></pre><p>This simple addition, of providing actual context and an expected result aligns the context/data inputs with your expected outputs; again guardrails.</p><p>This was a silly example, but I hope it provides some clarification that the more concrete outputs, decision points, paths to follow, descriptions of key terms, specifications, requirements and more in the context you provide to an LLM the better inference results.</p><p>p.s. The reason why LLMS do not understand that the values you are wanting to match reside in <code>./LocalState</code> instead of its parent directory is beyond me but that is where those display names are located (FYI).</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/p/how-i-use-llms-for-security-work-e7f?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading THOR Collective Dispatch! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/p/how-i-use-llms-for-security-work-e7f?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://dispatch.thorcollective.com/p/how-i-use-llms-for-security-work-e7f?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><p></p><h2>Back to the Basics</h2><p>First, I want to reiterate that in order to build something meaningful using an LLM, you must NO MATTER WHAT first understand the problem you are trying to solve. If you don&#8217;t intimately know the problem, then start by writing what you do know and ask questions until you know what the problem is.</p><p>I&#8217;ve talked a lot about context but that&#8217;s a vague statement. In this section I wanted to provide some examples of context that I&#8217;ve found to be extremely beneficial when it comes to LLM output. Here is a non-inclusive list of context examples (in no particular order):</p><h3>Personas -&gt; Identities -&gt; Personalities</h3><p>When starting, this is less of a concern but as your knowledge base on how you prefer to use LLMs grows you probably want to repeat a process, especially investigations, analysis, research, and/or tooling. This is where you can describe the experience, technologies, frameworks, etc. to skew results towards your current knowledge.</p><p>For example, you can describe your preferred Python package layout, templates, etc. You can define a persona for different projects or code bases. The point is to use the tools you are familiar with already when starting out. Don&#8217;t just let the LLM use TypeScript if you have never use it previously.<br>Over time your design patterns, thinking logic and more can be recorded and use as persona or identity for repeatable work from a specific perspective and experience.</p><p>There are some projects, like PAI, which are experimenting on building personalities from defining your background, failures, successes, etc. Pretty weird to think about but also pretty cool.</p><h3>Perspectives &amp; Goals</h3><p>Describe the perspective you want this problem to be researched or reviewed from. Whether that is QA as a staff level SDET or an elite red team ninja warrior. Defining these perspectives as well as the overall goals of the project will help keep scope within the problem space.</p><p>Here you can also define the overall skills (threat hunting, phishing defense, detection rule guru, etc.). You should also define the goals of the ask in general (e.g. find new and novel threats).</p><h3>Tools</h3><p>This is pretty straight forward but provide a list of different external tools which can be used within this project. Most of these will be MCP servers and their exposed methods. But it can also be things like:</p><ul><li><p>A local runner docker compose stack</p></li><li><p>Guidelines on which tools to use:</p><ul><li><p>use python not golang or js</p></li><li><p>Use python-fire for CLI, attrs models</p></li><li><p>Class and inheritance over utility functions, etc.</p></li><li><p>Use uv over poetry</p></li><li><p>Etc.</p></li></ul></li><li><p>Specific APIs with examples (Schema docs is preferred)</p></li></ul><p>For all of these, provide context as to when to use the tool, how to use it and how to interpret the results. This will definitely improve your results.</p><h3>Documentation</h3><p>As much reference documentation you can provide will always be helpful but ensure that you are not bloating your token usage or extending beyond the context windows of these models; size of your prompt matters both on costs and the ability for the model to provide correct inference results.</p><p>Provide things like:</p><ul><li><p>API specifications</p></li><li><p>JSONSchemas</p></li><li><p>Repositories</p></li><li><p>Internal &amp; external docs to terms/keywords specific to your org/worldview</p></li><li><p>Provide examples of similar problems</p><ul><li><p>It is also advantageous to provide examples that you already have documented on solving a problem or of a previous investigation decision</p></li></ul></li></ul><p>In addition to these standard pieces of documentation, you should also provide what NOT to do. For example:</p><ul><li><p>Provide scenarios that will / may occur and describe what not to do and why</p></li><li><p>Document when to not use a tool (defined above)</p></li><li><p>Document what to do if a situation does occur that&#8217;s critical</p></li></ul><h3>Requirements</h3><p>Like I have mentioned a few times, you must understand the problem to fully get the benefits of LLMs. Another great way to improve your research, discovery, analysis, etc. uses of LLMs is to ensure you provide all the business and technical requirements.</p><p>When defining technical requirements, provide things around when to use tools, different tools or frameworks to avoid using, and other specifics. For example:</p><ul><li><p>Defining the requirements can be as simple as &#8220;use caching of results&#8221; or specific enough to warrant something like &#8220;use Redis caching, using the rueidis go package&#8221;</p></li><li><p>Document what not to use including languages, frameworks, etc.</p></li><li><p>Define business requirements</p><ul><li><p>This should likely be the largest section, but it depends on the end goal of the prompt.</p></li></ul></li><li><p>Define gotchas</p></li></ul><p>There are lots of opportunities to write here. As a side note, I believe the ones that will prevail in the future of the &#8220;tech&#8221; industry are the ones that can describe a problem in detail effectively and efficiently as possible.</p><p>In addition to all of the above, I recommend checking out frameworks like Skills <a href="https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview">https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview</a> and review projects which have implemented <code>SKILLS.md</code> to get a different perspective. We are in a new frontier and the frameworks, schemas, etc. are constantly evolving. Just look at MCP (plug for a MCP I wrote about a year ago <a href="https://github.com/MSAdministrator/enrichment-mcp">https://github.com/MSAdministrator/enrichment-mcp</a>) and its evolution (I still think they should have used gRPC <a href="https://github.com/modelcontextprotocol/modelcontextprotocol/discussions/1144">https://github.com/modelcontextprotocol/modelcontextprotocol/discussions/1144</a>).</p><h2>Advanced Example</h2><p>Now let&#8217;s get into an example. This is purely hypothetical and for posterity I&#8217;m actually not going to put this prompt into any LLMs and just let you try it for yourself (mostly because I don&#8217;t want to waste the energy &#8212; LLMs have Externalities that reach further than most other technology known to humans &#8212; what you input has an external cost that you may not realize).</p><p>Note: I wrote this in example below in like 30 minutes. Your mileage will vary depending on the number of details provided.</p><h2>Description</h2><p>As a senior security research engineer focused on building highly scalable threat detection systems. As a senior software engineer proficient in Golang, gRPC, Protobuf, unary and bi-directional streaming, ingestion processing using Kafka or google pub/sub, caching using Redis pipelining, Postgres (and ip4r) scaling using pgbouncer(s), kubernetes, monitoring and metrics using Prometheus.Your goal is to build highly scalable threat enrichment pipeline that can ingest logs of different services, extract the necessary IPv4/IPv6 addresses (as well as their context e.g. source ips vs destination ips, etc.) and perform enrichment providing precise geolocation information (for now you can use ipinfo sample databases).</p><p>This service can process anywhere from 100 to 1 billion IPs per day to enrich but performance throughput and low latency (10ms~) are REQUIRED.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Irx1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a92b9ba-d830-4295-a089-0e71ae2be20a_1024x559.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Irx1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a92b9ba-d830-4295-a089-0e71ae2be20a_1024x559.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Irx1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a92b9ba-d830-4295-a089-0e71ae2be20a_1024x559.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Irx1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a92b9ba-d830-4295-a089-0e71ae2be20a_1024x559.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Irx1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a92b9ba-d830-4295-a089-0e71ae2be20a_1024x559.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Irx1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a92b9ba-d830-4295-a089-0e71ae2be20a_1024x559.jpeg" width="1024" height="559" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8a92b9ba-d830-4295-a089-0e71ae2be20a_1024x559.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:559,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:214420,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://dispatch.thorcollective.com/i/189795560?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a92b9ba-d830-4295-a089-0e71ae2be20a_1024x559.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Irx1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a92b9ba-d830-4295-a089-0e71ae2be20a_1024x559.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Irx1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a92b9ba-d830-4295-a089-0e71ae2be20a_1024x559.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Irx1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a92b9ba-d830-4295-a089-0e71ae2be20a_1024x559.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Irx1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a92b9ba-d830-4295-a089-0e71ae2be20a_1024x559.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>Tools</h2><p>You have the following tools available to you:</p><ul><li><p>Golang</p></li><li><p>gRPC &amp; protobuf for inner service communications</p></li><li><p>Use Postgres (using the ip4r extension)</p><ul><li><p>Use pgbouncer for scalable queries</p></li><li><p>Ensure proper indexes are in place</p></li></ul></li><li><p>Cache results using Redis (rueidis client library)</p></li><li><p>Use kubernetes and light weight images</p></li><li><p>Setup monitoring and metrics throughout the pipeline using Prometheus</p></li></ul><h2>Documentation</h2><p>The following are references to use:</p><ul><li><p>Use the ipinfo sample databases <a href="https://github.com/ipinfo/sample-database">https://github.com/ipinfo/sample-database</a> as the core database structure</p></li><li><p>Expect that the incoming logs are in this schemas format (link to schema or samples)</p></li><li><p>It is expected that every log ingested will be enriched, but this does not mean every log will have values. Indicate in the log if enrichment occurred no matter if successful or not</p></li><li><p>Ensure you are creating the appropriate views or queries utilize the correct ip4r data types <a href="https://github.com/RhodiumToad/ip4r">https://github.com/RhodiumToad/ip4r</a></p></li></ul><h2>What Not to do</h2><ul><li><p>Do not create two separate paths for ipv4 and ipv6 addresses</p></li></ul><h2>Requirements</h2><ul><li><p>Ensure the pipeline can handle 1 billion events per day</p></li><li><p>Ensure that you are extracting all IPs found and that each IP addresses found is enriched in the correct context (source vs. destination, etc.)</p></li><li><p>Ensure that extract can be changed easily, you never know when new formats are going to be supported in the future</p></li><li><p>Keep cached results for up to 18 hours (at a minimum) but provide a way to invalidate cache</p></li><li><p>Ensure all communications are encrypted and have proper (and secure) authorization between services</p></li><li><p>Create indexes that use the ip4r data types for IPs</p></li><li><p>Data will be updated from a remote location at any time so upgrading of IP geolocation must be straight forward</p></li></ul><p>I hope this more advanced example helps you understand that the more context you can provide the better results you will receive. Vibe coding is cool and all but just like how a Product/Project Manager will provide guidance for a project, you too must do the same in order to get the best results.</p><p>As I have stated previously, I believe that those who understand a problem fully and can describe it in detail, are the ones that will prevail as we move into this new era of technology advancement. Time will tell if I&#8217;m right or wrong.</p><p>Peace</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/p/how-i-use-llms-for-security-work-e7f/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://dispatch.thorcollective.com/p/how-i-use-llms-for-security-work-e7f/comments"><span>Leave a comment</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[When to Stop Hunting]]></title><description><![CDATA[The Art of Knowing You&#8217;ve Looked Hard Enough]]></description><link>https://dispatch.thorcollective.com/p/when-to-stop-hunting</link><guid isPermaLink="false">https://dispatch.thorcollective.com/p/when-to-stop-hunting</guid><dc:creator><![CDATA[Sydney Marrone]]></dc:creator><pubDate>Tue, 03 Mar 2026 15:02:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!j1nh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fec10f6-f671-4ab2-9da2-223a08f69791_749x500.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;ve been doing this long enough to know that starting a hunt is the easy part. You&#8217;ve got a hypothesis, you&#8217;ve got your data sources queued up, you&#8217;ve got that first-cup-of-coffee energy. The hard part? Knowing when you&#8217;re done.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Nobody teaches this. I&#8217;ve read dozens of hunting guides, sat through countless conference talks, and co-authored an entire framework. We spend so much effort on how to start a hunt, how to form a hypothesis, how to pick your data sources. But the question of <em>when to stop</em> gets a hand wave at best.</p><p>And that&#8217;s a problem. Because right now, most of us are stopping hunts based on vibes.</p><h2><strong>The Vibes Problem</strong></h2><p>Be honest. How do you currently decide a hunt is over?</p><p>&#8220;It feels like I&#8217;ve looked at enough.&#8221; &#8220;We ran out of time.&#8221; &#8220;I didn&#8217;t find anything, so I guess we&#8217;re good?&#8221; &#8220;My boss asked for the report.&#8221;</p><p>None of those are termination criteria. Those are circumstances. There&#8217;s a difference between <em>stopping</em> a hunt and a hunt being <em>done</em>.</p><p>I&#8217;ve watched hunters burn through a full week chasing phantom lateral movement because they couldn&#8217;t articulate what &#8220;done&#8221; looked like. I&#8217;ve also watched hunters close a hunt in four hours because they ran a few queries, got no hits, and called it. Both are failure modes. One wastes resources. The other creates false confidence.</p><p>We need something better than vibes.</p><h2><strong>Coverage Criteria: Did You Actually Look?</strong></h2><p>The first question to ask yourself before closing a hunt: did I actually examine all the data sources that matter for this hypothesis?</p><p>This sounds obvious but it really isn&#8217;t.</p><p>One of my first hunts ever, I was hunting PowerShell and I totally missed looking at the Windows script logging events. Partly because I was new, but also because I didn&#8217;t document my data sources. There was no list of &#8220;here&#8217;s what I need to look at.&#8221; So I looked at what I knew about and moved on, thinking I&#8217;d covered it.</p><p>I hadn&#8217;t. And I didn&#8217;t realize it until way later.</p><p>Here&#8217;s what you could do. At the start of every hunt, write down every data source that&#8217;s relevant to your hypothesis. Not &#8220;everything we have,&#8221; but the specific sources that could contain evidence of the behavior you&#8217;re looking for. Then track which ones you&#8217;ve actually queried. Simple as a table in a notebook:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uFOS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00cff389-87af-47d6-847e-6a6e9b80bf28_1497x544.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uFOS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00cff389-87af-47d6-847e-6a6e9b80bf28_1497x544.png 424w, https://substackcdn.com/image/fetch/$s_!uFOS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00cff389-87af-47d6-847e-6a6e9b80bf28_1497x544.png 848w, https://substackcdn.com/image/fetch/$s_!uFOS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00cff389-87af-47d6-847e-6a6e9b80bf28_1497x544.png 1272w, https://substackcdn.com/image/fetch/$s_!uFOS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00cff389-87af-47d6-847e-6a6e9b80bf28_1497x544.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uFOS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00cff389-87af-47d6-847e-6a6e9b80bf28_1497x544.png" width="1456" height="529" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/00cff389-87af-47d6-847e-6a6e9b80bf28_1497x544.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:529,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:122769,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://dispatch.thorcollective.com/i/188681827?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00cff389-87af-47d6-847e-6a6e9b80bf28_1497x544.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uFOS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00cff389-87af-47d6-847e-6a6e9b80bf28_1497x544.png 424w, https://substackcdn.com/image/fetch/$s_!uFOS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00cff389-87af-47d6-847e-6a6e9b80bf28_1497x544.png 848w, https://substackcdn.com/image/fetch/$s_!uFOS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00cff389-87af-47d6-847e-6a6e9b80bf28_1497x544.png 1272w, https://substackcdn.com/image/fetch/$s_!uFOS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00cff389-87af-47d6-847e-6a6e9b80bf28_1497x544.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If there&#8217;s a &#8220;No&#8221; in that queried column when I&#8217;m thinking about closing the hunt, I&#8217;m not done. I either need to go look at it or explicitly document why I couldn&#8217;t (access issues, data not available, retention gap) and flag that as a coverage gap in my findings.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3aVX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e8a3020-9fc9-4dd8-b219-33f2da06c0c7_501x498.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3aVX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e8a3020-9fc9-4dd8-b219-33f2da06c0c7_501x498.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3aVX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e8a3020-9fc9-4dd8-b219-33f2da06c0c7_501x498.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3aVX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e8a3020-9fc9-4dd8-b219-33f2da06c0c7_501x498.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3aVX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e8a3020-9fc9-4dd8-b219-33f2da06c0c7_501x498.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3aVX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e8a3020-9fc9-4dd8-b219-33f2da06c0c7_501x498.jpeg" width="501" height="498" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5e8a3020-9fc9-4dd8-b219-33f2da06c0c7_501x498.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:498,&quot;width&quot;:501,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3aVX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e8a3020-9fc9-4dd8-b219-33f2da06c0c7_501x498.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3aVX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e8a3020-9fc9-4dd8-b219-33f2da06c0c7_501x498.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3aVX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e8a3020-9fc9-4dd8-b219-33f2da06c0c7_501x498.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3aVX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e8a3020-9fc9-4dd8-b219-33f2da06c0c7_501x498.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Coverage isn&#8217;t just data sources either. It&#8217;s time windows. If your hypothesis is about an intrusion that could have happened anytime in the last 90 days but your logs only go back 30, that&#8217;s a coverage gap. Write it down.</p><h2><strong>Diminishing Returns: The Same False Positive Three Times</strong></h2><p>There&#8217;s a pattern I see in every hunt that&#8217;s gone on too long. You start finding the same things over and over.</p><p>The same service account triggering the same alert. The same legacy application doing weird DNS stuff. The same admin using RDP at odd hours because they&#8217;re in a different time zone. You&#8217;ve already investigated these. You&#8217;ve already ruled them out. But you keep bumping into them because your queries are broad enough to catch them.</p><p>When this starts happening, pay attention. It&#8217;s a signal.</p><p>Not a signal that there&#8217;s nothing to find. A signal that your current approach has extracted all the value it&#8217;s going to. You&#8217;ve saturated your search space at this level of granularity.</p><p>At this point you have three choices:</p><ol><li><p><strong>Refine your queries</strong> to filter out the known noise and look deeper</p></li><li><p><strong>Shift your approach</strong> entirely (different data source, different technique, pivot to a related hypothesis)</p></li><li><p><strong>Acknowledge you&#8217;ve hit the floor</strong> and document what you found (including the noise)</p></li></ol><p>Option 3 is valid. I know it feels like quitting. It&#8217;s not. It&#8217;s recognizing that more time in this direction won&#8217;t change the outcome. That&#8217;s professional judgment, not laziness.</p><h2><strong>Time-Boxing vs. Completeness</strong></h2><p>Every hunting team I&#8217;ve worked with has some version of this tension. Leadership wants hunts scoped to a sprint. Two days, a week, whatever fits the roadmap. Meanwhile, the hunter is sitting there thinking &#8220;but I haven&#8217;t checked the cloud logs yet.&#8221;</p><p>Here&#8217;s my take: time-boxing is necessary but not sufficient.</p><p>You need time constraints. Without them, hunts expand forever. I&#8217;ve seen it. A two-week hunt becomes a month because the hunter keeps pulling threads. Some of those threads matter. Most don&#8217;t. Without a boundary, there&#8217;s no forcing function to prioritize.</p><p>But a time box alone doesn&#8217;t tell you whether you&#8217;re done. It tells you when you have to stop. Those aren&#8217;t the same thing.</p><p>What I recommend: set your time box upfront, but also define your minimum coverage criteria upfront. If you hit the time box before you hit your coverage criteria, you have a decision to make. And that decision should be documented, not just made silently.</p><p>&#8220;Hunt time-boxed to 3 days. Completed analysis of Windows event logs, Sysmon, and EDR telemetry. Did NOT complete review of cloud audit logs or email gateway logs due to time constraints. Recommend follow-up hunt or including these sources in next cycle.&#8221;</p><p>That&#8217;s a responsible close. Compare that to: &#8220;Hunt complete. No findings.&#8221; Same outcome, completely different level of honesty about what you actually did.</p><h2><strong>The Confidence Spectrum</strong></h2><p>This is the thing I wish every hunter would internalize: &#8220;I found nothing&#8221; and &#8220;I am confident nothing is there&#8221; are wildly different statements.</p><p>&#8220;Found nothing&#8221; means your queries didn&#8217;t return hits. That&#8217;s a fact about your queries, not a fact about your environment.</p><p>&#8220;Confident nothing is there&#8221; means you examined the right data, with sufficient coverage, over the right time period, using techniques appropriate to the threat, and you can explain why the absence of evidence is meaningful.</p><p>Most hunts end with the first statement pretending to be the second.</p><p>I think about this as a spectrum:</p><ul><li><p><strong>Low confidence:</strong> &#8220;Ran some queries, no hits.&#8221; You looked, but not deeply.</p></li><li><p><strong>Medium confidence:</strong> &#8220;Examined primary data sources for indicators consistent with hypothesis. No evidence found, but coverage gaps exist in X and Y.&#8221;</p></li><li><p><strong>High confidence:</strong> &#8220;Examined all relevant data sources across the full time window. Validated detection logic against known-good simulations. No evidence of the hypothesized behavior. Coverage gaps: none identified.&#8221;</p></li></ul><p>Most hunts land somewhere in the medium range. That&#8217;s fine. But say so. Don&#8217;t let a medium-confidence hunt get reported as high-confidence just because it sounds better in a slide deck.</p><h2><strong>Documentation as Closure</strong></h2><p>A hunt is not done until it&#8217;s written down.</p><p>I don&#8217;t care if you found something or not. Null findings are findings. They&#8217;re data points that inform future hunts, justify detection investments, and build institutional knowledge about what you&#8217;ve looked at and when.</p><p>If you close a hunt with no documentation, it&#8217;s like it never happened. Six months from now, someone will hunt for the exact same thing because nobody recorded that you already did.</p><p>At minimum, your hunt closure document should include:</p><ul><li><p><strong>Hypothesis:</strong> What were you looking for and why?</p></li><li><p><strong>Scope:</strong> What environment, data sources, and time window?</p></li><li><p><strong>Coverage:</strong> What did you actually examine? What didn&#8217;t you get to?</p></li><li><p><strong>Findings:</strong> What did you find? Include false positives worth noting.</p></li><li><p><strong>Confidence level:</strong> How confident are you in the result?</p></li><li><p><strong>Recommendations:</strong> Detections to build, data gaps to fix, follow-up hunts to schedule.</p></li><li><p><strong>Time spent:</strong> How long did this actually take?</p></li></ul><p>That last one matters more than people think. If you&#8217;re tracking time spent per hunt, you start to build a picture of what types of hunts are expensive versus cheap. That data helps you plan better.</p><p>I know documentation isn&#8217;t sexy. Nobody got into threat hunting to write reports. But documentation is what turns a hunt from an activity into an artifact. Artifacts compound over time in ways that individual hunts don&#8217;t.</p><h2><strong>Where This Fits in PEAK</strong></h2><p>If you use PEAK (and if you don&#8217;t, <a href="https://dispatch.thorcollective.com/p/the-peak-threat-hunting-template">here&#8217;s a template to get started</a>), hunt termination should be baked into the Prepare phase.</p><p>PEAK has four phases: Prepare, Execute, Act, and Knowledge. Most people pour their energy into Execute because that&#8217;s where the actual hunting happens. But Prepare is where you define what success looks like, and that includes defining what &#8220;done&#8221; looks like.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ESld!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F227aceae-1752-407f-b5e1-93646e23011e_500x500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ESld!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F227aceae-1752-407f-b5e1-93646e23011e_500x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ESld!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F227aceae-1752-407f-b5e1-93646e23011e_500x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ESld!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F227aceae-1752-407f-b5e1-93646e23011e_500x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ESld!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F227aceae-1752-407f-b5e1-93646e23011e_500x500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ESld!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F227aceae-1752-407f-b5e1-93646e23011e_500x500.jpeg" width="500" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/227aceae-1752-407f-b5e1-93646e23011e_500x500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ESld!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F227aceae-1752-407f-b5e1-93646e23011e_500x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ESld!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F227aceae-1752-407f-b5e1-93646e23011e_500x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ESld!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F227aceae-1752-407f-b5e1-93646e23011e_500x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ESld!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F227aceae-1752-407f-b5e1-93646e23011e_500x500.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>When you&#8217;re building your hypothesis in Prepare, add termination criteria right next to it:</p><ul><li><p>What data sources must I examine before I can call this complete?</p></li><li><p>What&#8217;s my time box?</p></li><li><p>What confidence level am I targeting?</p></li><li><p>What would &#8220;good enough&#8221; look like if I can&#8217;t hit full coverage?</p></li></ul><p>Then, in the Act phase, your closure documentation naturally includes an assessment against those criteria. Did you meet them? If not, why not?</p><p>The Knowledge phase is where this really pays off. When you capture termination criteria and coverage assessments alongside your findings, you&#8217;re building a body of knowledge about your hunting capability, not just your hunting results. Over time, you can answer questions like &#8220;how often do we hit our coverage targets?&#8221; and &#8220;where are our persistent blind spots?&#8221;</p><p>That&#8217;s the kind of thing that separates hunting programs that stick around from ones that fizzle out after a year.</p><h2><strong>The Hunt Closure Checklist</strong></h2><p>OK, I promised something practical. Here&#8217;s a checklist your team can steal and adapt.</p><h3><strong>Before You Close the Hunt</strong></h3><ul><li><p>[ ] All scoped data sources have been queried (or gaps documented)</p></li><li><p>[ ] Queries reviewed for correctness, not just &#8220;no hits&#8221;</p></li><li><p>[ ] If nothing found, you can explain why the absence is meaningful</p></li><li><p>[ ] Findings documented (including null findings)</p></li><li><p>[ ] Confidence level stated (low / medium / high)</p></li><li><p>[ ] Follow-up recommendations and detection opportunities logged</p></li><li><p>[ ] Hunt artifacts (queries, scripts) saved somewhere retrievable</p></li></ul><h3><strong>Red Flags That You&#8217;re Stopping Too Early</strong></h3><ul><li><p>You haven&#8217;t looked at all the data sources you scoped</p></li><li><p>Your queries are too narrow (you&#8217;d miss variants of the behavior)</p></li><li><p>You found something interesting but didn&#8217;t follow up because time ran out</p></li><li><p>You&#8217;re closing the hunt to hit a metric, not because you&#8217;re done</p></li></ul><h3><strong>Red Flags That You&#8217;ve Gone Too Long</strong></h3><ul><li><p>You keep finding the same false positives and re-investigating them</p></li><li><p>You&#8217;re expanding scope beyond the original hypothesis without a clear reason</p></li><li><p>You&#8217;ve shifted from &#8220;hunting&#8221; to &#8220;exploring&#8221; with no specific goal</p></li><li><p>The hunt has consumed more than 2x its original time box</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j1nh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fec10f6-f671-4ab2-9da2-223a08f69791_749x500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j1nh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fec10f6-f671-4ab2-9da2-223a08f69791_749x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!j1nh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fec10f6-f671-4ab2-9da2-223a08f69791_749x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!j1nh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fec10f6-f671-4ab2-9da2-223a08f69791_749x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!j1nh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fec10f6-f671-4ab2-9da2-223a08f69791_749x500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j1nh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fec10f6-f671-4ab2-9da2-223a08f69791_749x500.jpeg" width="749" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fec10f6-f671-4ab2-9da2-223a08f69791_749x500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:749,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!j1nh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fec10f6-f671-4ab2-9da2-223a08f69791_749x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!j1nh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fec10f6-f671-4ab2-9da2-223a08f69791_749x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!j1nh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fec10f6-f671-4ab2-9da2-223a08f69791_749x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!j1nh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fec10f6-f671-4ab2-9da2-223a08f69791_749x500.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li></ul><h2><strong>Closing Thoughts</strong></h2><p>Knowing when to stop is a skill. It gets better with practice and worse with neglect. The checklist above is a starting point, not a religion. Adapt it. Argue about it with your team. Throw out the parts that don&#8217;t work.</p><p>Even imperfect criteria are better than none. You can always refine them. You can&#8217;t refine a gut feeling.</p><p>Now go finish that hunt you&#8217;ve been sitting on. You know the one.</p><p>Happy thrunting!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The More I Learn, The Less I Know]]></title><description><![CDATA[The Not-So-Straightforward Journey of Finding Your Place in Cybersecurity]]></description><link>https://dispatch.thorcollective.com/p/the-more-i-learn-the-less-i-know</link><guid isPermaLink="false">https://dispatch.thorcollective.com/p/the-more-i-learn-the-less-i-know</guid><dc:creator><![CDATA[Bella San Lorenzo]]></dc:creator><pubDate>Tue, 24 Feb 2026 15:02:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!DQQQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00e03975-b3b6-403b-8681-5f217abc785d_643x406.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3><strong>SELECT * FROM Introduction;</strong></h3><p>Just before I sat down to write this, I had been analyzing different types of maps, thousands of photos of train tracks in British Columbia, cross-referencing transmission corridors with hiking trails to identify the real-world location of a nano banana-generated Ghibli-style scene&#8230; and falling in love with the process of finding a needle in a haystack. And yes, it was to find the first flag of a CTF.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>My first exposure to cyberspace came from watching Garcia &#8211; the original OSINT queen &#8211; on Criminal Minds locate an assailant in under a minute, pinging cell towers and surfacing information about virtually anyone with a few keystrokes. I remember being 8 years old, thinking less about the theatrics and more about the mechanics, how she took barely tangential pieces of information and correlated them into something coherent enough to identify, locate, and stop a suspect. In hindsight, the earliest sign that I was a nerd was that I found the data more compelling than Shemar Moore.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VgQ0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24ab3240-0087-476a-ba05-b1abdeaf2e79_540x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VgQ0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24ab3240-0087-476a-ba05-b1abdeaf2e79_540x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!VgQ0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24ab3240-0087-476a-ba05-b1abdeaf2e79_540x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!VgQ0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24ab3240-0087-476a-ba05-b1abdeaf2e79_540x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!VgQ0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24ab3240-0087-476a-ba05-b1abdeaf2e79_540x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VgQ0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24ab3240-0087-476a-ba05-b1abdeaf2e79_540x400.jpeg" width="540" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/24ab3240-0087-476a-ba05-b1abdeaf2e79_540x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:540,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VgQ0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24ab3240-0087-476a-ba05-b1abdeaf2e79_540x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!VgQ0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24ab3240-0087-476a-ba05-b1abdeaf2e79_540x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!VgQ0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24ab3240-0087-476a-ba05-b1abdeaf2e79_540x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!VgQ0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24ab3240-0087-476a-ba05-b1abdeaf2e79_540x400.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Cybersecurity, I&#8217;ve learned, is expansive and rarely straightforward. For most end users, security starts and ends with password strength; for most entry-level practitioners &#8211; me included &#8211; impossible travel has a way of masquerading as the ultimate <a href="https://csrc.nist.gov/glossary/term/indicator_of_compromise">IOC</a>; and for tenured researchers, definitive <a href="https://cloud.google.com/blog/topics/threat-intelligence/trade-offs-attribution/">attribution</a> can surface almost like a reflex. In a field defined by scale and complexity, the sheer volume of resources can make early learning feel paralyzing. Overwhelm, self-doubt, and indecision are common byproducts. You are not alone; rather than ignoring this existential truth, it&#8217;s worth naming it.</p><h3><strong>How We Ended Up Here</strong></h3><p>If you, reader, are anything like me, then you are familiar with the following process:</p><ol><li><p>Have a question about something</p></li><li><p>Research the answer</p></li><li><p>Intermission to go down multiple irrelevant rabbit holes</p></li><li><p>Find the answer to the original question</p></li><li><p>End up with 1000 new questions</p></li><li><p>Existential crisis</p></li><li><p>Repeat!</p></li></ol><p>This process is more so a rite of passage when entering the threat intelligence &amp; cybersecurity space. It is also a litmus test of tolerance against the inherent nature of the job - you will always have unanswered questions, and that is what makes the work so exciting.</p><p>One of my recent encounters with this process was, naturally, at 2 AM as I maniacally tried to figure out the answer to the very pressing question: &#8220;Where in cybersecurity do I fit?&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AsVj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83600713-e457-40e8-8489-1e2e2ddc37e1_500x275.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AsVj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83600713-e457-40e8-8489-1e2e2ddc37e1_500x275.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AsVj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83600713-e457-40e8-8489-1e2e2ddc37e1_500x275.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AsVj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83600713-e457-40e8-8489-1e2e2ddc37e1_500x275.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AsVj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83600713-e457-40e8-8489-1e2e2ddc37e1_500x275.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AsVj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83600713-e457-40e8-8489-1e2e2ddc37e1_500x275.jpeg" width="500" height="275" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/83600713-e457-40e8-8489-1e2e2ddc37e1_500x275.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:275,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AsVj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83600713-e457-40e8-8489-1e2e2ddc37e1_500x275.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AsVj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83600713-e457-40e8-8489-1e2e2ddc37e1_500x275.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AsVj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83600713-e457-40e8-8489-1e2e2ddc37e1_500x275.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AsVj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83600713-e457-40e8-8489-1e2e2ddc37e1_500x275.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This late-night rabbit hole was, in part, prompted by my discovery of Henry Jiang&#8217;s <a href="https://media.licdn.com/dms/image/v2/C4E12AQFEgFdbEtEl3Q/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1619282900607?e=1772064000&amp;v=beta&amp;t=raW-W4jixLuE-x7BrJCMLxEtuhxs8BnGK7JMxcQXPCo">Map of Cybersecurity Domains</a><em>.</em> While Jiang outlines different facets of the industry in a very visually pleasing and palatable way, the map left me more confused than it did entice me to any one niche. Every domain connected to three others; technical paths bled into compliance tracks; creative OSINT work sat alongside cryptography and risk frameworks. The vastness wasn&#8217;t inspiring; it was paralyzing. Blue teaming, red teaming, security &amp; detection engineering, threat intelligence research&#8230; the list continues, my question still unanswered.</p><h3><strong>sudo whatdoichoose</strong></h3><p>Paralysis sets in when you&#8217;re optimizing for the perfect choice rather than taking the next step. Getting unstuck means understanding the mechanics of the loop you&#8217;re in, and then deliberately disrupting it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DQQQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00e03975-b3b6-403b-8681-5f217abc785d_643x406.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DQQQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00e03975-b3b6-403b-8681-5f217abc785d_643x406.jpeg 424w, https://substackcdn.com/image/fetch/$s_!DQQQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00e03975-b3b6-403b-8681-5f217abc785d_643x406.jpeg 848w, https://substackcdn.com/image/fetch/$s_!DQQQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00e03975-b3b6-403b-8681-5f217abc785d_643x406.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!DQQQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00e03975-b3b6-403b-8681-5f217abc785d_643x406.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DQQQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00e03975-b3b6-403b-8681-5f217abc785d_643x406.jpeg" width="643" height="406" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/00e03975-b3b6-403b-8681-5f217abc785d_643x406.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:406,&quot;width&quot;:643,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A person lying on a desk\n\nAI-generated content may be incorrect.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A person lying on a desk

AI-generated content may be incorrect." title="A person lying on a desk

AI-generated content may be incorrect." srcset="https://substackcdn.com/image/fetch/$s_!DQQQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00e03975-b3b6-403b-8681-5f217abc785d_643x406.jpeg 424w, https://substackcdn.com/image/fetch/$s_!DQQQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00e03975-b3b6-403b-8681-5f217abc785d_643x406.jpeg 848w, https://substackcdn.com/image/fetch/$s_!DQQQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00e03975-b3b6-403b-8681-5f217abc785d_643x406.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!DQQQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00e03975-b3b6-403b-8681-5f217abc785d_643x406.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>Permission Denied: Why Paralysis Happens</strong></h3><ul><li><p><strong>The Paradox of Choice &amp; Hick&#8217;s Law</strong>: Unlike other fields with linear progressions, cybersecurity offers infinite branching paths that are constantly evolving. (If you want the science behind why this breaks your brain, look up <a href="https://www.bjjmentalmodels.com/hicks-law">Hick&#8217;s Law</a> &#8211; TLDR: more options = longer you&#8217;ll stare at the screen doing nothing).</p></li><li><p><strong>The &#8220;I </strong><em><strong>Need</strong></em><strong> to Know Everything&#8221; Trap</strong>: Security engineers &amp; researchers of all specialties are especially prone to this &#8211; if everything is connected, how do you choose just one thread?</p></li><li><p><strong>Imposter Syndrome as a Feature, Not a Bug</strong>: Everyone feels underqualified. The field moves faster than anyone can keep up. This is normal. Some moments will feel like your head is well above the water, and some will feel like your back is turned to a crashing wave.</p></li><li><p><strong>The Resource Rabbit Hole</strong>: You search &#8220;how to get started in threat intelligence&#8221; and get a seemingly uncountable number of YouTube videos, vendor blogs with conflicting methodologies, GitHub repos of varying quality &#8211; some abandoned, paid courses, and Twitter threads that all assume different baseline knowledge.</p></li></ul><p>Curating a comprehensive learning path becomes a full-time job. You spend three hours building a perfectly organized bookmark folder and a Notion page of resources, then feel so mentally exhausted you can&#8217;t actually start learning from them. The research <em>about</em> learning displaces the learning itself.</p><h3><strong>The Knowledge Depreciation Problem</strong></h3><p><em>Why it Feels Like You&#8217;re Always Starting Over</em></p><p>You finally wrap your head around basic Python scripting, and suddenly everyone&#8217;s saying you should learn Go or Rust for security tooling. You master the fundamentals of approaching and solving CTF or OSINT challenges, only for the platforms you learned on to get shut down or paywalled. You spend weeks understanding MITRE ATT&amp;CK techniques, and new research comes out that reshapes how those techniques are approached.</p><p>This isn&#8217;t unique to cybersecurity, but the velocity is brutal. By the time you feel competent with the basics, the landscape has shifted. This creates a vicious cycle: &#8220;Why should I invest time learning X if it&#8217;ll be obsolete as soon as I understand it?&#8221;</p><p>The paralysis here isn&#8217;t about too many choices &#8211; it&#8217;s about the fear that any choice you make has an expiration date. You&#8217;re not just learning a skill; you&#8217;re trying to hit a moving target that you can&#8217;t even see. Ask yourself: <em>what would happen if you stopped chasing the target altogether?</em> The answer may surprise you - and it&#8217;s coming up next.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[PACMap Is Live - And It’s Open Source!]]></title><description><![CDATA[and more importantly: free]]></description><link>https://dispatch.thorcollective.com/p/pacmap-is-live-and-its-open-source</link><guid isPermaLink="false">https://dispatch.thorcollective.com/p/pacmap-is-live-and-its-open-source</guid><dc:creator><![CDATA[Lauren Proehl]]></dc:creator><pubDate>Fri, 20 Feb 2026 00:00:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!rwzb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc936091-64f1-4976-b747-b84fecc57f11_785x775.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I built something. And I&#8217;m excited to share it with you.</p><p>For the last several weeks, I&#8217;ve been working on a project called <strong>PACMap</strong> - the Privacy, AI &amp; Cybersecurity Map. It&#8217;s a free, open-source regulatory intelligence platform that tracks global cybersecurity, data privacy, and AI regulations in one place.</p><p>It&#8217;s live now at <strong><a href="https://pacmap.dev/">pacmap.dev</a></strong>.</p><p></p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;5639d5ea-5492-4296-a90f-d531c0f4ab29&quot;,&quot;duration&quot;:null}"></div><p></p><h2>Why This Exists</h2><p>If you&#8217;ve ever had to answer the question <em>&#8220;what regulations apply to us?&#8221;</em> - you know the pain. You&#8217;re digging through government websites, PDFs, scattered news articles, and maybe paying for an expensive commercial database that still doesn&#8217;t have everything you need. There&#8217;s no single, free, well-organized source of truth for global cyber, privacy, and AI regulation data.</p><p>That bothered me. So I built one.</p><p>PACMap currently tracks <strong>800+ regulations</strong> across <strong>160+ jurisdictions</strong> worldwide, spanning legislation from the 1970s through proposed bills that haven&#8217;t been enacted yet. It covers four categories: cybersecurity, privacy and data protection, artificial intelligence, and cross-section laws that span multiple categories.</p><h2>What&#8217;s Inside</h2><p>Here&#8217;s what you get when you visit:</p><p>An <strong>interactive dashboard</strong> with summary stats, charts by category, region, and status - plus a heatmap globe showing regulatory density by country. A <strong>full-text search</strong> that lets you filter by jurisdiction, category, legislative status, date range, and keywords. <strong>Regulation detail pages</strong> with structured breakdowns of each law - scope, enforcement, key requirements, deadlines, cross-references, and links to official sources. A <strong>visual timeline</strong> of when regulations were proposed, adopted, and enforced. A <strong>compliance calendar</strong> for upcoming deadlines. <strong>Data confidence indicators</strong> on every entry so you know how reliable each record is. And an <strong>AI-powered research agent</strong> that automatically finds and adds new regulations weekly, so the platform stays current without manual updates.</p><p>The kind of thing you can use at your desk but also pull up in a board meeting without anyone asking why it looks like a hacking tool.</p><h2>The Builder&#8217;s Mindset</h2><p>Here&#8217;s where the THOR Collective thread comes in.</p><p>We&#8217;ve been talking all season about builders showing up. About AI lowering the barrier. About practitioners creating the tools they wish existed instead of waiting for a vendor to maybe get around to it.</p><p>PACMap is me doing exactly that.</p><p>I&#8217;m not a full-time software engineer. I&#8217;m a cybersecurity professional who got tired of a gap in the market and decided to close it myself. I used <strong>Claude Code</strong> as my primary development partner - Python backend with FastAPI, React frontend, the whole stack. The AI didn&#8217;t build it for me. I still had to know what I wanted, make the design decisions, validate the output, security scan everything, and push through every phase. But it made a solo side project of this scope actually possible.</p><p>That&#8217;s the real message: if you can clearly describe what you need and you&#8217;re willing to put in the work, you can build things that used to require a team.<br></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support our work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><h2>It&#8217;s Free. It&#8217;s Open Source. It&#8217;s Yours.</h2><p>No ads. No paywalls. PACMap is a free resource for the community. I may add a donation option down the road to cover that, but the platform itself will stay free.</p><h2>For the Community</h2><p>This is where the community part matters.</p><p>PACMap currently has 831 regulations ingested and growing. But there are hundreds more out there, and regulations change constantly. I need people to tell me what&#8217;s missing, what&#8217;s wrong, and what needs updating.</p><p>If you spot a regulation that&#8217;s not in there - let me know. If something&#8217;s outdated or inaccurate - flag it. If your jurisdiction isn&#8217;t well represented - I want to hear about it.</p><p>You can submit to the project at <strong>contact@pacmap.dev</strong> or through the usual THOR Collective channels.</p><h2>What&#8217;s Next</h2><p>The roadmap includes email alert subscriptions by jurisdiction or category, side-by-side regulation comparison, compliance mapping to frameworks like NIST CSF and ISO 27001, controls exports, a public API, and so much more.</p><p>But right now, the most important thing is that it&#8217;s live, it&#8217;s free, and it&#8217;s built for you.</p><p>Go check it out: <strong><a href="https://pacmap.dev/">pacmap.dev</a></strong></p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/p/pacmap-is-live-and-its-open-source/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://dispatch.thorcollective.com/p/pacmap-is-live-and-its-open-source/comments"><span>Leave a comment</span></a></p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rwzb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc936091-64f1-4976-b747-b84fecc57f11_785x775.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rwzb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc936091-64f1-4976-b747-b84fecc57f11_785x775.png 424w, https://substackcdn.com/image/fetch/$s_!rwzb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc936091-64f1-4976-b747-b84fecc57f11_785x775.png 848w, https://substackcdn.com/image/fetch/$s_!rwzb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc936091-64f1-4976-b747-b84fecc57f11_785x775.png 1272w, https://substackcdn.com/image/fetch/$s_!rwzb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc936091-64f1-4976-b747-b84fecc57f11_785x775.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rwzb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc936091-64f1-4976-b747-b84fecc57f11_785x775.png" width="785" height="775" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bc936091-64f1-4976-b747-b84fecc57f11_785x775.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:775,&quot;width&quot;:785,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:30775,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://dispatch.thorcollective.com/i/188557040?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc936091-64f1-4976-b747-b84fecc57f11_785x775.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rwzb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc936091-64f1-4976-b747-b84fecc57f11_785x775.png 424w, https://substackcdn.com/image/fetch/$s_!rwzb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc936091-64f1-4976-b747-b84fecc57f11_785x775.png 848w, https://substackcdn.com/image/fetch/$s_!rwzb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc936091-64f1-4976-b747-b84fecc57f11_785x775.png 1272w, https://substackcdn.com/image/fetch/$s_!rwzb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc936091-64f1-4976-b747-b84fecc57f11_785x775.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><div><hr></div><p><em>PACMap is an independent, community-oriented project. Corrections, suggestions, and missing regulation reports are always welcome.</em></p>]]></content:encoded></item><item><title><![CDATA[Ask-a-Thrunt3r: January 2026 - Season 2 Premiere 🐏]]></title><description><![CDATA[Mainly ramblings. And maybe some wisdom.]]></description><link>https://dispatch.thorcollective.com/p/ask-a-thrunt3r-january-2026-season</link><guid isPermaLink="false">https://dispatch.thorcollective.com/p/ask-a-thrunt3r-january-2026-season</guid><dc:creator><![CDATA[Lauren Proehl]]></dc:creator><pubDate>Tue, 17 Feb 2026 18:59:43 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/188287874/2ce477b780ff0718f92f501188ced312.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h1>Ask-a-Thrunt3r: January 2026 - Season 2 Premiere &#128015;</h1><h2>&#128221; Episode Summary</h2><p>New year, same crew &#8212; and we&#8217;re building. The THOR Collective kicks off 2026 (Season 2!) with a deep dive into why this is the year security practitioners stop waiting on vendors and start building their own solutions. Lauren, Sydney, and John walk through the trio of Dispatch posts that kicked off the year &#8212; a manifesto series on building in security &#8212; and why the &#8220;I&#8217;m not technical enough&#8221; excuse doesn&#8217;t hold up anymore in the age of AI-assisted development.</p><p>From there, the hosts get into the real talk: what&#8217;s actually trending in security right now (spoiler: social engineering isn&#8217;t going anywhere, and the agentic attack surface is the new frontier), what&#8217;s overhyped (looking at you, &#8220;AI SOC that replaces all your analysts&#8221;), and what each of them is personally investing in this year. Sydney&#8217;s going deep on LLM evaluations and automated baselining. Lauren&#8217;s leveling up her rapid development and project scaffolding skills. John&#8217;s bouncing adversarial emulation ideas off AI &#8212; when it&#8217;ll let him.</p><p>The episode wraps with a lightning round covering certs vs. hands-on work, writing detections vs. hunting, specializing vs. staying broad, and prompt engineering vs. YOLOing it. Plus: conference announcements (CactusCon, WiCYS, BSides SF, RSA, DEF CON), puzzle swaps, PAI voice scaring partners, and Lauren&#8217;s Odyssey-inspired take on AI as Athena; a helper on your journey, not a replacement for the hero.</p><h2>&#9201;&#65039; Episode Breakdown</h2><ul><li><p>00:01 &#8211; Intro and welcome to Season 2</p></li><li><p>03:20 &#8211; January Dispatch Highlights: &#8220;2026, The Year Builders Show Up&#8221; by Lauren &amp; Sydney</p></li><li><p>09:22 &#8211; &#8220;Why You Should Build&#8221; by Lauren &#8211; breaking the psychological barrier</p></li><li><p>13:00 &#8211; &#8220;Why You Don&#8217;t Need a Desk to Build&#8221; by Sydney &#8211; shipping code from anywhere</p></li><li><p>16:32 &#8211; What are we trying to solve? The mission behind the builder series</p></li><li><p>18:40 &#8211; Staying current on AI: AI Daily Brief, Prompt GTFO, and community resources</p></li><li><p>20:45 &#8211; What&#8217;s trending: social engineering, browser extensions, OpenClaw/MoltBot, agentic attack surfaces</p></li><li><p>24:57 &#8211; AI finding vulnerabilities: OpenSSL discoveries and the CVE explosion</p></li><li><p>27:45 &#8211; What&#8217;s overhyped: the &#8220;AI SOC&#8221; replacing analysts narrative</p></li><li><p>30:00 &#8211; Risk tolerance and the human-in-the-loop debate</p></li><li><p>34:25 &#8211; What we&#8217;re investing in: LLM evaluations, automated baselining, rapid development, adversarial emulation</p></li><li><p>39:20 &#8211; What we&#8217;re ignoring: personal balance, saying no, giving up on red teaming</p></li><li><p>41:27 &#8211; Hot take: ignoring prompt engineering (and the Wispr Flow revolution)</p></li><li><p>43:00 &#8211; PAI voice scares</p></li><li><p>46:04 &#8211; Lightning Round: Certs vs. hands-on, detections vs. hunting, specialize vs. stay broad, prompt engineering vs. YOLO</p></li><li><p>53:00 &#8211; Conference circuit and closing: CactusCon, WiCYS, BSides SF, RSA, DEF CON, SecKC</p></li></ul><h2>&#127908; Hosts</h2><p><strong>Lauren Proehl (Host)</strong> &#8211; Manager of the group, chronic overcommitter, manifesto writer, and self-described &#8220;cautious optimist.&#8221; </p><p><strong>Sydney Marrone (Host)</strong> &#8211; Threat hunter turned builder. Shipping code from her phone, couch, bed, and probably CactusCon&#8217;s after party. Investing in LLM evaluations and automated baselining this year. </p><p><strong>John Grageda (Host)</strong> &#8211; Red teamer who uses AI for adversarial emulation and engagement planning, but notes the models still refuse to build offensive tooling (&#8221;nice try, buddy&#8221;). </p><h2>&#128279; Resources &amp; Mentions</h2><h3>January 2026 Dispatch Posts</h3><ul><li><p><strong><a href="https://dispatch.thorcollective.com/p/2026-the-year-builders-show-up">2026: The Year Builders Show Up</a></strong> by Lauren Proehl &amp; Sydney Marrone</p></li><li><p><strong><a href="https://dispatch.thorcollective.com/p/why-you-should-build">Why You Should Build</a></strong> by Lauren Proehl</p></li><li><p><strong><a href="https://dispatch.thorcollective.com/p/you-dont-need-a-desk-to-build">You Don&#8217;t Need a Desk to Build</a></strong> by Sydney Marrone</p></li></ul><h3>Tools &amp; Resources Mentioned</h3><ul><li><p><strong>Claude Code</strong> &#8211; AI coding assistant used by the hosts for building security tools and personal projects</p></li><li><p><strong><a href="https://danielmiessler.com/">PAI (Personal AI)</a></strong> by Daniel Miessler &#8211; personal AI assistant with voice capabilities</p></li><li><p><strong><a href="https://wisprflow.ai/">Wispr Flow</a></strong> &#8211; voice-to-text tool for talking at your AI instead of prompt engineering</p></li><li><p><strong><a href="https://detect.fyi/">Detect FYI</a></strong> &#8211; article by Alex Teixeira on automated baseline detections (30-day baseline + hourly deviation checks)</p></li><li><p><strong><a href="https://aidailybrief.ai/">AI Daily Brief</a></strong> &#8211; recommended podcast for staying current on AI news</p></li><li><p><strong><a href="https://www.youtube.com/@PromptorGTFO">Prompt GTFO</a></strong> &#8211; community resource on cybersecurity and AI</p></li><li><p><strong><a href="https://github.com/openclaw/openclaw">OpenClaw</a> / ClawBot / MoltBot</strong> &#8211; AI agents and social networks that had the hosts questioning reality</p></li></ul><h3>Vulnerability Research &amp; Bug Bounty</h3><ul><li><p><strong><a href="https://aisle.com/blog/aisle-discovered-12-out-of-12-openssl-vulnerabilities">AISLE Discovers 12 OpenSSL Vulnerabilities (Jan 2026)</a></strong> &#8211; AI-powered autonomous analyzer found all 12 CVEs in the January 2026 coordinated release, some dating back to 1998</p></li><li><p><strong><a href="https://daniel.haxx.se/blog/2026/01/26/the-end-of-the-curl-bug-bounty/">The End of the curl Bug-Bounty (Daniel Stenberg)</a></strong> &#8211; curl ended its HackerOne bug bounty program January 31, 2026 due to flood of AI-generated slop reports</p></li><li><p><strong><a href="https://cloud.google.com/transform/how-google-does-it-building-ai-agents-cybersecurity-defense/">Google: Building AI Agents for Cybersecurity and Defense</a></strong> &#8211; Google&#8217;s approach to agentic defense and building security agents</p></li><li><p><strong><a href="https://slack.engineering/streamlining-security-investigations-with-agents/">Slack Engineering: Streamlining Security Investigations with Agents</a></strong> &#8211; Slack&#8217;s approach to agentic SOC defense using AI agent personas (Director, domain experts, Critic) that break investigations into phases</p></li></ul><h3>Key Concepts Discussed</h3><ul><li><p><strong>AI as Augmentation, Not Replacement</strong> &#8211; Lauren&#8217;s Athena analogy from The Odyssey: AI is a helper on your odyssey, not a replacement for the hero</p></li><li><p><strong>The Builder Mindset</strong> &#8211; scripts, queries, playbooks all count as building; you don&#8217;t need permission from the developer gods</p></li><li><p><strong>Return of Generalism</strong> &#8211; AI raising the floor for lower-level analysts, enabling dynamic workforce reallocation</p></li><li><p><strong>Agent Manager Future</strong> &#8211; the theory that everyone becomes a manager of teams of AI agents</p></li><li><p><strong>Trust but Verify</strong> &#8211; applies to both AI and humans; both make mistakes</p></li><li><p><strong>The Boot Camp Loop</strong> &#8211; AI helps break the cycle of training without applying</p></li><li><p><strong>Automated Baselining</strong> &#8211; 30-day baseline detection + hourly checks against deviations (Detect FYI approach)</p></li><li><p><strong>Agentic Attack Surface</strong> &#8211; the unknown frontier of securing AI agents and agentic workflows</p></li></ul><h3>Trends Discussed</h3><ul><li><p>Social engineering and phishing &#8211; still trending, now AI-enhanced</p></li><li><p>Browser extensions &#8211; emerging attack vector</p></li><li><p>OpenClaw/MoltBot ecosystem &#8211; AI agents with their own social networks</p></li><li><p>AI vulnerability discovery &#8211; 12 OpenSSL vulnerabilities found by AI, some allegedly decades old</p></li><li><p>CVE reports up ~39-40% last year</p></li><li><p>Google&#8217;s agentic defense approach &#8211; breaking prompts into investigation phases</p></li><li><p>Prompt injection &#8211; social engineering AI agents and models</p></li><li><p>Curl leaving HackerOne due to AI-generated bug bounty report influx</p></li></ul><h2>&#128226; Call to Action</h2><ul><li><p><strong>Read the January builder series on Dispatch</strong> &#8211; and start your own building journey; even a script that saves you a few minutes counts</p></li><li><p><strong>Try building something you&#8217;ll actually use</strong> &#8211; throw it on GitHub, start small, keep building</p></li><li><p><strong>Check out the AI Daily Brief podcast and Prompt GTFO</strong> &#8211; for staying current on AI and security</p></li><li><p><strong>Get Wispr Flow</strong> &#8211; if you struggle with prompt engineering, just talk at your AI</p></li><li><p><strong>Explore automated baselining</strong> &#8211; use the Detect FYI approach (30-day baseline + hourly deviation checks)</p></li><li><p><strong>Come find us at CactusCon</strong> &#8211; February 2026, THOR Collective is sponsoring the after party; swag will be available</p></li><li><p><strong>Write for THOR Collective</strong> &#8211; always looking for new voices, up-and-coming voices, and first-time publishers; reach out on socials</p></li></ul><h2>&#128236; Connect with THOR Collective</h2><h3>&#128483;&#65039; Social Media:</h3><ul><li><p>Twitter/X: <a href="https://x.com/THOR_Collective">@THOR_Collective</a></p></li><li><p>LinkedIn: <a href="https://www.linkedin.com/company/thorcollective">THOR Collective</a></p></li><li><p>BlueSky: <a href="https://bsky.app/profile/thorcollective.bsky.social">@thorcollective</a></p></li></ul><h3>&#128231; Contact:</h3><p>Reach out through any social channel for guest post opportunities, collaborations, or to share what you&#8217;re building in 2026</p>]]></content:encoded></item><item><title><![CDATA[How I Use LLMs for Security Work]]></title><description><![CDATA[I&#8217;ve been using LLM tools like Claude, Cursor, and ChatGPT extensively in my security & engineering work for the past couple years.]]></description><link>https://dispatch.thorcollective.com/p/how-i-use-llms-for-security-work</link><guid isPermaLink="false">https://dispatch.thorcollective.com/p/how-i-use-llms-for-security-work</guid><dc:creator><![CDATA[Josh Rickard]]></dc:creator><pubDate>Tue, 03 Feb 2026 19:30:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!8mB0!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0d0d66-07ae-4f5b-a26a-b6d91cfc488e_1280x1280.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;ve been using LLM tools like Claude, Cursor, and ChatGPT extensively in my security &amp; engineering work for the past couple years. Not as a replacement for thinking&#8212;but they genuinely help me move faster through complex problems. If you&#8217;re a security analyst, SOC analyst, threat hunter or engineer who hasn&#8217;t found a rhythm with these tools yet, I&#8217;ll try to share what&#8217;s been working for me with the hope it helps you too.</p><p>Here&#8217;s the thing: most people prompt LLMs like they&#8217;re searching Google. They type a few keywords and expect magic. That doesn&#8217;t work, especially for security work where context and precision matter. You wouldn&#8217;t walk up to a senior analyst and say &#8220;phishing bad, clicked link, help&#8221; and expect useful output. Same principle applies here. The way you prompt these tools completely changes what you get back.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support our work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>I don&#8217;t claim to be an expert by any means so please take this all as my opinion--I know there are many other ways to approach using LLMs. I&#8217;ve used approaches like:</p><ul><li><p>writing a design &amp; requirement document and feeding that into an LLM while writing examples shared below.</p></li><li><p>providing a repository of code and giving clear problem statements</p></li><li><p>question &amp; answer analysis</p></li><li><p>etc.</p></li></ul><p>Here&#8217;s some examples of how I think they can be most useful for security peeps just starting out with LLMs.</p><h2><strong>Role-Stacking: Set the Stage</strong></h2><p>One of the most effective techniques I&#8217;ve found is what I call &#8220;role-stacking.&#8221; Instead of just asking a question, I tell the LLM what perspectives I need it to consider. I also found that using my own experience when setting the stage is extremely helpful since it&#8217;s what I know.</p><p>Here&#8217;s an example:</p><pre><code><code>As a security analyst and phishing threat detection expert. As a software engineer experienced with Python, Flask, and Docker.

Create a simple Flask (bootstap, etc.) application to collect DNS, WHOIS/RDAP, HTML and other opensource threat intelligence for a given URL.
</code></code></pre><p>Notice what I did there. I&#8217;m not just asking &#8220;create a simple flask application.&#8221; I&#8217;m telling the LLM to think from multiple angles simultaneously&#8212;security analysis, phishing expertise, and software engineering. This produces output that bridges disciplines rather than staying siloed.</p><p>For SOC analysts, this might look like:</p><pre><code><code>As a SOC analyst experienced in alert triage. As a threat hunter 
familiar with MITRE ATT&amp;CK. As someone who has dealt with alert 
fatigue firsthand.

Analyze this detection rule and identify potential blind spots or false positive generators.
</code></code></pre><p>The role-stacking approach forces the LLM to consider your problem from multiple angles, which often shows you things you wouldn&#8217;t get from a single-perspective prompt.</p><h2><strong>Be Explicit About Your Technology Stack</strong></h2><p>LLMs perform dramatically better when you tell them what you&#8217;re actually working with. Be specific about the technologies, products, and constraints in your environment (as much as you know).</p><p>Here&#8217;s how I do it:</p><pre><code><code>As a senior security engineer and sr. software engineer. Experience 
with Docker, Kubernetes, caching, data streaming, gRPC, protobuf, 
JSONSchema, common data models, Puppeteer, Playwright, extensive 
experience with APIs, network communications, web frameworks, 
anti-bot detection, Chromium, Selenium, network captures, monitoring, 
knowledge about fingerprinting, cookie injection, evading behavioral 
turnstiles/captchas.

Using these technologies, products, tools, frameworks and knowledge 
bases, let's design an application that [specific goal]...
</code></code></pre><p>I know that looks like a lot. I mean, it is a lot. But here&#8217;s why it matters: the LLM now knows exactly what tools are on the table. It &#8220;shouldn&#8217;t&#8221; suggest solutions using technologies I don&#8217;t have (but it does sometimes but I have found this approach helps). It&#8217;ll reason within my actual constraints most of the time. When it does, it&#8217;s a huge benefit--especially when you&#8217;re trying to solve real problems in your actual environment&#8212;-not hypothetical ones.</p><p>For threat hunters, this might be:</p><pre><code><code>As a threat hunter with access to Splunk, CrowdStrike EDR, and 
network flow data. Working in a hybrid cloud environment with 
AWS and on-prem Windows infrastructure. Familiar with Sigma 
rules and MITRE ATT&amp;CK.

Help me develop a hunting hypothesis for [specific threat behavior].
</code></code></pre><h2><strong>Request Thoroughness Explicitly</strong></h2><p>So, how do you get past the surface-level responses? LLMs will often give you the quick answer&#8212;which is usually the shallow answer. If you want depth, you have to ask for it and provide a very specific example output.</p><p>I frequently use phrases like:</p><ul><li><p>&#8220;Take your time, think through carefully&#8221;</p></li><li><p>&#8220;Use critical systems thinking&#8221;</p></li><li><p>&#8220;Consider batch and streaming patterns, integration patterns, and how this evolves over time&#8221;</p></li><li><p>&#8220;Do not hallucinate and validate any decisions and findings&#8221;</p></li></ul><p>That last one is important. Honestly, these tools can confidently generate plausible-sounding nonsense. Telling them explicitly to validate their reasoning helps&#8212;not perfectly, but noticeably.</p><p>Here&#8217;s an example:</p><pre><code><code>Using your knowledge of cyber security and threat intelligence 
as it relates to phishing defense. We are evaluating several 
products to integrate into our detection pipeline.

We are evaluating VirusTotal GTI, Team Cymru, Feedly, and any.run.

Knowing all that, create an evaluation criteria process.

Take your time. Think through carefully. Do not hallucinate&#8212;validate 
any decisions and findings.
</code></code></pre><h2><strong>Ask for Current Information</strong></h2><p>This is especially important for security work where the landscape changes constantly. Tools, techniques, and threat actor behaviors evolve. Explicitly ask for updated context:</p><pre><code><code>Search for the latest information regarding security tools and products.

Evaluate the best option for a sandbox analysis tool when it 
comes to inspecting and analyzing both phishing links and 
attachments from phishing emails.
</code></code></pre><p>Will the LLM always have the latest data? No. Prompting it this way encourages it to reason about recency and often produces more thoughtful responses about what might have changed. Luckily, many of these tools have web search capabilities, so this prompt pattern becomes even more effective.</p><h2><strong>Think in Systems, Not Point Solutions</strong></h2><p>Security work is inherently about systems&#8212;interconnected components that create emergent behaviors (and emergent vulnerabilities). I prompt AI tools to think the same way.</p><p>Here&#8217;s an example from my own work:</p><pre><code><code>Imagine you have a platform which can use a list of indicators 
to hunt backwards in time for up to 30 days. The list of indicators 
per type (domains, IP addresses, URLs, files) will add about 
2 million new indicators per day that we must back-test/hunt for. 
As each day passes, the indicators exponentially grow in size.

Provide 5 options for building a system to handle and manage this data for X years. Remember to use critcial systems thinking.
</code></code></pre><p>This prompt describes a real systems problem&#8212;not a feature request. The tool now has to reason about data growth, retention strategies, computational constraints, and tradeoffs. That&#8217;s the kind of thinking that produces useful output.</p><p>For SOC analysts dealing with alert volume, try:</p><pre><code><code>Our SIEM generates approximately 50,000 alerts per day across 
200 detection rules. About 15% of our analyst time is spent on 
5 rules that generate 60% of the volume.

How should we approach optimizing this situation? Consider both short-term tactical fixes and 
longer-term strategic improvements.
</code></code></pre><h2><strong>Practical Tips for Getting Started</strong></h2><p>If you&#8217;re new to using LLMs for security work, here are some concrete starting points:</p><ul><li><p><strong>Start with role-stacking</strong>: Before every prompt, think about what perspectives would be valuable. Security analyst? Software engineer? Incident responder? Stack them.</p></li><li><p><strong>Be embarrassingly specific</strong>: Include your actual tools, technologies, and constraints. The more context, the better the output.</p></li><li><p><strong>Ask for validation</strong>: Explicitly request that the LLM validate its reasoning and not hallucinate. It helps.</p></li><li><p><strong>Think in systems</strong>: Frame your questions as systems problems, not isolated tasks.</p></li><li><p><strong>Iterate</strong>: Your first prompt won&#8217;t be perfect. Refine based on what you get back. Tell the tool what was useful and what wasn&#8217;t.</p></li></ul><p>Finally, if you really want to stretch how you think about LLMs. Once you have completed a project / idea tell the tool to write a mark down file that can be used next time when wanting to create a similar tool (or just a project in general).</p><p>An additional approach I have been playing with is asking the LLM to generate this markdown document in a way that considers current and future progressions of how we interface with LLMs and to build it in a way that is most efficient for the LLM itself.</p><p>For example:</p><pre><code><code>Assess this project as a whole and generate a markdown definiton that will be used in the future for similar projects. Think about the current adoption and patterns used to interact with LLMs as well as future progression based on industry trends.

Generate this document so that it is efficient, clear and precise for future iterations.
</code></code></pre><p>That&#8217;s it! These six techniques cover about 90% of how I get value from LLMs in my daily work.</p><h2><strong>A Note on People</strong></h2><p>With that being said, I want to be clear about something: these are tools to augment human judgment, not replace it. The value of a good security analyst isn&#8217;t their ability to generate text&#8212;it&#8217;s their judgment, their intuition, their ability to recognize what doesn&#8217;t fit.</p><p>LLMs help me move faster through the mechanical parts of my work. They help me explore ideas, draft documentation, reason through complex systems. But the decisions? Those are still mine.</p><p>As InfoSec professionals, we&#8217;re responsible for the security of real people and real organizations. LLms can help us do that job better&#8212;but only if we stay in the driver&#8217;s seat. Just remember that these tools are amplifiers&#8212;they amplify good thinking and bad thinking alike. Bring the good thinking.</p><h2><strong>What&#8217;s Next</strong></h2><p>I&#8217;m still learning how to use these tools effectively. The techniques I&#8217;ve shared here are simplified examples of what&#8217;s working for me right now, but I expect they&#8217;ll evolve as the tools themselves improve.</p><p>I&#8217;m currently building my own <code>agent</code> and <code>workflow</code> (state machines) so I may write about that next as I continue to learn and adapt on the many ways you can approach those problems.</p><p>In the real world, especially more complex work, I define my goals, general requirements, my constraints, ideal/desired inputs and outputs. Remember the more context you given an LLM the better it will be (e.g. provide reference API docs, schemas, query examples, etc.).</p><p>If you&#8217;ve found effective prompting patterns for security work, I&#8217;d love to hear about them. Reach out on LinkedIn or GitHub&#8212;let&#8217;s share what&#8217;s working.</p><p>I hope this helps some of you get more out of these tools. The threat landscape isn&#8217;t slowing down. Neither should we.</p><p>Enjoy!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support our work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p><br></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/p/how-i-use-llms-for-security-work/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://dispatch.thorcollective.com/p/how-i-use-llms-for-security-work/comments"><span>Leave a comment</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[You Don’t Need a Desk to Build]]></title><description><![CDATA[The desk was never the point]]></description><link>https://dispatch.thorcollective.com/p/you-dont-need-a-desk-to-build</link><guid isPermaLink="false">https://dispatch.thorcollective.com/p/you-dont-need-a-desk-to-build</guid><dc:creator><![CDATA[Sydney Marrone]]></dc:creator><pubDate>Tue, 27 Jan 2026 15:03:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!dM_s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4b38e72-927e-47de-8f60-733d586ab137_556x500.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;m writing this from my couch. Before that, it was my bed. Tomorrow it might be a coffee shop, or the airport, waiting on my flight to the next con.</p><p>Here&#8217;s the thing: I used AI more last month on my phone than I did from my desk. The dual monitors. The mechanical keyboard. The chair that cost more than my first car. Turns out, all of that was just &#10024; aesthetic procrastination &#10024; with better cable management.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>The Lie We Tell Ourselves</strong></h2><p>&#8220;I&#8217;ll start that project when I have time to really sit down and focus.&#8221;</p><p>Sound familiar? Meanwhile, your phone sits in your pocket&#8212;a supercomputer capable of running AI assistants, connected to every repo you&#8217;ve ever touched, waiting for you to realize you were the bottleneck, not your environment.</p><p>The truth is brutal: <strong>the battlestation is a cope.</strong> A beautiful, RGB-lit cope that lets us feel like developers without actually developing.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dM_s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4b38e72-927e-47de-8f60-733d586ab137_556x500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dM_s!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4b38e72-927e-47de-8f60-733d586ab137_556x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dM_s!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4b38e72-927e-47de-8f60-733d586ab137_556x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dM_s!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4b38e72-927e-47de-8f60-733d586ab137_556x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dM_s!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4b38e72-927e-47de-8f60-733d586ab137_556x500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dM_s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4b38e72-927e-47de-8f60-733d586ab137_556x500.jpeg" width="556" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d4b38e72-927e-47de-8f60-733d586ab137_556x500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:556,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dM_s!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4b38e72-927e-47de-8f60-733d586ab137_556x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dM_s!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4b38e72-927e-47de-8f60-733d586ab137_556x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dM_s!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4b38e72-927e-47de-8f60-733d586ab137_556x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dM_s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4b38e72-927e-47de-8f60-733d586ab137_556x500.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>My Setup (It&#8217;s Unserious and It Works)</strong></h2><p>This is what I use for my personal projects&#8212;the side quests, the experiments, the stuff I build because I want to, not because someone&#8217;s paying me:</p><p><strong>Hardware:</strong></p><ul><li><p>iPhone (yes, really)</p></li><li><p>A computer under my desk (could just as easily be a cloud server)</p></li></ul><p><strong>Software:</strong></p><ul><li><p><strong><a href="https://happy.engineering/">Happy Engineering</a> app</strong> - Claude Code on my phone (requires a Claude Pro or Max subscription)</p></li><li><p><strong><a href="https://github.com/danielmiessler/Personal_AI_Infrastructure">PAI (Personal AI Infrastructure)</a></strong> - <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Daniel Miessler&quot;,&quot;id&quot;:6348600,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e33e20b-61cf-460b-b0cb-49cea2ae7471_640x640.png&quot;,&quot;uuid&quot;:&quot;1af8a67c-d5a1-4ae1-988b-95db26978a50&quot;}" data-component-name="MentionToDOM"></span>&#8217;s AI framework, tailored to my codebase, my preferences, and my neurodivergent brain. HUGE KUDOS for this. Absolute chef&#8217;s kiss.</p></li><li><p><strong>Git</strong> - Still git. Some things don&#8217;t change.</p></li></ul><p>The computer&#8217;s under my desk (or in the cloud). I&#8217;m usually not.</p><p><strong>PAI is the whole point.</strong></p><p>I have my entire Personal AI Infrastructure around Claude Code. Skills that know how to do specific jobs. Memory that persists across sessions. Response formats designed for my neurodivergent brain. It remembers my projects, my preferences, my half-finished ideas from three weeks ago.</p><p>When I say &#8220;fix the research bug,&#8221; PAI knows which repo (usually <a href="https://hearth.thorcollective.com/">HEARTH</a>), which research system, and which bug I&#8217;ve been ranting about. I don&#8217;t re-explain context. I don&#8217;t copy-paste file paths. I just talk to it like a teammate who&#8217;s been in every meeting.</p><p>This isn&#8217;t autocomplete. It&#8217;s continuity.</p><h2><strong>The Part Where I Stopped Fighting My Brain</strong></h2><p>&#8220;Just sit down and focus.&#8221; Cool advice. About as useful as &#8220;just be taller.&#8221;</p><p>For years I thought productive meant <em>more</em> structure, <em>more</em> routine, <em>more</em> discipline. More of everything I was apparently bad at. I tried to force my brain into a shape it wasn&#8217;t designed for. Spoiler: it didn&#8217;t work.</p><p>Then I tried something different: <strong>meeting my brain where it actually is.</strong></p><p>My brain wants to work at weird times. Fine. My brain can&#8217;t sustain attention for 4-hour deep work blocks. Fine. My brain gets distracted and needs to context-switch. <em>Fine.</em></p><p>Mobile development doesn&#8217;t fight any of this. It leans in. Got 10 minutes waiting for food? Ship a fix. Lying awake at 2 AM with a solution? Actually implement it instead of praying you&#8217;ll remember it tomorrow. (You won&#8217;t. You never do.)</p><h2><strong><a href="https://happy.engineering/docs/use-cases/hemingway-technique/">The Hemingway Technique</a></strong></h2><p>Ernest Hemingway famously stopped writing mid-sentence each day. Not because he was done, but because he knew exactly where to pick up tomorrow. The friction of &#8220;where do I even start?&#8221; vanished.</p><p>Here&#8217;s how it works for code:</p><p><strong>Before Bed (5 minutes, from your phone):</strong></p><ol><li><p>Describe what you want to build</p></li><li><p>Let AI help you plan it</p></li><li><p>Identify the overnight task</p></li><li><p>Hit execute and go to sleep</p></li></ol><p><strong>While You Sleep:</strong></p><ul><li><p>AI writes the code</p></li><li><p>Runs the tests</p></li><li><p>Documents what it did</p></li></ul><p><strong>Morning (whenever you wake up):</strong></p><ul><li><p>Review the diff</p></li><li><p>Merge or iterate</p></li><li><p>Feel like a wizard</p></li></ul><p>This isn&#8217;t theoretical. This post? Planned from my bed at 11 PM. Drafted by AI overnight. Reviewed and published while I had coffee.</p><p><em>&#8220;But what if the AI writes bad code?&#8221;</em></p><p>It might. You review it. Same as reviewing any junior dev&#8217;s PR, except this one doesn&#8217;t get offended when you request changes and actually learns from the feedback.</p><h2><strong>The Response Format That Changed Everything</strong></h2><p>I used to dread reading AI responses. Walls of text. Nested bullet points. Tables that didn&#8217;t fit on mobile. By the time I scrolled through the explanation, I&#8217;d forgotten what I asked.</p><p>So I built a format for my brain:</p><pre><code><code>&#127919; Task summary &#8226; Status

&#128204; RESULT:
Answer first. Always.

&#9989; DONE:
&#8226; What happened
&#8226; Evidence it worked

&#9203; NEXT:
&#8226; What's coming

&#128172; PAI: 16 words max summary
</code></code></pre><p>15-20 lines max. Answer at the top. Emoji anchors for scanning. No tables.</p><p>The format got me to actually read the thing.</p><h2><strong>What I&#8217;ve Actually Built From My Phone</strong></h2><p>Because talk is cheap:</p><ul><li><p><strong>Full PAI skill system</strong> - The AI infrastructure that powers my workflow</p></li><li><p><strong>Multiple HEARTH submissions</strong> - Threat hunting doesn&#8217;t care where you sit</p></li><li><p><strong>This entire blog setup</strong> - Hemingway&#8217;d into existence</p></li><li><p><strong>Bug fixes at 10 PM</strong> - The best time to fix bugs is when you&#8217;re annoyed enough to actually do it</p></li><li><p><strong>Automation scripts</strong> - Usually while waiting for something else</p></li></ul><p>None of this required a desk. All of it required admitting that the desk was never the point.</p><h2><strong>The Obligatory &#8220;Be Smart About This&#8221; Section</strong></h2><p>Look, I&#8217;m not telling you to YOLO production deploys from your phone at 2 AM. (Okay, maybe I did that once. Don&#8217;t be like me.)</p><p>AI-assisted coding is powerful, but it&#8217;s not magic. You still need to:</p><ul><li><p><strong>Review what gets generated</strong> - AI makes confident mistakes</p></li><li><p><strong>Understand what you&#8217;re shipping</strong> - Don&#8217;t merge production code you can&#8217;t explain</p></li><li><p><strong>Use sandboxing</strong> - Let AI run wild in containers, not on your host</p></li><li><p><strong>Know when to stop</strong> - Sometimes &#8220;wait until morning&#8221; is the right call</p></li><li><p><strong>Keep humans in the loop</strong> - Especially for anything that matters</p></li></ul><p>The goal isn&#8217;t reckless speed. It&#8217;s removing artificial barriers between you and the work you actually want to do. Be smart. Be careful. But don&#8217;t let &#8220;being careful&#8221; become another excuse to never start.</p><p>Will this workflow change? Probably. The tools will get better, my needs will shift, and I&#8217;ll find new ways to break things. The principle stays: work where your brain works, not where productivity culture says you should.</p><h2><strong>Permission Granted</strong></h2><p>You don&#8217;t need the perfect setup. You need a phone and five minutes of &#8220;what if this works.&#8221;</p><p>You don&#8217;t need to fix your neurodivergent brain. You need tools that work with how you actually function.</p><p>Open your phone. Talk to an AI. Ship something.</p><p>The best time to build was when you had the &#8220;perfect&#8221; setup you never actually used. The second best time is now, from wherever you are, with whatever you have.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-azM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a00631-1c5f-4f33-aeaf-7d0a1f6156ca_500x502.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-azM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a00631-1c5f-4f33-aeaf-7d0a1f6156ca_500x502.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-azM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a00631-1c5f-4f33-aeaf-7d0a1f6156ca_500x502.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-azM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a00631-1c5f-4f33-aeaf-7d0a1f6156ca_500x502.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-azM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a00631-1c5f-4f33-aeaf-7d0a1f6156ca_500x502.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-azM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a00631-1c5f-4f33-aeaf-7d0a1f6156ca_500x502.jpeg" width="500" height="502" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d4a00631-1c5f-4f33-aeaf-7d0a1f6156ca_500x502.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:502,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-azM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a00631-1c5f-4f33-aeaf-7d0a1f6156ca_500x502.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-azM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a00631-1c5f-4f33-aeaf-7d0a1f6156ca_500x502.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-azM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a00631-1c5f-4f33-aeaf-7d0a1f6156ca_500x502.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-azM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a00631-1c5f-4f33-aeaf-7d0a1f6156ca_500x502.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Resources</strong></h2><p><strong>Tools Mentioned (and a bonus):</strong></p><ul><li><p><a href="https://happy.engineering/">Happy Engineering</a> - Claude Code on mobile</p></li><li><p><a href="https://claude.ai/code">Claude Code</a> - The AI foundation</p></li><li><p><a href="https://github.com/danielmiessler/Personal_AI_Infrastructure">PAI (Personal AI Infrastructure)</a> - My version of this system. Persistent memory. Custom skills. neurodivergent-friendly everything. This is the thing.</p></li><li><p><a href="https://happy.engineering/docs/use-cases/hemingway-technique/">Hemingway Technique</a> - The bedtime planning workflow</p></li><li><p><a href="https://github.com/obra/superpowers">Superpowers</a> - Jesse Vincent&#8217;s structured workflow system for AI agents - gives Claude Code guardrails and process</p></li></ul><p><strong>Related Dispatch Posts:</strong></p><ul><li><p><a href="https://dispatch.thorcollective.com/p/2026-the-year-builders-show-up">&#8220;2026: The Year Builders Show Up&#8221;</a> - More on the permission-to-build philosophy</p></li><li><p><a href="https://dispatch.thorcollective.com/p/why-you-should-build">&#8220;Why You Should Build&#8221;</a> - <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Lauren Proehl&quot;,&quot;id&quot;:313273134,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8597a686-e4a2-4fe8-b92f-63c08aa21150_3024x4032.jpeg&quot;,&quot;uuid&quot;:&quot;629a4ffc-354b-4f18-a3d3-e1d10976d985&quot;}" data-component-name="MentionToDOM"></span>&#8217;s take on creating vs. consuming</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div></li></ul>]]></content:encoded></item><item><title><![CDATA[Why You Should Build]]></title><description><![CDATA[The most powerful thing you can do in security is create something that did not exist before.]]></description><link>https://dispatch.thorcollective.com/p/why-you-should-build</link><guid isPermaLink="false">https://dispatch.thorcollective.com/p/why-you-should-build</guid><dc:creator><![CDATA[Lauren Proehl]]></dc:creator><pubDate>Tue, 20 Jan 2026 16:22:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!t4b8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c60ad9-8dec-44b9-9ad2-8ac8b819a72d_500x680.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There is a particular kind of satisfaction that comes from building something. Not buying it. Not configuring it. Not asking someone else to make it for you. Building it yourself, out of raw materials and stubborn intention.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Ask any artist and they can tell you about this feeling. A painter staring at a blank canvas. A musician sitting down with an instrument and an idea that does not have a shape yet. A writer wrestling with a sentence until it finally says what they meant. Building is an act of defiance against the void. You looked at nothing and decided something should exist there.</p><p>Security practitioners are not taught to think of themselves this way. We are taught to defend, detect, respond, contain. We are positioned as reactors to someone else&#8217;s creativity. Usually the attacker&#8217;s creativity, but sometimes that of our fellow security practitioners. They build the malware, the phishing kits, the persistence mechanisms. We clean up after them. But that framing is a trap. And it is time to walk out of it.</p><p>Here is a phrase that has held back more security practitioners than any technical limitation ever could: &#8220;<em><strong>I am not a developer</strong></em>.&#8221;</p><p>It sounds humble. Reasonable, even. But it is not humility. It is a cage we built for ourselves and then handed someone else the key. The phrase contains a hidden assumption: that building requires a credential, a pedigree, permission from some gatekeeping authority that decides who gets to create.</p><p>That was never true. And it is less true now than it has ever been.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!t4b8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c60ad9-8dec-44b9-9ad2-8ac8b819a72d_500x680.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t4b8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c60ad9-8dec-44b9-9ad2-8ac8b819a72d_500x680.jpeg 424w, https://substackcdn.com/image/fetch/$s_!t4b8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c60ad9-8dec-44b9-9ad2-8ac8b819a72d_500x680.jpeg 848w, https://substackcdn.com/image/fetch/$s_!t4b8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c60ad9-8dec-44b9-9ad2-8ac8b819a72d_500x680.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!t4b8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c60ad9-8dec-44b9-9ad2-8ac8b819a72d_500x680.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t4b8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c60ad9-8dec-44b9-9ad2-8ac8b819a72d_500x680.jpeg" width="500" height="680" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/06c60ad9-8dec-44b9-9ad2-8ac8b819a72d_500x680.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:680,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!t4b8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c60ad9-8dec-44b9-9ad2-8ac8b819a72d_500x680.jpeg 424w, https://substackcdn.com/image/fetch/$s_!t4b8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c60ad9-8dec-44b9-9ad2-8ac8b819a72d_500x680.jpeg 848w, https://substackcdn.com/image/fetch/$s_!t4b8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c60ad9-8dec-44b9-9ad2-8ac8b819a72d_500x680.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!t4b8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c60ad9-8dec-44b9-9ad2-8ac8b819a72d_500x680.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In fact, many of you are already building and don&#8217;t even realize it. That query you wrote to catch something your SIEM vendor did not account for? That is building. The spreadsheet you rigged together to track cases because the ticketing system did not fit your workflow? Building. The ugly PowerShell script you are vaguely embarrassed about but still use every week because it works? That is building too. You didn&#8217;t wait for permission. The only difference between that and what you think of as &#8220;real&#8221; building is scope and the story you tell yourself about what counts.</p><p>Think about how much of your daily work is shaped by tools someone else made. Tools that reflect someone else&#8217;s assumptions about what you need, what workflows make sense. You adapt to them. You work around their limitations. You file feature requests into a queue with 50,000 other requests and hope someone, someday, prioritizes your problem. Now think about what it would mean to shape your own environment instead. To look at a friction point and remove it. To stop asking and start making.</p><p>Artists understand this intuitively. A painter does not wait for someone to hand them the exact painting they wanted to see. They make it. They impose their vision on the world. You can do the same thing with a script, a detection, a dashboard. The medium is different. The creative act is the same.</p><p>Not everything you build needs to be ambitious. In fact, the most transformative building often happens at the smallest scale. A script that saves ten minutes, a query that surfaces signal you were missing, a playbook that cuts an investigation in half. These things compound. Each one is evidence that you can shape your environment, not just react to it. And small creations teach you how to make bigger ones. Every artist starts with sketches. The goal is not perfection. The goal is momentum.</p><p>What you create belongs to you. Not in a legal sense (though sometimes that too - IANAL - consult your hiring agreement). In a deeper sense. The understanding you gain by building cannot be taken away. The skill stays sharp. The confidence you earn from watching something work that did not exist before you made it, that is yours forever. Vendors come and go. Tools get deprecated. Budgets get cut. But the builder&#8217;s mindset travels with you. It is not tied to any platform or employer. It compounds over a career.</p><p>You do not need to be a developer. You do not need permission or the perfect idea or the perfect afternoon with no meetings. You just need to start&#8212;or to recognize that you already have.</p><p>The canvas is blank. What will you make?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8sHq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbc885bc-a699-44f1-8e0c-9f76e4f0161b_500x617.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8sHq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbc885bc-a699-44f1-8e0c-9f76e4f0161b_500x617.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8sHq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbc885bc-a699-44f1-8e0c-9f76e4f0161b_500x617.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8sHq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbc885bc-a699-44f1-8e0c-9f76e4f0161b_500x617.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8sHq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbc885bc-a699-44f1-8e0c-9f76e4f0161b_500x617.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8sHq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbc885bc-a699-44f1-8e0c-9f76e4f0161b_500x617.jpeg" width="500" height="617" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dbc885bc-a699-44f1-8e0c-9f76e4f0161b_500x617.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:617,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8sHq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbc885bc-a699-44f1-8e0c-9f76e4f0161b_500x617.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8sHq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbc885bc-a699-44f1-8e0c-9f76e4f0161b_500x617.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8sHq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbc885bc-a699-44f1-8e0c-9f76e4f0161b_500x617.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8sHq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbc885bc-a699-44f1-8e0c-9f76e4f0161b_500x617.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>*This is the second piece in a series on building as a core security skill. Previously: &#8220;2026: The Year Builders Show Up.&#8221;*</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[2026: The Year Builders Show Up]]></title><description><![CDATA[The era of the builder starts now.]]></description><link>https://dispatch.thorcollective.com/p/2026-the-year-builders-show-up</link><guid isPermaLink="false">https://dispatch.thorcollective.com/p/2026-the-year-builders-show-up</guid><dc:creator><![CDATA[Lauren Proehl]]></dc:creator><pubDate>Thu, 08 Jan 2026 22:00:08 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/bbc386c7-7592-4615-a183-cc783520ae3f_640x360.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Something shifted in the last twelve months. Not the tools themselves. What changed is who gets to use them.</p><p>AI got more accessible. Voice became an interface. The gap between &#8220;I have an idea&#8221; and &#8220;I built a thing&#8221; collapsed. 2026 is not about the people who have always shipped code. It is about the people who never thought they would.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9T-f!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77efe73d-0134-42af-95f2-c8b419a86d93_250x379.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9T-f!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77efe73d-0134-42af-95f2-c8b419a86d93_250x379.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9T-f!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77efe73d-0134-42af-95f2-c8b419a86d93_250x379.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9T-f!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77efe73d-0134-42af-95f2-c8b419a86d93_250x379.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9T-f!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77efe73d-0134-42af-95f2-c8b419a86d93_250x379.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9T-f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77efe73d-0134-42af-95f2-c8b419a86d93_250x379.jpeg" width="250" height="379" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/77efe73d-0134-42af-95f2-c8b419a86d93_250x379.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:379,&quot;width&quot;:250,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Bob the Builder - Wikipedia&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Bob the Builder - Wikipedia" title="Bob the Builder - Wikipedia" srcset="https://substackcdn.com/image/fetch/$s_!9T-f!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77efe73d-0134-42af-95f2-c8b419a86d93_250x379.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9T-f!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77efe73d-0134-42af-95f2-c8b419a86d93_250x379.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9T-f!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77efe73d-0134-42af-95f2-c8b419a86d93_250x379.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9T-f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77efe73d-0134-42af-95f2-c8b419a86d93_250x379.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>Voice is an Interface Now</h2><p>For most of security&#8217;s history, the keyboard was the starting line. If you wanted to build something, you had to know how to type it. Syntax. Commands. The right libraries.</p><p>Voice changes that. In 2026, analysts and engineers will talk to build. You explain an idea out loud. AI turns it into a draft, a script, a workflow. You iterate by conversation, not by rewriting from scratch. The people who can articulate what they need will have an advantage over the people who can only type what they know.</p><p>Think about what that unlocks. The analyst who knows exactly what behavior they want to hunt but never learned Python. The IR lead who has run hundreds of investigations but never written a detection rule. Voice removes the hesitation. It turns &#8220;I should build that someday&#8221; into &#8220;let me try saying this out loud.&#8221;</p><p>In fact, most of this post was generated with a voice based interface. Our ramblings can now become a thesis.</p><div><hr></div><h2>AI Turns Explanation Into Output</h2><p>If you can describe what you want, you can usually create something usable. Not perfect. Not production-ready. But something real you can test and improve.</p><p>That might be a rough detection that catches 80% of what you need. A cleanup script that automates a task you have been doing manually. A runbook that gets institutional knowledge out of someone&#8217;s head. This is not about replacing expertise. It is about removing the friction between having expertise and applying it.</p><p>Most good work dies in the gap between &#8220;I should do this&#8221; and &#8220;I started doing this.&#8221; AI collapses that gap. You get a first draft in minutes instead of never.</p><div><hr></div><h2>Custom Tools for Custom Problems</h2><p>Enterprise security tools solve general problems at scale. Vendors build for the middle of the bell curve and hope you can configure your way to the edges. That leaves a gap: the problems too specific, too niche, too <em>yours</em> for any vendor to care about.</p><p>Now, you can build tools that fit your exact situation. Tools that would never exist as products because the market is too small, but that solve your problem perfectly because they were designed for nothing else.</p><p>You are mid-investigation and need a script that correlates three log sources in a way your SIEM does not support. Before, that was a feature request or a professional services engagement. Now you describe the logic and get a working prototype in fifteen minutes. Your SIEM still does the heavy lifting. Your EDR still collects telemetry. But the last-mile automation that makes your workflow actually flow? Congratulations, you can build that yourself!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support our work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2>More Practitioners Become Builders</h2><p>This is the real shift. Not better tools. More builders.</p><p>For years, security had a sharp divide. On one side: engineers and developers who build. On the other: analysts, operators, and managers who use what gets built. That divide is dissolving.</p><p>In 2026, people who never called themselves builders will start shipping things. Not products or platforms. Small improvements that remove friction. Glue code that connects tools. Automation that saves ten minutes and quietly adds up. This is not about becoming a developer. It is about shaping your environment instead of just operating within it.</p><div><hr></div><h2>&#8220;But I&#8217;m Not Technical Enough&#8221;</h2><p>You may have been told that building requires a CS degree, years of coding, mastery of frameworks and pipelines. And that was true for a long time. The barrier to entry was high, especially if you failed a Visual Basic class like Lauren.</p><p>AI has changed what &#8220;technical enough&#8221; means. The skills that matter now are problem articulation, project planning, domain expertise, and iteration. Can you describe what is broken and what better looks like? You have spent years learning how attacks work and how your environment behaves. That knowledge is the hard part. AI can write the Python script. It cannot tell you which log source matters or why that process behavior is suspicious.</p><p>You do not have to build big. You do not need to jump straight to CI/CD pipelines or containerized deployments. Start with a Bash script that saves you fifteen minutes. A Python script that formats data the way you need it. Follow secure coding practices. Test before you trust. But start.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FYSD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa99b2a77-d8f0-4b82-a696-87154e535c9c_360x237.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FYSD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa99b2a77-d8f0-4b82-a696-87154e535c9c_360x237.gif 424w, https://substackcdn.com/image/fetch/$s_!FYSD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa99b2a77-d8f0-4b82-a696-87154e535c9c_360x237.gif 848w, https://substackcdn.com/image/fetch/$s_!FYSD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa99b2a77-d8f0-4b82-a696-87154e535c9c_360x237.gif 1272w, https://substackcdn.com/image/fetch/$s_!FYSD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa99b2a77-d8f0-4b82-a696-87154e535c9c_360x237.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FYSD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa99b2a77-d8f0-4b82-a696-87154e535c9c_360x237.gif" width="360" height="237" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a99b2a77-d8f0-4b82-a696-87154e535c9c_360x237.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:237,&quot;width&quot;:360,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3043741,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://dispatch.thorcollective.com/i/183954449?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa99b2a77-d8f0-4b82-a696-87154e535c9c_360x237.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FYSD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa99b2a77-d8f0-4b82-a696-87154e535c9c_360x237.gif 424w, https://substackcdn.com/image/fetch/$s_!FYSD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa99b2a77-d8f0-4b82-a696-87154e535c9c_360x237.gif 848w, https://substackcdn.com/image/fetch/$s_!FYSD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa99b2a77-d8f0-4b82-a696-87154e535c9c_360x237.gif 1272w, https://substackcdn.com/image/fetch/$s_!FYSD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa99b2a77-d8f0-4b82-a696-87154e535c9c_360x237.gif 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">mfw the Claude Code output runs for the first time</figcaption></figure></div><div><hr></div><h2>Speed Beats Ceremony</h2><p>The orgs that move fastest in 2026 will not be the most formal. They will not require three approvals before deploying a script. They will not wait for the perfect solution when good-enough exists today. They will prototype quickly, ship rough versions, and fix things later.</p><p>Here is what makes this urgent: attackers are not waiting for you. They are already using AI to write phishing campaigns, generate malware variants, and probe infrastructure at scale. They iterate daily. They test in your production. They do not have change advisory boards or quarterly planning cycles. Speed is how they win.</p><p>The gap between attacker speed and defender speed has been widening for years. AI is the first technology that gives defenders a real chance to close it. But only if you use it to move faster, not to generate more documentation for the same slow processes. Ship something today that makes tomorrow&#8217;s attack harder to execute.</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QM4B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d359af1-055d-4739-b8ab-26cfa2e0e27c_982x960.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QM4B!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d359af1-055d-4739-b8ab-26cfa2e0e27c_982x960.png 424w, https://substackcdn.com/image/fetch/$s_!QM4B!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d359af1-055d-4739-b8ab-26cfa2e0e27c_982x960.png 848w, https://substackcdn.com/image/fetch/$s_!QM4B!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d359af1-055d-4739-b8ab-26cfa2e0e27c_982x960.png 1272w, https://substackcdn.com/image/fetch/$s_!QM4B!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d359af1-055d-4739-b8ab-26cfa2e0e27c_982x960.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QM4B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d359af1-055d-4739-b8ab-26cfa2e0e27c_982x960.png" width="982" height="960" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5d359af1-055d-4739-b8ab-26cfa2e0e27c_982x960.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:960,&quot;width&quot;:982,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1306398,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://dispatch.thorcollective.com/i/183954449?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d359af1-055d-4739-b8ab-26cfa2e0e27c_982x960.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QM4B!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d359af1-055d-4739-b8ab-26cfa2e0e27c_982x960.png 424w, https://substackcdn.com/image/fetch/$s_!QM4B!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d359af1-055d-4739-b8ab-26cfa2e0e27c_982x960.png 848w, https://substackcdn.com/image/fetch/$s_!QM4B!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d359af1-055d-4739-b8ab-26cfa2e0e27c_982x960.png 1272w, https://substackcdn.com/image/fetch/$s_!QM4B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d359af1-055d-4739-b8ab-26cfa2e0e27c_982x960.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>What This Means Going Forward</h2><p>Security roles are changing whether job descriptions catch up or not. The analyst who can spin up a working prototype will be more valuable than the one who files a ticket and waits. The responder who builds their own tooling will handle edge cases that stumped the last three consultants.</p><p>You do not need to be a software engineer. But you do need to be willing to shape your environment. To build the small things that make your work easier. To stop waiting for someone else to solve the problems you see every day.</p><p>The question this year is simple: can you explain what you are trying to do? If you can, you can probably build it.</p><p>2026 is the year that willingness gets rewarded.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/p/2026-the-year-builders-show-up?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading THOR Collective Dispatch! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/p/2026-the-year-builders-show-up?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://dispatch.thorcollective.com/p/2026-the-year-builders-show-up?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/p/2026-the-year-builders-show-up/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://dispatch.thorcollective.com/p/2026-the-year-builders-show-up/comments"><span>Leave a comment</span></a></p><p></p><div><hr></div><p><em>This is the first piece in a series on building as a core security skill. Next up: &#8220;Why You Should Build&#8221;</em></p>]]></content:encoded></item><item><title><![CDATA[Ask-a-Thrunt3r: December 2025 - DEcember 🐏]]></title><description><![CDATA[Mainly ramblings. And maybe some wisdom.]]></description><link>https://dispatch.thorcollective.com/p/ask-a-thrunt3r-december-2025-december</link><guid isPermaLink="false">https://dispatch.thorcollective.com/p/ask-a-thrunt3r-december-2025-december</guid><dc:creator><![CDATA[Lauren Proehl]]></dc:creator><pubDate>Tue, 30 Dec 2025 21:01:13 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/182932223/2e4f167e438aeacde59e4a790c06f9d1.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h1><strong>Ask-a-Thrunt3r: December 2025 - DEcember &#128015;</strong></h1><h2>&#128221; Episode Summary</h2><p>Welcome back from the holiday break! The THOR Collective returns with a cozy end-of-year reflection meets practitioner reality check, featuring special guest Alex Hurtado, content creator extraordinaire and voice behind Detection Engineering Dispatch. This December edition tackles the often-overlooked but crucial relationship between threat hunting and detection engineering &#8211; what Alex calls &#8220;the real people that actually just keep shit working.&#8221;</p><p>Alex brings unique insights from her journey from SIEM analyst at ABC during the Rachel Bachelorette era (yes, monitoring for commercial interruptions during primetime TV) to becoming one of the voices in detection engineering content. The conversation dives deep into why detection engineering finally emerged as a distinct discipline, how vendor black-boxing forces teams to rebuild EDR rules in their SIEM, and why treating detections like production code with proper CICD pipelines is non-negotiable.</p><p>From debating whether to ship detections in &#8220;warn mode&#8221; to discussing the nuclear option of deleting 50% of your detections tomorrow, this episode delivers unfiltered insights on building sustainable detection programs. Plus, Alex shares her Chicago neighborhood-to-SIEM comparison framework, the team debates worst detections as holiday decorations, and everyone agrees: quarterly detection reviews are a must, but alert volume as a KPI needs to go.</p><h2>&#9201;&#65039; Episode Breakdown</h2><ul><li><p>01:32 &#8211; Introductions</p></li><li><p>03:00 &#8211; Alex&#8217;s journey: From ABC SIEM analyst to Detection Engineering thought leader</p></li><li><p>06:02 &#8211; The gatekeeping problem in detection engineering</p></li><li><p>10:26 &#8211; Icebreaker: Worst detection as a holiday decoration</p></li><li><p>13:36 &#8211; Deep dive: What is detection engineering really?</p></li><li><p>16:15 &#8211; Detection engineers beyond the SIEM</p></li><li><p>18:01 &#8211; The problem with black-box EDR vendors</p></li><li><p>20:35 &#8211; Hunting to Detection Engineering handoffs</p></li><li><p>24:30 &#8211; Chaining behaviors vs. static indicators</p></li><li><p>36:44 &#8211; Detection Engineering as Development (CICD, versioning, documentation)</p></li><li><p>42:40 &#8211; Metrics that matter: Confusion matrices vs. alert volume</p></li><li><p>47:30 &#8211; The nuclear option: Cutting 50% of detections</p></li><li><p>49:30 &#8211; AI&#8217;s impact on detection engineering</p></li><li><p>52:15 &#8211; Ship it or Scrap it rapid-fire</p></li><li><p>55:06 &#8211; Must-reads and resources</p></li><li><p>57:21 &#8211; 2025 wrap-up and 2026 preview</p></li></ul><h2>&#127908; Hosts &amp; Guest</h2><p><strong>Lauren Proehl (Host)</strong> &#8211; Manager of the group whose worst detection is a creepy 85-year-old nutcracker from grandma that should&#8217;ve been recycled (like Log4J scanning alerts still firing).</p><p><strong>Sydney Marrone (Host)</strong> &#8211; Head of thrunting and threat hunting whose worst detection is a snow globe - stable until you make one edit and everything goes crazy with alerts.</p><p><strong>John Grageda (Host)</strong> &#8211; Red teamer who compares his worst detection to a Christmas tree with all lights constantly rotating in chaos, reminiscent of untuned Sourcefire IDS.</p><p><strong><a href="https://www.linkedin.com/in/hurtadoalexandra/">Alex Hurtado</a> (Special Guest)</strong> &#8211; Content creator, host of Detection Engineering Dispatch, and voice behind the State of Detection Engineering report. Former ABC SIEM analyst who monitored primetime TV for commercial interruptions.</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support our work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><h2>&#128279; Resources &amp; Mentions</h2><h3>Key Concepts Discussed</h3><ul><li><p><strong>Detection Engineering Definition</strong> &#8211; &#8220;The real people that actually just keep shit working&#8221;</p></li><li><p><strong>Detection as Code</strong> &#8211; Treating detections like production code with CICD pipelines</p></li><li><p><strong>Versioning &amp; Documentation</strong> &#8211; The critical importance of change logs and detection diaries</p></li><li><p><strong>Chaining Behaviors</strong> &#8211; Moving beyond static indicators to correlated attack chains</p></li><li><p><strong>Black-box Vendor Problem</strong> &#8211; Why teams rebuild EDR rules in SIEMs with FDR data</p></li><li><p><strong>Critical Asset Prioritization</strong> &#8211; Starting with crown jewels when cutting detection noise</p></li><li><p><strong>Confusion Matrices</strong> &#8211; True positive/false positive rates as quality metrics</p></li></ul><h3> Resources</h3><ul><li><p><strong><a href="https://survey.sans.org/jfe/form/SV_9WXVJlAG80mDxoa">2026 SANS Focus on Detection Engineering Survey</a></strong></p></li><li><p><strong><a href="https://detect.fyi/">Alex Teixeira / Detect.FYI</a></strong><a href="https://detect.fyi/"> </a></p></li><li><p><strong><a href="https://www.detectionengineering.net/">Detection Engineering Weekly</a></strong></p></li><li><p><strong><a href="https://detections.ai/">Detections.ai</a></strong></p></li><li><p><strong><a href="https://www.linkedin.com/feed/update/urn:li:activity:7404142801954750465/">MITRE TTP Detections</a></strong></p></li><li><p><strong><a href="https://www.anvilogic.com/workshop">Detection Engineering Dispatch</a></strong></p><p></p></li></ul><h2>&#128226; Call to Action</h2><ul><li><p><strong>Follow Alex Hurtado on LinkedIn</strong> &#8211; For infographics and detection engineering insights</p></li><li><p><strong>Subscribe to Detection Engineering Dispatch</strong> &#8211; Available on Apple Podcasts and Spotify</p></li><li><p><strong>Participate in the State of DE Survey</strong> &#8211; Data collection phase is ongoing</p></li><li><p><strong>Implement quarterly detection reviews</strong> &#8211; If you&#8217;re not doing this, start now</p></li><li><p><strong>Document your detections</strong> &#8211; Leave them better than you found them</p></li><li><p><strong>Write for THOR Collective</strong> &#8211; Always looking for new voices in thrunting, DE, SOC, and IR</p></li></ul><h2>&#128236; Connect with THOR Collective</h2><h3>&#128483;&#65039; Social Media:</h3><ul><li><p>Twitter/X: <a href="https://x.com/THOR_Collective">@THOR_Collective</a></p></li><li><p>LinkedIn: <a href="https://www.linkedin.com/company/thorcollective">THOR Collective</a></p></li><li><p>BlueSky: <a href="https://bsky.app/profile/thorcollective.bsky.social">@thorcollective</a></p></li></ul><h3>&#128231; Contact:</h3><p>Reach out through any social channel to contribute content, be a guest on the podcast, or share your detection engineering war stories</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/p/ask-a-thrunt3r-december-2025-december/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://dispatch.thorcollective.com/p/ask-a-thrunt3r-december-2025-december/comments"><span>Leave a comment</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[80 Posts Later]]></title><description><![CDATA[What We Actually Shared This Year]]></description><link>https://dispatch.thorcollective.com/p/80-posts-later</link><guid isPermaLink="false">https://dispatch.thorcollective.com/p/80-posts-later</guid><dc:creator><![CDATA[Sydney Marrone]]></dc:creator><pubDate>Tue, 23 Dec 2025 04:36:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!asFL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde88450f-4831-4fae-9272-2de617ece422_620x465.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>Some of you already got this post. Congratulations. You were part of the pre-drop hype.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!asFL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde88450f-4831-4fae-9272-2de617ece422_620x465.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!asFL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde88450f-4831-4fae-9272-2de617ece422_620x465.jpeg 424w, https://substackcdn.com/image/fetch/$s_!asFL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde88450f-4831-4fae-9272-2de617ece422_620x465.jpeg 848w, https://substackcdn.com/image/fetch/$s_!asFL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde88450f-4831-4fae-9272-2de617ece422_620x465.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!asFL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde88450f-4831-4fae-9272-2de617ece422_620x465.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!asFL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde88450f-4831-4fae-9272-2de617ece422_620x465.jpeg" width="620" height="465" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/de88450f-4831-4fae-9272-2de617ece422_620x465.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:465,&quot;width&quot;:620,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!asFL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde88450f-4831-4fae-9272-2de617ece422_620x465.jpeg 424w, https://substackcdn.com/image/fetch/$s_!asFL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde88450f-4831-4fae-9272-2de617ece422_620x465.jpeg 848w, https://substackcdn.com/image/fetch/$s_!asFL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde88450f-4831-4fae-9272-2de617ece422_620x465.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!asFL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde88450f-4831-4fae-9272-2de617ece422_620x465.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In 2025, THOR Collective Dispatch published <strong>80 posts</strong>.</p><p>That is not a content goal. That is a signal.</p><p>It means we showed up consistently to talk about how info sec actually works. The messy parts. The decisions that do not fit cleanly into slides. The tradeoffs teams make every day when the logs are loud and the clock is running.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>This year was not about chasing trends. It was about sharpening thinking, pressure-testing ideas, and building things that last.</p><p>If you read one post or all eighty, thank you. To close out the year, here are <strong>six pieces that best represent what Dispatch stood for in 2025.</strong></p><h2><a href="https://dispatch.thorcollective.com/p/detection-in-depth">Detection-in-Depth</a></h2><p><em>Eliminating detection blind spots through layered visibility</em><br>Guest post by <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Day Johnson&quot;,&quot;id&quot;:172540827,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F320cfa44-ac32-40b3-8e06-97497673fd1f_4096x4096.jpeg&quot;,&quot;uuid&quot;:&quot;860d0c64-9e6e-442a-aee3-6ca737bea4f6&quot;}" data-component-name="MentionToDOM"></span> </p><p>This post put real structure behind a phrase that often gets waved around without substance.</p><p>Detection-in-depth reframed detection as a layered, living system instead of a collection of clever rules. It emphasized baselining before tuning, precision over perfection, and continuous validation instead of set-and-forget detections.</p><p>Most importantly, it addressed a hard truth. If you are not actively testing your detections, attackers are doing it for you.</p><p>This piece helped teams think more clearly about blind spots, redundancy, and why layered detection is the difference between catching an attacker early and discovering them after impact.</p><h2><a href="https://dispatch.thorcollective.com/p/the-agentic-threat-hunter">The Agentic Threat Hunter</a></h2><p><em>We&#8217;re done playing whack-a-mole</em><br>By <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Sydney Marrone&quot;,&quot;id&quot;:120407990,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/898e994e-f615-441c-87f4-5d71d889f12c_508x512.jpeg&quot;,&quot;uuid&quot;:&quot;9e7f5eb7-5b9e-4ac1-a4bc-85eea2165d9d&quot;}" data-component-name="MentionToDOM"></span> </p><p>This post drew a line in the sand.</p><p>Threat hunting methodology still works. Humans alone do not scale.</p><p><em>The Agentic Threat Hunter</em> argued for a shift in how we hunt. Not AI as a chatbot. Not AI as a vendor checkbox. AI as a collaborator that can hypothesize, investigate, and correlate at machine speed while humans stay focused on strategy and judgment.</p><p>It reframed the hunter&#8217;s role from query executor to system designer and supervisor. Write hypotheses down. Treat hunts like code. Pair with AI intentionally. Automate repetition and protect creativity.</p><p>This post resonated because it named what many teams already feel. The future of hunting is not more dashboards. It is better partners.</p><h2><a href="https://dispatch.thorcollective.com/p/from-the-fire-q1fy25">From the Fire: Q1FY25</a></h2><p><em>TTPs that sparked, spread, and still burn</em><br>By <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Lauren Proehl&quot;,&quot;id&quot;:313273134,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8597a686-e4a2-4fe8-b92f-63c08aa21150_3024x4032.jpeg&quot;,&quot;uuid&quot;:&quot;84ae5610-a63a-4890-bfd5-96ade4577b49&quot;}" data-component-name="MentionToDOM"></span> </p><p>This was threat intel done right.</p><p>Instead of chasing zero-day headlines, <em>From the Fire</em> focused on behaviors that kept showing up across incident response and adversary emulation. OAuth consent abuse. Malicious package ecosystems. RMM tooling turned initial access.</p><p>Each section broke down what attackers were doing, what telemetry mattered, and what to hunt for right now. This was not theory. This was backlog fuel.</p><p>If other posts pushed the craft forward, this one kept it grounded in reality. These are the fires still burning.</p><h2><a href="https://dispatch.thorcollective.com/p/introducing-hearth">Introducing HEARTH</a></h2><p><em>A community-driven threat hunting repository</em><br>By <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Sydney Marrone&quot;,&quot;id&quot;:120407990,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/898e994e-f615-441c-87f4-5d71d889f12c_508x512.jpeg&quot;,&quot;uuid&quot;:&quot;55768b26-e5fa-4e10-a017-072b83b13897&quot;}" data-component-name="MentionToDOM"></span>, <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Lauren Proehl&quot;,&quot;id&quot;:313273134,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8597a686-e4a2-4fe8-b92f-63c08aa21150_3024x4032.jpeg&quot;,&quot;uuid&quot;:&quot;e1f42f59-e60f-4599-afb6-6df5faac8a9a&quot;}" data-component-name="MentionToDOM"></span>, and <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;John Grageda&quot;,&quot;id&quot;:313273232,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5096656e-beb8-4f67-ab37-7aff1af59e16_536x536.jpeg&quot;,&quot;uuid&quot;:&quot;b4398c87-4b48-4c5f-ac02-82bfd75015f2&quot;}" data-component-name="MentionToDOM"></span></p><p>This post turned Dispatch from a publication into infrastructure.</p><p>HEARTH addressed a problem every hunter knows. Good hunt ideas live in isolation and disappear. HEARTH gave them a shared home with structure, review, and attribution.</p><p>Standard templates. Clear categorization. Community refinement. Real credit for contributors.</p><p>It reinforced a belief at the core of THOR Collective. Threat hunting improves when knowledge compounds. Not when it stays siloed.</p><p>This was not just an announcement. It was an investment in how the community builds together.</p><h2><a href="https://dispatch.thorcollective.com/p/hunting-beyond-indicators">Hunting Beyond Indicators</a></h2><p><em>Why behaviors beat artifacts</em><br>Guest post by <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Sam Hanson&quot;,&quot;id&quot;:337947034,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!RVzW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0116b666-c6e3-4a4d-94ef-60934670578b_4673x6542.jpeg&quot;,&quot;uuid&quot;:&quot;07db475a-47f4-4f30-889f-f04ba850d0c0&quot;}" data-component-name="MentionToDOM"></span> </p><p>This post tackled one of the most common traps in threat hunting.</p><p>Indicators help with known bad. They do not help you find the unknown.</p><p>Sam made the case for behavior-first hunting grounded in TTPs, with indicators used as enrichment instead of direction. Cast a wide net. Accept false positives. Automate triage. Let your data access define what you can realistically hunt.</p><p>This was not anti-IOC. It was pro-thinking.</p><p>It reminded us why threat hunting exists in the first place. To find what has not been named yet.</p><h2><a href="https://dispatch.thorcollective.com/p/red-with-benefits-purple-teaming">Red with Benefits: Purple Teaming with Sliver Beacons</a></h2><p><em>Turning post-exploitation into detection signal</em><br>By <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;John Grageda&quot;,&quot;id&quot;:313273232,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5096656e-beb8-4f67-ab37-7aff1af59e16_536x536.jpeg&quot;,&quot;uuid&quot;:&quot;a770c767-e090-481f-bbf4-e01cdce8fd56&quot;}" data-component-name="MentionToDOM"></span> </p><p>This post showed what collaboration actually looks like.</p><p>Instead of using Sliver purely as a red team flex, John demonstrated how to turn beacon activity into shared detection engineering feedback. Map actions to ATT&amp;CK. Pair them with expected telemetry. Capture gaps in VECTR. Fix what did not fire.</p><p>This was purple teaming without theater. No gotchas. No scorekeeping. Just learning.</p><p>If other posts defined strategy and mindset, this one showed how to pressure-test those ideas with real tooling.</p><h2>And One More Thing We Loved This Year: Ask-a-Thrunt3r</h2><p>This <a href="https://dispatch.thorcollective.com/p/ask-a-thrunt3r-october-2025-logtoberfest">Logtoberfest Ask-a-Thrunt3r episode</a> captured the same questions running through Dispatch all year: <em>where is threat hunting actually headed?</em></p><p>With <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Damien Lewke&quot;,&quot;id&quot;:248623304,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!YSdF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a437d7f-474e-4e6e-863a-4d7d91885fd9_800x800.jpeg&quot;,&quot;uuid&quot;:&quot;1fe71390-6f0c-4e9a-b8ad-20dab7d33ae0&quot;}" data-component-name="MentionToDOM"></span> joining the crew, we talked agentic AI, democratizing threat hunting, and why attackers are already moving faster than most defenders. No polished narratives. No easy answers. Just practitioners working through what&#8217;s real, what&#8217;s broken, and what still needs figuring out.</p><p>If you listened to one Ask-a-Thrunt3r episode this year, make it this one.</p><h2>What This Year Reinforced</h2><p>This year made a few things very clear:</p><ul><li><p>Structure makes hunting stronger, not slower</p></li><li><p>Documentation is a force multiplier</p></li><li><p>Automation works best when it supports thinking</p></li><li><p>Detection improves through testing, not hope</p></li><li><p>And threat hunting gets better when we build together</p></li></ul><p>We are proud of what shipped this year. We are even more excited about what comes next.</p><p>Thanks for reading.<br>Thanks for building with us.<br>And thanks for keeping the fire burning.</p><p>Here&#8217;s to the new year.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ai0A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb63f33c2-82d1-4ae6-897d-fc0454d3643e_500x1101.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ai0A!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb63f33c2-82d1-4ae6-897d-fc0454d3643e_500x1101.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Ai0A!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb63f33c2-82d1-4ae6-897d-fc0454d3643e_500x1101.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Ai0A!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb63f33c2-82d1-4ae6-897d-fc0454d3643e_500x1101.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Ai0A!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb63f33c2-82d1-4ae6-897d-fc0454d3643e_500x1101.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ai0A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb63f33c2-82d1-4ae6-897d-fc0454d3643e_500x1101.jpeg" width="500" height="1101" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b63f33c2-82d1-4ae6-897d-fc0454d3643e_500x1101.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1101,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ai0A!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb63f33c2-82d1-4ae6-897d-fc0454d3643e_500x1101.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Ai0A!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb63f33c2-82d1-4ae6-897d-fc0454d3643e_500x1101.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Ai0A!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb63f33c2-82d1-4ae6-897d-fc0454d3643e_500x1101.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Ai0A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb63f33c2-82d1-4ae6-897d-fc0454d3643e_500x1101.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Happy thrunting!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Dispatch Debrief: November 2025]]></title><description><![CDATA[The month where AI said &#8220;I can run the SOC!&#8221; and immediately turned into the problem.]]></description><link>https://dispatch.thorcollective.com/p/dispatch-debrief-november-2025</link><guid isPermaLink="false">https://dispatch.thorcollective.com/p/dispatch-debrief-november-2025</guid><dc:creator><![CDATA[Sydney Marrone]]></dc:creator><pubDate>Tue, 25 Nov 2025 15:00:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!WmjY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3adad2a4-6e4c-43b4-ab15-920a85bd17ab_500x500.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>November gave us peak chaos energy in the best way. Analysts chased Modbus gremlins, purple teams fought the environment instead of the adversary, and Taylor&#8217;s Version made an appearance in the Autonomous SOC conversation. Whether you&#8217;re here for the templates, the TTP breakdowns, or the memes, this month&#8217;s Dispatch delivered nothing but signal.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WmjY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3adad2a4-6e4c-43b4-ab15-920a85bd17ab_500x500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WmjY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3adad2a4-6e4c-43b4-ab15-920a85bd17ab_500x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WmjY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3adad2a4-6e4c-43b4-ab15-920a85bd17ab_500x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WmjY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3adad2a4-6e4c-43b4-ab15-920a85bd17ab_500x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WmjY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3adad2a4-6e4c-43b4-ab15-920a85bd17ab_500x500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WmjY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3adad2a4-6e4c-43b4-ab15-920a85bd17ab_500x500.jpeg" width="500" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3adad2a4-6e4c-43b4-ab15-920a85bd17ab_500x500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WmjY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3adad2a4-6e4c-43b4-ab15-920a85bd17ab_500x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WmjY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3adad2a4-6e4c-43b4-ab15-920a85bd17ab_500x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WmjY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3adad2a4-6e4c-43b4-ab15-920a85bd17ab_500x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WmjY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3adad2a4-6e4c-43b4-ab15-920a85bd17ab_500x500.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Here are this month&#8217;s 6 Dispatch posts:</p><ul><li><p><strong><a href="https://dispatch.thorcollective.com/p/ask-a-thrunt3r-october-2025-logtoberfest">Ask-a-Thrunt3r: October 2025 Logtoberfest Edition</a></strong></p><p>The THOR Collective&#8217;s October Ask-a-Thrunt3r episode with guest Damien Lewke from Nebulock discusses democratizing threat hunting and the impact of agentic AI on cybersecurity, separating genuine innovation from vendor hype. Cybersecurity professionals can gain insights on the future of threat hunting and the importance of upskilling SOC analysts for the evolving landscape.</p><p><em>By Lauren Proehl</em></p></li><li><p><strong><a href="https://dispatch.thorcollective.com/p/hunting-beyond-indicators-part-2">Hunting Beyond Indicators - Part 2</a></strong></p><p>The post discusses the benefits of hunting based on behaviors rather than indicators in cybersecurity. By focusing on specific TTPs like SCADA Python scripts and Modbus protocols, analysts can uncover novel threats that may not be widely known, emphasizing the importance of understanding the threat landscape and using creativity in hunting strategies. By utilizing tools like PyLingual and Yara rules, analysts can efficiently triage and analyze suspicious files for potential threats.</p><p><em>By Sam Hanson</em></p></li><li><p><strong><a href="https://dispatch.thorcollective.com/p/the-autonomous-soc-taylors-version">The Autonomous SOC (Taylor&#8217;s Version)</a></strong></p><p>The evolution towards an autonomous SOC is driven by the increasing complexity of cyber threats, the need for efficiency due to talent shortages, and the maturation of defensive AI. While automation is crucial, maintaining strong foundational processes and avoiding biases in AI training data are essential for success. The future of the SOC involves elevated roles for human analysts in proactive security, AI training, and business risk translation.</p><p><em>By Sydney Marrone and Kassandra Murphy</em></p></li><li><p><strong><a href="https://dispatch.thorcollective.com/p/the-peak-threat-hunting-template">The PEAK Threat Hunting Template You&#8217;ll Wish You Had Sooner</a></strong></p><p>The THOR Collective Dispatch provides a threat hunting template based on the PEAK Threat Hunting Framework, emphasizing the importance of structured documentation for collaborative, repeatable hunts. The template includes sections for scoping, queries, visualizations, detection logic, findings, response, lessons learned, and knowledge sharing, making it AI-friendly and versatile for current and future threat hunting efforts. Get the template from the Google Doc or GitHub to enhance your team&#8217;s skillset.</p><p><em>By Sydney Marrone</em></p></li><li><p><strong><a href="https://dispatch.thorcollective.com/p/purple-teaming-in-the-real-world">Purple Teaming in the Real World: When Everything Goes Off the Rails (and That&#8217;s Normal)</a></strong></p><p>Purple teaming rarely goes as planned, with delays, permissions issues, and unexpected blockers being common. Cybersecurity professionals should expect chaos, make buffer time, validate access early, break requests into small chunks, test in whatever order possible, and document blockers as findings to navigate real-world engagements effectively.</p><p><em>By John Grageda</em></p></li><li><p><strong><a href="https://dispatch.thorcollective.com/p/aligning-risk-management-and-threat-a55">Aligning Risk Management and Threat-Informed Defense Practices (Part 2)</a></strong></p><p>Aligning GRC with threat-informed defense practices can improve organizational cybersecurity by creating a proactive, holistic strategy. Combining compliance frameworks with threat knowledge can help organizations understand risks, implement controls, achieve compliance, and detect real-life attacks. Before integrating GRC with threat-informed defense, organizations need upper management support, honesty about maturity levels, and the right personnel and tools in place.</p><p><em>By Micah VanFossen</em></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WL0m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3d6621-45c4-4759-93c2-76c3a307d559_500x776.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WL0m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3d6621-45c4-4759-93c2-76c3a307d559_500x776.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WL0m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3d6621-45c4-4759-93c2-76c3a307d559_500x776.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WL0m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3d6621-45c4-4759-93c2-76c3a307d559_500x776.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WL0m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3d6621-45c4-4759-93c2-76c3a307d559_500x776.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WL0m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3d6621-45c4-4759-93c2-76c3a307d559_500x776.jpeg" width="500" height="776" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2d3d6621-45c4-4759-93c2-76c3a307d559_500x776.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:776,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WL0m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3d6621-45c4-4759-93c2-76c3a307d559_500x776.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WL0m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3d6621-45c4-4759-93c2-76c3a307d559_500x776.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WL0m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3d6621-45c4-4759-93c2-76c3a307d559_500x776.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WL0m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3d6621-45c4-4759-93c2-76c3a307d559_500x776.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Stay tuned for more thrunting wisdom next month!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Aligning Risk Management and Threat-Informed Defense Practices (Part 2)]]></title><description><![CDATA[We&#8217;re back with part two of a series analyzing how to align common GRC tasks/teams with SecOps and threat-informed defense practices.]]></description><link>https://dispatch.thorcollective.com/p/aligning-risk-management-and-threat-a55</link><guid isPermaLink="false">https://dispatch.thorcollective.com/p/aligning-risk-management-and-threat-a55</guid><dc:creator><![CDATA[Micah VanFossen]]></dc:creator><pubDate>Thu, 20 Nov 2025 15:45:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!PBoa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34571647-e203-485b-a571-7f730b207d6e_1080x625.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We&#8217;re back with part two of a series analyzing how to align common GRC tasks/teams with SecOps and threat-informed defense practices. In Part 1, which can be viewed <a href="https://dispatch.thorcollective.com/p/aligning-risk-management-and-threat">here</a>, we covered the<em> what</em> behind this concept. Quick overviews of the objectives for common GRC and threat-informed defense tasks were presented, along with information on MITRE ATT&amp;CK. In this blog we will dive into<em> why</em> siloed GRC/SecOps teams can harm organizational effectiveness, and <em>when</em> it makes sense for an organization to align these functions.</p><h4>Issues When Teams Are Siloed</h4><p>GRC can get a bad rap in security circles, at times it can be deserved. Unfortunately most GRC processes have not stayed up to date with current workflows. And many of us have heard the phrase &#8220;compliance  &#8800; security.&#8221; Look, no one wants to upload another screenshot of a setting or write paperwork in hopes one person will eventually look at it and give the thumbs up. But guess what, compliance teams hate it when the SecOps or CTI output looks like a bunch of random noise that can&#8217;t be used to verify anything. These teams speak different languages and have different goals. But, all hope is not lost. By aligning GRC and SecOps, creating common languages and goals, you&#8217;re teams can go from this</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PBoa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34571647-e203-485b-a571-7f730b207d6e_1080x625.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PBoa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34571647-e203-485b-a571-7f730b207d6e_1080x625.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PBoa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34571647-e203-485b-a571-7f730b207d6e_1080x625.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PBoa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34571647-e203-485b-a571-7f730b207d6e_1080x625.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PBoa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34571647-e203-485b-a571-7f730b207d6e_1080x625.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PBoa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34571647-e203-485b-a571-7f730b207d6e_1080x625.jpeg" width="1080" height="625" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/34571647-e203-485b-a571-7f730b207d6e_1080x625.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:625,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PBoa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34571647-e203-485b-a571-7f730b207d6e_1080x625.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PBoa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34571647-e203-485b-a571-7f730b207d6e_1080x625.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PBoa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34571647-e203-485b-a571-7f730b207d6e_1080x625.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PBoa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34571647-e203-485b-a571-7f730b207d6e_1080x625.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>To singing &#8220;you&#8217;ve got a friend in me.&#8221; In this manner these teams can work together to help the organization remain compliant, secure, and efficient.</p><p>It&#8217;s true that compliance probably won&#8217;t provide sufficient security if the business stops at meeting minimum requirements to check a box, pass an audit, or align with a standard. But, if compliance serves as a starting point toward a more mature security program, it can contribute to improving security.</p><p>And while it&#8217;s easy to point the finger at compliance, SecOps doesn&#8217;t get off the hook here. If lessons learned from incidents don&#8217;t feed back into governance, the same mistakes repeat because controls never change. Without a good understanding of all expected controls, it&#8217;s difficult to best judge where mitigations exist, or what constitutes a concerning alert that has bypassed those controls. If GRC and SecOps don&#8217;t share data, analysts are likely to miss the &#8220;so what?&#8221; of an incident.</p><h4>Why Align?</h4><p>We can all agree that cyber risks and threats continue to evolve and grow year over year, attempting to disrupt how we do things. With greater innovation and interconnectedness, has come greater opportunities for digital security to positively or negatively impact businesses. The key to staying ahead has come down to acting on intelligence. Which side can proactively anticipate the other, and make (or prevent) the next move?</p><p>During battle, the side with the most knowledge and strongest ability to act according to that knowledge often has the best odds of coming out on top. No soldier wants to be on the less informed side when lives are on the line. The same is true in the cyber realm. It has become increasingly clear that strategic, tactical, and operational intelligence is the greatest asset a defender can hold. Knowledge of self, knowledge of the enemy, and knowledge of how to use that information to gain an advantage (once again, is it even a cyber blog if Sun Tzu doesn&#8217;t appear?). For years, the approach to cyber has been reactive. Attempting to block or alert on IOCs (Indicators of Compromise) such as known-bad websites, files, or hashes. As the number of ransomware attacks and breaches continues to rise, it can be understood that this approach is lacking. IOCs can change on the dime, making it impossible to catch every IP or hash change (Pyramid of Pain joke, we want to inflict pain on the adversary, not on ourselves). The strategy of implementing defensive controls to keep out all cyber threats is also unrealistic and impractical. There are too many threats to defend against, too many alerts to analyze, and the costs associated with remaining uninformed keep growing. A reactive cybersecurity strategy will continue to cost organizations.</p><p>Now that we understand some of the frameworks at hand (ATT&amp;CK and RMF), why should an organization combine the two? What is the benefit of a risk managed and threat-informed defense?</p><p>The goal behind this strategy is to switch, (or as I like to think of it, level up) from the wishful (and very exhausting) compliance-driven strategy of doing the bare minimum to meet cybersecurity compliance requirements, and hoping to defend against every cyber threat that exists. The desired end state will be a proactive defense that uses the knowledge of dangerous threats which are specific and most relevant to the organization/industry to tailor and then test defensive controls against those adversary behaviors. Breaking down the GRC/TID silos can sync defensive teams, enabling larger strategic initiatives to be developed.</p><p>The issues with relying solely on risk management for security is that a compliance framework is incapable of changing at the speed that threats do. NIST 800-53 rev 4 was released in 2013. As of 2023, it was still the requirement for most RMF specific assessments. Finally now in 2025 most have migrated to rev 5, released ONLY 5 years ago (remember the days before AI, yeah way back then). The main problem with a compliance approach is that a compliant system is not by default also a secure system. Most systems that undergo a compliance validation process are never properly tested against the threats to that system. Screenshots don&#8217;t compare so well to command execution or lateral movement. Another issue in only using compliance metrics to measure security is that compliance frameworks are meant to provide a broad scale of security for a wide range of users, it is not specific to an organization&#8217;s needs. It is ultimately up to each organization to take action to become secure by knowing their threats and risks, and testing/validating that defenses protect against the threats that could bring them the most harm.</p><p>Control frameworks adequately addresses the reduction of risk through implementation of security controls, however, they do not take into consideration specific threats or threat actor behaviors/TTPs. Meanwhile, CTI and MITRE ATT&amp;CK is great for identifying threat behavior, but organizations will still need to act on that knowledge by implementing cyber defenses and controls.</p><p>A more effective cybersecurity posture can be achieved by combining the compliance framework with the knowledge found in ATT&amp;CK and CTI to create a holistic, risk-managed and threat-informed cyber defense strategy. The control framework creates a deep knowledge of self, while ATT&amp;CK/CTI grants knowledge of the adversary. Combined, they allow an organization to know the enemy, know security defenses, and act according to that knowledge to defend against the adversary, even before the adversary strikes.</p><p>When aligning GRC with threat-informed defense practices, an organization can create a proactive, holistic cyber defense strategy that:</p><ul><li><p>Knows the relevant risks and threats facing the organization (threat profile)</p></li><li><p>Identifies what has been done to reduce risk and mitigate known threat actor behavior</p></li><li><p>Verifies proper control implementation and coverage</p></li><li><p>Achieve compliance with validated defenses against known threats</p></li><li><p>Can detect and protect against real-life attacks</p></li><li><p>Locates issues and reduces potential impact prior to an attack</p></li><li><p>Uses intelligence to connect threats, risks, controls, and business objectives</p></li></ul><h4>WHEN</h4><p>So, we have identified that it is a good idea to combine governance, compliance, and risk management with threat knowledge, but how is it done well? When and where should an organization begin when combining these two frameworks into a defensive strategy?</p><p>The first step should be to receive upper management support. An effective roll-out of this process will require culture and procedural changes, and it needs to be supported from the top.</p><p>Next, an organization needs to be honest with their current maturity level. If you are still working to implement MFA, it&#8217;s probably not the time to be standing up a CTI function. Basics first, then focus on relevant threats and risks.</p><p>Anton Chuvakin wrote a fantastic piece on the challenges of operationalizing threat-informed defense. He listed out a few common problems within organizations who do not align strategies across teams. While the full blog can be found here: <a href="https://medium.com/mitre-engenuity/threat-informed-defense-is-hard-so-we-are-still-not-doing-it-31ae7b68955f">https://medium.com/mitre-engenuity/threat-informed-defense-is-hard-so-we-are-still-not-doing-it-31ae7b68955f</a>, a quick rundown is provided below.</p><ul><li><p><em>&#8220;To start, one can say that foundational levels of security are not and perhaps even should not be threat-centric. After all, much of basic security is just good engineering, no? Threat-informed defense should be built upon foundational cyber-hygiene.</em></p></li><li><p><em>Ironically, the &#8220;cyber-havenots&#8221; are less likely to practice threat-informed security while they are the ones who can benefit the most from focusing their scarce resources on threats that matter! Basics matter, but basics prioritized by real threats are better!</em></p></li><li><p><em>Poor quality of threat intel makes organizations unwilling and unable to make decisions off their collected threat data. Threat intelligence is often incomplete, inaccurate, or outdated, and this makes it difficult for organizations to make informed security decisions.</em></p></li><li><p><em>Outside of security, immature IT capabilities ruin threat-informed defense. If your IT asset management, change management, etc. are inflexible, silo&#8217;d, hostile to security, your defenses can probably only be static and unchanging.</em></p></li><li><p><em>Sometimes, the bridge from threat intelligence to security controls isn&#8217;t conceptualized, built or practiced. The organizations have threat intel in one bucket, and their security controls in another.</em></p></li><li><p><em>Organizations also lack the types of personnel that can turn threat knowledge into improved defenses or drive threat-informed changes to defense approaches they practice.</em></p></li><li><p><em>Compliance culture is focused on building static, auditor-proof defenses. A shift in security culture is often required to adopt a threat-informed approach and this is hard for many organizations, large or small.</em></p></li><li><p><em>Narrow use case around threats: organizations only practice threat-informed detection, but not the rest of security&#8221;</em></p></li></ul><p>So, we can see it takes personnel, culture, existing foundational levels of security and IT hygiene, and quality threat intelligence prior to finding value in deploying threat-informed or threat-centric defenses.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vGK6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56281edc-6b20-476d-8de4-855736aef16e_1030x446.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vGK6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56281edc-6b20-476d-8de4-855736aef16e_1030x446.png 424w, https://substackcdn.com/image/fetch/$s_!vGK6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56281edc-6b20-476d-8de4-855736aef16e_1030x446.png 848w, https://substackcdn.com/image/fetch/$s_!vGK6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56281edc-6b20-476d-8de4-855736aef16e_1030x446.png 1272w, https://substackcdn.com/image/fetch/$s_!vGK6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56281edc-6b20-476d-8de4-855736aef16e_1030x446.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vGK6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56281edc-6b20-476d-8de4-855736aef16e_1030x446.png" width="1030" height="446" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56281edc-6b20-476d-8de4-855736aef16e_1030x446.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:446,&quot;width&quot;:1030,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vGK6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56281edc-6b20-476d-8de4-855736aef16e_1030x446.png 424w, https://substackcdn.com/image/fetch/$s_!vGK6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56281edc-6b20-476d-8de4-855736aef16e_1030x446.png 848w, https://substackcdn.com/image/fetch/$s_!vGK6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56281edc-6b20-476d-8de4-855736aef16e_1030x446.png 1272w, https://substackcdn.com/image/fetch/$s_!vGK6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56281edc-6b20-476d-8de4-855736aef16e_1030x446.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here is my list of &#8220;must have&#8217;s&#8221; an organization absolutely will need before really jumping into the threat-informed defense + GRC game.</p><ul><li><p>Required or identified compliance framework that will act as the baseline</p></li><li><p>Some security / IT maturity (asset inventory, basic defensive engineering controls)</p></li><li><p>Logs, some type of SIEM / query capability</p></li><li><p>Detection (defend) capability, usually in the form of EDR/SIEM</p></li><li><p>Testing (attack) capability, this can be manual or via automated BAS tools</p></li><li><p>Identified attack chain(s) or atomic TTPs (relevant CTI)</p></li></ul><p>At this point, an organization will also need to identify a team or individual to manage threat-informed defense across the organization. This team needs to be given authority to make changes where necessary and shift the processes and tools that need to go or be modified. Ideally this would be a couple members from multiple teams (GRC, Detection Engineering/SecOps, CTI, Red Team).</p><p>Quick example, when looking at the Risk Management Framework, incorporating threat information would begin in step 2 (Select Controls) and continue throughout the life cycle of the system. When selecting controls, the organization should aim for that control to address both compliance requirements and prevent or detect adversary behavior. However, as adversaries change, so should defenses and controls. Maintaining up-to-date knowledge is integral to a threat-informed cyber defense.</p><p>Provided below are some questions to ask when getting started with threat-informed defense. These are by no means extensive, only serving as guidelines for identifying which techniques to focus on. It is highly encouraged to tailor questions to your specific organization and mission needs.</p><ul><li><p>What threat actors commonly target my industry?</p></li><li><p>What techniques are used by these groups?</p></li><li><p>What controls do we currently have in place?</p></li><li><p>What controls are we confident in, and which ones are we less certain of their effectiveness?</p></li><li><p>What are our crown jewels (business-critical functions, information, and systems) that we must protect?</p></li><li><p>Who are the stakeholders that require CTI and GRC outputs?</p></li></ul><p>I really enjoy the following graphic from Wirespeed (who was just recently purchased by Coalition, congrats to them) which depicts actions of security teams before and after the detection of an attack has occurred.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hfeZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8ae543a-3d1b-4540-9cd4-74d1fbfef9c4_1306x708.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hfeZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8ae543a-3d1b-4540-9cd4-74d1fbfef9c4_1306x708.png 424w, https://substackcdn.com/image/fetch/$s_!hfeZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8ae543a-3d1b-4540-9cd4-74d1fbfef9c4_1306x708.png 848w, https://substackcdn.com/image/fetch/$s_!hfeZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8ae543a-3d1b-4540-9cd4-74d1fbfef9c4_1306x708.png 1272w, https://substackcdn.com/image/fetch/$s_!hfeZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8ae543a-3d1b-4540-9cd4-74d1fbfef9c4_1306x708.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hfeZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8ae543a-3d1b-4540-9cd4-74d1fbfef9c4_1306x708.png" width="1306" height="708" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8ae543a-3d1b-4540-9cd4-74d1fbfef9c4_1306x708.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:708,&quot;width&quot;:1306,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hfeZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8ae543a-3d1b-4540-9cd4-74d1fbfef9c4_1306x708.png 424w, https://substackcdn.com/image/fetch/$s_!hfeZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8ae543a-3d1b-4540-9cd4-74d1fbfef9c4_1306x708.png 848w, https://substackcdn.com/image/fetch/$s_!hfeZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8ae543a-3d1b-4540-9cd4-74d1fbfef9c4_1306x708.png 1272w, https://substackcdn.com/image/fetch/$s_!hfeZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8ae543a-3d1b-4540-9cd4-74d1fbfef9c4_1306x708.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This graphic really helps to visualize the timeline of what occurs prior to detection, and then afterwards all the way through containment and post incident review.</p><p>In the next post we&#8217;ll discuss the<em> how to</em> and offer some ways an organization might approach integrating GRC with threat-informed defense. I&#8217;ll also share some free tools that can help with some of the processes, and finally take a look into<em> so what</em> could this really mean for an organization?</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Purple Teaming in the Real World: When Everything Goes Off the Rails (and That’s Normal)]]></title><description><![CDATA[People love the glossy version of purple teaming:]]></description><link>https://dispatch.thorcollective.com/p/purple-teaming-in-the-real-world</link><guid isPermaLink="false">https://dispatch.thorcollective.com/p/purple-teaming-in-the-real-world</guid><dc:creator><![CDATA[John Grageda]]></dc:creator><pubDate>Tue, 18 Nov 2025 13:45:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!okxp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8588ff4a-f57f-4057-a8c2-d4847b021d0c_796x363.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>People love the glossy version of purple teaming:<br>Everyone aligned, infrastructure ready, dates locked in, testing smooth, reporting clean.</p><p>Nice idea. Doesn&#8217;t happen.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Here&#8217;s how our latest adversarial emulation actually unfolded and why newer folks need to understand that this <em>kind of chaos is completely normal</em>.</p><h2><strong>We Started Strong</strong></h2><p>The red team and blue team were perfectly aligned going in. We defined:</p><ul><li><p>The TTPs that mattered</p></li><li><p>The logging and alerting gaps that the IR team was worried about</p></li><li><p>What we wanted to trigger</p></li><li><p>What we expected to at least show up in the logs</p></li><li><p>A timeline that seemed realistic</p></li><li><p>A clean RoE<br></p></li></ul><p>The engagement was mapped out months in advance.<br>Back at the start of the year, it all felt reasonable and well-planned.</p><p>And then reality stepped in.</p><h2><strong>The Delay Train Arrives</strong></h2><p>The infrastructure team got hit with a massive company-wide initiative. Completely unplanned when we originally scoped this project. They were already stretched thin, juggling priorities, and then here we come, asking them to build infrastructure in production for us.</p><p>They weren&#8217;t dragging their feet, they were overwhelmed.</p><p>So:</p><p><strong>Delay #1:</strong> Infrastructure didn&#8217;t get built on time.<br><strong>Delay #2:</strong> When it finally went live, we didn&#8217;t have permissions to do anything with it.<br><strong>Delay #3:</strong> Every new action revealed a new permission blocker, which meant a new ticket, and more waiting.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!okxp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8588ff4a-f57f-4057-a8c2-d4847b021d0c_796x363.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!okxp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8588ff4a-f57f-4057-a8c2-d4847b021d0c_796x363.png 424w, https://substackcdn.com/image/fetch/$s_!okxp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8588ff4a-f57f-4057-a8c2-d4847b021d0c_796x363.png 848w, https://substackcdn.com/image/fetch/$s_!okxp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8588ff4a-f57f-4057-a8c2-d4847b021d0c_796x363.png 1272w, https://substackcdn.com/image/fetch/$s_!okxp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8588ff4a-f57f-4057-a8c2-d4847b021d0c_796x363.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!okxp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8588ff4a-f57f-4057-a8c2-d4847b021d0c_796x363.png" width="796" height="363" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8588ff4a-f57f-4057-a8c2-d4847b021d0c_796x363.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:363,&quot;width&quot;:796,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!okxp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8588ff4a-f57f-4057-a8c2-d4847b021d0c_796x363.png 424w, https://substackcdn.com/image/fetch/$s_!okxp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8588ff4a-f57f-4057-a8c2-d4847b021d0c_796x363.png 848w, https://substackcdn.com/image/fetch/$s_!okxp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8588ff4a-f57f-4057-a8c2-d4847b021d0c_796x363.png 1272w, https://substackcdn.com/image/fetch/$s_!okxp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8588ff4a-f57f-4057-a8c2-d4847b021d0c_796x363.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>And here&#8217;s the part that stung a little:</p><p><strong>Every time we hit an infrastructure issue, we had to go back to the same infrastructure folks&#8230; again!</strong></p><p>We knew how slammed they were.<br>We knew how much was on their plate.<br>And every &#8220;hey, sorry, but we need one more thing&#8221; message felt like we were poking someone who was already juggling flaming chainsaws.</p><p>But we still had to ask because we still had a job to do.<br>We couldn&#8217;t test without access, and we couldn&#8217;t magically create permissions ourselves.</p><p>It was uncomfortable, but unavoidable.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QdB-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c11c992-8be4-4f7f-8a08-e8c3bce38955_886x500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QdB-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c11c992-8be4-4f7f-8a08-e8c3bce38955_886x500.png 424w, https://substackcdn.com/image/fetch/$s_!QdB-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c11c992-8be4-4f7f-8a08-e8c3bce38955_886x500.png 848w, https://substackcdn.com/image/fetch/$s_!QdB-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c11c992-8be4-4f7f-8a08-e8c3bce38955_886x500.png 1272w, https://substackcdn.com/image/fetch/$s_!QdB-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c11c992-8be4-4f7f-8a08-e8c3bce38955_886x500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QdB-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c11c992-8be4-4f7f-8a08-e8c3bce38955_886x500.png" width="886" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0c11c992-8be4-4f7f-8a08-e8c3bce38955_886x500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:886,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QdB-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c11c992-8be4-4f7f-8a08-e8c3bce38955_886x500.png 424w, https://substackcdn.com/image/fetch/$s_!QdB-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c11c992-8be4-4f7f-8a08-e8c3bce38955_886x500.png 848w, https://substackcdn.com/image/fetch/$s_!QdB-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c11c992-8be4-4f7f-8a08-e8c3bce38955_886x500.png 1272w, https://substackcdn.com/image/fetch/$s_!QdB-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c11c992-8be4-4f7f-8a08-e8c3bce38955_886x500.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>The &#8220;Test Whatever We Can Today&#8221; Phase</strong></h2><p>The engagement slowly turned into a buffet where we only got to eat whatever dishes happened to be available that day.</p><p>Do we have everything required to conduct this test case today? Cool, run it.<br>Are we missing something that prevents the test case from running? Add it to the ticket pile and pivot to something else.</p><p>It was messy.<br>It was non-linear.<br>It was the opposite of the beautiful timeline we had anticipated.</p><p>We eventually blew past our original deadline by almost two weeks! Not because anyone slacked, but because the environment simply wasn&#8217;t ready and everyone was stretched thin.</p><h2><strong>We Still Got the Work Done</strong></h2><p>Even with the chaos, things gradually came together.<br>Permissions started landing.<br>Infrastructure was stood up.<br>More pieces unlocked.</p><p>We ran every test case, just not in order, and definitely not smoothly.<br>But we ran them.<br>We found the visibility gaps.<br>We gave our incident response team a clear picture of where they were blind.</p><p>The engagement delivered real value. We just ended up taking the scenic route.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9W7L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c67dd22-6fcc-4ed9-9e6b-f54497e47b1e_894x1210.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9W7L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c67dd22-6fcc-4ed9-9e6b-f54497e47b1e_894x1210.png 424w, https://substackcdn.com/image/fetch/$s_!9W7L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c67dd22-6fcc-4ed9-9e6b-f54497e47b1e_894x1210.png 848w, https://substackcdn.com/image/fetch/$s_!9W7L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c67dd22-6fcc-4ed9-9e6b-f54497e47b1e_894x1210.png 1272w, https://substackcdn.com/image/fetch/$s_!9W7L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c67dd22-6fcc-4ed9-9e6b-f54497e47b1e_894x1210.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9W7L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c67dd22-6fcc-4ed9-9e6b-f54497e47b1e_894x1210.png" width="894" height="1210" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3c67dd22-6fcc-4ed9-9e6b-f54497e47b1e_894x1210.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1210,&quot;width&quot;:894,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9W7L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c67dd22-6fcc-4ed9-9e6b-f54497e47b1e_894x1210.png 424w, https://substackcdn.com/image/fetch/$s_!9W7L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c67dd22-6fcc-4ed9-9e6b-f54497e47b1e_894x1210.png 848w, https://substackcdn.com/image/fetch/$s_!9W7L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c67dd22-6fcc-4ed9-9e6b-f54497e47b1e_894x1210.png 1272w, https://substackcdn.com/image/fetch/$s_!9W7L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c67dd22-6fcc-4ed9-9e6b-f54497e47b1e_894x1210.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>If You&#8217;re New to This Field</strong></h2><p>Purple teaming rarely goes how you think it will.<br>Adversarial emulation is rarely clean.<br>Real orgs operate in real conditions. Shifting priorities, shared responsibilities, overloaded teams, surprise initiatives, and resource crunches.</p><p>You will run into:</p><ul><li><p>Permission issues</p></li><li><p>Missing infrastructure</p></li><li><p>Delays</p></li><li><p>Unexpected blockers</p></li><li><p>Competing priorities</p></li><li><p>People who want to help but literally don&#8217;t have the bandwidth</p></li><li><p>Test-case issues</p></li></ul><p>It&#8217;s not a failure.<br>It&#8217;s not a sign you&#8217;re doing something wrong.<br>It&#8217;s simply how these engagements work in the real world sometimes.</p><h2><strong>Ways to Make Future Engagements Hurt Less</strong></h2><p>We can&#8217;t control everything, but we can learn from it.</p><h3><strong>Build real buffer time</strong></h3><p>Not a few days. Actual buffer. Weeks!</p><h3><strong>Get access validated long before testing begins</strong></h3><p>If you&#8217;re touching the environment for the first time on Day 1, you&#8217;re already behind.</p><h3><strong>Break infra requests into small, digestible chunks</strong></h3><p>Make it easy for busy teams to help you.</p><h3><strong>Test in whatever order the environment allows</strong></h3><p>Forward momentum keeps things alive.</p><h3><strong>Document blockers as real findings</strong></h3><p>Permissions, missing agents, missing logs, they&#8217;re part of the engagement story.</p><h3><strong>Acknowledge that some delays are simply uncontrollable</strong></h3><p>When we planned this early in the year, no one knew a company-wide initiative would land on top of everything. Sometimes timing just works against you.</p><h2><strong>The Honest Part</strong></h2><p>This engagement was frustrating.<br>It was chaotic.<br>It forced constant adaptation.<br>And it wasn&#8217;t the sleek, well-oiled purple team machine people imagine.</p><p>But that&#8217;s real-world security.</p><p>Attackers don&#8217;t wait.<br>Infrastructure teams don&#8217;t magically clear their schedule.<br>And purple teams don&#8217;t get perfect conditions.</p><p>The value is in navigating the mess and still producing something meaningful on the other side.</p><p>If you&#8217;re newer to this work, just know:<br>It won&#8217;t always be smooth.<br>Sometimes it&#8217;s two weeks of &#8220;access denied&#8221; messages and a constant feeling of &#8220;sorry to bug you again&#8230;&#8221;</p><p>But the mission gets done and that&#8217;s what truly matters. Make sure to show the folks that are going above and beyond to help you with your engagement some recognition. Let their bosses know how awesome they are!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The PEAK Threat Hunting Template You'll Wish You Had Sooner]]></title><description><![CDATA[Because screenshots of queries aren&#8217;t documentation.]]></description><link>https://dispatch.thorcollective.com/p/the-peak-threat-hunting-template</link><guid isPermaLink="false">https://dispatch.thorcollective.com/p/the-peak-threat-hunting-template</guid><dc:creator><![CDATA[Sydney Marrone]]></dc:creator><pubDate>Thu, 13 Nov 2025 15:03:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!IAee!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b1b14e-dea4-4c5e-ad8b-e263b3ebdd43_500x542.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you&#8217;ve ever completed a great hunt and completely forgotten what you did two weeks later, this template is for you.</p><p>Maybe you pieced together queries across five tabs, made mental notes during a caffeine-fueled hyperfocus, and promised to write it up later. We&#8217;ve all been there.</p><p>But good hunts deserve better.<br>They deserve structure. They deserve documentation. They deserve to be repeatable, reviewable, and shareable.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>That&#8217;s why we built a threat hunting template grounded in the <a href="https://www.splunk.com/en_us/blog/security/peak-threat-hunting-framework.html">PEAK Threat Hunting Framework</a>. So your hunts don&#8217;t get lost in Slack threads, screenshots, or brain fog.</p><p>This template builds on ideas from our earlier posts,&nbsp;<em><a href="https://dispatch.thorcollective.com/p/ai-is-my-bestie">AI is My Bestie</a></em>&nbsp;and&nbsp;<em><a href="https://dispatch.thorcollective.com/p/agentic-threat-hunting-part-2">Agentic Threat Hunting, Part 2</a></em>, taking the next step toward structured, AI-ready documentation for threat hunters.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IAee!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b1b14e-dea4-4c5e-ad8b-e263b3ebdd43_500x542.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IAee!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b1b14e-dea4-4c5e-ad8b-e263b3ebdd43_500x542.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IAee!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b1b14e-dea4-4c5e-ad8b-e263b3ebdd43_500x542.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IAee!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b1b14e-dea4-4c5e-ad8b-e263b3ebdd43_500x542.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IAee!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b1b14e-dea4-4c5e-ad8b-e263b3ebdd43_500x542.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IAee!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b1b14e-dea4-4c5e-ad8b-e263b3ebdd43_500x542.jpeg" width="500" height="542" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b1b1b14e-dea4-4c5e-ad8b-e263b3ebdd43_500x542.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:542,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IAee!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b1b14e-dea4-4c5e-ad8b-e263b3ebdd43_500x542.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IAee!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b1b14e-dea4-4c5e-ad8b-e263b3ebdd43_500x542.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IAee!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b1b14e-dea4-4c5e-ad8b-e263b3ebdd43_500x542.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IAee!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b1b14e-dea4-4c5e-ad8b-e263b3ebdd43_500x542.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This template walks through the full threat hunting lifecycle using PEAK (Prepare, Execute, Act with Knowledge). It&#8217;s structured for real-world use: collaborative hunts, repeatable documentation, and clear readouts for SOC, IR, Threat Intel, and Detection Engineering.</p><blockquote><p><strong>Want a copy?<br>Click <a href="https://dispatch.thorcollective.com/p/the-peak-threat-hunting-template?open=false#%C2%A7want-a-copy">here</a> or scroll down to grab the full template below.</strong></p></blockquote><h2>What&#8217;s Inside</h2><ul><li><p><a href="https://dispatch.thorcollective.com/i/162796965/threat-hunting-report-peak-framework">Hunt Overview</a></p></li><li><p><a href="https://dispatch.thorcollective.com/i/162796965/prepare-define-the-hunt">PREPARE: Define the Hunt</a></p><ul><li><p><a href="https://dispatch.thorcollective.com/i/162796965/scoping-with-the-able-methodology">ABLE Methodology</a></p></li><li><p><a href="https://dispatch.thorcollective.com/i/162796965/related-tickets">Related Tickets</a></p></li><li><p><a href="https://dispatch.thorcollective.com/i/162796965/threat-intel-and-research">Threat Intel &amp; Research</a></p></li></ul></li><li><p><a href="https://dispatch.thorcollective.com/i/162796965/execute-run-the-hunt">EXECUTE: Run the Hunt</a></p><ul><li><p><a href="https://dispatch.thorcollective.com/i/162796965/initial-query">Initial &amp; Refined Queries</a></p></li><li><p><a href="https://dispatch.thorcollective.com/i/162796965/visualization-or-analytics">Visualizations or Analytics</a></p></li><li><p><a href="https://dispatch.thorcollective.com/i/162796965/detection-logic">Detection Logic</a></p></li></ul></li><li><p><a href="https://dispatch.thorcollective.com/i/162796965/act-findings-and-response">ACT: Findings &amp; Response</a></p><ul><li><p><a href="https://dispatch.thorcollective.com/i/162796965/executive-summary">Executive Summary</a></p></li><li><p><a href="https://dispatch.thorcollective.com/i/162796965/findings">Findings Table</a></p></li></ul></li><li><p><a href="https://dispatch.thorcollective.com/i/162796965/knowledge-lessons-learned-and-documentation">KNOWLEDGE: Lessons Learned &amp; Documentation</a></p><ul><li><p><a href="https://dispatch.thorcollective.com/i/162796965/adjustments-to-future-hunts">Adjustments to Future Hunts</a></p></li><li><p><a href="https://dispatch.thorcollective.com/i/162796965/sharing-knowledge-and-documentation">Sharing Knowledge &amp; Documentation</a></p></li><li><p><a href="https://dispatch.thorcollective.com/i/162796965/references">References</a></p></li></ul></li><li><p><a href="https://dispatch.thorcollective.com/i/162796965/ai-ready-hunts">AI Ready Hunts</a></p></li><li><p><a href="https://dispatch.thorcollective.com/i/162796965/want-a-copy">Download the Template</a></p></li></ul><div><hr></div><h2>Threat Hunting Report &#8211; PEAK Framework</h2><p><strong>Hunt ID:</strong> H/B/M-XXXX<br><em>(H for Hypothesis-driven, B for Baseline, M for Model-Assisted)</em></p><p><strong>Hunt Title:</strong><br><em>A concise, descriptive name for this hunt.</em></p><h3>PREPARE: Define the Hunt</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!orKv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acf58b0-37e1-47ca-994d-763a0cca36f9_1192x563.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!orKv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acf58b0-37e1-47ca-994d-763a0cca36f9_1192x563.png 424w, https://substackcdn.com/image/fetch/$s_!orKv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acf58b0-37e1-47ca-994d-763a0cca36f9_1192x563.png 848w, https://substackcdn.com/image/fetch/$s_!orKv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acf58b0-37e1-47ca-994d-763a0cca36f9_1192x563.png 1272w, https://substackcdn.com/image/fetch/$s_!orKv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acf58b0-37e1-47ca-994d-763a0cca36f9_1192x563.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!orKv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acf58b0-37e1-47ca-994d-763a0cca36f9_1192x563.png" width="1192" height="563" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7acf58b0-37e1-47ca-994d-763a0cca36f9_1192x563.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:563,&quot;width&quot;:1192,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:89472,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://dispatch.thorcollective.com/i/162796965?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acf58b0-37e1-47ca-994d-763a0cca36f9_1192x563.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!orKv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acf58b0-37e1-47ca-994d-763a0cca36f9_1192x563.png 424w, https://substackcdn.com/image/fetch/$s_!orKv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acf58b0-37e1-47ca-994d-763a0cca36f9_1192x563.png 848w, https://substackcdn.com/image/fetch/$s_!orKv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acf58b0-37e1-47ca-994d-763a0cca36f9_1192x563.png 1272w, https://substackcdn.com/image/fetch/$s_!orKv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acf58b0-37e1-47ca-994d-763a0cca36f9_1192x563.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>Scoping with the ABLE Methodology</strong></h4><p>Clearly define your hunt scope using the ABLE framework. Replace all placeholders (<code>[ ]</code>) with relevant details for your scenario.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KZi0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8702e1-0e71-47cc-aa0f-f0536f5932aa_1520x1033.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KZi0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8702e1-0e71-47cc-aa0f-f0536f5932aa_1520x1033.png 424w, https://substackcdn.com/image/fetch/$s_!KZi0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8702e1-0e71-47cc-aa0f-f0536f5932aa_1520x1033.png 848w, https://substackcdn.com/image/fetch/$s_!KZi0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8702e1-0e71-47cc-aa0f-f0536f5932aa_1520x1033.png 1272w, https://substackcdn.com/image/fetch/$s_!KZi0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8702e1-0e71-47cc-aa0f-f0536f5932aa_1520x1033.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KZi0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8702e1-0e71-47cc-aa0f-f0536f5932aa_1520x1033.png" width="1456" height="990" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e8702e1-0e71-47cc-aa0f-f0536f5932aa_1520x1033.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:990,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!KZi0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8702e1-0e71-47cc-aa0f-f0536f5932aa_1520x1033.png 424w, https://substackcdn.com/image/fetch/$s_!KZi0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8702e1-0e71-47cc-aa0f-f0536f5932aa_1520x1033.png 848w, https://substackcdn.com/image/fetch/$s_!KZi0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8702e1-0e71-47cc-aa0f-f0536f5932aa_1520x1033.png 1272w, https://substackcdn.com/image/fetch/$s_!KZi0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8702e1-0e71-47cc-aa0f-f0536f5932aa_1520x1033.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>Example ABLE Inputs</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Dcqt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb6cd5c-b17f-4108-b01f-6fbee42f4f6f_1774x659.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Dcqt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb6cd5c-b17f-4108-b01f-6fbee42f4f6f_1774x659.png 424w, https://substackcdn.com/image/fetch/$s_!Dcqt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb6cd5c-b17f-4108-b01f-6fbee42f4f6f_1774x659.png 848w, https://substackcdn.com/image/fetch/$s_!Dcqt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb6cd5c-b17f-4108-b01f-6fbee42f4f6f_1774x659.png 1272w, https://substackcdn.com/image/fetch/$s_!Dcqt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb6cd5c-b17f-4108-b01f-6fbee42f4f6f_1774x659.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Dcqt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb6cd5c-b17f-4108-b01f-6fbee42f4f6f_1774x659.png" width="1456" height="541" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/edb6cd5c-b17f-4108-b01f-6fbee42f4f6f_1774x659.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:541,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:164737,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://dispatch.thorcollective.com/i/162796965?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb6cd5c-b17f-4108-b01f-6fbee42f4f6f_1774x659.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Dcqt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb6cd5c-b17f-4108-b01f-6fbee42f4f6f_1774x659.png 424w, https://substackcdn.com/image/fetch/$s_!Dcqt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb6cd5c-b17f-4108-b01f-6fbee42f4f6f_1774x659.png 848w, https://substackcdn.com/image/fetch/$s_!Dcqt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb6cd5c-b17f-4108-b01f-6fbee42f4f6f_1774x659.png 1272w, https://substackcdn.com/image/fetch/$s_!Dcqt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb6cd5c-b17f-4108-b01f-6fbee42f4f6f_1774x659.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>Related Tickets </strong></h4><h4><strong>(detection coverage, previous incidents, etc.)</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!u_kh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95c6c812-a417-4d31-9e24-4fee1fa09261_3170x1342.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u_kh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95c6c812-a417-4d31-9e24-4fee1fa09261_3170x1342.png 424w, https://substackcdn.com/image/fetch/$s_!u_kh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95c6c812-a417-4d31-9e24-4fee1fa09261_3170x1342.png 848w, https://substackcdn.com/image/fetch/$s_!u_kh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95c6c812-a417-4d31-9e24-4fee1fa09261_3170x1342.png 1272w, https://substackcdn.com/image/fetch/$s_!u_kh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95c6c812-a417-4d31-9e24-4fee1fa09261_3170x1342.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!u_kh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95c6c812-a417-4d31-9e24-4fee1fa09261_3170x1342.png" width="1456" height="616" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/95c6c812-a417-4d31-9e24-4fee1fa09261_3170x1342.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:616,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!u_kh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95c6c812-a417-4d31-9e24-4fee1fa09261_3170x1342.png 424w, https://substackcdn.com/image/fetch/$s_!u_kh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95c6c812-a417-4d31-9e24-4fee1fa09261_3170x1342.png 848w, https://substackcdn.com/image/fetch/$s_!u_kh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95c6c812-a417-4d31-9e24-4fee1fa09261_3170x1342.png 1272w, https://substackcdn.com/image/fetch/$s_!u_kh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95c6c812-a417-4d31-9e24-4fee1fa09261_3170x1342.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>Threat Intel &amp; Research</strong></h4><ul><li><p><strong>MITRE ATT&amp;CK Tactics, Techniques, &amp; Procedures (TTPs):</strong></p><ul><li><p>TAxxxx - Tactic Name</p></li><li><p><code>Txxxx </code>- <code>Technique Name</code></p></li></ul></li><li><p><strong>Related Reports, Blogs, or Threat Intel Sources:</strong></p><ul><li><p><code>[Link]</code></p></li><li><p><code>[Reference]</code></p></li></ul></li><li><p><strong>Historical Prevalence &amp; Relevance:</strong></p><ul><li><p><em>(Has this been observed before in your environment? Are there any detections/mitigations for this activity already in place?)</em></p></li></ul></li></ul><h3>EXECUTE: Run the Hunt</h3><h4><strong>Hunting Queries</strong></h4><p><em>(Document queries for Splunk, Sigma, KQL, or another query language to execute the hunt. Capture any adjustments made during analysis and iterate on findings.)</em></p><h4><strong>Initial Query</strong></h4><pre><code><code>index=thrunt sourcetype=linux:audit "sudo" OR "pkexec" 
| stats count by user, command, parent_process</code></code></pre><ul><li><p><strong>Notes:</strong></p><ul><li><p>Did this query return expected results?</p></li><li><p>Were there false positives or gaps?</p></li><li><p>How did you refine the query based on findings?</p></li></ul></li></ul><h4><strong>Refined Query (if applicable)</strong></h4><pre><code><code>index=thrunt sourcetype=linux:audit "sudo" OR "pkexec" 
| stats count by user, command, parent_process, _time 
| sort - _time</code></code></pre><ul><li><p><strong>Rationale for Refinement:</strong></p><ul><li><p>Added <code>_time</code> for better event sequencing.</p></li><li><p>Applied <code>sort</code> to identify patterns in privilege escalation attempts.</p></li></ul></li></ul><h4><strong>Visualization or Analytics</strong></h4><p><em>(Describe any dashboards, anomaly detection methods, or visualizations used. Capture observations and note whether visualizations revealed additional insights. <strong>Add screenshots!</strong>)</em></p><ul><li><p><strong>Examples:</strong></p><ul><li><p>Time-series charts to detect activity spikes</p></li><li><p>Heatmaps of unusual application installs</p></li></ul></li></ul><h4><strong>Detection Logic</strong></h4><p><em>(How would this be turned into a detection rule? Thresholds, tuning considerations, etc.)</em></p><ul><li><p><strong>Initial Detection Criteria:</strong></p><ul><li><p>What conditions would trigger an alert?</p></li><li><p>Are there threshold values that indicate malicious activity?</p></li></ul></li><li><p><strong>Refinements After Review:</strong></p><ul><li><p>Did certain legitimate activities cause false positives?</p></li><li><p>How can you tune the rule to focus on real threats?</p></li></ul></li></ul><h4><strong>Capturing Your Analysis &amp; Iteration</strong></h4><ul><li><p><strong>Summarize insights gained from each query modification and visualization.</strong></p></li><li><p><strong>Reiterate key findings:</strong></p><ul><li><p>Did this query lead to any findings, false positives, or security incidents?</p></li><li><p>If this hunt were repeated, what changes should be made?</p></li><li><p>Does this hunt generate ideas for additional hunts?</p></li></ul></li><li><p><strong>Document the next steps for refining queries for detections and other outputs.</strong></p></li></ul><h3>ACT: Findings &amp; Response</h3><h4><strong>Hunt Review Template</strong></h4><h4><strong>Hypothesis / Topic</strong></h4><p><em>(Restate the hypothesis and topic of the investigation.)</em></p><h4><strong>Executive Summary</strong></h4><blockquote><p><strong>Key Points:</strong></p><ul><li><p>3-5 sentences summarizing the investigation.</p></li><li><p>Indicate whether the hypothesis was proved or disproved.</p></li><li><p>Summarize the main findings (e.g., "We found..., we did not find..., we did not find... but we did find...").</p></li></ul></blockquote><h4><strong>Findings</strong></h4><p><em>(Summarize key results, including any unusual activity.)</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bslG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d48bd32-2beb-4eca-a884-36846263e69d_2786x1464.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bslG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d48bd32-2beb-4eca-a884-36846263e69d_2786x1464.png 424w, https://substackcdn.com/image/fetch/$s_!bslG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d48bd32-2beb-4eca-a884-36846263e69d_2786x1464.png 848w, https://substackcdn.com/image/fetch/$s_!bslG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d48bd32-2beb-4eca-a884-36846263e69d_2786x1464.png 1272w, https://substackcdn.com/image/fetch/$s_!bslG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d48bd32-2beb-4eca-a884-36846263e69d_2786x1464.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bslG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d48bd32-2beb-4eca-a884-36846263e69d_2786x1464.png" width="1456" height="765" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2d48bd32-2beb-4eca-a884-36846263e69d_2786x1464.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:765,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:524302,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://dispatch.thorcollective.com/i/162796965?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d48bd32-2beb-4eca-a884-36846263e69d_2786x1464.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bslG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d48bd32-2beb-4eca-a884-36846263e69d_2786x1464.png 424w, https://substackcdn.com/image/fetch/$s_!bslG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d48bd32-2beb-4eca-a884-36846263e69d_2786x1464.png 848w, https://substackcdn.com/image/fetch/$s_!bslG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d48bd32-2beb-4eca-a884-36846263e69d_2786x1464.png 1272w, https://substackcdn.com/image/fetch/$s_!bslG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d48bd32-2beb-4eca-a884-36846263e69d_2786x1464.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>KNOWLEDGE: <strong>Lessons Learned &amp; Documentation</strong></h3><h4><strong>Adjustments to Future Hunts</strong></h4><ul><li><p>What worked well?</p></li><li><p>What could be improved?</p></li><li><p>Should this hunt be automated as a detection?</p></li><li><p>Are there any follow-up hunts that should be conducted?</p></li><li><p>What feedback should be shared with other teams (SOC, IR, Threat Intel, Detection Engineering, etc.)?</p></li></ul><h4><strong>Sharing Knowledge &amp; Documentation</strong></h4><p><em>(Ensure insights from this hunt are shared with the broader security team to improve future hunts and detections.)</em></p><ul><li><p><strong>Knowledge Base (KB) Articles</strong></p><ul><li><p>Write an internal KB article that captures:</p><ul><li><p>The hunt's objective, scope, and key findings</p></li><li><p>Any detection logic or rule improvements</p></li><li><p>Lessons learned that are relevant for future hunts or incident response</p></li></ul></li><li><p>Document newly uncovered insights or patterns that could benefit SOC, IR, or Detection Engineering teams, especially anything that could inform future detections, playbooks, or tuning decisions.</p></li></ul></li><li><p><strong>Threat Hunt Readouts</strong></p><ul><li><p>Schedule a readout with SOC, IR, and Threat Intel teams.</p></li><li><p>Present key findings and suggested improvements to detections.</p></li></ul></li><li><p><strong>Reports &amp; External Sharing</strong></p><ul><li><p>Publish findings in an internal hunt report.</p></li><li><p>Share relevant insights with stakeholders, vendors, or industry communities if applicable.</p></li></ul></li></ul><h4><strong>References</strong></h4><ul><li><p>[Insert link to related documentation, reports, or sources]</p></li><li><p>[Insert link to any external references or articles]</p></li></ul><h2><strong>AI Ready Hunts</strong></h2><p>One of the most powerful parts of this template is that it is not just for humans. It is AI friendly. In <a href="https://dispatch.thorcollective.com/p/agentic-threat-hunting-part-2">Agentic Threat Hunting, Part 2</a>, I argued the first step toward agentic hunting is not plugging AI directly into Splunk, it is giving it memory. When your PEAK hunts live in structured markdown in a GitHub repo with an AGENTS.md, they become something AI can actually learn from. AI can summarize hunts, suggest query variants, map to ATT&amp;CK, or even generate new hypotheses. That makes this template versatile. It is useful for your team today and it is fuel for your AI bestie tomorrow.</p><h2>Want a Copy?</h2><p>Whether you&#8217;re documenting a YOLO hunt postmortem or building a hunting playbook from scratch, this template is here to help you do it on purpose. And because it&#8217;s structured, you can throw it into AI and get support on summarizing, remixing, or scaling your hunts. That&#8217;s what makes it versatile: useful now, and ready for the next wave of <a href="https://dispatch.thorcollective.com/p/the-agentic-threat-hunter">agentic hunting</a>.</p><blockquote><p><strong>You can <a href="https://docs.google.com/document/d/1EG8tRPJKFJhmHB1dmH4VgXc2HA1PU6YzywIicaisYr0/edit?usp=sharing">grab the template as a Google Doc here</a> or from our <a href="https://github.com/THORCollective/HEARTH/blob/main/Kindling/PEAK-Template.md">GitHub</a> to adapt it for your team.</strong></p></blockquote><p>Try it on your next hunt.<br>Share how you adapted it.<br>Tag us or drop a comment below!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rzh3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa935271a-26a8-46cb-a144-550e022a811b_723x500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rzh3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa935271a-26a8-46cb-a144-550e022a811b_723x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rzh3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa935271a-26a8-46cb-a144-550e022a811b_723x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rzh3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa935271a-26a8-46cb-a144-550e022a811b_723x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rzh3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa935271a-26a8-46cb-a144-550e022a811b_723x500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rzh3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa935271a-26a8-46cb-a144-550e022a811b_723x500.jpeg" width="723" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a935271a-26a8-46cb-a144-550e022a811b_723x500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:723,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rzh3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa935271a-26a8-46cb-a144-550e022a811b_723x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rzh3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa935271a-26a8-46cb-a144-550e022a811b_723x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rzh3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa935271a-26a8-46cb-a144-550e022a811b_723x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rzh3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa935271a-26a8-46cb-a144-550e022a811b_723x500.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Stay curious and happy thrunting! &#128015;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://dispatch.thorcollective.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">THOR Collective Dispatch is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>