HardHat C2
إطار عمل تعاوني ومتعدد المنصات للقيادة والتحكم (Command & Control) مكتوب بلغة C#، مصمم لفرق الاختبارات الحمراء وسهولة الاستخدام

HardHat هو إطار عمل (C2) متعدد المستخدمين يعتمد على .NET و C#، مصمم للمساعدة في مهام الفرق الحمراء واختبارات الاختراق. يهدف إلى تحسين جودة الحياة أثناء المهام من خلال توفير إطار C2 قوي وسهل الاستخدام.
يتكون HardHat من ثلاثة مكونات رئيسية:
- خادم فريق (Teamserver) يعمل بـ ASP.NET
- عميل (Client) يعمل بـ Blazor .NET
- غرسات (Implants) مدمجة مبنية بلغة C#
- دعم الغرسات من جهات خارجية بلغات أخرى
التوثيق الكامل متاح على الرابط https://docs.hardhat-c2.net/.
ملاحظة: HardHat في إصدار ألفا (Alpha)؛ سيتضمن أخطاء وميزات مفقودة وأحداث غير متوقعة. شكرًا لك على تجربته، ويرجى الإبلاغ عن أي مشكلات أو ميزات مفقودة لمعالجتها.
المجتمع
انضم إلى مجتمعنا على Discord للتحدث عن HardHat C2 والبرمجة والفرق الحمراء وموضوعات الأمن السيبراني العامة. إنه أيضًا مكان رائع لطلب المساعدة أو الإبلاغ عن الأخطاء أو الميزات الجديدة، والبقاء على اطلاع بأحدث الإضافات.
نرحب بالمساهمات البرمجية! لا تتردد في تقديم طلبات الميزات أو طلبات السحب (pull requests) أو إرسال أفكارك عبر Discord.
الميزات
دعم الأصول المخصصة (Custom Asset Support)
- الأصول هي الغرسات والمكونات الإضافية المرتبطة بها لخادم الفريق والعميل.
للاطلاع على المتاح منها وتعلم كيفية إنشاء المزيد، راجع HardHat Toolbox
خادم الفريق والعميل
- حسابات مشغلين فردية مع التحكم في الوصول المستند إلى الأدوار (RBAC)
- يتيح تخصيص الحساب
- يتيح تقييد الوصول إلى ميزات محددة (مثل دور ضيف للعرض فقط، موافقة opsec لقائد الفريق (قيد التطوير))
- المديرون (Listeners)
- توليد الحمولات الديناميكية (EXE، DLL، شيل كود، أمر PowerShell)
- إنشاء وتعديل ملفات تعريف C2 أثناء العمل داخل العميل
- تخصيص توليد الحمولة
- وقت النوم/الارتعاش (Sleep time/jitter)
- تاريخ الإيقاف (Kill date)
- ساعات العمل
- النوع (EXE، DLL، شيل كود، أمر PowerShell)
- الأوامر المضمنة (قيد التطوير)
- خيار تشغيل ConfuserEx
- رفع وتنزيل الملفات
- عرض الرسم البياني (Graph View)
- واجهة مستخدم رسومية لتصفح الملفات
- سجل الأحداث (Event Log)
- تسجيل JSON للأحداث والمهام
- تتبع الغنائم (Loot tracking)
- بيانات الاعتماد
- التنزيلات
- تتبع مؤشرات الاختراق (IOC)
- بروكسيات التوجيه (SOCKS 4a، إعادة توجيه المنافذ)
- مخزن بيانات الاعتماد
- سجل الأوامر مع الإكمال التلقائي
- أمر مساعدة مفصل
- محطة bash تفاعلية إذا كان العميل على Linux أو PowerShell على Windows
- يتيح التحليل التلقائي وتسجيل أوامر المحطة مثل proxychains
- تخزين قاعدة بيانات دائمة لعناصر خادم الفريق (حسابات المستخدمين، المديرين، المهندسين، الأحداث، المهام، بيانات الاعتماد، التنزيلات، الرفعات، إلخ.)
- تتبع كيانات الاستطلاع (تتبع معلومات عن المستخدمين/الأجهزة، بيانات وصفية عشوائية حسب الحاجة)
- ملفات مشتركة لبعض الأوامر (راجع صفحة خادم الفريق للتفاصيل)
- نافذة تفاعل قائمة على التبويب لإصدار الأوامر
- خيار عرض جدولي لبعض الأوامر (مثل
ls، ps، إلخ.)
- تحليل تلقائي لمخرجات Seatbelt لإنشاء "كيانات استطلاع" للرجوع إليها بسهولة
- سمة داكنة وفتحة 🤮

المهندسون (Engineers)
- غرسة إطار عمل .NET بلغة C# لأجهزة Windows (دعم CLR/.NET 4 فقط حاليًا)
- غرسة واحدة فقط في الوقت الحالي، ولكن نخطط لإضافة أخرى
- يمكن توليدها كـ EXE، DLL، شيل كود، أو محمل PowerShell
- تشفير RC4 لذاكرة الحمولة والكومة (heap) أثناء النوم (EXE / DLL فقط)
- تشفير AES لجميع اتصالات الشبكة
- تكامل ConfuserEx للإبهام
- اتصال HTTP، HTTPS، TCP، SMB
- يمكن أن يعمل TCP & SMB بطريقة النظير للنظير (P2P) في تكوينات bind أو reverse
- مفتاح فريد لكل غرسة يُولد وقت الترجمة
- عناوين URL متعددة لرد الاتصال حسب ملف تعريف C2
- تكامل P/Invoke & D/Invoke لاستدعاءات واجهة برمجة تطبيقات Windows
- دعم SOCKS 4a
- إعادة توجيه المنافذ العكسية وإعادة توجيه المنافذ
- جميع الأوامر تعمل كمهام غير متزامنة وقابلة للإلغاء
- خيار تشغيل الأوامر بشكل متزامن إذا رغبت
- تنفيذ التعليمات البرمجية المضمنة (Inline assembly) وتنفيذ الشيل كود المضمن
- حقن DLL
- تنفيذ التجميعات وتكامل Mimikatz
- Mimikatz ليس مدمجًا في الغرسة بل يُدفع عند إصدار أوامر محددة
- أدوات تعداد محلية وشبكية متنوعة
- أوامر التلاعب بالرموز (Token manipulation)
- سرقة الرمز (Steal Token) / القناع (Mask) (قيد التطوير)
- أوامر الحركة الجانبية (Lateral Movement Commands)
- الانتقال (Jump) (psexec، wmi، wmi-ps، winrm، dcom)
- التنفيذ عن بُعد (قيد التطوير)
- تصحيح AMSI و ETW
- PowerShell غير المُدار
- متجر البرامج النصية (Script Store) يتيح تحميل نصوص متعددة مرة واحدة
- التوليد والحقن (Spawn & Inject)
- تشغيل (Run)، تنفيذ (execute)، وشل (shell)

البدء
التثبيت
Docker
- قم بتثبيت Docker و Docker Compose
- نفذ
docker compose up -d
- اختياريًا، قم بتوفير
HARDHAT_ADMIN_USERNAME و/أو HARDHAT_ADMIN_PASSWORD كمتغيرات بيئة؛ إذا تم حذفهما، فسيتم كتابة اسم المستخدم الافتراضي وكلمة المرور العشوائية إلى سجلات خادم الفريق في أول تشغيل
- انتقل إلى https://localhost:7096/ في متصفحك
يدويًا
- قم بتثبيت .NET 7 SDK من Microsoft
- نفذ
dotnet run من المجلد .\TeamServer لبناء وتشغيل خادم الفريق
- نفذ
dotnet run https://<TEAMSERVER_HOST>:<TEAMSERVER_PORT> من المجلد HardHatC2Client
- على سبيل المثال، بافتراض أن خادم الفريق يعمل على نفس المضيف والمنفذ الافتراضي:
dotnet run https://127.0.0.1:5000
- انتقل إلى https://localhost:7096/ في متصفحك
لتكوين عنوان استماع خادم الفريق (أي حيث سيتصل العملاء)، قم بتحرير .\TeamServer\Properties\LaunchSettings.json وتغيير "applicationUrl": "https://127.0.0.1:5000" إلى الموقع والمنفذ المطلوبين.
الإعداد
- سجل الدخول إلى واجهة مستخدم الويب للعميل باستخدام اسم المستخدم وكلمة المرور التي تم تعيينها عبر متغير البيئة أو التي تم طباعتها إلى STDOUT بواسطة خادم الفريق
- انتقل إلى صفحة الإعدادات (Settings) وأنشئ حساب مستخدم جديد
- إذا نجحت العملية، سيظهر رسالة؛ يمكنك بعد ذلك تسجيل الدخول بهذا الحساب للوصول إلى العميل الكامل
تتبع الإصدارات
- إصدار ألفا 0.2 - 7/6/23
- إصدار ألفا - 3/29/23