
GRAT2 C2
(c).-.(c) (c).-.(c) (c).-.(c) (c).-.(c) (c).-.(c)
/ ._. \ / ._. \ / ._. \ / ._. \ / ._. \
\( Y )/__ __\( Y )/__ __\( Y )/__ __\( Y )/__ __\( Y )/
(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)
|| G || || R || || A || || T || || 2 ||
_.' `-' '._ _.' `-' '._ _.' `-' '._ _.' `-' '._ _.' `-' '._
(.-./`-'\.-.)(.-./`-`\.-.)(.-./`-'\.-.)(.-./`-'\.-.)(.-./`-'\.-.)
`-' `-' `-' `-' `-' `-' `-' `-' `-' `-'
v1.1 beta!
حول GRAT2
GRAT2 هي أداة للتحكم والسيطرة (C2) مكتوبة بلغة Python 3، أما العميل فهو مكتوب باستخدام .NET 4.5. الفكرة الأساسية جاءت من Georgios Koumettou الذي بدأ المشروع.
لماذا قمنا بتطوير GRAT2؟
نحن نعلم أن هناك العديد من أدوات C2 المتاحة، لكننا طورنا هذه الأداة بدافع الفضول حول كيفية عمل C2 وتقنيات التهرب الأخرى. هذا كل شيء! ;-)
الميزات الحالية:
تقنيات التهرب:
- Sandbox (التحقق مما إذا كان الجهاز في المجال، إذا لم يكن كذلك فاخرج).
- إصلاح تتبع الأحداث لنظام Windows (ETW) Logging.
- إصلاح واجهة فحص البرامج الضارة (AMSI).
- caretrun - تنفيذ أمر عبر cmd.exe بتنسيق caret (^i^p^c^o^n^f^i^g) باستخدام explorer.exe كـ Parent PID (التهرب من بعض برامج مكافحة الفيروسات/EDRs).
الاتصال:
- HTTP و HTTPS
- DNS - يدعم حالياً سجلات TXT فقط.
- اتصال مشفر باستخدام XOR و base64.
- متوافق مع الوكيل (Proxy Aware).
الوحدات (Modules):
- startdns - تشغيل خادم استماع DNS.
- listagents - سرد الوكلاء الحاليين.
- localip - الحصول على عنوان IP المحلي للجهاز.
- uac - محاولة تجاوز UAC باستخدام تنظيف القرص الصامت مع تقنية Parent PID Spoofing.
- maketoken - إزالة الرمز الحالي وإنشاء رمز جديد باستخدام بيانات الاعتماد المقدمة (المجال أو المحلي).
- revtoself - إزالة الرمز الحالي.
- stealtoken - محاولة سرقة رمز من عملية قيد التشغيل وانتحال هوية المستخدم (مطلوب صلاحيات المسؤول).
- rportfwd - محاولة إنشاء إعادة توجيه منفذ عكسي.
- whoami - عرض المستخدم الحالي.
- hostname - عرض اسم المضيف للجهاز.
- domain - عرض اسم المجال المؤهل بالكامل (FQDN).
- screenshot - التقاط لقطة شاشة.
- download - تنزيل ملف.
- upload - تحميل ملف.
- cd - تغيير الدليل.
- run - تنفيذ أمر عبر cmd.exe باستخدام explorer.exe كـ Parent PID.
- caretrun - تنفيذ أمر عبر cmd.exe بتنسيق caret (^i^p^c^o^n^f^i^g) باستخدام explorer.exe كـ Parent PID (التهرب من بعض برامج مكافحة الفيروسات/EDRs).
- sleep - تعيين وقت سكون جديد.
- exit - خروج.
- shell - تنفيذ أمر عبر cmd.exe.
- powershell - تنفيذ أمر powershell باستخدام Unmanaged PowerShell.
- powerscript - تنفيذ نصوص powershell باستخدام Unmanaged PowerShell.
- executeassembly - محاولة تنفيذ تجميعات .NET في الذاكرة.
- ps - طباعة العمليات الحالية.
- pwd - طباعة الدليل الحالي.
- ls - عرض محتويات الدليل.
- pid - طباعة معرف العملية الحالي.
تقنيات حقن العمليات:
- dynamic_injectcrt - محاولة حقن شيلكود في عملية باستخدام Dynamic Invoke.
- ppid_processhollow - محاولة حقن شيلكود في عملية باستخدام Process Hollowing وتقنية Parent PID Spoofing (explorer.exe).
- processhollow - محاولة حقن شيلكود في عملية باستخدام تقنية Process Hollowing.
- injectppidapc - محاولة حقن شيلكود في عملية باستخدام QueueUserAPC وتقنية Parent PID Spoofing (explorer.exe).
- injectapc - محاولة حقن شيلكود في عملية باستخدام تقنية QueueUserAPC.
- injectcrt - محاولة حقن شيلكود في عملية بعيدة باستخدام تقنية Create Remote Thread.
راجع GRAT2_Shellcodes من أجل إنشاء شيلكود مستقل عن العنوان باستخدام Donut.
المهام المستقبلية (TODO):
- مستمع SMB.
- تحسين مستمع DNS بإضافة ميزات مثل سجلات A، التبديل من DNS إلى HTTP، إلخ.
- إضافة تسجيل (Logging).
- تنفيذ SOCKS5.
- إصلاح المشكلات المعروفة.
تكوين ملف تعريف العميل الخاص بك:

الإعدادات العامة ومستمع HTTP/s:
-
c2 - عنوان IP الخاص بخادم GRAT2 الخاص بك أو اسم المضيف (مطلوب).
-
sandboxEvasion - إذا تم التمكين (1)، سيتم تشغيل GRAT2 فقط على جهاز منضم إلى مجال، وإلا سيتم إنهاء GRAT2. إذا تم التعطيل (0)، سيتم تشغيل GRAT2 فقط على جهاز غير منضم إلى مجال، وإلا سيتم إنهاؤه (الافتراضي: معطل).
-
patchEtw - إذا تم التمكين (1)، سيتم إصلاح تتبع الأحداث لنظام Windows (الافتراضي: مفعل).
-
patchAmsi - إذا تم التمكين (1)، سيتم إصلاح واجهة فحص البرامج الضارة (الافتراضي: مفعل).
-
sleep - تعيين وقت السكون (الافتراضي: 3 ثوانٍ).
-
UserAgent - تعيين وكيل المستخدم (الافتراضي: "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; yie11; rv:11.0) like Gecko").
-
initialUrl - طلب GET الأولي لـ GRAT2 HTTP (الافتراضي: jquery.js).
-
sendResults - طلب POST لنتائج GRAT2 HTTP (الافتراضي: login.aspx).
ملاحظة إذا قمت بتغيير أي من سلسلة initialUrl أو sendResults، فيجب عليك تحديث السلسلة تحت GRAT2_Server/handlers.py في السطرين 49 و 84 على التوالي.
مستمع DNS:
- DNSListener - تمكين (1) أو تعطيل (0). إذا تم التمكين، قم بتكوين خادم GRAT2 وفقًا (انظر أدناه).
- DNSServer - خادم DNS الخاص بـ GRAT2.
- dnsMaxTXT - أقصى طول لسجلات TXT (الافتراضي: 255).
- maxDNSChar - أقصى حجم بالحروف لكل نطاق فرعي DNS (الافتراضي: 63).
تكوين ملف تعريف الخادم الخاص بك:

مستمع HTTP/s و DNS:
- HOST_NAME - عنوان IP الخاص بخادم GRAT2 الخاص بك أو اسم المضيف.
- PORT_NUMBER - منفذ الاستماع (80 أو 443).
- server_pem - موقع ملف PEM الخاص بك.
- dnsDomainName - خادم DNS الخاص بـ GRAT2.
الاستخدام:
- افتح مشروع عميل GRAT2 (GRAT2_Client.sln) باستخدام Visual Studio، قم بتغيير تكوين الحل من Debug إلى Release ثم قم ببناء الحل.
- قم بتثبيت الاعتماديتين (dnslib و termcolor) على خادم GRAT2: pip3 install -r requirements.txt
- ابدأ خادم GRAT2:

- قم بتشغيل الملف التنفيذي لعميل GRAT2 - GRAT2_Client\bin\Release\GRAT2_Client.exe
- تفاعل مع الوكيل:

ملاحظات الإصدار:
الإصدار 1.0 - 5 سبتمبر 2020
الإصدار 1.1 - 13 ديسمبر 2020
- إضافة مستمع DNS
- إضافة مستمع HTTPS
- إضافة وظيفة سرد الوكلاء
- إضافة وحدة localip، حيث يمكنك الحصول على عنوان IP المحلي للجهاز
- إعادة كتابة Unmanaged PowerShell
- التغيير من .NET 4.0 إلى .NET 4.5
الشكر والتقدير:
أيضًا، شكر لكل مؤلف ورابط المرجع موضح في كود المصدر.
إخلاء المسؤولية:
هذا المشروع يمكن استخدامه فقط للأغراض المصرح بها للاختبار أو التعليم. استخدام هذا البرنامج ضد أنظمة مستهدفة دون إذن مسبق غير قانوني، ولن يتحمل المؤلف أي مسؤولية عن الأضرار الناتجة عن سوء الاستخدام.