<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: spac3gh0st</title>
    <description>The latest articles on DEV Community by spac3gh0st (@_spac3gh0st).</description>
    <link>https://dev.to/_spac3gh0st</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F158421%2F0fdb2781-5f40-40a1-beeb-e7b725d962be.jpg</url>
      <title>DEV Community: spac3gh0st</title>
      <link>https://dev.to/_spac3gh0st</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/_spac3gh0st"/>
    <language>en</language>
    <item>
      <title>I Saw Someone Build an AI-Powered Kali Lab at BSides San Diego. Then I Built My Own.</title>
      <dc:creator>spac3gh0st</dc:creator>
      <pubDate>Mon, 13 Apr 2026 23:02:25 +0000</pubDate>
      <link>https://dev.to/_spac3gh0st/i-saw-someone-build-an-ai-powered-kali-lab-at-bsides-san-diego-then-i-built-my-own-1944</link>
      <guid>https://dev.to/_spac3gh0st/i-saw-someone-build-an-ai-powered-kali-lab-at-bsides-san-diego-then-i-built-my-own-1944</guid>
      <description>&lt;p&gt;&lt;em&gt;How a conference demo turned into a full bug bounty lab with Claude Desktop, Discord remote access, and automated health monitoring on Windows and Linux.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;I'll be upfront. I've been to a handful of security conferences and I'm not completely new to this world, but I'm not a full-time security researcher either and I don't have a long list of bug bounty wins. This is also the first time I've written about anything publicly, so bear with me. What I do have is a habit of seeing something interesting and refusing to let it go until I actually understand it.&lt;/p&gt;

&lt;p&gt;That habit kicked in hard at BSides San Diego.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbh2iizd5rui1y0n91fiv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbh2iizd5rui1y0n91fiv.png" alt="focustime" width="546" height="448"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Demo That Started It
&lt;/h2&gt;

&lt;p&gt;I was at a talk where &lt;strong&gt;Kannan Prabu Ramamoorthy&lt;/strong&gt; spun up an MCP server connected to a handful of Kali tools. If you haven't seen MCP (Model Context Protocol) before, the short version is this: it lets you connect Claude Desktop to external tools so you can control them through natural language. Instead of typing nmap flags into a terminal, you just describe what you want and Claude figures out the command, runs it, and hands you the output.&lt;/p&gt;

&lt;p&gt;His demo, &lt;a href="https://github.com/kannanprabu/BsidesMCPDemo" rel="noopener noreferrer"&gt;BsidesMCPDemo&lt;/a&gt;, was clean and intentionally minimal. Each security tool had its own Python file, a thin server.py wired them together, and that was it. nmap, nikto, gobuster, header scanning, all callable through Claude. It ran on a Mac. The design philosophy was one file per tool, debug one thing at a time. For a workshop setting that made perfect sense.&lt;/p&gt;

&lt;p&gt;Watching it work clicked something for me. This wasn't just a neat trick. It was a genuinely different way to run recon. You could chain tools, ask follow-up questions about the output, and have Claude help you interpret what you were seeing, all in one place.&lt;/p&gt;

&lt;p&gt;I left that talk wanting to build the same thing.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;When I got home and started looking for resources, I ran into a wall. Almost everything I found assumed you were on a Mac, or glossed over the networking side completely, or stopped at "here's a Docker container, good luck." I'm on Windows. My lab runs on a Linux VM in VMware. The gap between a cool macOS demo and actually making this work in a Windows/Linux environment was bigger than I expected.&lt;/p&gt;

&lt;p&gt;Maybe I didn't look hard enough. But I decided if I was going to actually understand this, I needed to build it myself from scratch rather than copy a setup I only half understood.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1l6xjypyk8ezzbo60xab.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1l6xjypyk8ezzbo60xab.png" alt="Thinking" width="402" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;The core idea is pretty straightforward. Claude Desktop on Windows talking to a Kali Linux Docker container running inside an Ubuntu VM. The bridge between them is an MCP server that exposes 35 security tools, nmap, nikto, gobuster, sqlmap, subfinder and more, as things Claude can call directly.&lt;/p&gt;

&lt;p&gt;You ask Claude to run a scan. Claude picks the right tool, runs it through the MCP server, gets the output back, and can reason about what it found. No switching between terminals, no copying output between windows.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Windows (Claude Desktop)
    │
    └── mcp-remote → localhost:8000
                          │
                     netsh portproxy
                          │
                    Ubuntu VM (VMware)
                          │
                       Docker
                          │
                  Kali Container (35 tools)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Getting the networking right took longer than I expected. The netsh portproxy setup on Windows to forward traffic into the VM, UFW firewall rules on the Ubuntu side to keep things locked down, making sure Docker bound to &lt;code&gt;0.0.0.0&lt;/code&gt; so the port mapping actually worked. None of this is hard once you know it but it's the kind of thing that isn't documented anywhere in one place.&lt;/p&gt;




&lt;h2&gt;
  
  
  Going Further Than the Demo
&lt;/h2&gt;

&lt;p&gt;Once the basic setup was working I kept adding things. This is where it got interesting.&lt;/p&gt;

&lt;p&gt;I wanted to be able to kick off recon from my phone without SSHing into anything, so I built a Discord bot with slash commands. &lt;code&gt;/port_scan&lt;/code&gt;, &lt;code&gt;/dns_enum&lt;/code&gt;, &lt;code&gt;/web_audit&lt;/code&gt;, &lt;code&gt;/subdomain_enum&lt;/code&gt; and about 20 others. The bot only responds to my user ID, only works in my private server, and blocks the most dangerous tools from being run remotely. Every command gets logged to an audit file. I can run recon from anywhere with a phone signal.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;/investigate&lt;/code&gt; command is probably my favourite part of the whole thing. You point it at a target domain and it plans the recon strategy itself. It picks the first tool, runs it, reads the output, decides what to run next, chains up to 8 tool calls automatically, then writes a structured bug bounty report at the end. It costs maybe $0.10 per run on the Anthropic API. Watching it work is genuinely impressive.&lt;/p&gt;

&lt;p&gt;I also added a &lt;code&gt;/health&lt;/code&gt; endpoint to the MCP server and a separate monitor that polls it every 10 seconds. If the server goes down or comes back up, I get a Discord embed immediately. Both the bot and the monitor run as systemd services so they restart automatically on boot.&lt;/p&gt;

&lt;p&gt;And for mobile access, I set up Tailscale so I can reach the whole lab from my phone over a WireGuard-encrypted tunnel without opening any ports to the internet. Combined with the Discord bot it means I have full recon capability from my phone wherever I am.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd5es6ex1imqiumx0rtc8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd5es6ex1imqiumx0rtc8.png" alt="I did it" width="262" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;The networking is the hard part. The AI integration is honestly the easy part because Claude is good at this and the MCP protocol is well-designed. Getting Docker, VMware NAT networking, Windows port proxying, and UFW all playing nicely together is where the actual problem-solving happens.&lt;/p&gt;

&lt;p&gt;Building this also made me think more carefully about security in layers than I expected. What the Docker container can access, what UFW allows through, what the Discord bot will and won't run remotely, what gets logged. I learned more about defence-in-depth from building a home lab than from reading about it.&lt;/p&gt;

&lt;p&gt;Writing the installer scripts was the most revealing part though. When you have to automate something you can't hand-wave the parts you don't fully understand. I hit several points where I thought I understood how something worked and the script immediately proved me wrong.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Setup Is Open Source
&lt;/h2&gt;

&lt;p&gt;Everything is on GitHub at &lt;a href="https://github.com/spac3gh0st00/Kali-MCP-Bounty-Lab" rel="noopener noreferrer"&gt;github.com/spac3gh0st00/Kali-MCP-Bounty-Lab&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I wrote two installer scripts, one for the Ubuntu VM side and one for Windows, that handle the full setup automatically. If you want to run this yourself it should take about 20 to 30 minutes and most of that is Docker pulling the Kali image.&lt;/p&gt;

&lt;p&gt;Worth calling out the people whose work made this possible. The original inspiration was &lt;a href="https://github.com/kannanprabu/BsidesMCPDemo" rel="noopener noreferrer"&gt;Kannan Prabu Ramamoorthy's BsidesMCPDemo&lt;/a&gt;, the workshop that started this whole thing. If you want to see the minimal clean foundation the concept is built on, his repo is the place to start. The expanded tool implementations and containerised server come from &lt;a href="https://github.com/k3nn3dy-ai/kali-mcp" rel="noopener noreferrer"&gt;k3nn3dy-ai's kali-mcp&lt;/a&gt;. What I built on top is the Windows/Linux networking bridge, installer automation, Discord layer, health monitoring, and mobile access.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who This Is For
&lt;/h2&gt;

&lt;p&gt;If you're doing bug bounty research or security learning and you want a setup that actually works on Windows with a Linux VM, this is the gap I was trying to fill. It's not a professional red team platform. It's a home lab that lets you move faster and experiment with AI-assisted recon in a way that's more accessible than most of what I found documented.&lt;/p&gt;

&lt;p&gt;If you saw a similar demo at a conference and thought "I want that but I'm on Windows," this is for you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5zndc22orp5leswvl7o6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5zndc22orp5leswvl7o6.png" alt="space ghost dance" width="320" height="242"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for stopping by! &lt;/p&gt;




&lt;p&gt;&lt;em&gt;The repo is at &lt;a href="https://github.com/spac3gh0st00/Kali-MCP-Bounty-Lab" rel="noopener noreferrer"&gt;github.com/spac3gh0st00/Kali-MCP-Bounty-Lab&lt;/a&gt;. Authorised testing only — bug bounty programs you're enrolled in, CTFs, systems you own.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>ai</category>
      <category>docker</category>
      <category>bugbounty</category>
    </item>
  </channel>
</rss>
