🎣 Engagement — Operation: HOOK, LINE & SINKER
Hartley Financial Services — 340 employees, three offices, a recent merger that doubled their headcount without doubling their security awareness training. Their CISO contacted your team after two employees wired money to a fraudulent vendor following a convincing BEC email. They don't know how many people would have clicked. You're about to find out — legally, ethically, and with a plan to fix it. This workbook covers the complete loop that your Email Threat Analysis workbook's defensive side doesn't: how to plan, build, and execute an authorized phishing simulation, measure its results, and turn those results into an awareness training program that actually changes behaviour.
Phishing simulation is the only topic in this workbook series where the exact same actions — sending a deceptive email designed to steal credentials — are either a legitimate security service or a federal crime, depending entirely on one thing: written authorization from the account owner. There is no grey area. Every student must understand this before touching GoPhish.
This workbook is training guidance only, not legal advice. Laws vary by country, organisation type, and employment context. Before running any phishing simulation in a real engagement, obtain written authorization and, where required by your jurisdiction, consult legal counsel.
| Type | Target | Typical Pretext | Risk To Hartley |
|---|---|---|---|
| Phishing | Mass, untargeted | Account suspended, package delivery, prize | Low per-employee — high volume |
| Spear Phishing | Named individual, researched | References real project, colleague, or vendor | High — finance and HR staff most targeted |
| Whaling | C-suite specifically | Board-level urgency, M&A, regulatory | Extreme — BEC at executive level |
| BEC | Finance/AP/payroll | Impersonates CEO or CFO requesting urgent wire | Critical — Hartley's actual incident was this |
| Vishing | Any employee by phone | IT support, bank fraud team, government | High but out of scope for GoPhish |
| Smishing | Mobile numbers | Package, bank alert, HR link | Medium — requires separate tooling |
| Credential Harvest | Any with email access | Office 365 / Google login page clone | High — single-factor accounts targeted first |
This workbook focuses on email-based phishing, spear phishing, and BEC simulation — the categories GoPhish is built for, and the ones directly responsible for Hartley's incident.
Define the target list, email addresses in scope, allowed pretext categories (must exclude topics that could cause genuine distress — job loss, health emergencies), go/no-go criteria, and who gets told. Get everything in writing before touching any tool.
Research the target organization, identify believable pretexts using open-source intelligence, and design the campaign narrative. The quality of this phase determines click-through rate more than any technical factor.
GoPhish setup, SMTP configuration, domain and landing page, tracking — everything that makes the campaign look real without actually being malicious.
Write the email and build the landing page. Subject line, sender display name, body copy, urgency/authority triggers — and always an "out" that lands on a training page rather than a dead link.
Launch, monitor in real time, respond to HR escalations (some employees will report the email — that's the right behaviour, reward it), and manage edge cases.
Click rates, submission rates, report rates, department breakdown, time-to-click — and a written report the CISO can present to the board.
Deliver awareness training targeted at exactly what employees clicked on, set a re-test date, and measure the delta. A simulation without training is just embarrassing people — this phase is where the engagement has real security value.
| Element | What It Must Say |
|---|---|
| Authorizing party | Full name, title, and signature of someone with actual authority to authorize the test |
| Scope — in | Exact email domains or addresses in scope — named explicitly, not "all employees" |
| Scope — out | Explicitly excluded groups (executives? customers? recently bereaved staff?) |
| Pretext restrictions | Topics prohibited — job offers/redundancy, health, family emergencies, anything that could cause genuine distress |
| Engagement window | Exact start/end dates and hours — outside this window, nothing sends |
| Escalation contact | Who to call if an employee reports distress — a named HR contact, not just "HR" |
| Data handling | Who can see individual results, retention period, and how results will be destroyed |
| Awareness-positive clause | Explicit statement that employees who correctly report the simulation will be praised, not disciplined |
Draft the Hartley authorization document. Your instructor reviews and signs it — or rejects it with feedback. No lab email sends until this is done. That's not bureaucracy; that's how real engagements work.
gophish command is deprecated. Always use gophish-start to start the service and gophish-stop to stop it. The Kali-packaged default credentials are admin / kali-gophish — not the upstream default.GoPhish is in Kali's official package repository — no manual download needed.
Using Kali's wrapper command.
In your browser at https://127.0.0.1:3333 — accept the self-signed certificate warning.
Using the Kali default credentials, then set a strong passphrase you'll use for this lab.
From the account settings page — you'll need it for Module 5's campaign management.
Dashboard, Campaigns, Users & Groups, Email Templates, Landing Pages, Sending Profiles.
# install GoPhish from Kali's official repository sudo apt update && sudo apt install gophish -y # start the GoPhish service using Kali's wrapper gophish-start # the dashboard is at: https://127.0.0.1:3333 # default Kali credentials (change immediately on first login) # Username: admin # Password: kali-gophish # stop when finished gophish-stop
| Check | Expected Result |
|---|---|
| gophish-start | Service starts without errors, shows listener address |
| Browser at :3333 | GoPhish login page loads (accept self-signed cert) |
| Login with admin/kali-gophish | Dashboard visible — change password immediately |
| Account settings | API key visible and copyable |
At mailtrap.io — the free tier provides a sandbox inbox that captures emails without delivering them.
In Mailtrap, open Email Testing → Inboxes → your inbox → SMTP Settings tab. Note the Host, Port, Username, and Password.
Navigate to Sending Profiles → New Profile. Fill in the fields using your Mailtrap credentials.
Use GoPhish's "Send Test Email" button and verify it appears in your Mailtrap inbox.
In Mailtrap, open the email and look at: Raw source (headers), HTML body, Spam Score, and Tech Info. You'll read all of these analytically in Module 2.
# Mailtrap sandbox SMTP settings (replace with your actual credentials) Host : sandbox.smtp.mailtrap.io Port : 2525 # or 587 — both work in the sandbox Username : <your-mailtrap-username> Password : <your-mailtrap-password> # GoPhish Sending Profile fields: # Name : Hartley IT - Sandbox # From : IT Helpdesk <helpdesk@hartley-financial.com> # Host : sandbox.smtp.mailtrap.io:2525 # Username : (your Mailtrap sandbox username) # Password : (your Mailtrap sandbox password)
| Check | Expected Result |
|---|---|
| Test email sent from GoPhish | Appears in Mailtrap inbox within seconds |
| Mailtrap Raw source | Shows GoPhish headers including X-Mailer and X-Gophish-Contact |
| Mailtrap Spam Score | Will likely be moderate — note this, you'll improve it in Lab 1.3 |
| Real inbox delivery? | Zero — Mailtrap sandbox never delivers to real addresses |
| Standard | What It Does | What Fails Without It |
|---|---|---|
| SPF (Sender Policy Framework) | DNS record listing which servers may send email for your domain | Receiving server marks email suspicious or rejects it outright |
| DKIM (DomainKeys Identified Mail) | Cryptographic signature proving the email wasn't modified in transit | Spam filters score it higher; some filters require it |
| DMARC (Domain-based Message Auth) | Policy telling receivers what to do when SPF or DKIM fail — and where to send reports | No enforcement of SPF/DKIM failures — spoofing succeeds silently |
Use MXToolbox to query SPF for a domain — observe what a well-configured and poorly-configured record look like.
A p=reject DMARC policy means spoofed emails claiming to be from that domain will be rejected. A p=none means spoofing succeeds silently while DMARC reports are sent.
Open the Raw source from Lab 1.2. Find the Authentication-Results header — what passed and what failed?
Real phishing actors register lookalike domains (hartley-financial.com vs hartleyfinancial.com) and set up SPF/DKIM/DMARC on those — making the email appear authenticated even though it's spoofed.
# check SPF record for any domain dig TXT hartley-financial.com | grep spf # check DMARC policy dig TXT _dmarc.hartley-financial.com # example DMARC policy values and their meaning # p=none → monitor only, no enforcement (spoofing succeeds) # p=quarantine → send suspicious emails to spam # p=reject → reject spoofed emails outright (strongest protection)
| Authentication Result | Implication |
|---|---|
| spf=pass, dkim=pass, dmarc=pass | Email appears fully authenticated — highest deliverability, lowest spam score |
| spf=fail, dmarc=none | Spoofing visible to receiving server but no enforcement — may land in spam |
| dmarc=reject | Spoofed email claiming to be from this domain will be rejected — best protection for the domain being spoofed |
From LinkedIn profiles, GitHub commits, or leaked breach data on haveibeenpwned.com (domain search). Common formats: firstname.lastname@, f.lastname@, firstname@. One confirmed email tells you the pattern for all of them.
LinkedIn's "People" section for the company gives you org structure, job titles, tenures. Who does AP report to? Who recently joined? Who signs off on vendors?
Press releases, job postings (reveal internal projects), Glassdoor reviews (reveal systems and tools in use), and the company's own news page. A simulation referencing a real-named project or system hits harder than a generic one.
Job postings often name the exact internal systems — "experience with ServiceNow," "Office 365 environment." A phishing email referencing the real help desk tool is far more convincing than a generic IT email.
For the Hartley scenario: email format, key personnel (CEO, CFO, AP manager), recent events (merger), internal systems, and vendors known to them.
| Intelligence Type | Source | How It's Used In The Pretext |
|---|---|---|
| Email format | LinkedIn, public GitHub commits, breached data sites | Makes the from/reply-to look exactly right |
| Reporting lines | LinkedIn company page → People | CEO impersonation works only if you know who reports to the CEO |
| Recent events | Press releases, news, job postings | "Following our recent merger" feels real when the merger is real |
| Internal systems | Job postings, Glassdoor, help desk subdomains | Reference the real tool name (ServiceNow, Workday) not a generic one |
| Known vendors | LinkedIn posts, case studies, news | BEC impersonating a vendor the target actually uses is far more convincing |
| Trigger | How Phishing Uses It | Simulation Example |
|---|---|---|
| Authority | Email appears to come from a senior person, brand, or regulator | CEO requesting urgent wire transfer; HMRC / FCA notice |
| Urgency | Time pressure reduces critical thinking | "Respond before COB today," "your access expires in 24 hours" |
| Scarcity | Limited availability creates fear of missing out | "Only two slots remain for the compliance training" |
| Social Proof | Others are doing it — reduces friction | "All staff in your department have completed this already" |
| Liking | Impersonate someone the target knows and trusts | Email appearing to come from a named colleague or vendor |
| Reciprocity | Offer something first, then make a request | Fake HR benefits portal, fake IT support resolving an issue |
That fits your OSINT from Lab 2.1. The best pretext uses real details (real system name, real event, real sender name). Choose from: IT password reset, DocuSign document pending, HR benefits update, invoice approval, or a merger-related announcement — all appropriate for a financial services firm, none likely to cause genuine distress.
List them explicitly. Authority? Urgency? Both?
Example: "An email appearing to come from the Hartley IT team claims the recipient's Microsoft 365 password expires in 24 hours and directs them to a login page to reset it — targeting authority (IT), urgency (24 hours), and a familiar process (password reset)."
Click-through to the landing page? Credential submission? Both? Be specific before you build.
| Component | What Makes It Convincing | Common Mistakes That Expose It |
|---|---|---|
| From display name | Matches the real sender's name exactly; uses the correct title | Generic "IT Support" or "Admin" with no company name |
| From email address | Uses a domain that looks right — ideally the real domain via a sending profile, or a visually similar one | Obvious lookalike: hartley-financial.co vs hartley-financial.com |
| Subject line | Specific, action-oriented, references something real or plausible; 6–10 words | ALL CAPS URGENT or excessive punctuation!!! |
| Greeting | Uses the recipient's real first name via GoPhish's {{.FirstName}} tag | "Dear Valued Employee" or "Hello User" |
| Body copy | Concise, professional tone matching the sender persona; references real tools/processes; one clear call to action | Wall of text; grammar errors; inconsistent formatting; multiple CTAs |
| Call to action | One button or link with a specific, believable label: "Reset My Password" not "Click Here" | Bare URLs; "Click Here" with no context |
| Signature | Matches the sender's real signature format if known; includes a real phone number and address | No signature, or a signature that doesn't match the sender persona |
| GoPhish tracking | {{.Tracker}} tag in the HTML for open tracking; {{.URL}} in the CTA link | Missing tracking tags means no click data in the dashboard |
{{.FirstName}} → recipient's first name from the target group CSV {{.LastName}} → recipient's last name {{.Email}} → recipient's email address {{.Position}} → recipient's position/role from the CSV {{.URL}} → the tracking URL pointing at your landing page {{.Tracker}} → invisible 1x1 pixel for email-open tracking (place in HTML body)
{{.FirstName}} personalization tag is the single highest-impact change you can make to a template's click-through rate. "Hi Sarah, your password expires…" consistently outperforms "Dear Employee, your password expires…" — sometimes by a factor of two or more.Name it "Hartley IT — Password Reset".
Subject: Action Required: Your Microsoft 365 password expires in 24 hours — Envelope Sender: leave blank (set in Sending Profile).
Copy the template below into the HTML pane.
{{.FirstName}} in the greeting, {{.URL}} in the button link, {{.Tracker}} before the closing </body>.
Send to your Mailtrap sandbox and verify how it renders — both HTML and plain-text fallback.
<!-- Paste this into GoPhish's HTML template editor --> <!DOCTYPE html> <html><head> <meta charset="UTF-8"> <style> body{font-family:Segoe UI,Arial,sans-serif;background:#f0f2f5;margin:0;padding:20px} .wrap{max-width:560px;margin:0 auto;background:#fff;border-radius:6px;overflow:hidden} .hdr{background:#0078d4;padding:22px 28px} .hdr img{height:28px;vertical-align:middle} .hdr span{color:#fff;font-size:1.1rem;font-weight:700;margin-left:10px;vertical-align:middle} .body{padding:28px 32px;color:#1a1a1a;font-size:14px;line-height:1.7} .btn{display:inline-block;margin:18px 0;padding:12px 28px;background:#0078d4;color:#fff;text-decoration:none;border-radius:4px;font-weight:700;font-size:14px} .footer{padding:14px 32px;background:#f7f7f7;font-size:11px;color:#888;border-top:1px solid #eee} </style> </head><body> <div class="wrap"> <div class="hdr"><span>Hartley Financial Services</span></div> <div class="body"> <p>Hi {{.FirstName}},</p> <p>Our records show your Microsoft 365 account password is set to expire in <strong>24 hours</strong>. To avoid being locked out of your email and business applications, please reset your password now.</p> <a href="{{.URL}}" class="btn">Reset My Password</a> <p>If you do not reset your password before the deadline, your account will be locked and you will need to contact the IT Helpdesk to regain access.</p> <p>If you have already reset your password today, please disregard this message.</p> <p>Regards,<br><strong>Hartley IT Security Team</strong><br>helpdesk@hartley-financial.com | Ext. 4400</p> </div> <div class="footer">Hartley Financial Services · 1 Canary Wharf, London E14 5AB · This is an automated security notification. Do not reply to this email.</div> </div> {{.Tracker}} <!-- open-tracking pixel — MUST be present for open metrics --> </body></html>
Hi {{.FirstName}},
I'm in back-to-back board meetings today and can't take calls. I need you to arrange a BACS payment of £23,500 to a new supplier before 4 PM today to secure our Q4 contract. I'll explain the full context this evening — please treat this as urgent and confidential for now.
Please click the link below to access the secure payment authorisation form. The reference code for this transaction is HFS-2026-Q4-0892.
Access Payment Authorisation Portal →
Thank you for handling this quickly.
James Hartley
CEO, Hartley Financial Services
+44 20 7946 0021 | j.hartley@hartley-financial.com
Hi {{.FirstName}},
Sarah Chen (Compliance, Hartley Financial Services) has sent you a document to review and sign.
Document: Q4 2026 Regulatory Compliance Acknowledgement
Deadline: 5 July 2026 (1 day remaining)
DocuSign · The way the world agrees
This notification was sent on behalf of Hartley Financial Services. If you believe this is an error, contact your sender.
| Scenario | Psychological Triggers | Typical CTR | Risk Rating |
|---|---|---|---|
| IT Password Reset | Authority, Urgency | 15–30% | Medium — baseline for most first simulations |
| DocuSign Pending | Authority, Urgency, Social Proof | 25–45% | High — exploits a trusted brand everyone recognizes |
| BEC Wire Transfer | Authority, Urgency, Liking | Highly variable | Critical — direct financial impact if successful for real |
Name it "Hartley — M365 Login".
This records what users type into form fields — username but in this workbook NOT real passwords (see callout).
For awareness — but understand this stores submitted passwords in GoPhish's database. In a real engagement, this setting needs explicit authorization and the data must be securely handled and deleted after reporting.
To the training page you'll build in Lab 4.2. This is non-negotiable: a click that ends in a dead page or a real login success is an incomplete engagement.
A Microsoft 365 login clone.
Check it renders correctly in your browser before any campaign uses it.
<!-- Microsoft 365 login clone — paste into GoPhish Landing Page HTML editor -->
<!DOCTYPE html>
<html><head>
<meta charset="UTF-8">
<title>Sign in to your account</title>
<style>
body{font-family:Segoe UI,Arial,sans-serif;background:#f2f2f2;display:flex;align-items:center;justify-content:center;min-height:100vh;margin:0}
.card{background:#fff;padding:44px 44px 36px;width:360px;box-shadow:0 2px 6px rgba(0,0,0,.1)}
.logo{font-size:24px;color:#0078d4;font-weight:300;margin-bottom:22px}
h1{font-size:1.4rem;font-weight:600;color:#1a1a1a;margin-bottom:18px}
input{width:100%;border:1px solid #ccc;padding:9px 10px;font-size:14px;margin-bottom:14px;outline:none;box-sizing:border-box}
input:focus{border-color:#0078d4}
.btn{width:100%;background:#0078d4;color:#fff;border:none;padding:10px;font-size:14px;cursor:pointer;font-weight:600}
.small{font-size:12px;color:#666;margin-top:12px;text-align:center}
</style>
</head><body>
<div class="card">
<div class="logo">Microsoft</div>
<h1>Sign in</h1>
<form method="POST" action="">
<input type="email" name="email" placeholder="Email, phone, or Skype" required>
<input type="password" name="password" placeholder="Password" required>
<button type="submit" class="btn">Sign in</button>
</form>
<p class="small">Can't access your account?</p>
</div>
</body></html>
| GoPhish Setting | Effect |
|---|---|
| Capture Submitted Data: ON | Form field contents recorded per recipient in campaign results |
| Capture Passwords: ON | Password field stored — treat this data with the same sensitivity as real credentials |
| Redirect URL: training page | After submission, user is immediately redirected to the awareness training page |
The moment a recipient realizes they clicked on a simulation is the moment they're most receptive to learning. This page must do three things: confirm it was a simulation (clearly, without shaming), explain exactly what they should have noticed, and give them one concrete thing to do differently next time.
Name it "Hartley — Awareness Training Redirect".
Customize the "red flags" section to match your specific template from Module 3.
So every form submission lands here.
So you can include it in the post-campaign training email even for people who didn't click.
<!-- Awareness redirect page HTML -->
<!DOCTYPE html>
<html><head>
<meta charset="UTF-8">
<style>
body{font-family:Segoe UI,Arial,sans-serif;background:#fff3cd;display:flex;align-items:center;justify-content:center;min-height:100vh;margin:0}
.card{background:#fff;border-radius:8px;padding:40px 44px;max-width:540px;text-align:center;box-shadow:0 4px 20px rgba(0,0,0,.1)}
.icon{font-size:3rem;margin-bottom:14px}
h1{color:#e65c00;font-size:1.5rem;margin-bottom:12px}
p{color:#333;font-size:14px;line-height:1.7;margin-bottom:12px;text-align:left}
.flags{background:#fef3cd;border-left:4px solid #e65c00;border-radius:0 8px 8px 0;padding:12px 16px;text-align:left;margin:14px 0}
.flags li{margin-bottom:6px;font-size:13px}
.action{background:#0078d4;color:#fff;display:inline-block;padding:11px 26px;border-radius:4px;text-decoration:none;font-weight:700;margin-top:14px}
</style>
</head><body>
<div class="card">
<div class="icon">🎣</div>
<h1>This Was a Phishing Simulation</h1>
<p>You've just completed a security awareness exercise run by the Hartley IT Security team. <strong>No real data has been captured and your account is safe.</strong></p>
<p>Here are the signs that this was not a real Microsoft email:</p>
<ul class="flags">
<li>The sender domain was not @microsoft.com — hover over any link before clicking</li>
<li>Real Microsoft password notifications include your full name and account details</li>
<li>The link URL did not point to login.microsoftonline.com</li>
<li>Urgent 24-hour deadlines are a common phishing trigger — slow down and verify</li>
</ul>
<p><strong>Next time:</strong> If you receive an urgent email asking you to log in or take financial action, verify it by calling the sender directly using a number from the company directory — not the number in the email.</p>
<a href="https://hartley-security-training.internal/phishing-module" class="action">Complete the 5-Minute Training →</a>
</div>
</body></html>
GoPhish accepts exactly these columns: First Name, Last Name, Email, Position. Any deviation causes an import error.
Simulate Hartley's two highest-risk departments: Finance/AP (BEC targets) and General Staff (credential harvest targets). In a real engagement, this segmentation lets you compare click rates between departments.
Upload the CSV and confirm the preview shows the correct names and email addresses.
# Required CSV format — no spaces after commas, headers exact First Name,Last Name,Email,Position Test,Student,your-own-email@test.com,Finance Manager Classroom,Participant,classmate-consent@test.com,AP Clerk Lab,Account,mailtrap-sandbox@test.com,General Staff # Why Position matters: # GoPhish inserts it via {{.Position}} in templates # Spear-phishing that references the recipient's real role # consistently outperforms generic pretexts
| Group | Pretext Best Suited To | Why |
|---|---|---|
| Finance / AP team | BEC wire transfer, invoice approval | These roles have actual payment authority — the highest-value target for real BEC actors |
| IT / Technical staff | Credential harvest, password reset | IT accounts have broader access — credential theft has highest blast radius |
| General staff | DocuSign, HR benefits, IT password reset | Largest population, baseline susceptibility measurement |
| Executives / C-suite | Requires specific authorization, often excluded | High distress risk; results must be handled with extreme confidentiality |
Fill in every field before launching.
Name → Email Template → Landing Page → URL → Launch Date → Send By date → Sending Profile → Groups. The URL field must point to GoPhish's phishing listener, not the admin port.
This throttles delivery over time — spreading 340 emails over a 2-hour window looks more like normal business email traffic than sending all at once.
You'll see events appear in real time as emails are delivered, opened, clicked, and as credentials are submitted.
Open your Mailtrap inbox, click the link in the simulation email, and watch the GoPhish timeline update.
| GoPhish Status | What It Means | How It's Recorded |
|---|---|---|
| Email Sent | GoPhish successfully sent the email to the SMTP relay | Timestamp in timeline |
| Email Opened | The tracker pixel in the HTML body loaded in the recipient's email client | Timestamp + user-agent string |
| Clicked Link | The recipient clicked the {{.URL}} link in the email | Timestamp + IP + user-agent |
| Submitted Data | The recipient submitted the landing page form | Timestamp + submitted form fields |
| Email Reported | The recipient forwarded the email to GoPhish's IMAP monitor — the best possible outcome | Timestamp — triggers "reported" status |
| Situation | What Happens | How to Handle It |
|---|---|---|
| Employee reports to IT as real phishing | IT may block the sending domain, generating a ticket storm and potentially ending the campaign early | Brief the IT Security lead in advance — give them a campaign code to look up, not details that could leak |
| Employee reports genuine distress | Someone who recently experienced fraud may react with anxiety to a BEC simulation | HR escalation contact (named in auth document) takes the call — confirm it's a simulation only to the affected person |
| Executive assistant flags it to the CEO | CEO may call the CISO demanding to know if they've been hacked | The CISO should be briefed in advance with a campaign code — never deny a simulation when asked directly by a senior leader |
| Automated security tools block the domain | Email gateway or endpoint tool recognizes GoPhish headers and blocks all campaign emails | Pre-whitelist your phishing domain with the email gateway, clearly documented in the engagement scope |
| Employee posts about it on Slack/Teams | "Has anyone else got a weird Microsoft email?" — alert spreads, later recipients don't click | Acceptable — it means security culture is working. Note the time it took for the information to spread. |
| Metric | Formula | What It Tells You |
|---|---|---|
| Email Open Rate | Emails Opened ÷ Emails Sent | Deliverability and subject-line quality — a low open rate means the email landed in spam or was ignored before reading |
| Click-Through Rate (CTR) | Links Clicked ÷ Emails Sent | Core susceptibility metric — the percentage of people who would have taken action on a real attack |
| Credential Submission Rate | Submitted Data ÷ Links Clicked | Of those who clicked, how many completed the "attack" — a high submission rate suggests low awareness of login-page red flags |
| Reporting Rate | Emails Reported ÷ Emails Sent | The most positive metric — employees who correctly identified and reported the phishing simulation |
| Mean Time to Click (MTTC) | Average time from delivery to first click | Fast MTTC (<5 min) suggests high automation or urgency response; slow MTTC suggests deliberation |
GoPhish → your campaign → Results tab → Export CSV.
Use a spreadsheet — understanding what goes into each number is more valuable than reading a pre-calculated dashboard figure.
First-time simulation: 20–35% CTR is typical across industries. Financial services tends to run 15–25% — but varies widely by pretext quality and employee training history.
Filter by the Position column to calculate CTR per department.
A simple table: Department | Targeted | Clicked | CTR | Reported. Sort by CTR descending.
For Hartley, Finance/AP clicking on the BEC template above industry average is the critical finding.
A 40% CTR in IT is more alarming than a 40% CTR in Facilities — IT accounts have broader access. Weight your risk narrative accordingly.
# Example department breakdown table
Department | Targeted | Clicked | CTR | Reported
----------------|----------|---------|-------|----------
Finance / AP | 42 | 18 | 43% | 2
IT / Technical | 28 | 7 | 25% | 8
Operations | 95 | 24 | 25% | 11
General Staff | 175 | 39 | 22% | 23
----------------|----------|---------|-------|----------
Total | 340 | 88 | 26% | 44
| Section | Content | Length |
|---|---|---|
| Executive Summary | What was tested, the headline number (26% CTR), and the single most important recommendation — written for someone who will not read the rest of the report | 1 page |
| Engagement Overview | Scope, authorization, dates, scenarios tested, methodology | 1 page |
| Key Findings | Overall metrics, department breakdown, notable behaviours (fast clickers, reporters), comparison to industry benchmark | 2–3 pages |
| Risk Narrative | What a real attacker could have achieved with the same access — specifically for Hartley, what the 43% Finance/AP CTR means in the context of the BEC incident that triggered this engagement | 1 page |
| Recommendations | Numbered, specific, prioritized by risk — not "improve security awareness" but "implement mandatory phishing training for Finance/AP within 30 days" | 1 page |
| Re-test Schedule | Proposed date for the next simulation (90 days is standard), and the metrics you'll use to measure improvement | Half page |
| Audience | Training Content | Delivery Method |
|---|---|---|
| All staff (clicked) | The five specific red flags from your campaign's email and landing page; how to verify an email before clicking; the report button | 10-minute interactive module, mandatory completion within 48h |
| Finance / AP (BEC pretext) | BEC recognition and verification procedures; the dual-authorisation rule for any payment request received by email | 30-minute department workshop, in person or live video |
| IT / Technical | Why they're targeted specifically; credential hygiene; reporting procedures and how IMAP monitoring works | Peer-led technical discussion — 30 mins |
| All staff (didn't click) | Positive reinforcement; what they noticed that others didn't; the report button reinforcement | 5-minute written communication from CISO — not training, recognition |
Not generic advice — the exact indicators in the email and landing page from Module 3. Employees learn better from what they experienced than from theoretical examples.
30 minutes: 10 min — what happened in the simulation, 10 min — real BEC examples (anonymised), 10 min — the new dual-authorisation procedure for email payment requests.
For staff who correctly reported. Short, specific, warm — acknowledges the action by name if the organization permits it.
| Component | What It Is | How to Set It Up |
|---|---|---|
| Report button | One-click "Report as Phishing" in Outlook/Gmail | Microsoft Defender's "Report Message" add-in (free, deploy via M365 Admin); Google's "Report phishing" is built in |
| Security mailbox | security@ or phishing@ address — the destination for reports | Create a shared mailbox; configure GoPhish's IMAP monitoring against it for simulation tracking |
| Triage SLA | How fast you acknowledge a report and confirm real vs simulation | Target: acknowledge within 1 business hour; resolve within 4 — communicate this SLA to all staff |
| Reporter recognition | Positive reinforcement for employees who report | Automated "thank you for reporting" email; monthly recognition in team communications for early reporters |
Sent automatically to anyone who reports to the security mailbox — confirms receipt, sets the expectation for follow-up, and reinforces that reporting was the right action.
All-staff message: "If you ever receive an email that seems suspicious, forward it to security@hartley-financial.com. We'll check it within the hour and let you know. If it turns out to be real, you may have just stopped an attack."
Monthly "first reporter" acknowledgement in the team channel. Low-friction, public, positive. Not a gift card scheme — that creates perverse incentives to report everything indiscriminately.
| Control | What It Does | How It Limits Phishing Damage |
|---|---|---|
| Multi-Factor Authentication (MFA) | Requires a second factor beyond the password | Stolen password from a phishing landing page is worthless without the second factor — stops the most common credential-harvest path cold |
| DMARC enforcement (p=reject) | Rejects emails spoofing Hartley's own domain | Prevents external attackers from sending email that appears to come from @hartley-financial.com — the exact attack vector in the original BEC incident |
| Email gateway with phishing detection | Scans inbound email for known-malicious indicators | Blocks the majority of mass-phishing; less effective against targeted, novel spear-phishing |
| Anti-spoofing headers + display-name warnings | Outlook/Gmail warns users when the display name doesn't match the sending domain | Surfaces the mismatch that GoPhish's templates exploit — makes the red flag visible in the UI |
| Payment dual-authorisation | No wire transfer proceeds on an email request alone — requires a phone confirmation | The one control that would have stopped the original Hartley BEC incident — and the simplest to implement |
| Month | Activity | Scenario |
|---|---|---|
| Month 1 | Baseline simulation (this workbook's engagement) | IT password reset — medium difficulty |
| Month 1–2 | Training delivery to all staff, Finance/AP workshop, CISO recognition email | — |
| Month 3 | First re-test — same scenario, same pretext | IT password reset — measure improvement from baseline |
| Month 6 | Second simulation — harder scenario | DocuSign document pending — tests a different trigger |
| Month 6 | Targeted training for departments that show regression | — |
| Month 9 | Third simulation — hardest scenario, if authorized | BEC wire transfer — for Finance/AP only, with specific authorization |
| Month 12 | Annual review — compare all four simulations, update training program, set next year's baseline | — |
A drop from 26% to 18% to 12% over three simulations is the story. A single 12% is just a number.
The reporting rate often rises faster than CTR falls — both trends belong in the annual report.
If you run the same scenario three times, employees start recognising the scenario format, not phishing indicators. Each cycle should introduce a new pretext category.
Did a real phishing attempt occur this year? Was it reported? Did the reporter use the same reporting button from training? That closed-loop story is the most powerful ROI metric you can give a board.