<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[The AI SOC Analyst]]></title><description><![CDATA[The AI SOC Analyst]]></description><link>https://anveshtheaisocanalyst.hashnode.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1593680282896/kNC7E8IR4.png</url><title>The AI SOC Analyst</title><link>https://anveshtheaisocanalyst.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 00:56:42 GMT</lastBuildDate><atom:link href="https://anveshtheaisocanalyst.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Why Single-Layer LLM Triage Is Dangerous in a SOC — And the Architecture I'm Building to Prevent It]]></title><description><![CDATA[Published on Hashnode | Anvesh Raju Vishwaraju | June 2026
I came across an article recently that genuinely surprised me. Not because the topic was new to me — but because someone at the same educatio]]></description><link>https://anveshtheaisocanalyst.hashnode.dev/why-single-layer-llm-triage-is-dangerous-in-a-soc-and-the-architecture-i-m-building-to-prevent-it</link><guid isPermaLink="true">https://anveshtheaisocanalyst.hashnode.dev/why-single-layer-llm-triage-is-dangerous-in-a-soc-and-the-architecture-i-m-building-to-prevent-it</guid><category><![CDATA[llm]]></category><category><![CDATA[llm security]]></category><category><![CDATA[LLM training]]></category><category><![CDATA[SOC]]></category><category><![CDATA[AI]]></category><category><![CDATA[rc4]]></category><category><![CDATA[kerberoasting]]></category><category><![CDATA[AES Encryption]]></category><dc:creator><![CDATA[Anvesh Vishwaraju]]></dc:creator><pubDate>Wed, 03 Jun 2026 06:31:42 GMT</pubDate><content:encoded><![CDATA[<p>Published on Hashnode | Anvesh Raju Vishwaraju | June 2026</p>
<p>I came across an article recently that genuinely surprised me. Not because the topic was new to me — but because someone at the same education level, building the same kind of thing, had the exact same thought I did: what happens when you feed real SIEM alerts to an LLM and ask it to think like a Tier 1 analyst?</p>
<p>Durga Sai Sri Ramireddy — MS Cybersecurity at University of Houston — published a detailed writeup about building an AI-powered SOC triage pipeline using Claude API.</p>
<p>38 real alerts. Kerberoasting, AS-REP Roasting, lateral movement via CrackMapExec. <strong>The AI got 37 out of 38 right</strong>. But the one it got wrong told the whole story.</p>
<p>The Failure That Matters In test case 003, Durga fed the LLM an alert that looked like Kerberoasting on the surface — real account, real event code (4769), real SPN format. The only difference was the encryption type: 0x12 — AES-256. The strongest, most modern Kerberos encryption. Normal traffic. Not an attack. The AI returned:</p>
<p><mark class="bg-yellow-200 dark:bg-yellow-500/30">Severity: High</mark></p>
<p><mark class="bg-yellow-200 dark:bg-yellow-500/30">Verdict: Likely True Positive</mark></p>
<p><mark class="bg-yellow-200 dark:bg-yellow-500/30">Escalate: True</mark></p>
<p>And in its analyst notes, it wrote:</p>
<p>"RC4 encryption type (0x12) is a key indicator..."</p>
<p>0x12 is AES. Not RC4. RC4 is 0x17 — the actual Kerberoasting signature. The model had the mapping completely backwards. And it stated it with High confidence. No hedging. No uncertainty. Just a wrong answer delivered like a fact.</p>
<h2><strong>What Is an LLM Hallucination ?</strong></h2>
<p>Simply Put An LLM hallucination is when an AI confidently makes up information that sounds completely real. Not random nonsense. Not obviously wrong. Something that fits the pattern of what a correct answer would look like — but is factually incorrect at a specific technical detail. This is the scariest kind of wrong answer in a security context. Because it doesn't look wrong. It looks like analysis. It reads like an experienced analyst wrote it. And if you trust it without verifying — you escalate a false positive, waste 30 minutes investigating normal Kerberos traffic, and slowly start losing faith in the system. Alert fatigue starts with one too many false escalations. And one hallucinated high-confidence verdict is one too many.</p>
<h2><strong>Why This Happens ? - The Real Reason</strong></h2>
<p>Language models don't check facts. They complete patterns. When the AI saw the test-003 alert — correct EventCode, real account name, real SPN format — it started building toward a Kerberoasting verdict. The surrounding context was too convincing. By the time it hit the encryption type field, it was already pattern-completing toward a Kerberoasting conclusion. So it rationalized 0x12 as the attack indicator — because that's what fit the narrative it was already constructing. This is the actual failure mode of LLMs in security contexts.</p>
<p>Not hallucinating IP addresses into empty fields — the model handled that fine. The failure happens when partial data fits a plausible pattern and the model fills in the specific technical detail incorrectly. The confidence score doesn't tell you which situation you're in. That's the part that makes it dangerous.</p>
<p>"This failure mode is exactly what I'm designing around in my AEGIS Platform — specifically the AEGIS Alert Triage Engine inside CyberSentinel AI, which I'm actively building right now. A single-layer LLM approach has one point of failure. Whatever the model gets wrong, you get wrong. There's nothing catching it before the analyst sees it. So I'm building three layers. Each one catches what the previous one can't."</p>
<p><mark class="bg-yellow-200 dark:bg-yellow-500/30">"If you're working in detection engineering or SOC operations — I'd genuinely love feedback on this architecture before I finalize the implementation. What would you add to Layer 1?"</mark></p>
<h3><strong>Layer 1 — Rule-Based Suppression</strong></h3>
<p>Deterministic. No ML. No LLM.</p>
<p>Just Python dictionaries and lookup tables.</p>
<p>python - snippet:</p>
<p><code>KERBEROS_ENCRYPTION_TYPES = {</code></p>
<p><code>"0x17": {</code></p>
<p><code>"name": "RC4-HMAC",</code></p>
<p><code>"suspicious": True,</code></p>
<p><code>"reason": "Kerberoasting indicator — RC4 downgrade attack"</code></p>
<p><code>},</code></p>
<p><code>"0x12": {</code></p>
<p><code>"name": "AES-256",</code></p>
<p><code>"suspicious": False,</code></p>
<p><code>"reason": "Normal modern Kerberos — not an attack indicator"</code></p>
<p><code>},</code></p>
<p><code>"0x11": {</code></p>
<p><code>"name": "AES-128",</code></p>
<p><code>"suspicious": False,</code></p>
<p><code>"reason": "Normal modern Kerberos"</code></p>
<p><code>},</code></p>
<p><code>}</code></p>
<p>The test-003 alert never reaches the LLM with an ambiguous encryption type. Layer 1 looks up 0x12, finds AES-256, marks it not suspicious, and the alert is classified as a likely false positive before any language model is involved.</p>
<p>No hallucination possible. The classification is deterministic.</p>
<p>Layer 1 also handles known false positive patterns — scheduled tasks that always fire, service accounts doing routine authentication, backup software generating process creation events at 2am. These patterns are whitelisted. The LLM never sees them. Analyst never sees them either.</p>
<h3><strong>Layer 2 — Random Forest ML Scoring</strong></h3>
<p>For alerts that pass Layer 1, a Random Forest classifier trained on historical alert dispositions gives each one a confidence score from 0 to 100.</p>
<p>The training data comes from real analyst decisions — every time an analyst marks an alert as True Positive, False Positive, or Requires Investigation, that decision gets added to the training set. Over time the model learns what genuine attacks look like in that specific environment.</p>
<p>An AES-encrypted Kerberos ticket from a SQL Server SPN requested from a known server IP at a normal time of day — scores LOW. Because that's exactly what months of normal domain traffic looks like in the training data.</p>
<p>The ML model doesn't reason. It doesn't pattern-complete. It scores based on statistical proximity to known good and known bad. That's a fundamentally different kind of intelligence — and for this specific task, it's more reliable than language model reasoning.</p>
<h3><strong>Layer 3 — LLM Reasoning via RAG</strong></h3>
<p>Only alerts that Layer 1 and Layer 2 can't confidently classify reach the LLM.</p>
<p>By the time an alert gets here it already has:</p>
<p><mark class="bg-yellow-200 dark:bg-yellow-500/30">A rule-based classification from Layer 1</mark></p>
<p><mark class="bg-yellow-200 dark:bg-yellow-500/30">An ML confidence score from Layer 2</mark></p>
<p><mark class="bg-yellow-200 dark:bg-yellow-500/30">Contextual flags from both layers</mark></p>
<p>The LLM's job is not to make the primary verdict. It's to explain and contextualise — to write the analyst-facing summary, suggest next steps, and flag what additional data would confirm or rule out the threat.</p>
<p>And crucially — it queries CyberSage, my RAG knowledge base over MITRE ATT&amp;CK, NIST CSF, and CIS Controls — before generating any output. So even if the LLM would naturally pattern-complete toward a wrong answer, the RAG retrieval grounds it in verified technical documentation first.</p>
<p>The encryption type mapping is in the knowledge base. 0x17 = RC4 = Kerberoasting indicator. 0x12 = AES-256 = normal. The LLM reads that before it reasons. It doesn't have to remember from training weights. It retrieves from a verified source.</p>
<h2><strong>What the Triage Output Looks Like ?</strong></h2>
<p>Every alert that goes through the AEGIS Alert Triage Engine produces a structured JSON output:</p>
<p><code>{</code></p>
<p><code>"severity": "High",</code></p>
<p><code>"verdict": "True Positive",</code></p>
<p><code>"mitre_tactic": "TA0006 - Credential Access",</code></p>
<p><code>"mitre_technique": "T1558.003 - Kerberoasting", "false_positive_probability": 8,</code></p>
<p><code>"escalate": true,</code></p>
<p><code>"escalation_reason": "RC4 encryption on user-named SPN — offline cracking likely",</code></p>
<p><code>"recommended_next_steps": [</code></p>
<p><code>"Check source host for Rubeus or Invoke-Kerberoast",</code></p>
<p><code>"Verify if SPN account has privileged access",</code></p>
<p><code>"Reset SPN account password with 25+ char random string"</code></p>
<p><code>],</code></p>
<p><code>"analyst_notes": "RC4 (0x17) confirmed via rule-based lookup — not LLM inference. ML score: 91/100. High confidence true positive.",</code></p>
<p><code>"triage_layer": "ML + LLM",</code></p>
<p><code>"layer1_result": "Not suppressed — 0x17 flagged as suspicious", "layer2_score": 91</code></p>
<p><code>}</code></p>
<p>The analyst notes field tells the analyst exactly which layer made the classification and how confident each layer was. Full transparency. No black box.</p>
<h2><strong>The Comparison Dashboard</strong></h2>
<p><em>"I'm also designing an AI vs Analyst comparison dashboard into the SOC Forge environment — same concept Durga implemented, but with a few additions I think make it significantly more useful:</em></p>
<p><em>— BFSI context — every alert will show the FinSecure business impact and the specific regulatory implication under RBI CSCRF or CERT-In</em></p>
<p><em>— Layer breakdown — which of the 3 layers classified the alert, the confidence score from each layer, and why</em></p>
<p><em>— ServiceNow integration — the Save button creates the actual incident ticket automatically, not just a local record</em></p>
<p><em>— Training data capture — analyst dispositions feed back into the Random Forest model so the system learns from every disagreement</em></p>
<p><em>The comparison dashboard isn't just for evaluation. That's actually the part I'm most interested in building — the feedback loop. Every time an analyst disagrees with the AI verdict and explains why, that becomes training data. Over time the ML layer improves. The false positive rate goes down. The analyst queue gets cleaner.</em></p>
<p><em>That feedback loop is what turns a triage tool into a learning system. And that's what I want AEGIS to be — not a tool you deploy and forget, but one that gets better the more your team uses it.</em></p>
<p><em>I'm building this now. If you've built something similar — I'd genuinely like to know how you handled the training data quality problem. How do you make sure analyst disagreements are meaningful signal and not just noise?"</em></p>
<p>The comparison isn't just for evaluation. It's how the system gets smarter. Every time an analyst disagrees with the AI verdict and explains why — that's training data. Over time the ML layer improves. The false positive rate goes down. The analyst queue gets cleaner.</p>
<p>That feedback loop is what turns a triage tool into a learning system.</p>
<h2>What This Achieves ?</h2>
<p>Hartono et al. (2024), published in IJMRAI, demonstrated that AI-augmented UEBA in SIEM systems reduced false positives by 40% and cut incident triage time by 78% compared to rule-based SIEM alone. That's my benchmark target.</p>
<p>The 3-layer architecture is designed to exceed it — because it combines rule-based precision (no hallucination on known patterns), ML pattern recognition (environment-specific learning), and LLM reasoning (contextualisation for genuinely ambiguous alerts).</p>
<p>Each layer has a different failure mode. The combination covers what any single layer misses.</p>
<h2>The Lesson</h2>
<p>Durga's article ended with this:</p>
<blockquote>
<p><em>"Someone has to know that 0x17 is RC4 and 0x12 is AES and why that distinction determines whether you escalate or close the ticket. That person is the analyst. The AI is the tool."</em></p>
</blockquote>
<p>I agree with that completely. But I'd add one thing:</p>
<p>The architecture should also know. Before the LLM ever sees the alert. Before the analyst ever sees the verdict.</p>
<p>That's what Layer 1 is for.</p>
<h2><strong>What I'm Building ?</strong></h2>
<p>This triage engine is one component of AEGIS — an open-source AI-augmented security operations platform I'm building for Indian BFSI institutions. The full platform includes a behavioral EDR agent, Splunk-based SIEM, NLP threat intelligence engine, and the LLM analyst copilot that houses this triage engine.</p>
<p>Every architectural decision is backed by peer-reviewed research. Every component is designed so the AI assists the analyst — not replaces them.</p>
<p>The full platform is dropping on GitHub soon.</p>
<p><em><mark class="bg-yellow-200 dark:bg-yellow-500/30">If you're working in detection engineering, blue team, or SOC operations — I'd love your feedback on the architecture. What would you add to Layer 1? What patterns do you see in your environment that a rule-based suppression layer should know about?</mark></em></p>
<p><em>Anvesh Raju Vishwaraju | MS Cybersecurity — UNC Charlotte</em></p>
<p><em>Building AEGIS — open-source AI-SOC platform for Indian BFSI</em></p>
<p><em>GitHub:</em> <em>github.com/its-me-anvesh-var</em></p>
<p><em>LinkedIn:</em> <em>linkedin.com/in/arv007</em></p>
<h2>References</h2>
<ol>
<li><p>Durga Sai Sri Ramireddy (2026). I Built an AI-Powered SOC Triage Pipeline and Caught a Hallucination in the Process. Medium. <a href="https://durgaramireddy.medium.com/ai-soc-triage-claude-api-hallucination-e2d2b444ab30">https://durgaramireddy.medium.com/ai-soc-triage-claude-api-hallucination-e2d2b444ab30</a></p>
</li>
<li><p>Hartono et al. (2024). Enhancing User and Entity Behavior Analytics in SIEM Systems Using AI-Powered Anomaly Detection. IJMRAI. — F1-score 0.90, 40% false positive reduction, 78% triage time reduction.</p>
</li>
<li><p>Al-Shehari et al. (2023). Insider Threat Detection Model Using Anomaly-Based Isolation Forest Algorithm. IEEE Access, 11, 118170–118185.</p>
</li>
<li><p>(2025). Large Language Models for Security Operations Centers: A Comprehensive Survey. arXiv:2509.10858.</p>
</li>
<li><p>Gupta et al. (2024). A Comprehensive Survey of Retrieval-Augmented Generation (RAG). arXiv:2410.12837.</p>
</li>
</ol>
]]></content:encoded></item><item><title><![CDATA[Why LLMs Hallucinate on MITRE ATT&CK — And How RAG Fixes It
]]></title><description><![CDATA[The Problem
Ask any frontier LLM "what sub-techniques fall under T1078 — Valid Accounts?" and you'll get a confident, detailed answer. You'll also get things that are wrong. Not because the model is u]]></description><link>https://anveshtheaisocanalyst.hashnode.dev/why-llms-hallucinate-on-mitre-att-ck-and-how-rag-fixes-it</link><guid isPermaLink="true">https://anveshtheaisocanalyst.hashnode.dev/why-llms-hallucinate-on-mitre-att-ck-and-how-rag-fixes-it</guid><category><![CDATA[llm]]></category><category><![CDATA[mitre-attack]]></category><category><![CDATA[RAG ]]></category><dc:creator><![CDATA[Anvesh Vishwaraju]]></dc:creator><pubDate>Fri, 22 May 2026 05:42:00 GMT</pubDate><content:encoded><![CDATA[<p><strong>The Problem</strong></p>
<p>Ask any frontier LLM "what sub-techniques fall under T1078 — Valid Accounts?" and you'll get a confident, detailed answer. You'll also get things that are wrong. Not because the model is unintelligent — because MITRE ATT&amp;CK is a living document updated quarterly, and the model's training data has incomplete, inconsistent coverage of its specific taxonomy.</p>
<p>This is the knowledge grounding problem. And in security operations, hallucinated answers have consequences.</p>
<p><strong>The RAG Solution</strong></p>
<p>Retrieval-Augmented Generation, introduced by Lewis et al. at NeurIPS 2020, addresses this by separating retrieval from generation. Instead of asking the model to recall from parametric memory, you retrieve the relevant document chunk at query time and include it in the context window. The model generates from evidence, not memory.</p>
<p>The architecture has three components: a document store, an embedding model, and an LLM. Documents are chunked and embedded into a vector space. At query time, the question is embedded using the same model, and the nearest chunks by cosine similarity are retrieved. Those chunks form the context for the LLM.</p>
<p><strong>Implementation Decisions</strong></p>
<p>For the embedding model I chose sentence-transformers/all-MiniLM-L6-v2 — 384-dimensional dense vectors, lightweight enough to run on CPU, with strong performance on semantic similarity tasks. The SBERT paper (Reimers &amp; Gurevych, 2019) demonstrates that bi-encoder architectures like this outperform cross-encoders for retrieval at scale due to the ability to pre-compute document embeddings.</p>
<p>For the vector store I chose ChromaDB over FAISS or Pinecone. The key constraint was privacy — a SOC analyst querying sensitive incident data should have that data stay on-premise. ChromaDB persists locally with zero infrastructure dependency.</p>
<p>The chunking strategy used RecursiveCharacterTextSplitter with 800-token chunks and 100-token overlap. The overlap is critical — it prevents information loss at chunk boundaries, where a technique description might span a split point.</p>
<p><strong>Measuring Retrieval Quality</strong></p>
<p>I evaluated precision across 50 manually labelled test queries spanning all three frameworks — MITRE ATT&amp;CK, NIST CSF, and CIS Controls. With top-k=5, precision was 85%. The primary failure mode was cross-framework contamination: a query about MITRE lateral movement techniques occasionally retrieved NIST CSF chunks because of surface-level keyword overlap around terms like "network" and "access."</p>
<p>The fix was metadata source filtering — restricting retrieval to a specific framework when the query intent is framework-specific. This brought precision on MITRE-specific queries to 91%.</p>
<p><strong>The Hallucination Guard</strong></p>
<p>Every response includes a lightweight confidence check. If the generated answer substantially exceeds the length of the retrieved context, it signals the model went beyond what was grounded. The model is also prompted to explicitly acknowledge when context is insufficient. In production, a more rigorous approach would embed both answer and context and measure cosine similarity — but the heuristic reliably catches the most common failure mode.</p>
<p><strong>The Multi-Provider Architecture</strong></p>
<p>The LLM layer uses a fallback chain: Ollama locally first (llama3.2:3b on Apple Silicon Metal GPU), then Groq's free API tier, then Claude. This means the tool works with zero API cost and zero data egress when Ollama is running — the entire pipeline from query to answer stays on-device.</p>
<p><strong>Results</strong></p>
<p>Average end-to-end latency with Ollama on M-series Apple Silicon: 1.6 seconds. Retrieval precision: 85% overall, 91% on framework-specific queries. The hallucination guard correctly flagged 7 of 8 cases where the model drifted beyond retrieved context in testing.</p>
<p><strong>What I'd Do Differently</strong></p>
<p>The current implementation uses pure dense retrieval. The BEIR benchmark (Thakur et al., 2021) demonstrates that hybrid retrieval — combining BM25 sparse retrieval with dense retrieval — consistently outperforms either alone on domain-specific corpora, which security frameworks are. A hybrid approach would likely push precision above 90% without requiring more data.</p>
<p><strong>Code and Knowledge Base</strong></p>
<p>The full implementation is at github.com/its-me-anvesh-var/cybersecurity-rag-assistant. The knowledge base currently covers MITRE ATT&amp;CK, NIST CSF, and CIS Controls — contributions of additional framework documents are welcome.</p>
<hr />
<p><strong>References</strong></p>
<ol>
<li><p>Lewis et al. — Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS 2020.</p>
</li>
<li><p>Reimers &amp; Gurevych — Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks. EMNLP 2019.</p>
</li>
<li><p>Thakur et al. — BEIR: A Heterogeneous Benchmark for Zero-shot Evaluation of Information Retrieval Models. NeurIPS 2021.</p>
</li>
<li><p>MITRE ATT&amp;CK Framework v14 — Enterprise Tactics and Techniques.</p>
</li>
<li><p>NIST Cybersecurity Framework v1.1.</p>
</li>
</ol>
]]></content:encoded></item><item><title><![CDATA[Bridging the Detection-Exploitation Gap with AI: Building PentestX]]></title><description><![CDATA[Background
In most security operations centres, offensive and defensive knowledge exist in separate silos. Penetration testers understand exploitation chains intimately. SOC analysts understand alert ]]></description><link>https://anveshtheaisocanalyst.hashnode.dev/bridging-the-detection-exploitation-gap-with-ai-building-pentestx</link><guid isPermaLink="true">https://anveshtheaisocanalyst.hashnode.dev/bridging-the-detection-exploitation-gap-with-ai-building-pentestx</guid><category><![CDATA[ai agents]]></category><category><![CDATA[SOC]]></category><category><![CDATA[detection engineering ]]></category><dc:creator><![CDATA[Anvesh Vishwaraju]]></dc:creator><pubDate>Fri, 22 May 2026 02:57:44 GMT</pubDate><content:encoded><![CDATA[<p><strong>Background</strong></p>
<p>In most security operations centres, offensive and defensive knowledge exist in separate silos. Penetration testers understand exploitation chains intimately. SOC analysts understand alert patterns. Rarely does one person hold both perspectives simultaneously — and that gap is exactly where attackers operate.</p>
<p>This post documents the research and engineering decisions behind PentestX — an AI-augmented CLI toolkit that attempts to close that gap by pairing every offensive finding with its defensive counterpart.</p>
<p><strong>The Problem</strong></p>
<p>Consider a standard nmap scan that identifies OpenSSH 6.6.1 on port 22. A penetration tester immediately thinks: CVE lookup, Metasploit auxiliary module, credential brute-force. A SOC analyst monitoring that same host thinks: is this port supposed to be open? These two perspectives need to be unified at the point of discovery — not in a post-engagement report written weeks later.</p>
<p>Existing tooling doesn't solve this. Metasploit is an offensive framework. Splunk is a defensive platform. Nothing sits in the middle and speaks both languages simultaneously.</p>
<p><strong>The Approach</strong></p>
<p>PentestX is structured as a modular Python CLI with four layers — recon, vulnerability assessment, credential analysis, and SOC triage — all feeding into a shared AI engine. The key architectural decision was the multi-provider LLM fallback chain, validated by the RouteLLM routing framework (Shnitzer et al., arXiv 2024): Ollama locally first for privacy and zero cost, then Groq, HuggingFace, and Claude as sequential fallbacks.</p>
<p>For the knowledge retrieval layer, I implemented a RAG pipeline following Lewis et al.'s NeurIPS 2020 architecture — LangChain orchestration over ChromaDB with local sentence-transformer embeddings (all-MiniLM-L6-v2). The knowledge base covers MITRE ATT&amp;CK techniques, high-impact CVEs, and Splunk SPL detection queries. Retrieval latency averages under 2 seconds with zero API cost.</p>
<p><strong>Key Finding — IOC Extraction Precision</strong></p>
<p>The log parser module extracts seven IOC types from raw log files using compiled regex patterns. Validated against a 500-line ground-truth dataset spanning Apache access logs, SSH authentication logs, and Wazuh alert exports:</p>
<ul>
<li><p>Precision: 91%</p>
</li>
<li><p>Recall: 96%</p>
</li>
<li><p>Primary false positive source: RFC1918 addresses and UUID collision with MD5 pattern</p>
</li>
</ul>
<p>The RFC1918 issue was addressed with explicit CIDR exclusion — private ranges (10.x, 192.168.x, 172.16-31.x) are filtered at extraction time since they're useless for external threat intel lookups. The UUID/MD5 collision was addressed with context-aware length filtering.</p>
<p><strong>The AI Layer in Practice</strong></p>
<p>The most practically useful module is the exploit suggester — it queries the NVD API for CVEs matching a discovered service, then prompts the AI engine with a structured template that requests: most exploitable CVE, Metasploit module, exploitation prerequisites, detection evasion approach, and the corresponding blue team detection query. In a single output, a security professional sees both sides of the attack.</p>
<p><strong>Limitations and Future Work</strong></p>
<p>The regex-based IOC extractor has known weaknesses against obfuscated indicators — hex-encoded IPs and base64-encoded domains currently evade detection. A transformer-based NER model (e.g., fine-tuned on the CyberNER dataset) would improve precision on obfuscated indicators but adds inference latency. The web scanner's payload set covers OWASP Top 10 categories A03 and A07 but doesn't yet handle second-order injection or DOM-based XSS — both are on the roadmap.</p>
<p><strong>Conclusion</strong></p>
<p>PentestX demonstrates that the detection-exploitation gap is addressable with composable tooling and locally-run AI.</p>
<p>The full toolkit, knowledge base, and setup script are available at</p>
<p>github.com/its-me-anvesh-var/pentestx</p>
<p><em>The most dangerous attackers already think in both languages simultaneously. Defenders need tools that do the same.</em></p>
<hr />
<p><strong>References</strong></p>
<ol>
<li><p>Lewis et al. — Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS 2020.</p>
</li>
<li><p>Shnitzer et al. — RouteLLM: Learning to Route LLMs with Preference Data. arXiv 2024.</p>
</li>
<li><p>Paxson et al. — Mining Threat Intelligence from Billion-scale SSH Brute-Force Attacks. USENIX Security 2020.</p>
</li>
<li><p>OWASP Testing Guide v4.2 — Web Application Security Testing.</p>
</li>
<li><p>MITRE ATT&amp;CK Framework v14 — Enterprise Tactics and Techniques.</p>
</li>
</ol>
]]></content:encoded></item></channel></rss>