Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
SourcePoint — Полиморфный генератор профилей C2 для Cobalt Strike, который автоматизирует создание уклончивых конфигураций beacon со случайными параметрами для HTTP, DNS и внедрения процессов для снижения обнаружения. | Kitploit
Инструменты/GitHubGitHub/tylous/sourcepoint
Фреймворки для эксплойтовГенерация полезной нагрузкиКомандование и УправлениеRed Teaming
GitHubtylous/sourcepoint

SourcePoint

Полиморфный генератор профилей C2 для Cobalt Strike, который автоматизирует создание уклончивых конфигураций beacon со случайными параметрами для HTTP, DNS и внедрения процессов для снижения обнаружения.

Репозиторий
1.2k1701 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

SourcePoint

SourcePoint — это полиморфный генератор C2-профилей для Cobalt Strike C2, написанный на Go. SourcePoint позволяет на лету создавать уникальные C2-профили, что помогает уменьшить наши индикаторы компрометации («IoC») и даёт оператору возможность разворачивать сложные профили с минимальными усилиями. Это было достигнуто путём тщательного изучения статей, а также примечаний к патчам для выявления ключевых функций и изменяемых особенностей. SourcePoint был разработан с целью решения проблемы того, как сделать нашу C2-активность менее обнаруживаемой, переходя от вредоносных IoCs к подозрительным. Цель состоит в том, чтобы нашу C2 было сложнее обнаружить, если наши IoC не являются вредоносными по своей природе и требуют дополнительного исследования для выявления подозрительного характера. SourcePoint содержит множество различных настраиваемых параметров для изменения вашего профиля (в большинстве случаев, если оставить поле пустым, SourcePoint выберет их случайным образом за вас). Сгенерированные профили изменяют все аспекты вашего C2. Цель этого проекта — не только помочь обойти средства защиты, основанные на обнаружении, но и помочь вписать C2-трафик и активность в среду, сделав эту активность труднообнаруживаемой.

root@kitploit:~
go install github.com/Tylous/SourcePoint

Установка

root@kitploit:~
$go get gopkg.in/yaml.v2

$go build SourcePoint.go

Использование

root@kitploit:~
#./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 в первую очередь автоматизирует процесс сборки профиля. Очень важно знать все функции, модифицированные в этих профилях. Знание этих функций может действительно помочь повысить ваш успех.

Параметры

Хотя в справке SourcePoint описано множество настроек и функций, в каждом профиле есть много важных встроенных возможностей, с которыми необходимо ознакомиться. Эти возможности включают:

Глобальные параметры

Эта часть профиля изменяет то, как работает beacon. Некоторые из используемых для изменения поведения функций:

  • Host Stage — позволяет серверу команды размещать staged-шеллкод для HTTP, HTTPS, DNS. Если это включено, любой, кто отправляет GET-запрос с определённым значением, например /9ZXq, может также получить шеллкод.
  • Sleep — время, через которое beacon связывается с домом.
  • Jitter — добавляет процент к времени обратного вызова beacon.
  • Useragent — строка useragent, используемая при передаче HTTP и HTTPS трафика. Использование подходящей строки useragent может помочь вписаться в среду.
  • Data Jitter — добавляет строку случайной длины ко всем GET и POST запросам, чтобы входящие запросы не имели одинаковую длину.
  • SMB Frame Header — добавляет значение заголовка к сообщениям SMB beacon.
  • Pipename — задаёт имя SMB-канала, который beacon будет использовать для связи.
  • Pipename Stager — задаёт имя SMB-стейджера для beacon.
  • TCP Frame Header — добавляет значение заголовка к сообщениям TCP beacon.
  • SSH Banner — используемый SSH-баннер.
  • SSH Pipename — имя, используемое для SSH-баннера.
  • HttpLib — атрибут библиотеки позволяет пользователю указать библиотеку по умолчанию, используемую сгенерированными beacons. Значение может быть "wininet" или "winhttp".

Stage

Эта часть профиля управляет тем, как beacon загружается в память, и редактирует содержимое DLL beacon. Некоторые из используемых для изменения поведения функций:

  • Obfuscate — обфусцирует таблицу импорта рефлективной DLL.
  • Stomppe — просит полезную нагрузку перезаписать значения MZ, PE и e_lfanew после загрузки.
  • Clean up — указывает beacon освободить память, связанную с рефлективной DLL, которая его инициализировала.
  • UseRWX — гарантирует, что шеллкод не будет использовать права Read, Write, Execute.
  • Magic_MZ — переопределяет первые байты (включая заголовок MZ) рефлективной DLL Beacon (только для x64).
  • Magic_PE — переопределяет маркер символов PE, используемый рефлективным загрузчиком Beacon, другим значением.
  • Syscall — определяет возможность использования системных вызовов вместо стандартных функций Windows API.
  • Smart Inject — использует встроенные подсказки указателей функций для загрузки агента beacon без обхода EAT kernel32.
  • Sleep Mask — TCP и SMB beacons будут обфусцировать себя в состоянии покоя, ожидая установки соединения.
  • PE Header — изменяет характеристики рефлективной DLL beacon, чтобы она выглядела в памяти иначе.
  • Transformation — преобразует рефлективную DLL Stage beacon, удаляя или добавляя строки в .rdata.

Process-Inject

Эта часть профиля управляет тем, как beacon формирует внедрённое содержимое и контролирует поведение внедрения процессов. Некоторые из используемых для изменения поведения функций:

  • Allocator — определяет, как рефлективный загрузчик beacon выделяет память.
  • Minimum Allocation — минимальный объём памяти для запроса внедрённого содержимого.
  • Userwx — гарантирует, что шеллкод не будет использовать права Read, Write, Execute (альтернатива — RW).
  • Startrwx — использует Read, Write, Execute в качестве начальных прав для внедрённого содержимого (альтернатива — RW).
  • Transformer — добавляет блок наполнителя, внедряемый beacon.
  • Execute — этот раздел определяет, как выполнять внедрённый код.

Post-Exec

Эта часть профиля управляет тем, как beacon обрабатывает модули пост-эксплуатации и команды. Некоторые из используемых для изменения поведения функций:

  • Spawnto — определяет временный процесс по умолчанию, который beacon будет порождать для своих команд и опций пост-эксплуатации.
  • Obfuscate — обфусцирует таблицу импорта рефлективной DLL.
  • Smart Inject — передаёт ключевые указатели функций от beacon его дочерним заданиям.
  • AMSI disable — отключает AMSI для powerpick, execute-assembly и psinject (некоторые EDR могут это обнаружить, лучше избегать использования этих инструментов).
  • Keylogger — определяет, какой API для регистрации нажатий клавиш будет использоваться.
  • Cleanup — очищает память пост-эксплуатационной пользовательской рефлективной DLL («UDRL») при загрузке пост-эксплуатационной DLL.
  • Threadhint — позволяет пост-эксплуатационным DLL порождать потоки с поддельным стартовым адресом.

Профили

В настоящее время SourcePoint предоставляет 7 встроенных опций для профилей HTTP/HTTPS трафика, основанных на существующих профилях. Из этих 6, 4 основаны на:

  • Коммуникационном трафике обновлений Microsoft Windows
  • Коммуникационном трафике сообщений Slack
  • Коммуникационном трафике активных встреч Gotomeeting
  • Коммуникационном трафике электронной почты Microsoft Outlook

3 опции профиля (5, 6 и 7) специально разработаны для:

  • Cloudfront.net
  • AzureEdge.net

Последняя опция (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 для проверки работоспособности.

Пример

Комбинируя эти опции в одном профиле, вы можете создать высокоэффективный beacon, способный обходить превентивные и детективные средства контроля. Хотя это остаётся развивающейся игрой в кошки-мышки, комбинация правильных опций против конкретного стека безопасности может быть весьма эффективной.

Пример конфигурации YAML

root@kitploit:~
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: 

SSL-сертификат

Профили 1–4 можно использовать без валидного SSL; SourcePoint сгенерирует самоподписанный сертификат, соответствующий типу профиля. Однако действительные SSL-сертификаты крайне важны для успеха любого типа C2. По многим причинам, но очевидно, что отсутствие сертификата означает, что трафик будет незашифрованным (т.е. HTTP, КОТОРЫЙ НИКОГДА НЕ СЛЕДУЕТ ИСПОЛЬЗОВАТЬ), но использование самоподписанного сертификата имеет свои очевидные ограничения. Существует много способов получить действительный SSL-сертификат для создания хранилища ключей; мой предпочтительный способ — использование модифицированной версии HTTPsC2DoneRight.sh, созданной Cham423.

DNS

В настоящее время настройка DNS напрямую через SourcePoint не предлагается. Чтобы по-прежнему использовать beacons на основе DNS, в каждом сгенерированном профиле есть закомментированный раздел для dns-beacon.

Список задач

  • Добавить больше профилей
  • DNS Staging
Скачать инструмент