
مولّد ملفات تعريف C2 متعددة الأشكال لـ Cobalt Strike يقوم بأتمتة إنشاء تكوينات Beacon متخفية مع خيارات عشوائية لـ HTTP وDNS وحقن العمليات لتقليل الاكتشاف.
SourcePoint هو مولد ملفات تعريف C2 متعددة الأشكال لـ Cobalt Strike C2s، مكتوب بلغة Go. يتيح SourcePoint إنشاء ملفات تعريف C2 فريدة بشكل ديناميكي مما يساعد في تقليل مؤشرات الاختراق ("IoCs") ويسمح للمشغل بإعداد ملفات تعريف معقدة بأقل جهد. تم ذلك من خلال مراجعة شاملة للمقالات وكذلك ملاحظات التصحيح لتحديد الوظائف الأساسية والميزات القابلة للتعديل. تم تصميم SourcePoint بهدف معالجة مشكلة كيفية جعل نشاط C2 لدينا أكثر صعوبة في الكشف، مع التركيز على الابتعاد عن IoCs الخبيثة إلى المشبوهة. الهدف هنا هو أنه من الأصعب اكتشاف C2 الخاص بنا إذا كانت IoCs لدينا ليست خبيثة بطبيعتها وتتطلب بحثًا إضافيًا لاكتشاف الطبيعة المشبوهة. يحتوي SourcePoint على العديد من الخيارات القابلة للتكوين للاختيار من بينها لتعديل ملف التعريف الخاص بك (في معظم الحالات، إذا تركت فارغة، سيختار SourcePoint عشوائيًا لك). تعدل الملفات التعريفية التي تم إنشاؤها جميع جوانب C2 الخاص بك. الهدف من هذا المشروع ليس فقط المساعدة في تجاوز الضوابط القائمة على الاكتشاف ولكن أيضًا المساعدة في دمج حركة مرور C2 ونشاطه في البيئة، مما يجعل النشاط المذكور صعب الكشف.
go install github.com/Tylous/SourcePoint
$go get gopkg.in/yaml.v2
$go build SourcePoint.go
#./SourcePoint -h
_____ ____ _ __
/ ___/____ __ _______________ / __ \____ (_)___ / /_
\__ \/ __ \/ / / / ___/ ___/ _ \/ /_/ / __ \/ / __ \/ __/
___/ / /_/ / /_/ / / / /__/ __/ ____/ /_/ / / / / / /_
/____/\____/\__,_/_/ \___/\___/_/ \____/_/_/ /_/\__/
(@Tyl0us)
Usage of ./SourcePoint:
-Allocation string
الحد الأدنى من الذاكرة المطلوبة للمحتوى المحقون (يجب أن يكون أعلى من 4096)
-BeaconGate string
تحديد خيارات بوابة المنارة (All, Comms, Core, Cleanup) أو APIs محددة
-CDN string
اسم ملف تعريف الارتباط CDN (يُستخدم عادةً لملفات تعريف AzureEdge)
-CDN-Value string
قيمة ملف تعريف الارتباط CDN (يُستخدم عادةً لملفات تعريف AzureEdge)
-Customuri string
URI الأساسي لملف تعريف HTTP GET/POST المخصص - لا يمكن استخدامه مع CustomuriGET أو CustomuriPOST
-CustomuriGET string
URI الأساسي لملف تعريف HTTP GET المخصص - يجب استخدامه مع CustomuriPOST
-CustomuriPOST string
URI الأساسي لملف تعريف HTTP POST المخصص - يجب استخدامه مع CustomuriGET
-Datajitter string
إلحاق قيمة بإخراج خادم HTTP-Get و HTTP-Post (الافتراضي "50")
-Forwarder
تمكين رأس X-forwarded-For (جيد عندما يكون C2 الخاص بك خلف معيد توجيه)
-Host string
اسم نطاق خادم الفريق
-Httplib string
تحديد مكتبة HTTP Beacon الافتراضية:
[*] wininet
[*] winhttp' (الافتراضي "winhttp")
-Injector string
اختيار الطريقة المفضلة لتخصيص الذاكرة في العملية البعيدة:
[*] VirtualAllocEx (ممتاز للهندسة المعمارية المتقاطعة أي x86 -> x64 و x64->x86)
[*] NtMapViewOfSection (خيار أكثر تمويهاً، لكنه يفشل إلى VirtualAllocEx، مما يولد أحداثًا أكثر عندما يفعل ذلك)
-Jitter string
النسبة المئوية للتشتت لاتصال المنارة بالمركز
-Keylogger string
اختيار الطريقة المفضلة التي ستستخدمها المنارة لتسجيل ضغطات المفاتيح:
[*] GetAsyncKeyState (يستخدم API GetAsyncKeyState (DLL منفصل لعملية x86/x64))
[*] SetWindowsHookEx (يستخدم API SetWindowsHookEx)
-Keystore string
اسم مخزن المفاتيح SSL
-Metadata string
تحديد كيفية تحويل البيانات الوصفية وتضمينها في طلب HTTP:
[*] base64
[*] base64url
[*] netbios
[*] netbiosu (الافتراضي "base64url")
-Outfile string
اسم ملف الإخراج
-PE_Clone string
ملف PE الذي ستحاكيه المنارة (استخدم الرقم):
[1] ActivationManager.dll
[2] audioeng.dll
[3] AzureSettingSyncProvider.dll
[4] BingMaps.dll
[5] DIAGCPL.dll
[6] EDGEHTML.dll
[7] FILEMGMT.dll
[8] FIREWALLCONTROLPANEL.dll
[9] GPSVC.dll
[10] gpupvdev.dll
[11] libcrypto.dll
[12] srvcli.dll
[13] srvsvc.dll
[14] Windows.Storage.Search.dll
[15] Windows.System.Diagnostics.dll
[16] Windows.System.Launcher.dll
[17] Windows.System.SystemManagement.dll
[18] Windows.UI.BioFeedback.dll
[19] Windows.UI.BlockedShutdown.dll
[20] Windows.UI.Core.TextInput.DLL
[21] winsqlite3.dll
[22] WMNetMgr.DLL
[23] wwanapi.dll
[24] WWANSVC.DLL
[25] wow64win.dll
[26] wow64.dll
[27] ctiuser.dll (DLL الخاص بـ Carbon Black)
[28] InProcessClient.dll (DLL الخاص بـ SentinelOne)
[29] umppc.dll (DLL الخاص بـ CrowdStrike)
[30] CyMemDef64.dll (DLL الخاص بـ Cylance)
-Password string
كلمة مرور شهادة SSL
-PostEX_Name string
الملف الذي ستنشئه الأنشطة اللاحقة للاستغلال وتحقن فيه (استخدم الرقم):
[1] WerFault.exe
[2] WWAHost.exe
[3] choice.exe
[4] bootcfg.exe
[5] dtdump.exe
[6] expand.exe
[7] fsutil.exe
[8] gpupdate.exe
[9] gpresult.exe
[10] logman.exe
[11] mcbuilder.exe
[12] mtstocom.exe
[13] pcaui.exe
[14] powercfg.exe
[15] svchost.exe
-Profile string
ملف تعريف HTTP GET/POST (استخدم الرقم):
[1] Windowsupdate
[2] Slack
[3] Gotomeeting
[4] Outlook.Live
[5] Safebrowsing [متوافق مع Cloudfront]
[6] AzureEdge [متوافق مع AzureEdge]
[7] Field-Keyword [متوافق مع Cloudfront]
[8] مخصص (يُستخدم مع ProfilePath)
-ProfilePath string
مسار ملف تعريف HTTP GET/POST المخصص...
-Sleep string
وقت النوم الأولي للمنارة
-Stage string
تعطيل استضافة المرحلة (الافتراضي: False) (الافتراضي "false")
-Syscall string
يحدد القدرة على استخدام استدعاءات النظام المباشرة/غير المباشرة بدلاً من استدعاءات API القياسية لويندوز:
[*] None
[*] Direct
[*] Indirect (الافتراضي "None")
-TasksDnsProxyMaxSize string
الحجم الأقصى (بالبايت) لبيانات الوكيل المنقولة عبر قناة اتصال DNS عند الفحص
-TasksMaxSize string
الحجم الأقصى (بالبايت) للمهام وبيانات الوكيل التي يمكن نقلها عبر قناة اتصال عند الفحص
-TasksProxyMaxSize string
الحجم الأقصى (بالبايت) لبيانات الوكيل المنقولة عبر قناة الاتصال عند الفحص
-ThreadSpoof
يضبط مكتبات DLL اللاحقة للاستغلال لإنشاء سلاسل تنفيذ بعنوان بداية مزيف. يتم إنشاؤها عشوائيًا (الافتراضي true)
-Uri string
عدد URIs التي يمكن لمنارة ملف التعريف الاختيار منها
-Useragent string
سلسلة UserAgent لاستخدامها من قبل المنارة (اترك فارغًا للاختيار العشوائي):
[*] Win10Chrome
[*] Win10Edge
[*] Win10IE
[*] Win10
[*] Win6.3
[*] Linux
[*] Mac
-Yaml string
مسار إلى ملف تهيئة Yaml
يقوم SourcePoint بشكل أساسي بأتمتة عملية بناء ملف التعريف. من المهم جدًا معرفة جميع الميزات المعدلة في هذه الملفات التعريفية. يمكن أن تساعد معرفة هذه الميزات حقًا في زيادة نجاحك.
بينما يوجد العديد من الإعدادات والميزات الموصوفة في وظيفة المساعدة لـ SourcePoint، هناك العديد من الميزات الهامة المضمنة في كل ملف تعريف والتي من المهم أن تكون على دراية بها. هذه الميزات هي:
يعدل هذا الجزء من ملف التعريف الخاص بك كيفية عمل المنارة. بعض الميزات المستخدمة لتعديل السلوك هي:
/9ZXq سحب الشيل كود أيضًايتحكم هذا الجزء من ملف التعريف الخاص بك في كيفية تحميل المنارة في الذاكرة وتحرير محتوى DLL المنارة. بعض الميزات المستخدمة لتعديل السلوك هي:
يتحكم هذا الجزء من ملف التعريف الخاص بك في كيفية تشكيل المنارة للمحتوى المحقون والتحكم في سلوك حقن العملية. بعض الميزات المستخدمة لتعديل السلوك هي:
يتحكم هذا الجزء من ملف التعريف الخاص بك في كيفية تعامل المنارة مع وحدات وأوامر ما بعد الاستغلال. بعض الميزات المستخدمة لتعديل السلوك هي:
حاليًا يوفر لك SourcePoint 7 خيارات مدمجة لملفات تعريف حركة مرور HTTP/HTTPS، بناءً على ملفات تعريف موجودة. من بين هذه الـ 6، 4 منها تتأثر بـ وتعتمد على:
3 من خيارات ملف التعريف (5 و 6 و 7) مصممة خصيصًا لـ:
الخيار الأخير (8) مصمم لإدخال ملف تعريف مخصص. تم تصميم هذا الخيار للسماح للمشغل باستخدام ملف تعريف حركة مرور مخصص بالكامل. هناك حالات عديدة حيث سيعطي ملف تعريف حركة مرور فريد تمامًا نجاحًا عاليًا بدلاً من أحد هذه الملفات. يسمح هذا أيضًا للمشغلين باستخدام ميزات المرونة لـ SourcePoint مع ملف تعريف حركة المرور المفضل لديهم. نظرًا لأن هذا يسمح بملفات تعريف فريدة، فمن المهم التأكد من تعديل وضبط ملف التعريف ليعمل SourcePoint. على الأقل:
header "Host" "acme.com"; بـ header "Host" "{{.Variables.Host}}";/pathtolegitpage/ تحت حقل GET بـ {{.Variables.HTTP_GET_URI}}/pathtolegitpage/ تحت حقل POST بـ {{.Variables.HTTP_POST_URI}}للقيام بذلك، استخدم الخيارات التالية -Customuri و -ProfilePath مع -Profile 8. لاستخدام URI أساسي مختلف لـ GET و POST، يجب استخدام -CustomuriGET و -CustomuriPOST بدلاً من -Customuri. أثناء تطوير ملف تعريف، يُوصى بشدة باستخدام ./c2lint الأصلي للتحقق من أن كل شيء يعمل.
من خلال دمج هذه الخيارات في ملف تعريف واحد، يمكنك إنشاء منارة فعالة للغاية يمكنها تجاوز الضوابط الوقائية والكشفية. بينما تظل هذه لعبة قط وفأر متطورة، فإن دمج الخيارات المناسبة ضد مجموعة أمان محددة يمكن أن يكون فعالاً للغاية.
Stage: "False"
Host: "acme-email.com"
Keystore: "acme-email.com.store"
Password: "Password"
Metadata: "netbios"
Injector: "VirtualAllocEx"
Outfile: "acme.profile"
PE_Clone: 20
Profile: 4
Allocation: 5312
Jitter: 30
Debug: true
Sleep: 35
Uri: 3
Useragent: "Mac"
Post-EX Processname: 11
Datajitter: 40
Keylogger: "SetWindowsHookEx"
Customuri:
CDN:
CDN_Value:
ProfilePath:
Syscall_method:
Httplib:
ThreadSpoof: true
Customuri:
CustomuriGET:
CustomuriPOST:
Forwarder: False
TasksMaxSize:
TasksProxyMaxSize:
TasksDnsProxyMaxSize:
يمكن استخدام ملفات التعريف من الوضع 1 إلى 4 بدون SSL صالح، سيقوم SourcePoint بإنشاء شهادة موقعة ذاتيًا مرتبطة بنوع ملف التعريف. ومع ذلك، فإن شهادات SSL الصالحة مهمة للغاية لنجاح أي نوع من C2. لأسباب عديدة ولكن من الواضح أنه لا توجد شهادة تعني أن حركة المرور ستكون غير مشفرة (أي HTTP الذي لا ينبغي استخدامه أبدًا) ولكن استخدام شهادة موقعة ذاتيًا يأتي بقيوده الواضحة. هناك طرق عديدة للحصول على شهادة SSL صالحة لإنشاء مخزن مفاتيح، طريقتي المفضلة هي استخدام نسخة معدلة من HTTPsC2DoneRight.sh، الذي أنشأه Cham423.
حاليًا، لا يتم تقديم تخصيص DNS مباشرة من خلال SourcePoint. للسماح بمنارات قائمة على DNS، يوجد قسم معلق لـ dns-beacon في كل ملف تعريف تم إنشاؤه.