← Back to blog

Safely Test Captive Portal Phishing for Pentesters Using Dual Radio Toolkits

September 11, 2026
Safely Test Captive Portal Phishing for Pentesters Using Dual Radio Toolkits

Authorized captive portal phishing tests simulate a rogue Wi-Fi login page to expose weak session handling, credential harvesting risk, and mini-browser flaws in guest networks, always inside a signed scope with a client's written consent. The recommended approach: stand up an isolated rogue AP running its own captive portal, capture evidence to encrypted storage, and tear the rig down the moment the test window closes. Anything beyond that scope isn't a security assessment. It's just an attack.


TL;DR:

  • Rogue access points should use separate radios for hosting the fake portal and capturing traffic to ensure reliable test operation.
  • All testing must be within a signed scope, with clear authorization, documented rules, and a proper rollback plan to avoid legal or security issues.
  • Use encrypted local storage for captured credentials and timestamp logs in UTC to maintain data integrity and facilitate accurate analysis.
  • Modern mini-browsers often skip TLS warnings and session handling security measures, making them primary attack vectors for captive portal flaws.
  • The most effective mitigation is implementing HTTPS-based captive portals with strict certificate validation, as recommended by RFC 8952.

Aetherkey
Bring More Tools Into One Assessment
AetherKey combines Wi-Fi, USB, NFC/RFID, sub-GHz radio, and infrared capabilities in one compact toolkit for security professionals.
Explore AetherKey

Table of Contents

What Is Captive Portal Phishing in an Authorized Pentest?

Captive portal phishing, in this context, refers to a controlled simulation where a tester deploys a fake Wi-Fi login page to measure how real users, devices, and client organizations handle a spoofed guest network. It has nothing to do with criminals hijacking hotel or airport Wi-Fi to steal credentials from travelers. That's a different problem with a different victim profile, and it's not what this guide covers.

The scope matters because captive portal frameworks blur the line between "testing" and "attacking" faster than almost any other Wi-Fi technique. A rogue AP that broadcasts an evil twin SSID, intercepts DNS, and serves a fake login form is, mechanically, identical to a criminal tool. The only thing separating a lawful assessment from a federal case is documented authorization.

Before any radio keys up, your team needs:

  • A signed rules-of-engagement document naming the SSIDs, physical locations, and time windows in scope
  • Written client acknowledgment that the test may disrupt legitimate guest Wi-Fi access
  • A rollback plan and a named point of contact who can authorize an emergency stop
  • Confirmation that any captured credentials belong to synthetic test accounts, not real employees or guests

Run the first attempt on an isolated lab SSID with no production traffic anywhere near it. Once your captive portal template and logging pipeline behave the way you expect, move to a scoped live test with real hardware in the client's environment, never the other way around.

Pro Tip: Build a "canary" test account with a throwaway password before day one. If that exact credential shows up in your logs during a live engagement, you know your capture pipeline works end to end, without guessing.

What Hardware and Software Does the Test Require?

A captive portal simulation needs two wireless radios doing two different jobs. One interface hosts the rogue access point in master/AP mode; the other stays in monitor mode to run deauthentication and packet capture. Trying to do both on a single adapter is the most common reason field tests stall out, since most consumer Wi-Fi chipsets can't hold AP mode and injection mode at once.

Core software stack:

  1. hostapd to run the access point itself, with a config that matches the target SSID's naming and security posture
  2. dnsmasq or dhcpd to hand out lease addresses and push clients toward the local portal
  3. A DNS redirection layer to route all lookups to the captive portal's IP, rather than relying on legitimate upstream resolution
  4. A lightweight web server (nginx or lighttpd) serving the actual portal template
  5. mdk4 or aireplay-ng for targeted deauthentication against the legitimate AP
  6. openssl for certificate generation if you're testing TLS handling, plus airodump-ng for handshake and session capture

Toolchains built around this exact pattern (two interfaces, hostapd, dhcpd, DNS spoofing, deauth) show up consistently in documented captive portal attack frameworks, and for good reason: it's the minimum viable rig.

You'll also need root or admin privileges on the test host, an isolated subnet with its own DHCP scope so nothing leaks into production, and a secure location to store handshake captures if you're validating WPA2/WPA3 fallback behavior.

This is exactly where fragmented tool carrying becomes a liability. A compact multi-protocol tool consolidates the Wi-Fi attack suite, a second radio interface, and on-device controls into one unit, so you're not juggling a laptop, two USB adapters, and a separate deauth tool during a live engagement. Look for modular firmware and companion app control when evaluating any integrated kit; it's what lets you swap portal templates or logging behavior without reflashing the whole device.

AetherKey

How Do You Run the Attack Workflow Step by Step?

The sequence below assumes signed authorization is already in hand and your isolated test environment is live.

  1. Reconnaissance. Identify the target SSID, its security type, and whether the existing network already runs a captive portal. Probe for canary endpoints and DNS behavior to determine whether client devices are tracked by MAC address or IP session, since that changes how your spoofed portal needs to handle repeat visitors.

  2. Choose your vector. An evil twin or rogue AP works best when you need to fully intercept traffic and test DNS/TLS handling. A pure portal emulation (cloning an existing captive portal without impersonating the whole SSID) works better when the goal is narrowly testing the portal's own logic, not the wireless layer.

  3. Deploy. Configure your AP's gateway IP, set DHCP scope, and route DNS through iptables DNAT rules pointing at your local portal server. Decide early whether you're using a self-signed certificate or a valid one; self-signed certs will trigger warnings in modern browsers, and that behavior itself is often part of what you're documenting.

  4. Verify and collect. Walk through the login flow as a real user would, then check how the platform's mini-browser handles it. Testing frameworks built for exactly this purpose, like Wi-Fi Chameleon, found that many captive portal mini-browsers skip warnings for deprecated TLS and mixed HTTP content, and several retained session data between separate visits. Capture packet traces, screenshots of any certificate warnings (or lack of them), and handshake logs. Encrypt everything the moment it lands on disk; frameworks built for authorized testing typically use Fernet-based encryption for exactly this reason.

  5. Shut down. Kill the deauth process first, then tear down the rogue SSID, flush your DNAT rules, and confirm the legitimate network is reachable again before you leave the site.

Pro Tip: Time-stamp every log entry in UTC, not local time. When you're reconciling your capture logs against the client's own network logs during the debrief, mismatched time zones turn a clean report into a two-hour argument.

What Should Your Report Include for Defenders?

The value of a captive portal test isn't the successful capture. It's what you hand the client afterward. Three categories of mini-browser weakness are worth demonstrating explicitly: missing or weak TLS certificate validation, absent HSTS enforcement, and session or cookie data that survives between separate portal visits, all patterns confirmed in testing across popular mini-browser implementations.

Document specific bypass vectors too, not just the general weakness. That means MAC address spoofing to defeat device-based session tracking, DNS tunneling through whitelisted "walled garden" domains, and session fixation where a captured token remains valid longer than it should.

Your evidence package needs, at minimum:

  • Screenshots of any TLS or certificate warnings the mini-browser did or didn't show
  • Full packet captures around the portal handshake
  • Timestamped logs of the entire portal flow, from association to credential submission
  • A clear note on whether whitelisted domains could be abused for data exfiltration

On the remediation side, RFC 8952 lays out the fix that most captive portal implementations still ignore: a secure, HTTPS-based Captive Portal API that lets devices detect captivity without the network forging DNS or HTTP responses. Pair that with strict certificate validation and session isolation between the portal and the eventual authenticated network, and most of what you just demonstrated stops working.

Every credential your rig captures should belong to a synthetic account you created for the test, never a real employee's or guest's login. When synthetic accounts aren't practical, get explicit written consent from every real participant and set a hard data retention limit, then delete captured data once the report is delivered.

Encrypt everything at rest. Fernet or an equivalent symmetric scheme is the baseline, and access to that decryption key should sit with two people on the test team at most, not the whole project channel.

  • Confirm the debrief and remediation window with the client before the test starts, not after
  • Return full network control to the client's operators the moment testing ends, with written confirmation
  • Keep a documented kill switch: one command to halt deauth, one to drop the rogue SSID
  • Log every rollback action with a timestamp, the same way you log the attack itself

Pro Tip: Practice your kill switch sequence in the lab until it's muscle memory. The worst time to fumble a rollback command is during a live engagement with a client's guest network actually down.

Why Do Users Fall for Captive Portal Phishing?

Most people don't inspect a Wi-Fi login page. They see a familiar hotel logo or a "Guest Network" name and start typing, because captive portals have trained an entire generation of users to treat any login prompt on a coffee shop or airport network as routine.

That trained behavior is the real vulnerability, and it shows up in a few consistent patterns. Users reconnect to previously seen SSID names without checking whether the access point broadcasting it is the same physical hardware, since most devices don't warn about a duplicate network name from a different source. Mobile mini-browsers compound the problem: testing on real devices found weak or missing TLS validation and no warning for deprecated encryption, so the padlock cues people rely on in a full browser often just aren't there.

People also tend to reuse the same credentials across a hotel portal, an airline lounge login, and their actual corporate account, which is exactly why a captured guest-network password matters far beyond the guest network itself. And because captive portals frequently ask for an email address or a "continue with" social login, users have been conditioned to hand over identity data to a Wi-Fi splash screen without a second thought.

For testers, this means your report should evaluate more than technical flaws. It should note whether the organization's own guest portal habits (reused SSID names, no certificate pinning cues, no user education) are training its people toward exactly this kind of exposure.

What Real Incidents Show About This Attack Pattern

Rogue captive portal attacks aren't a theoretical exercise. Open-source proof-of-concept projects have demonstrated how little hardware this actually takes: ESP32-based tools can broadcast a fake AP, serve a captive portal, and log submitted credentials to onboard storage, all from a device smaller than a deck of cards. That accessibility cuts both ways. It's what makes captive portal phishing a realistic threat model worth testing for, and it's exactly why authorized simulations using the same techniques carry real value.

Public write-ups of enterprise guest-network assessments follow a near-identical pattern every time: testers stand up an evil twin with a name matching the legitimate SSID, wait for auto-reconnect behavior to pull devices onto the rogue network, and capture credentials through a cloned login page before anyone notices the signal strength difference. Session-tracking weaknesses show up constantly in these engagements. Because many captive portals track sessions by MAC address alone, a spoofed MAC combined with a stolen session cookie can extend unauthorized access well past the original login.

Lightweight, screenshot-based simulator projects built specifically for awareness training and controlled demonstrations exist precisely because these lessons land better as a live demo than a slide deck. Show a security team their own captured guest credentials on a projector, and the mini-browser TLS gap stops being an abstract finding. It becomes something they remember the next time they're scoping a guest network rollout.

What Real Incidents Show About This Attack Pattern — overview diagram

Pocket Toolkits vs. Full Toolchains: What Actually Speeds Up Field Work

A pocket toolkit earns its keep in triage: scoping an SSID, running a quick portal test, confirming a mini-browser flaw before you commit a full afternoon to it. Deep packet analysis, custom certificate chains, or long-running handshake captures still want a laptop and a full toolchain behind them.

What actually saves time in the field is firmware you can reconfigure without a full reflash, and a companion app that lets you swap portal templates or check capture logs without tethering back to a laptop mid-engagement.

— Prada

How AetherKey Fits the Captive Portal Testing Workflow

This multi-protocol field toolkit is built around the bottleneck of carrying a laptop, two Wi-Fi adapters, and a separate deauth tool just to run one authorized portal test. It consolidates the dual-interface requirement, a Wi-Fi attack suite, and on-device controls into a single handheld unit, so the AP and monitor/injection roles you'd normally split across two adapters run from one piece of hardware.

Aetherkey

Encrypted local logging lives on the device itself, which matters when you're documenting captured test credentials in the field and need that evidence secured before you're back at a laptop. Different editions of such toolkits cater to teams seeking either a reliable out-of-box toolkit or full SDK access for custom development. Companion Android apps or browser-based control panels facilitate switching between captive portal tests and other assessment techniques without swapping hardware.

If you're scoping your next authorized engagement and want to see full specs, editions, and pricing, check the AetherKey product page before your next test window opens.

Sources

FAQ

Only with explicit written authorization, a defined scope, and rules of engagement signed before any radio transmits; without that, it's the same conduct as criminal Wi-Fi phishing.

What's the difference between an evil twin and a captive portal clone?

An evil twin impersonates the entire wireless network, while a portal clone reproduces just the login page logic, useful when you only need to test the portal itself rather than intercept all wireless traffic.

Why do mini-browsers matter in these tests?

Captive portal mini-browsers on many devices skip TLS warnings and HSTS enforcement that a full browser would show, based on testing on many popular platforms, making them a faster path to finding real weaknesses.

Can one device handle both the rogue AP and deauthentication?

Not reliably. Most chipsets can't run AP mode and monitor/injection mode simultaneously, which is why dual-interface hardware like AetherKey's Wi-Fi attack suite is built around two separate radio roles.

What's the single most important fix for defenders?

Adopting a secure, HTTPS-based Captive Portal API as specified in RFC 8952, paired with strict certificate validation, closes most of the gaps these tests expose.

Made using BabyLoveGrowth's AI