
Cobalt Strike के लिए Polymorphic C2 प्रोफ़ाइल जनरेटर जो HTTP, DNS और process injection के लिए यादृच्छिक विकल्पों के साथ evasive बीकन कॉन्फ़िगरेशन के निर्माण को स्वचालित करता है ताकि detection को कम किया जा सके।
SourcePoint एक बहुरूपी C2 प्रोफ़ाइल जनरेटर है जो Cobalt Strike C2s के लिए है, जो Go में लिखा गया है। SourcePoint आपको अद्वितीय C2 प्रोफ़ाइल तुरंत उत्पन्न करने की अनुमति देता है जो हमारे संक्रमण के संकेतकों ("IoCs") को कम करने में मदद करता है और ऑपरेटर को न्यूनतम प्रयास में जटिल प्रोफ़ाइल बनाने की अनुमति देता है। यह लेखों और पैच नोट्स की व्यापक समीक्षा करके प्रमुख कार्यों और संशोधन योग्य सुविधाओं की पहचान करके किया गया था। SourcePoint को इस समस्या के समाधान के लिए डिज़ाइन किया गया था कि हमारी C2 गतिविधि को पकड़ना कठिन कैसे बनाया जाए, दुर्भावनापूर्ण IoCs से हटकर संदिग्ध 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
कस्टम HTTP GET/POST प्रोफ़ाइल के लिए आधार URI - CustomuriGET या CustomuriPOST के साथ उपयोग नहीं किया जा सकता
-CustomuriGET string
कस्टम HTTP GET प्रोफ़ाइल के लिए आधार URI - CustomuriPOST के साथ उपयोग किया जाना चाहिए
-CustomuriPOST string
कस्टम HTTP POST प्रोफ़ाइल के लिए आधार URI - CustomuriGET के साथ उपयोग किया जाना चाहिए
-Datajitter string
HTTP-Get और HTTP-Post सर्वर आउटपुट में एक मान जोड़ता है (डिफ़ॉल्ट "50")
-Forwarder
X-forwarded-For हेडर सक्षम करें (अच्छा जब आपका C2 रीडायरेक्टर के पीछे हो)
-Host string
टीम सर्वर डोमेन नाम
-Httplib string
डिफ़ॉल्ट HTTP बीकन लाइब्रेरी चुनें:
[*] wininet
[*] winhttp' (डिफ़ॉल्ट "winhttp")
-Injector string
रिमोट प्रक्रिया में मेमोरी आवंटित करने के लिए पसंदीदा विधि चुनें:
[*] VirtualAllocEx (क्रॉस आर्किटेक्चर के लिए अच्छा है जैसे x86 -> x64 और x64->x86)
[*] NtMapViewOfSection (अधिक गुप्त विकल्प, हालांकि विफल होने पर VirtualAllocEx पर वापस आ जाता है, जिससे अधिक घटनाएं उत्पन्न होती हैं)
-Jitter string
बीकन कॉल होम के लिए जिटर प्रतिशत
-Keylogger string
बीकन द्वारा कीस्ट्रोक लॉग करने के लिए पसंदीदा विधि चुनें:
[*] GetAsyncKeyState (GetAsyncKeyState API का उपयोग करता है (x86/x64 प्रक्रिया के लिए अलग DLL))
[*] SetWindowsHookEx (SetWindowsHookEx API का उपयोग करता है)
-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 (Carbon Black की DLL)
[28] InProcessClient.dll (SentinelOne की DLL)
[29] umppc.dll (CrowdStrike की DLL)
[30] CyMemDef64.dll (Cylance की DLL)
-Password string
SSL प्रमाणपत्र पासवर्ड
-PostEX_Name string
फ़ाइल जिसमें पोस्ट-Ex गतिविधियाँ जन्म देंगी और इंजेक्ट होंगी (संख्या का उपयोग करें):
[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 Compatible]
[6] AzureEdge [AzureEdge Compatible]
[7] Field-Keyword [Cloudfront Compatible]
[8] Custom (ProfilePath के साथ उपयोग किया जाता है)
-ProfilePath string
कस्टम HTTP GET/POST प्रोफ़ाइल का पथ...
-Sleep string
प्रारंभिक बीकन स्लीप समय
-Stage string
होस्ट स्टेजिंग अक्षम करें (डिफ़ॉल्ट: False) (डिफ़ॉल्ट "false")
-Syscall string
मानक Windows API फ़ंक्शन कॉल के बजाय प्रत्यक्ष/अप्रत्यक्ष सिस्टम कॉल का उपयोग करने की क्षमता को परिभाषित करता है:
[*] None
[*] Direct
[*] Indirect (डिफ़ॉल्ट "None")
-TasksDnsProxyMaxSize string
एक चेक-इन पर DNS संचार चैनल के माध्यम से स्थानांतरित करने के लिए प्रॉक्सी डेटा का अधिकतम आकार (बाइट्स में)
-TasksMaxSize string
एक चेक-इन पर संचार चैनल के माध्यम से स्थानांतरित किए जा सकने वाले कार्यों और प्रॉक्सी डेटा का अधिकतम आकार (बाइट्स में)
-TasksProxyMaxSize string
एक चेक-इन पर संचार चैनल के माध्यम से स्थानांतरित करने के लिए प्रॉक्सी डेटा का अधिकतम आकार (बाइट्स में)
-ThreadSpoof
पोस्ट-ex DLLs को नकली प्रारंभ पते के साथ थ्रेड बनाने के लिए सेट करता है। ये यादृच्छिक रूप से उत्पन्न होते हैं (डिफ़ॉल्ट true)
-Uri string
बीकन द्वारा चुनने के लिए प्रोफ़ाइल के लिए URIs की संख्या
-Useragent string
बीकन द्वारा उपयोग करने के लिए UserAgent स्ट्रिंग (यादृच्छिक चयन के लिए खाली छोड़ें):
[*] Win10Chrome
[*] Win10Edge
[*] Win10IE
[*] Win10
[*] Win6.3
[*] Linux
[*] Mac
-Yaml string
Yaml कॉन्फ़िग फ़ाइल का पथ
SourcePoint मुख्य रूप से प्रोफ़ाइल के निर्माण प्रक्रिया को स्वचालित करता है। इन प्रोफ़ाइलों में संशोधित सभी सुविधाओं को जानना बहुत महत्वपूर्ण है। इन सुविधाओं को जानने से आपकी सफलता बढ़ाने में वास्तव में मदद मिल सकती है।
जबकि SourcePoint के हेल्प फ़ंक्शन में बहुत सारी सेटिंग्स और सुविधाओं का वर्णन किया गया है, प्रत्येक प्रोफ़ाइल में कई महत्वपूर्ण सुविधाएँ बेक की गई हैं जिनसे परिचित होना महत्वपूर्ण है। ये सुविधाएँ हैं:
आपकी प्रोफ़ाइल का यह भाग बीकन के संचालन को संशोधित करता है। व्यवहार को संशोधित करने के लिए उपयोग की जाने वाली कुछ सुविधाएँ हैं:
/9ZXq जैसे विशिष्ट मान के साथ GET अनुरोध भेजकर शेलकोड भी खींच सकता हैआपकी प्रोफ़ाइल का यह भाग नियंत्रित करता है कि बीकन को मेमोरी में कैसे लोड किया जाता है और बीकन DLL की सामग्री को संपादित करता है। व्यवहार को संशोधित करने के लिए उपयोग की जाने वाली कुछ सुविधाएँ हैं:
आपकी प्रोफ़ाइल का यह भाग नियंत्रित करता है कि बीकन इंजेक्ट की गई सामग्री को कैसे आकार देता है और प्रक्रिया इंजेक्शन व्यवहार को नियंत्रित करता है। व्यवहार को संशोधित करने के लिए उपयोग की जाने वाली कुछ सुविधाएँ हैं:
आपकी प्रोफ़ाइल का यह भाग नियंत्रित करता है कि बीकन पोस्ट-एक्सप्लॉइटेशन मॉड्यूल और कमांड को कैसे संभालता है। व्यवहार को संशोधित करने के लिए उपयोग की जाने वाली कुछ सुविधाएँ हैं:
वर्तमान में SourcePoint आपको HTTP/HTTPS ट्रैफ़िक प्रोफ़ाइल के लिए 7 बेक्ड-इन विकल्प प्रदान करता है, जो मौजूदा प्रोफ़ाइल पर आधारित हैं। इन 6 में से 4 निम्नलिखित से प्रभावित और आधारित हैं:
प्रोफ़ाइल विकल्पों में से 3 (5, 6 और 7) विशेष रूप से इसके लिए डिज़ाइन किए गए हैं:
अंतिम विकल्प (8) एक कस्टम प्रोफ़ाइल इनपुट करने के लिए डिज़ाइन किया गया है। यह विकल्प एक ऑपरेटर को पूरी तरह से कस्टम ट्रैफ़िक प्रोफ़ाइल का उपयोग करने की अनुमति देने के लिए डिज़ाइन किया गया है। ऐसे कई मामले हैं जहाँ एक पूरी तरह से अद्वितीय ट्रैफ़िक प्रोफ़ाइल इनमें से किसी एक की तुलना में अधिक सफलता देगी। यह ऑपरेटरों को अपने पसंदीदा या पसंदीदा ट्रैफ़िक प्रोफ़ाइल के साथ SourcePoint की मैलिएबलिटी सुविधाओं का उपयोग करने की भी अनुमति देता है। चूँकि यह अद्वितीय प्रोफ़ाइल की अनुमति देता है, इसलिए SourcePoint के काम करने के लिए प्रोफ़ाइल को ट्वीक और समायोजित करना सुनिश्चित करना महत्वपूर्ण है। कम से कम:
header "Host" "acme.com"; को header "Host" "{{.Variables.Host}}"; से बदलें/pathtolegitpage/ को {{.Variables.HTTP_GET_URI}} से बदलें/pathtolegitpage/ को {{.Variables.HTTP_POST_URI}} से बदलेंऐसा करने के लिए, -Profile 8 के साथ निम्नलिखित विकल्पों का उपयोग करें -Customuri और -ProfilePath। GET और POST के लिए अलग-अलग URI आधार का उपयोग करने के लिए, -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 प्रोफ़ाइल प्रकार से संबंधित एक स्व-हस्ताक्षरित प्रमाणपत्र उत्पन्न करेगा। हालांकि, किसी भी प्रकार के C2 की सफलता के लिए मान्य SSL प्रमाणपत्र अत्यंत महत्वपूर्ण हैं। कई कारणों से, लेकिन स्पष्ट रूप से कोई प्रमाणपत्र नहीं होने का मतलब है कि ट्रैफ़िक अनएन्क्रिप्टेड होगा (जैसे HTTP जिसका कभी उपयोग नहीं किया जाना चाहिए) लेकिन स्व-हस्ताक्षरित प्रमाणपत्र का उपयोग करने की अपनी सीमाएँ हैं। मान्य SSL प्रमाणपत्र प्राप्त करने के कई तरीके हैं, कीस्टोर बनाने का मेरा पसंदीदा तरीका HTTPsC2DoneRight.sh का संशोधित संस्करण है, जिसे Cham423 द्वारा बनाया गया है।
वर्तमान में DNS अनुकूलन सीधे SourcePoint के माध्यम से प्रदान नहीं किया जाता है। फिर भी DNS-आधारित बीकन की अनुमति देने के लिए प्रत्येक उत्पन्न प्रोफ़ाइल में dns-beacon के लिए एक टिप्पणी-आउट अनुभाग है।