Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
SourcePoint — Polymorphic C2 配置文件生成器,用于 Cobalt Strike,可自动创建具有规避能力的信标配置,随机化 HTTP、DNS 和进程注入选项以降低检测率。 | Kitploit
工具/GitHubGitHub/tylous/sourcepoint
漏洞利用框架Payload生成命令与控制红队
GitHubtylous/sourcepoint

SourcePoint

Polymorphic C2 配置文件生成器,用于 Cobalt Strike,可自动创建具有规避能力的信标配置,随机化 HTTP、DNS 和进程注入选项以降低检测率。

查看仓库
1.2k17041年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

SourcePoint

SourcePoint 是一个用 Go 编写的 Cobalt Strike C2 多态 C2 配置文件生成器。SourcePoint 可以动态生成独特的 C2 配置文件,有助于减少我们的入侵指标(IoCs),并允许操作员以最小的投入快速搭建复杂配置文件。这是通过广泛审查文章以及补丁说明来识别关键功能和可修改特性而实现的。SourcePoint 的设计初衷是解决如何使我们的 C2 活动更难被检测的问题,重点是从恶意 IoCs 转向可疑 IoCs。目标是如果我们的 IoCs 本质上不是恶意的,并且需要额外的研究才能发现其可疑性质,那么我们的 C2 就更难被检测到。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)

                                                                                                                        
./SourcePoint 的使用方法:
  -Allocation string
        为注入内容请求的最小内存量(必须高于 4096)
  -BeaconGate string
        指定 Beacon 门控选项(All、Comms、Core、Cleanup)或特定 API
  -CDN string
        CDN cookie 名称(通常用于 AzureEdge 配置文件)
  -CDN-Value string
        CDN cookie 值(通常用于 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 Beacon 库:
        [*] wininet
        [*] winhttp'(默认 "winhttp")
  -Injector string
        选择在远程进程中分配内存的首选方法:
        [*] VirtualAllocEx(非常适合跨架构,例如 x86 -> x64 和 x64->x86)
        [*] NtMapViewOfSection(更隐蔽的选项,但会在失败时回退到 VirtualAllocEx,从而生成更多事件)
  -Jitter string
        Beacon 回连主机的抖动百分比
  -Keylogger string
        选择 Beacon 用于记录按键的首选方法:
        [*] 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
        Beacon 将模仿的 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
        后利用活动将生成并注入的文件(使用数字):
        [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
        初始 Beacon 休眠时间
  -Stage string
        禁用主机阶段加载(默认:False)(默认 "false")
  -Syscall string
        定义使用直接/间接系统调用替代标准 Windows API 函数调用的能力:
        [*] None
        [*] Direct
        [*] Indirect(默认 "None")
  -TasksDnsProxyMaxSize string
        在一次回连中通过 DNS 通信通道传输的最大代理数据大小(字节)
  -TasksMaxSize string
        在一次回连中可以通过通信通道传输的最大任务及代理数据大小(字节)
  -TasksProxyMaxSize string
        在一次回连中通过通信通道传输的最大代理数据大小(字节)
  -ThreadSpoof
        设置后利用 DLL 以伪造的起始地址生成线程。这些地址是随机生成的(默认 true)
  -Uri string
        配置文件为 Beacon 提供的 URI 数量
  -Useragent string
        Beacon 使用的 UserAgent 字符串(留空将随机选择一个):
        [*] Win10Chrome
        [*] Win10Edge
        [*] Win10IE
        [*] Win10
        [*] Win6.3
        [*] Linux
        [*] Mac
  -Yaml string
        Yaml 配置文件的路径

重要提示

SourcePoint 主要自动化配置文件的构建过程。了解这些配置文件中修改的所有特性非常重要。了解这些特性可以极大地帮助提高您的成功率。

选项

尽管 SourcePoint 的帮助功能中描述了许多设置和特性,但每个配置文件中都内置了许多重要特性,熟悉它们至关重要。这些特性包括:

全局选项

配置文件的这一部分修改 Beacon 的操作方式。用于修改行为的一些特性包括:

  • Host Stage - 允许团队服务器为 HTTP、HTTPS、DNS 托管阶段加载的 shellcode。如果启用,任何发送包含特定值(如 /9ZXq)的 GET 请求的人也可以获取 shellcode
  • Sleep - Beacon 回连主机的时长
  • Jitter - 为 Beacon 回连时间附加一个百分比
  • Useragent - 用于通信 HTTP 和 HTTPS 流量的 UserAgent 字符串。使用适当的 UserAgent 字符串有助于融入环境
  • Data Jitter - 向所有 GET 和 POST 请求添加一个随机长度的字符串,以确保传入请求的长度不一致
  • SMB 帧头 - 为 SMB Beacon 消息添加头部值
  • Pipename - 设置 Beacon 用于通信的 SMB 管道名称
  • Pipename Stager - 设置 Beacon 的 SMB 阶段加载器名称
  • TCP 帧头 - 为 TCP Beacon 消息添加头部值
  • SSH 横幅 - 使用的 SSH 横幅
  • SSH 管道名 - SSH 横幅使用的名称
  • HttpLib - library 属性允许用户指定配置文件生成的 Beacon 所使用的默认库。值可以是 "wininet" 或 "winhttp"

Stage 阶段加载

配置文件的这一部分控制 Beacon 如何加载到内存中以及编辑 Beacon DLL 的内容。用于修改行为的一些特性包括:

  • Obfuscate - 混淆反射加载 DLL 的导入表
  • Stomppe - 要求有效载荷在加载后覆盖 MZ、PE 和 e_lfanew 值
  • Clean up - 告诉 Beacon 释放与初始化它的反射 DLL 相关的内存
  • UseRWX - 确保 shellcode 不使用读、写、执行权限
  • Magic_MZ - 覆盖 Beacon 反射 DLL 的前几个字节(包括 MZ 头部)(目前仅限 x64)
  • Magic_PE - 用另一个值覆盖 Beacon 反射加载器使用的 PE 字符标记
  • Syscall - 定义使用系统调用替代标准 Windows API 函数的能力
  • Smart Inject - 使用嵌入的函数指针提示来引导 Beacon 代理,而无需遍历 kernel32 EAT
  • Sleep Mask - TCP 和 SMB Beacon 在等待连接建立时会在休眠状态下混淆自身
  • PE 头部 - 更改 Beacon 反射 DLL 的特性,使其在内存中看起来像其他东西
  • 转换 - 通过从 .rdata 中移除或添加字符串来转换 Beacon 的反射 DLL 阶段

Process-Inject 进程注入

配置文件的这一部分控制 Beacon 如何塑造注入内容以及控制进程注入行为。用于修改行为的一些特性包括:

  • Allocator - 确定 Beacon 的反射加载器如何分配内存
  • 最小分配 - 为注入内容请求的最小内存量
  • Userwx - 确保 shellcode 不使用读、写、执行权限(替代方案是 RW)
  • Startrwx - 使用读、写、执行作为注入内容的初始权限(替代方案是 RW)
  • Transformer - 添加由 Beacon 注入的填充内容块
  • Execute - 本节确定如何执行注入的代码

Post-Exec 后利用执行

配置文件的这一部分控制 Beacon 如何处理后利用模块和命令。用于修改行为的一些特性包括:

  • Spawnto - 确定 Beacon 为其后利用命令和选项生成的默认临时进程
  • Obfuscate - 混淆反射 DLL 的导入表
  • Smart Inject - 将关键函数指针从 Beacon 传递给其子任务
  • AMSI 禁用 - 为 powerpick、execute-assembly 和 psinject 禁用 AMSI(某些 EDR 可以检测到这一点,最好避免使用这些工具)
  • Keylogger - 确定键击记录 API 用于捕获按键的方式
  • Cleanup - 当后利用 DLL 加载时,清理后利用用户自定义反射 DLL(UDRL)内存
  • Threadhint - 允许后利用 DLL 使用伪造的起始地址生成线程

配置文件

目前 SourcePoint 为您提供 7 个内置的 HTTP/HTTPS 流量配置文件选项,基于现有的配置文件。其中 6 个受到以下内容的影响并基于:

  • Microsoft Windows 更新通信
  • Slack 消息通信
  • Gotomeeting 活动会议通信
  • Microsoft Outlook 电子邮件通信

其中三个配置文件选项(5、6 和 7)专门设计用于:

  • Cloudfront.net
  • AzureEdge.net

最后一个选项(8)用于输入自定义配置文件。此选项旨在允许操作员使用完全自定义的流量配置文件。在许多情况下,完全独特的流量配置文件将比这些内置选项获得更高的成功率。这也允许操作员在使用自己常用或首选的流量配置文件的同时,仍然利用 SourcePoint 的可塑性特性。由于这允许使用独特的配置文件,因此确保调整配置文件以使其与 SourcePoint 配合使用非常重要。至少需要:

  • 将 header "Host" "acme.com"; 替换为 header "Host" "{{.Variables.Host}}";
  • 将 GET 字段下的 /pathtolegitpage/ 替换为 {{.Variables.HTTP_GET_URI}}
  • 将 POST 字段下的 /pathtolegitpage/ 替换为 {{.Variables.HTTP_POST_URI}}

为此,请使用选项 -Customuri 和 -ProfilePath 以及 -Profile 8。要为 GET 和 POST 使用不同的基础 URI,应使用 -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

目前 SourcePoint 不直接提供 DNS 自定义。为了仍然允许基于 DNS 的 Beacon,每个生成的配置文件中都有一个注释掉的 dns-beacon 部分。

待办事项列表

  • 添加更多配置文件
  • DNS 阶段加载
下载工具