PageSourceSearch

https://delivr.to/assets/AITM-BlVSHJ6S.js

js delivr.to collected 2026-10-03 22:11:01 UTC 20,041 bytes, 8 lines download raw bytes

1import{u as Z,j as e}from"./query-DmstuUoN.js";import{a as o}from"./vendor-CHI41uxr.js";import{_ as G,H as b,u as ee,$ as S,y as x,z as j,A as f,E as h,B as v,L as M,R as E,a0 as se,k as re,a1 as C,U as ae,b as T,l as P,G as te}from"./index-BNXzEUcY.js";import{B as _}from"./badge-XJ-ekfky.js";import{A as F,a as O,b as U,c as R,d as B,e as D,f as z,g as I}from"./alert-dialog-DR35OEje.js";import{S as ne}from"./separator-DUsDTrP6.js";import{u as ie}from"./useDocumentTitle-BOGfSQQj.js";import{I as le}from"./info-Ce8kNf0i.js";import{E as ce}from"./external-link-C0FWOmYM.js";import{L as oe}from"./layers-Cv8344bu.js";import{L as de}from"./lock-Dzq4Py-2.js";import"./ui-WgsiDFN4.js";async function me(){return(await G.get("/payload")).data.filter(a=>a.framework)}async function W(){return(await G.get("/aitm")).data}const pe={evilginx:{id:"evilginx",name:"Evilginx",type:"AiTM Proxy",description:"Man-in-the-middle attack framework for phishing credentials and session cookies, bypassing MFA.",githubUrl:"https://github.com/kgretzky/evilginx2",icon:"/images/evilginx.png"},evilnovnc:{id:"evilnovnc",name:"MultiEvilnoVNC",type:"BiTM (Browser-in-the-Middle)",description:"Real-time browser mirroring attack using noVNC to capture credentials and session data. Spawns per-victim browser containers on demand.",githubUrl:"https://github.com/wanetty/MultiEvilnoVNC",icon:"/images/evilnovnc.png"},muraena:{id:"muraena",name:"Muraena",type:"AiTM Proxy",description:"AiTM reverse proxy with a different URL rewriting approach from Evilginx (numbered subdomain prefixes). Produces distinct detection artefacts for testing.",githubUrl:"https://github.com/muraenateam/muraena",icon:"/images/muraena.png"}},xe={o365:{id:"o365",name:"Microsoft 365",shortName:"O365",icon:"/images/o365.png"},okta:{id:"okta",name:"Okta",shortName:"Okta",icon:"/images/okta.png"},amazon:{id:"amazon",name:"Amazon",shortName:"Amazon",icon:"/images/amazon.png"},google:{id:"google",name:"Google Workspace",shortName:"Google",icon:"/images/Google.png"},github:{id:"github",name:"GitHub",shortName:"GitHub",icon:"/images/github-mark.png"}};function he({selectedFramework:n,selectedService:a}){const{data:m=[],isLoading:c,error:i}=Z({queryKey:["aitm-payloads"],queryFn:me}),u=Object.values(pe),p=n?[...new Set(m.filter(l=>l.framework?.toLowerCase()===n).map(l=>l.lure_theme?.toLowerCase()).filter(l=>!!l))]:[],N=n&&a?m.find(l=>l.framework?.toLowerCase()===n&&l.lure_theme?.toLowerCase()===a)??null:null;return{payloads:m,isLoading:c,isLoadingDetails:!1,error:i,frameworks:u,services:Object.values(xe),servicesForFramework:p,selectedPayload:N}}function ue(){const[n,a]=o.useState("idle"),[m,c]=o.useState(null),i=o.useRef(null),u=o.useRef(!1),p=o.useCallback(r=>{i.current=r,a("confirming"),c(null)},[]),N=o.useCallback(async()=>{if(!(!i.current||u.current)){u.current=!0,a("fetching_otp"),c(null);try{const{otp:r}=await W();a("launching");const d=new URL(i.current);d.searchParams.set("otp",r),window.open(d.toString(),"_blank","noopener,noreferrer"),b.success("Lure opened in new tab"),a("idle")}catch(r){const d=r instanceof Error?r.message:"Failed to launch emulation";c(d),a("error"),b.error("Failed to launch emulation",{description:d})}finally{u.current=!1}}},[]),l=o.useCallback(()=>{a("idle"),c(null),i.current=null},[]),A=o.useCallback(()=>{a("idle"),c(null),i.current=null},[]);return{step:n,error:m,startLaunch:p,confirmLaunch:N,cancelLaunch:l,reset:A}}function Se(){ie("AiTM Emulation");const{data:n}=ee(),[a,m]=o.useState(null),[c,i]=o.useState(null),{isLoading:u,payloads:p,frameworks:N,services:l,servicesForFramework:A,selectedPayload:r}=he({selectedFramework:a,selectedService:c}),{step:d,startLaunch:H,confirmLaunch:q,cancelLaunch:V}=ue(),[L,y]=o.useState("idle"),$=()=>{y("confirming")},K=async()=>{y("launching");try{const{otp:s}=await W(),t=p.filter(g=>g.target_url&&g.framework);for(const g of t){const k=new URL(g.target_url);k.searchParams.set("otp",s),window.open(k.toString(),"_blank","noopener,noreferrer")}b.success(`Opened ${t.length} lures in new tabs`)}catch(s){const t=s instanceof Error?s.message:"Failed to fetch OTP";b.error("Failed to open lures",{description:t})}finally{y("idle")}},w=n?.subscription_status==="Premium"||n?.subscription_status==="Enterprise",Q=s=>{a===s?(m(null),i(null)):(m(s),i(null))},Y=s=>{i(c===s?null:s)},J=()=>{if(!r)return;const s=r.target_url;if(!s){b.error("Launch unavailable",{description:"This payload doesn't have a target URL configured."});return}H(s)},X=s=>A.includes(s);return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("h1",{className:"text-3xl font-bold tracking-tight",children:"AiTM & BiTM Emulation"}),e.jsx(_,{variant:"secondary",className:"bg-primary/20 text-primary",children:"Beta"})]}),e.jsx("p",{className:"text-muted-foreground mt-1",children:"On-demand Adversary-in-the-Middle and Browser-in-the-Middle framework testing"})]})}),w&&e.jsx("div",{className:"relative overflow-hidden rounded-lg border border-destructive/50 bg-destructive/10 p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(S,{className:"h-5 w-5 text-destructive shrink-0 mt-0.5"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("h3",{className:"font-semibold text-destructive",children:"Live Credential Capture Warning"}),e.jsxs("p",{className:"text-sm text-destructive/90",children:["These are ",e.jsx("strong",{children:"not"})," simulations. Any credentials entered ",e.jsx("strong",{children:"WILL"})," be captured by"," ",e.jsx("a",{href:"https://delivr.to",target:"_blank",rel:"noopener noreferrer",className:"underline hover:no-underline",children:"delivr.to"}),". Every effort has been made to secure credentials and make them non-persistent, however proceed at your own risk and only ever enter testing credentials that can be easily rotated."]})]})]})}),e.jsxs(x,{children:[e.jsx(j,{className:"pb-3",children:e.jsxs(f,{className:"text-lg flex items-center gap-2",children:[e.jsx(le,{className:"h-5 w-5 text-primary"}),"Overview"]})}),e.jsxs(h,{className:"text-sm text-muted-foreground space-y-3",children:[e.jsx("p",{children:"Adversary-in-the-Middle (AiTM) and Browser-in-the-Middle (BiTM) frameworks have exploded in popularity recently, and deploying them in a testing environment is difficult and time consuming."}),e.jsxs("p",{children:["For Premium & Enterprise customers,"," ",e.jsx("a",{href:"https://delivr.to",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"delivr.to"})," ","provides on-demand access to common frameworks and lures, allowing you to test the effectiveness of your 'in the browser' and network controls. Want to know if you'd detect a user visiting a known AiTM or BiTM framework? Use the options below to find out."]}),e.jsxs("div",{className:"flex items-center gap-4 pt-1",children:[e.jsxs("a",{href:"https://blog.delivr.to/emulating-aitm-and-bitm-attacks-d7a4ac756576",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-primary hover:underline",children:["Learn more about AiTM testing",e.jsx(ce,{className:"h-3 w-3"})]}),w&&p.filter(s=>s.target_url&&s.framework).length>0&&e.jsx(v,{variant:"outline",size:"sm",onClick:$,disabled:L!=="idle",children:L==="launching"?e.jsxs(e.Fragment,{children:[e.jsx(M,{size:14,className:"mr-2"}),"Opening..."]}):e.jsxs(e.Fragment,{children:[e.jsx(oe,{className:"h-3.5 w-3.5 mr-1.5"}),"Open All (",p.filter(s=>s.target_url&&s.framework).length,")"]})})]})]})]}),w?u?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(M,{size:48})}):e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[e.jsxs("div",{className:"lg:col-span-2 space-y-6",children:[e.jsxs(x,{children:[e.jsxs(j,{className:"pb-3",children:[e.jsx(f,{className:"text-lg",children:"1. Select Framework"}),e.jsx(C,{children:"Choose the AiTM/BiTM framework to emulate"})]}),e.jsx(h,{children:e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:N.map(s=>e.jsxs("button",{onClick:()=>Q(s.id),className:T("relative flex flex-col items-start p-4 rounded-lg border-2 transition-all text-left","hover:border-primary/50 hover:bg-accent/50",a===s.id?"border-primary bg-primary/5":"border-border"),children:[a===s.id&&e.jsx("div",{className:"absolute top-2 right-2",children:e.jsx("div",{className:"h-3 w-3 rounded-full bg-primary flex items-center justify-center",children:e.jsx(P,{className:"h-2 w-2 text-primary-foreground"})})}),e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx("img",{src:s.icon,alt:s.name,className:"h-10 w-10 object-contain",onError:t=>{t.target.src="/images/blank.png"}}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-semibold",children:s.name}),e.jsx("a",{href:s.githubUrl,target:"_blank",rel:"noopener noreferrer",onClick:t=>t.stopPropagation(),className:"text-muted-foreground hover:text-primary",title:"View on GitHub",children:e.jsx(te,{className:"h-4 w-4"})})]}),e.jsx(_,{variant:"outline",className:"text-xs",children:s.type})]})]}),e.jsx("p",{className:"text-sm text-muted-foreground line-clamp-2",children:s.description})]},s.id))})})]}),e.jsxs(x,{className:T("transition-opacity",!a&&"opacity-50 pointer-events-none"),children:[e.jsxs(j,{className:"pb-3",children:[e.jsx(f,{className:"text-lg",children:"2. Select Service"}),e.jsx(C,{children:a?"Choose the service/theme to impersonate":"Select a framework first"})]}),e.jsx(h,{children:e.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-3",children:l.map(s=>{const t=X(s.id),g=c===s.id;return e.jsxs("button",{onClick:()=>t&&Y(s.id),disabled:!t,className:T("relative flex flex-col items-center p-4 rounded-lg border-2 transition-all",t?"hover:border-primary/50 hover:bg-accent/50":"opacity-40 cursor-not-allowed",g?"border-primary bg-primary/5":"border-border"),children:[g&&e.jsx("div",{className:"absolute top-1 right-1",children:e.jsx("div",{className:"h-3 w-3 rounded-full bg-primary flex items-center justify-center",children:e.jsx(P,{className:"h-2 w-2 text-primary-foreground"})})}),e.jsx("img",{src:s.icon,alt:s.name,className:"h-8 w-8 object-contain mb-2",onError:k=>{k.target.src="/images/blank.png"}}),e.jsx("span",{className:"text-sm font-medium",children:s.shortName}),!t&&e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"Not available"})]},s.id)})})})]})]}),e.jsxs("div",{className:"space-y-6",children:[e.jsxs(x,{children:[e.jsx(j,{className:"pb-3",children:e.jsx(f,{className:"text-lg",children:"Details"})}),e.jsx(h,{children:r?e.jsxs("div",{className:"space-y-4",children:[r.image&&e.jsx("div",{className:"relative aspect-video rounded-lg overflow-hidden bg-muted",children:e.jsx("img",{src:`data:image/png;base64,${r.image}`,alt:r.name,className:"w-full h-full object-cover",onError:s=>{s.target.parentElement.style.display="none"}})}),r.tags&&r.tags.length>0&&e.jsx("div",{className:"flex flex-wrap gap-1",children:r.tags.map(s=>e.jsx(_,{variant:"secondary",className:"text-xs",children:s},s))}),e.jsx("p",{className:"text-sm text-muted-foreground whitespace-pre-line",children:r.description}),e.jsx(ne,{}),r.references&&r.references.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"text-sm font-medium",children:"References"}),e.jsx("div",{className:"space-y-1",children:r.references.map((s,t)=>e.jsx("a",{href:s,target:"_blank",rel:"noopener noreferrer",className:"block text-xs text-primary hover:underline truncate",children:s},t))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Metadata"}),e.jsxs("dl",{className:"grid grid-cols-[auto_1fr] gap-x-4 gap-y-2 text-xs",children:[(r.payload_id||r.id)&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{className:"text-muted-foreground",children:"Payload ID"}),e.jsx("dd",{className:"font-mono truncate",children:r.payload_id||r.id})]}),r.recipe_id&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{className:"text-muted-foreground",children:"Recipe ID"}),e.jsx("dd",{className:"font-mono truncate",children:r.recipe_id})]})]})]})]}):e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:e.jsx("p",{className:"text-sm",children:"Select a framework and service to view details"})})})]}),e.jsx(x,{children:e.jsx(h,{className:"pt-6",children:w?e.jsx(v,{onClick:J,disabled:!r||d!=="idle",className:"w-full",size:"lg",children:d==="fetching_otp"||d==="launching"?e.jsxs(e.Fragment,{children:[e.jsx(M,{size:16,className:"mr-2"}),"Launching..."]}):e.jsxs(e.Fragment,{children:[e.jsx(E,{className:"h-4 w-4 mr-2"}),"Launch Emulation"]})}):e.jsxs("div",{className:"space-y-3 text-center",children:[e.jsxs("div",{className:"flex items-center justify-center gap-2 text-muted-foreground",children:[e.jsx(de,{className:"h-4 w-4"}),e.jsx("span",{className:"text-sm",children:"Premium or Enterprise required"})]}),e.jsx(v,{variant:"outline",className:"w-full",asChild:!0,children:e.jsx("a",{href:"/app/sett
1ings#billing",children:"Upgrade Subscription"})})]})})})]})]}):e.jsxs(x,{className:"overflow-hidden",children:[e.jsxs("div",{className:"relative bg-gradient-to-br from-primary/10 via-primary/5 to-chart-purple/10 dark:from-[#0a0a12] dark:via-[#0d1117] dark:to-[#1a1a2e] px-6 pt-8 pb-6 overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 right-0 w-48 h-48 bg-primary/10 dark:bg-primary/20 rounded-full blur-3xl"}),e.jsx("div",{className:"absolute bottom-0 left-0 w-32 h-32 bg-chart-purple/10 dark:bg-chart-purple/20 rounded-full blur-3xl"}),e.jsx("div",{className:"absolute inset-0 opacity-20 dark:opacity-50",style:{backgroundImage:`radial-gradient(1px 1px at 20px 30px, hsl(var(--primary)), transparent),
2                  radial-gradient(1px 1px at 40px 70px, hsl(var(--primary)), transparent),
3                  radial-gradient(1px 1px at 80px 20px, hsl(var(--chart-purple)), transparent),
4                  radial-gradient(1px 1px at 130px 50px, hsl(var(--primary)), transparent),
5                  radial-gradient(1px 1px at 180px 80px, hsl(var(--chart-purple)), transparent),
6                  radial-gradient(1px 1px at 250px 35px, hsl(var(--primary)), transparent),
7                  radial-gradient(1px 1px at 320px 60px, hsl(var(--chart-purple)), transparent),
8                  radial-gradient(1px 1px at 400px 25px, hsl(var(--primary)), transparent)`}}),e.jsxs("div",{className:"relative z-10",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[e.jsx("div",{className:"p-2 rounded-lg bg-primary/20 text-primary",children:e.jsx(E,{className:"h-6 w-6"})}),e.jsx("h2",{className:"text-2xl font-bold text-foreground dark:text-white",children:"Premium Feature"})]}),e.jsxs("p",{className:"text-muted-foreground dark:text-gray-300 text-base",children:["AiTM & BiTM emulation requires a"," ",e.jsx("span",{className:"text-primary font-medium",children:"Premium"})," or"," ",e.jsx("span",{className:"text-chart-purple font-medium",children:"Enterprise"})," ","subscription."]})]})]}),e.jsx(h,{className:"p-6",children:e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs(x,{className:"relative border-primary/50 hover:border-primary transition-colors",children:[e.jsx("div",{className:"absolute -top-3 left-4",children:e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium bg-primary text-primary-foreground",children:[e.jsx(se,{className:"h-3 w-3"}),"Popular"]})}),e.jsxs(j,{className:"pb-2 pt-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(re,{className:"h-5 w-5 text-primary"}),e.jsx(f,{className:"text-lg",children:"Premium"})]}),e.jsx(C,{children:"£299/mo or £2,999/yr"})]}),e.jsxs(h,{className:"space-y-3",children:[e.jsxs("ul",{className:"text-sm space-y-2 text-muted-foreground",children:[e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-success",children:"✓"}),e.jsx("strong",{children:"AiTM & BiTM emulation"})]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-success",children:"✓"}),"Campaign reports & exports"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-success",children:"✓"}),"2000 emails daily"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-success",children:"✓"}),"Security tool integrations"]})]}),e.jsx(v,{className:"w-full",asChild:!0,children:e.jsx("a",{href:n?.checkout_url||"https://delivr.to/pricing",target:"_blank",rel:"noopener noreferrer",children:"Upgrade to Premium"})})]})]}),e.jsxs(x,{className:"relative border-chart-purple/50 hover:border-chart-purple transition-colors",children:[e.jsx("div",{className:"absolute -top-3 left-4",children:e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium bg-chart-purple text-white",children:[e.jsx(ae,{className:"h-3 w-3"}),"Teams"]})}),e.jsxs(j,{className:"pb-2 pt-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(E,{className:"h-5 w-5 text-chart-purple"}),e.jsx(f,{className:"text-lg",children:"Enterprise"})]}),e.jsx(C,{children:"Custom pricing"})]}),e.jsxs(h,{className:"space-y-3",children:[e.jsxs("ul",{className:"text-sm space-y-2 text-muted-foreground",children:[e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-success",children:"✓"}),"Everything in Premium"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-success",children:"✓"}),"Team collaboration"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-success",children:"✓"}),"Custom payload uploads"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-success",children:"✓"}),"Priority support"]})]}),e.jsx(v,{variant:"outline",className:"w-full border-chart-purple/50 hover:bg-chart-purple/10",asChild:!0,children:e.jsx("a",{href:"mailto:[email protected]?subject=Enterprise%20Inquiry",children:"Contact Sales"})})]})]})]})})]}),e.jsx(F,{open:L==="confirming",onOpenChange:s=>!s&&y("idle"),children:e.jsxs(O,{children:[e.jsxs(U,{children:[e.jsxs(R,{className:"flex items-center gap-2",children:[e.jsx(S,{className:"h-5 w-5 text-destructive"}),"Open All Lures"]}),e.jsx(B,{asChild:!0,children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("p",{children:["This will open ",e.jsxs("strong",{children:[p.filter(s=>s.target_url&&s.framework).length," lures"]})," in new tabs across all frameworks and services. Any credentials entered ",e.jsx("strong",{children:"WILL"})," be captured."]}),e.jsx("p",{children:"Only ever enter testing credentials that can be easily rotated. Your browser may block some pop-ups."})]})})]}),e.jsxs(D,{children:[e.jsx(z,{children:"Cancel"}),e.jsx(I,{onClick:K,children:"I Understand, Open All"})]})]})}),e.jsx(F,{open:d==="confirming",children:e.jsxs(O,{children:[e.jsxs(U,{children:[e.jsxs(R,{className:"flex items-center gap-2",children:[e.jsx(S,{className:"h-5 w-5 text-destructive"}),"Live Lure Warning"]}),e.jsx(B,{asChild:!0,children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("p",{children:["This is ",e.jsx("strong",{children:"not"})," a simulation. Any credentials entered ",e.jsx("strong",{children:"WILL"})," be captured by"," ",e.jsx("a",{href:"https://delivr.to",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"delivr.to"}),"."]}),e.jsx("p",{children:"Every effort has been made to secure these credentials and make them non-persistent, however proceed at your own risk and only ever enter testing credentials that can be easily rotated."})]})})]}),e.jsxs(D,{children:[e.jsx(z,{onClick:V,children:"Cancel"}),e.jsx(I,{onClick:q,children:"I Understand, Proceed"})]})]})})]})}export{Se as AITM};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.