<?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: Nadeem Mansoori</title>
    <description>The latest articles on DEV Community by Nadeem Mansoori (@baymax-armed).</description>
    <link>https://dev.to/baymax-armed</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4099391%2F4e943c5b-a937-43f8-8f62-80a30b7f018c.jpg</url>
      <title>DEV Community: Nadeem Mansoori</title>
      <link>https://dev.to/baymax-armed</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/baymax-armed"/>
    <language>en</language>
    <item>
      <title>How to run internal phishing simulations for your organization (free &amp; self-hosted)</title>
      <dc:creator>Nadeem Mansoori</dc:creator>
      <pubDate>Fri, 28 Aug 2026 18:41:18 +0000</pubDate>
      <link>https://dev.to/baymax-armed/how-to-run-internal-phishing-simulations-for-your-organization-free-self-hosted-1786</link>
      <guid>https://dev.to/baymax-armed/how-to-run-internal-phishing-simulations-for-your-organization-free-self-hosted-1786</guid>
      <description>&lt;h2&gt;
  
  
  How to run internal phishing simulations for your organization (free &amp;amp; self-hosted)
&lt;/h2&gt;

&lt;p&gt;Phishing is still how most breaches start. The single most effective defence isn't&lt;br&gt;
another mail filter — it's people who can spot a lure and report it. The way you build&lt;br&gt;
that instinct is &lt;strong&gt;internal phishing simulations&lt;/strong&gt;: controlled, authorized fake-phishing&lt;br&gt;
tests of your &lt;em&gt;own&lt;/em&gt; employees, paired with training the moment someone slips.&lt;/p&gt;

&lt;p&gt;This is a practical guide to doing that well — and doing it for free, on your own&lt;br&gt;
infrastructure, with an open-source tool.&lt;/p&gt;
&lt;h2&gt;
  
  
  First rule: authorization, always
&lt;/h2&gt;

&lt;p&gt;Internal phishing simulation means testing people &lt;strong&gt;who have agreed to be tested&lt;/strong&gt; — your&lt;br&gt;
own organization, or a client with a signed engagement scope. Point a phishing tool at&lt;br&gt;
anyone outside that and you're very likely breaking the law. Keep a record of your&lt;br&gt;
authorization, tell leadership and (per your policy/works-council rules) employees that a&lt;br&gt;
program exists, and never use captured data for anything but the training exercise. Good&lt;br&gt;
tools are built as &lt;em&gt;trainers&lt;/em&gt;, not credential-harvesters — for example, they don't store&lt;br&gt;
the passwords people type into a fake login page by default.&lt;/p&gt;

&lt;p&gt;With that ground rule set, here's what a real program looks like.&lt;/p&gt;
&lt;h2&gt;
  
  
  A good program is a loop, not a single test
&lt;/h2&gt;

&lt;p&gt;"Who clicked?" is where most free tools stop. A program that actually reduces risk runs&lt;br&gt;
four stages:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Attack&lt;/strong&gt; — send a believable lure and track engagement per person.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Report&lt;/strong&gt; — make it one click for employees to report suspicious mail, and give them
credit when they do.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Train&lt;/strong&gt; — the moment someone clicks or submits, teach them what they missed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Measure&lt;/strong&gt; — roll it all up into a human-risk score you can trend over time.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can assemble this from separate tools, or use one platform. Below I'll use&lt;br&gt;
&lt;a href="https://github.com/Baymax-armed/Voltphish" rel="noopener noreferrer"&gt;VoltPhish&lt;/a&gt;, an open-source, self-hosted&lt;br&gt;
platform that does the whole loop from one Docker container. (If you only need email&lt;br&gt;
click-tracking, &lt;a href="https://getgophish.com" rel="noopener noreferrer"&gt;GoPhish&lt;/a&gt; is the classic minimal option;&lt;br&gt;
commercial suites like KnowBe4 or Proofpoint do all of this too, but they're per-seat and&lt;br&gt;
your data lives in their cloud.)&lt;/p&gt;
&lt;h2&gt;
  
  
  Step by step
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. Self-host it
&lt;/h3&gt;

&lt;p&gt;Because it's self-hosted, employee data never leaves your infrastructure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; voltphish &lt;span class="nt"&gt;-p&lt;/span&gt; 9990:9999 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;VOLTPHISH_SECRET_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;openssl rand &lt;span class="nt"&gt;-base64&lt;/span&gt; 48&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; voltphish-data:/data &lt;span class="se"&gt;\&lt;/span&gt;
  baymaxarmed/voltphish:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;http://localhost:9990&lt;/code&gt;, sign in with &lt;code&gt;admin&lt;/code&gt; / &lt;code&gt;admin&lt;/code&gt;, and set your own password.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; before touching real inboxes, set &lt;code&gt;VOLTPHISH_MAIL_BACKEND=console&lt;/code&gt; to do a&lt;br&gt;
dry-run — every "sent" email is written to a file instead of mailed, so you can rehearse&lt;br&gt;
the entire open → click → submit → train flow with zero real email.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Build your audience
&lt;/h3&gt;

&lt;p&gt;Import your employee list into a group (name, email, department). Flag execs and finance&lt;br&gt;
as VIPs — they're the most-targeted, so their results matter more.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Pick a lure
&lt;/h3&gt;

&lt;p&gt;Start from a template gallery (Microsoft 365 password expiry, HR/payroll, courier,&lt;br&gt;
MFA re-enrollment, a QR "quishing" code, a calendar invite…) or describe a scenario and&lt;br&gt;
have AI draft one. Match the difficulty to your audience; don't start on "impossible."&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Launch and track
&lt;/h3&gt;

&lt;p&gt;Add your SMTP details as a sending profile, then launch — only against your authorized&lt;br&gt;
list. You'll see, in real time and per person: delivered → opened → clicked → submitted →&lt;br&gt;
reported.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Close the loop automatically
&lt;/h3&gt;

&lt;p&gt;This is the part that changes behaviour:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Just-in-time training:&lt;/strong&gt; anyone who clicks lands on a short page showing the red flags
they missed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adaptive auto-enrollment:&lt;/strong&gt; people who fail are automatically enrolled in a training
module matched to the attack type.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Report-Phish button:&lt;/strong&gt; deploy a one-click Outlook add-in / Gmail script so employees
can report suspicious mail. Reported simulations credit them as "Security Champions";
reported &lt;em&gt;real&lt;/em&gt; threats land in a triage queue for your security team.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6. Measure human risk
&lt;/h3&gt;

&lt;p&gt;Instead of a one-off click rate, track a behaviour-based &lt;strong&gt;human-risk score&lt;/strong&gt; per person&lt;br&gt;
and per department, a most-targeted/VIP view, a geo map of where clicks came from, and&lt;br&gt;
your click/report rates against a public baseline (e.g. the Verizon DBIR). Run a campaign&lt;br&gt;
every few weeks and watch the number trend down.&lt;/p&gt;

&lt;h2&gt;
  
  
  Metrics that actually matter
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Report rate&lt;/strong&gt; (going up) is a better health signal than click rate (going down) — it
means people are actively defending, not just avoiding.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repeat clickers&lt;/strong&gt; — a small group usually drives most of the risk; target them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time-to-report&lt;/strong&gt; — how fast your fastest reporter flags a live threat.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;Internal phishing simulations only work when they're a &lt;em&gt;program&lt;/em&gt;: authorized, continuous,&lt;br&gt;
and paired with training and reporting — not a one-time "gotcha." You don't need an&lt;br&gt;
enterprise budget to run one. A free, self-hosted, open-source tool gives you the full&lt;br&gt;
loop while keeping employee data on your own infrastructure.&lt;/p&gt;

&lt;p&gt;If you want to try the setup above, VoltPhish is on GitHub (AGPL-3.0):&lt;br&gt;
&lt;strong&gt;&lt;a href="https://github.com/Baymax-armed/Voltphish" rel="noopener noreferrer"&gt;https://github.com/Baymax-armed/Voltphish&lt;/a&gt;&lt;/strong&gt; — one &lt;code&gt;docker run&lt;/code&gt; and you're testing in&lt;br&gt;
minutes. Whatever tool you choose, get authorization first, start easy, train at the&lt;br&gt;
teachable moment, and measure human risk over time.&lt;/p&gt;

</description>
      <category>security</category>
      <category>cybersecurity</category>
      <category>opensource</category>
      <category>selfhosted</category>
    </item>
  </channel>
</rss>
