
Generatore polimorfico di profili C2 per Cobalt Strike che automatizza la creazione di configurazioni evasive di beacon con opzioni randomizzate per HTTP, DNS e process injection per ridurre il rilevamento.
SourcePoint è un generatore polimorfico di profili C2 per Cobalt Strike C2, scritto in Go. SourcePoint permette di generare al volo profili C2 unici che aiutano a ridurre i nostri Indicatori di Compromissione ("IoCs") e consentono all'operatore di creare profili complessi con il minimo sforzo. Ciò è stato ottenuto esaminando approfonditamente gli Articoli e le Note di Rilascio per identificare funzioni chiave e caratteristiche modificabili. SourcePoint è stato progettato con l'intento di affrontare il problema di come rendere più difficile rilevare la nostra attività C2, concentrandosi sul passaggio da IoCs malevoli a sospetti. L'obiettivo è rendere più difficile rilevare il nostro C2 se i nostri IoCs non sono di natura malevola e richiedono ricerche aggiuntive per scoprire la natura sospetta. SourcePoint contiene numerose opzioni configurabili tra cui scegliere per modificare il tuo profilo (nella maggior parte dei casi, se lasciato vuoto, SourcePoint li sceglierà casualmente per te). I profili generati modificano tutti gli aspetti del tuo C2. L'obiettivo di questo progetto non è solo quello di aiutare a eludere i controlli basati sul rilevamento, ma anche di aiutare a mimetizzare il traffico e l'attività C2 nell'ambiente, rendendo detta attività difficile da rilevare.
go install github.com/Tylous/SourcePoint
$go get gopkg.in/yaml.v2
$go build SourcePoint.go
#./SourcePoint -h
_____ ____ _ __
/ ___/____ __ _______________ / __ \____ (_)___ / /_
\__ \/ __ \/ / / / ___/ ___/ _ \/ /_/ / __ \/ / __ \/ __/
___/ / /_/ / /_/ / / / /__/ __/ ____/ /_/ / / / / / /_
/____/\____/\__,_/_/ \___/\___/_/ \____/_/_/ /_/\__/
(@Tyl0us)
Usage of ./SourcePoint:
-Allocation string
Minimum amount of memory to request for injected content (must be higher than 4096)
-BeaconGate string
Specify beacon gate options (All, Comms, Core, Cleanup) or specific APIs
-CDN string
CDN cookie name (typically used for AzureEdge profiles)
-CDN-Value string
CDN cookie value (typically used for AzureEdge profiles)
-Customuri string
The base URI for custom HTTP GET/POST profile - Cannot be used with CustomuriGET or CustomuriPOST
-CustomuriGET string
The base URI for custom HTTP GET profile - Must be used with CustomuriPOST
-CustomuriPOST string
The base URI for custom HTTP POST profile - Must be used with CustomuriGET
-Datajitter string
Appends a value to HTTP-Get and HTTP-Post server output (default "50")
-Forwarder
Enabled the X-forwarded-For header (Good for when your C2 is behind a redirector)
-Host string
Team server domain name
-Httplib string
Select the default HTTP Beacon library:
[*] wininet
[*] winhttp' (default "winhttp")
-Injector string
Select the preferred method to allocate memory in the remote process:
[*] VirtualAllocEx (Great for cross architecture i.e x86 -> x64 and x64->x86)
[*] NtMapViewOfSection (A more stealthly option, however fails over to VirtualAllocEx, generating more events when it does)
-Jitter string
Jitter percentage for beacon call home
-Keylogger string
Select the preferred method the beacon will use to log keystrokes:
[*] GetAsyncKeyState (Uses GetAsyncKeyState API (Separate DLL for x86/x64 process))
[*] SetWindowsHookEx (Uses SetWindowsHookEx API)
-Keystore string
SSL keystore name
-Metadata string
Specifies how to transform and embed metadata into the HTTP request:
[*] base64
[*] base64url
[*] netbios
[*] netbiosu (default "base64url")
-Outfile string
Name of output file
-PE_Clone string
PE file beacon will mimic (Use the number):
[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's DLL)
[28] InProcessClient.dll (SentinelOne's DLL)
[29] umppc.dll (CrowdStrike's DLL)
[30] CyMemDef64.dll (Cylance's DLL)
-Password string
SSL certificate password
-PostEX_Name string
File Post-Ex activities will spawn and inject into (Use the number):
[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 profile (Use the number):
[1] Windowsupdate
[2] Slack
[3] Gotomeeting
[4] Outlook.Live
[5] Safebrowsing [Cloudfront Compatible]
[6] AzureEdge [AzureEdge Compatible]
[7] Field-Keyword [Cloudfront Compatible]
[8] Custom (Used with ProfilePath)
-ProfilePath string
Path of custom HTTP GET/POST profile...
-Sleep string
Initial beacon sleep time
-Stage string
Disable host staging (Default: False) (default "false")
-Syscall string
Defines the ability to use direct/indirect system calls instead of the standard Windows API functions calls:
[*] None
[*] Direct
[*] Indirect (default "None")
-TasksDnsProxyMaxSize string
The maximum size (in bytes) of proxy data to transfer via the DNS communication channel at a check in
-TasksMaxSize string
The maximum size (in bytes) of task(s) and proxy data that can be transferred through a communication channel at a check in
-TasksProxyMaxSize string
The maximum size (in bytes) of proxy data to transfer via the communication channel at a check in
-ThreadSpoof
Sets post-ex DLLs to spawn threads with a spoofed start address. These are generated randomly (default true)
-Uri string
The number URIs a profile for beacons to choose from
-Useragent string
UserAgent string for the beacon to use (Leave blank to randomly select one):
[*] Win10Chrome
[*] Win10Edge
[*] Win10IE
[*] Win10
[*] Win6.3
[*] Linux
[*] Mac
-Yaml string
Path to the Yaml config file
SourcePoint automatizza principalmente il processo di creazione di un profilo. È molto importante conoscere tutte le funzionalità modificate in questi profili. Conoscerle può davvero aiutare ad aumentare il tuo successo.
Sebbene ci siano molte impostazioni e funzionalità descritte nella funzione di aiuto di SourcePoint, ci sono numerose caratteristiche importanti integrate in ogni profilo che è importante conoscere. Queste caratteristiche sono:
Questa parte del tuo profilo modifica il modo in cui il beacon opera. Alcune delle funzionalità utilizzate per modificare il comportamento sono:
/9ZXq può recuperare lo shellcode.Questa parte del tuo profilo controlla come il beacon viene caricato in memoria e modifica il contenuto della DLL del beacon. Alcune delle funzionalità utilizzate per modificare il comportamento sono:
Questa parte del tuo profilo controlla come il beacon modella il contenuto iniettato e controlla il comportamento dell'iniezione di processo. Alcune delle funzionalità utilizzate per modificare il comportamento sono:
Questa parte del tuo profilo controlla come il beacon gestisce i moduli post-exploitation e i comandi. Alcune delle funzionalità utilizzate per modificare il comportamento sono:
Attualmente SourcePoint ti fornisce 7 opzioni integrate per i profili di traffico HTTP/HTTPS, basate su profili esistenti. Di questi 6, 4 sono influenzati e basati su:
3 delle opzioni del profilo (5, 6 e 7) sono progettate specificamente per:
L'ultima opzione (8) è progettata per inserire un profilo personalizzato. Questa opzione permette all'operatore di utilizzare un profilo di traffico completamente personalizzato. In molti casi, un profilo di traffico completamente unico può dare un alto successo rispetto a uno di questi. Questo permette anche agli operatori di continuare a utilizzare le funzionalità di malleabilità di SourcePoint con il loro profilo di traffico preferito. Poiché questo permette profili unici, è importante assicurarsi di modificare e regolare il profilo affinché SourcePoint funzioni. Come minimo:
header "Host" "acme.com"; con header "Host" "{{.Variables.Host}}";/pathtolegitpage/ nel campo GET con {{.Variables.HTTP_GET_URI}}/pathtolegitpage/ nel campo POST con {{.Variables.HTTP_POST_URI}}Per farlo, usa le seguenti opzioni -Customuri e -ProfilePath insieme a -Profile 8. Per utilizzare una base URI diversa per GET e POST, -CustomuriGET e -CustomuriPOST devono essere usati al posto di -Customuri. Durante lo sviluppo di un profilo, è altamente consigliato utilizzare il nativo ./c2lint per verificare che tutto funzioni.
Combinando queste opzioni in un unico profilo puoi creare un beacon altamente efficace che può eludere i controlli preventivi e investigativi. Sebbene questo rimanga un gioco del gatto e del topo in evoluzione, combinare le opzioni giuste contro uno stack di sicurezza specifico può essere abbastanza efficace.
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:
I profili da 1 a 4 possono essere utilizzati senza un SSL valido, SourcePoint genererà un certificato autofirmato relativo al tipo di profilo. Tuttavia, i certificati SSL validi sono estremamente importanti per il successo di qualsiasi tipo di C2. Per molte ragioni, ovviamente nessun certificato significa che il traffico non sarà crittografato (cioè HTTP CHE NON DOVREBBE MAI ESSERE USATO) ma utilizzare un certificato autofirmato ha i suoi ovvi limiti. Ci sono molti modi per ottenere un certificato SSL valido per creare un keystore; il mio modo preferito è usare una versione modificata di HTTPsC2DoneRight.sh, creato da Cham423.
Attualmente la personalizzazione DNS non è offerta direttamente tramite SourcePoint. Per permettere comunque beacon basati su DNS, c'è una sezione commentata per dns-beacon in ogni profilo generato.