Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/tylous/sourcepoint
Frameworks d'ExploitationGénération de PayloadsCommandement et ContrôleRed Teaming
GitHubtylous/sourcepoint

SourcePoint

Générateur de profil C2 polymorphe pour Cobalt Strike qui automatise la création de configurations de beacon d'évasion avec des options aléatoires pour HTTP, DNS et l'injection de processus afin de réduire la détection.

Voir le dépôt
1.2k170il y a 1 anVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

SourcePoint

SourcePoint est un générateur de profils C2 polymorphes pour les C2 de Cobalt Strike, écrit en Go. SourcePoint permet de générer à la volée des profils C2 uniques, ce qui aide à réduire nos Indicateurs de Compromission ("IoCs") et permet à l'opérateur de déployer des profils complexes avec un minimum d'effort. Cela a été réalisé en examinant en profondeur les Articles ainsi que les Notes de version afin d'identifier les fonctions clés et les fonctionnalités modifiables. SourcePoint a été conçu dans le but de résoudre le problème de la détection de nos activités C2, en se concentrant sur le passage d'IoC malveillants à des IoC suspects. L'objectif ici est qu'il soit plus difficile de détecter notre C2 si nos IoC ne sont pas de nature malveillante et nécessitent des recherches supplémentaires pour découvrir leur nature suspecte. SourcePoint contient de nombreuses options configurables pour modifier votre profil (dans la plupart des cas, si laissé vide, SourcePoint les choisira aléatoirement pour vous). Les profils générés modifient tous les aspects de votre C2. Le but de ce projet est non seulement d'aider à contourner les contrôles basés sur la détection, mais aussi d'aider à fondre le trafic et l'activité C2 dans l'environnement, rendant cette activité difficile à détecter.

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

Installation

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

$go build SourcePoint.go

Utilisation

root@kitploit:~
#./SourcePoint -h

	   _____                            ____        _       __
	  / ___/____  __  _______________  / __ \____  (_)___  / /_
	  \__ \/ __ \/ / / / ___/ ___/ _ \/ /_/ / __ \/ / __ \/ __/
	 ___/ / /_/ / /_/ / /  / /__/  __/ ____/ /_/ / / / / / /_
	/____/\____/\__,_/_/   \___/\___/_/    \____/_/_/ /_/\__/
  							(@Tyl0us)

                                                                                                                        
Utilisation de ./SourcePoint :
  -Allocation string
        Quantité minimale de mémoire à demander pour le contenu injecté (doit être supérieure à 4096)
  -BeaconGate string
        Spécifie les options de la porte du beacon (All, Comms, Core, Cleanup) ou des API spécifiques
  -CDN string
        Nom du cookie CDN (généralement utilisé pour les profils AzureEdge)
  -CDN-Value string
        Valeur du cookie CDN (généralement utilisé pour les profils AzureEdge)
  -Customuri string
        L'URI de base pour le profil HTTP GET/POST personnalisé - Ne peut pas être utilisé avec CustomuriGET ou CustomuriPOST
  -CustomuriGET string
        L'URI de base pour le profil HTTP GET personnalisé - Doit être utilisé avec CustomuriPOST
  -CustomuriPOST string
        L'URI de base pour le profil HTTP POST personnalisé - Doit être utilisé avec CustomuriGET
  -Datajitter string
        Ajoute une valeur à la sortie serveur HTTP-Get et HTTP-Post (par défaut "50")
  -Forwarder
        Active l'en-tête X-forwarded-For (utile lorsque votre C2 est derrière un redirecteur)
  -Host string
        Nom de domaine du serveur d'équipe
  -Httplib string
        Sélectionne la bibliothèque HTTP Beacon par défaut :
        [*] wininet
        [*] winhttp' (par défaut "winhttp")
  -Injector string
        Sélectionne la méthode préférée pour allouer de la mémoire dans le processus distant :
        [*] VirtualAllocEx (idéal pour les architectures croisées, i.e. x86 -> x64 et x64->x86)
        [*] NtMapViewOfSection (option plus discrète, mais bascule vers VirtualAllocEx, générant plus d'événements)
  -Jitter string
        Pourcentage de gigue pour le rappel du beacon
  -Keylogger string
        Sélectionne la méthode préférée que le beacon utilisera pour enregistrer les frappes :
        [*] GetAsyncKeyState (utilise l'API GetAsyncKeyState (DLL séparée pour les processus x86/x64))
        [*] SetWindowsHookEx (utilise l'API SetWindowsHookEx)
  -Keystore string
        Nom du magasin de clés SSL
  -Metadata string
        Spécifie comment transformer et intégrer les métadonnées dans la requête HTTP :
        [*] base64
        [*] base64url
        [*] netbios
        [*] netbiosu (par défaut "base64url")
  -Outfile string
        Nom du fichier de sortie
  -PE_Clone string
        Fichier PE que le beacon imitera (Utilisez le numéro) :
        [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 de Carbon Black)
        [28] InProcessClient.dll (DLL de SentinelOne)
        [29] umppc.dll (DLL de CrowdStrike)
        [30] CyMemDef64.dll (DLL de Cylance)
  -Password string
        Mot de passe du certificat SSL
  -PostEX_Name string
        Fichier dans lequel les activités post-exploitation seront lancées et injectées (Utilisez le numéro) :
        [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
        Profil HTTP GET/POST (Utilisez le numéro) :
        [1] Windowsupdate
        [2] Slack
        [3] Gotomeeting
        [4] Outlook.Live
        [5] Safebrowsing [Compatible Cloudfront]
        [6] AzureEdge [Compatible AzureEdge]
        [7] Field-Keyword [Compatible Cloudfront]
        [8] Personnalisé (utilisé avec ProfilePath)
  -ProfilePath string
        Chemin du profil HTTP GET/POST personnalisé...
  -Sleep string
        Temps de sommeil initial du beacon
  -Stage string
        Désactiver l'hébergement de la phase (Par défaut : False) (par défaut "false")
  -Syscall string
        Définit la capacité à utiliser des appels système directs/indirects au lieu des appels de fonction API Windows standard :
        [*] None
        [*] Direct
        [*] Indirect (par défaut "None")
  -TasksDnsProxyMaxSize string
        Taille maximale (en octets) des données proxy à transférer via le canal de communication DNS lors d'un check-in
  -TasksMaxSize string
        Taille maximale (en octets) des tâches et des données proxy pouvant être transférées via un canal de communication lors d'un check-in
  -TasksProxyMaxSize string
        Taille maximale (en octets) des données proxy à transférer via le canal de communication lors d'un check-in
  -ThreadSpoof
        Configure les DLL post-ex pour créer des threads avec une adresse de début falsifiée. Celles-ci sont générées aléatoirement (par défaut true)
  -Uri string
        Le nombre d'URI qu'un profil doit avoir pour que les beacons choisissent
  -Useragent string
        Chaîne UserAgent que le beacon doit utiliser (Laissez vide pour en sélectionner une aléatoirement) :
        [*] Win10Chrome
        [*] Win10Edge
        [*] Win10IE
        [*] Win10
        [*] Win6.3
        [*] Linux
        [*] Mac
  -Yaml string
        Chemin vers le fichier de configuration YAML

Important

SourcePoint automatise principalement le processus de construction d'un profil. Il est très important de connaître toutes les fonctionnalités modifiées dans ces profils. Connaître ces fonctionnalités peut vraiment aider à augmenter votre taux de réussite.

Options

Bien qu'il y ait beaucoup de paramètres et de fonctionnalités décrits dans la fonction d'aide de SourcePoint, il existe de nombreuses fonctionnalités importantes intégrées dans chaque profil qu'il est important de connaître. Ces fonctionnalités sont :

Options globales

Cette partie de votre profil modifie le fonctionnement du beacon. Certaines des fonctionnalités utilisées pour modifier le comportement sont :

  • Host Stage - Permet au serveur d'équipe d'héberger le shellcode de la phase pour HTTP, HTTPS, DNS. Si cette option est activée, quiconque envoie une requête GET avec une valeur spécifique comme /9ZXq peut également récupérer le shellcode.
  • Sleep - La durée pendant laquelle un beacon attend avant de rappeler
  • Jitter - Ajoute un pourcentage au temps de rappel du beacon
  • Useragent - La chaîne UserAgent utilisée lors de la communication HTTP et HTTPS. L'utilisation d'une chaîne UserAgent appropriée peut aider à se fondre dans l'environnement.
  • Data Jitter - Ajoute une chaîne de longueur aléatoire à toutes les requêtes GET et POST pour garantir que les requêtes entrantes n'ont pas la même longueur.
  • SMB Frame Header - Ajoute une valeur d'en-tête aux messages SMB du beacon
  • Pipename - Définit le nom du tube SMB que le beacon utilisera pour la communication
  • Pipename Stager - Définit le nom du stager SMB pour les beacons
  • TCP Frame Header - Ajoute une valeur d'en-tête aux messages TCP du beacon
  • SSH Banner - La bannière SSH utilisée
  • SSH Pipename - Le nom utilisé pour la bannière SSH
  • HttpLib - L'attribut de bibliothèque permet à l'utilisateur de spécifier la bibliothèque par défaut utilisée par les beacons générés par le profil. La valeur peut être "wininet" ou "winhttp"

Phase (Stage)

Cette partie de votre profil contrôle comment le beacon est chargé en mémoire et modifie le contenu de la DLL du beacon. Certaines des fonctionnalités utilisées pour modifier le comportement sont :

  • Obfuscate - Obfusque la table d'importation de la DLL réflexive
  • Stomppe - Demande à la charge utile de masquer les valeurs MZ, PE et e_lfanen après le chargement
  • Clean up - Dit au beacon de libérer la mémoire associée à la DLL réflexive qui l'a initialisé
  • UseRWX - Garantit que le shellcode n'utilise pas les autorisations Lecture, Écriture, Exécution
  • Magic_MZ - Remplace les premiers octets (incluant l'en-tête MZ) de la DLL réflexive du Beacon (actuellement uniquement pour x64)
  • Magic_PE - Remplace le marqueur de caractère PE utilisé par le chargeur réflexif du Beacon par une autre valeur
  • Syscall - Définit la capacité à utiliser des appels système au lieu des fonctions API Windows standard
  • Smart Inject - Utilise des indices de pointeurs de fonction intégrés pour amorcer l'agent beacon sans parcourir kernel32 EAT
  • Sleep Mask - Les beacons TCP et SMB s'obfusquent au repos pendant qu'ils attendent que la connexion soit établie
  • PE Header - Modifie les caractéristiques de votre DLL réflexive du beacon pour ressembler à autre chose en mémoire
  • Transformation - Transforme la DLL réflexive de la phase du beacon en supprimant ou en ajoutant des chaînes dans .rdata

Injection de processus (Process-Inject)

Cette partie de votre profil contrôle comment le beacon façonne le contenu injecté et contrôle le comportement d'injection de processus. Certaines des fonctionnalités utilisées pour modifier le comportement sont :

  • Allocator - Détermine comment le chargeur réflexif du beacon alloue la mémoire
  • Minimum Allocation - Quantité minimale de mémoire à demander pour le contenu injecté
  • Userwx - Garantit que le shellcode n'utilise pas les autorisations Lecture, Écriture, Exécution (l'alternative est RW)
  • Startrwx - Utilise Lecture, Écriture, Exécution comme permissions initiales pour le contenu injecté (l'alternative est RW)
  • Transformer - Ajoute un bloc de contenu de remplissage injecté par le beacon
  • Execute - Cette section détermine comment exécuter le code injecté

Post-Exécution (Post-Exec)

Cette partie de votre profil contrôle comment le beacon gère les modules et commandes de post-exploitation. Certaines des fonctionnalités utilisées pour modifier le comportement sont :

  • Spawnto - Détermine le processus temporaire par défaut que le beacon lancera pour ses commandes et options de post-exploitation
  • Obfuscate - Obfusque la table d'importation de la DLL réflexive
  • Smart Inject - Transmet des pointeurs de fonction clés du beacon à ses tâches enfants
  • AMSI disable - Désactive AMSI pour powerpick, execute-assembly et psinject (Certains EDR peuvent le détecter, il est préférable d'éviter ces outils)
  • Keylogger - Détermine comment l'API de journalisation des frappes capture les frappes
  • Cleanup - Nettoie la mémoire de la DLL réflexive définie par l'utilisateur (UDRL) post-ex lorsque la DLL post-ex est chargée
  • Threadhint - Permet aux DLL post-ex de créer des threads avec une adresse de début falsifiée

Profils

Actuellement, SourcePoint vous propose 7 options intégrées pour les profils de trafic HTTP/HTTPS, basées sur des profils existants. Parmi ces 6 (note: incohérence dans le texte original: "6" alors qu'il y a 7 profils listés), 4 sont influencés par et basés sur :

  • La communication de mise à jour de Microsoft Windows
  • La communication de messages Slack
  • La communication de réunions actives Gotomeeting
  • La communication de courriels Microsoft Outlook

3 des options de profil (5, 6 et 7) sont conçues spécifiquement pour :

  • Cloudfront.net
  • AzureEdge.net

La dernière option (8) est conçue pour importer un profil personnalisé. Cette option permet à un opérateur d'utiliser un profil de trafic complètement personnalisé. Il existe de nombreux cas où un profil de trafic totalement unique apportera un succès élevé plutôt qu'un de ceux-ci. Cela permet également aux opérateurs de toujours utiliser les fonctionnalités de malléabilité de SourcePoint avec leur profil de trafic préféré ou habituel. Comme cela permet des profils uniques, il est important de s'assurer de peaufiner et d'ajuster le profil pour que SourcePoint fonctionne. Au minimum :

  • Remplacez - header "Host" "acme.com"; par header "Host" "{{.Variables.Host}}";
  • Remplacez - /pathtolegitpage/ sous le champ GET par {{.Variables.HTTP_GET_URI}}
  • Remplacez - /pathtolegitpage/ sous le champ POST par {{.Variables.HTTP_POST_URI}}

Pour ce faire, utilisez les options suivantes -Customuri et -ProfilePath avec -Profile 8. Pour utiliser une base URI différente pour GET et POST, utilisez -CustomuriGET et -CustomuriPOST à la place de -Customuri. Lors du développement d'un profil, il est fortement recommandé d'utiliser le ./c2lint natif pour vérifier que tout fonctionne.

Exemple d'échantillon

En combinant ces options en un seul profil, vous pouvez créer un beacon hautement efficace capable de contourner les contrôles préventifs et de détection. Bien que cela reste un jeu du chat et de la souris en évolution, combiner les bonnes options contre une pile de sécurité spécifique peut être très efficace.

Exemples de configurations 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: 

Certificat SSL

Les profils de mode 1 à 4 peuvent être utilisés sans SSL valide, SourcePoint générera un certificat auto-signé lié au type de profil. Cependant, des certificats SSL valides sont extrêmement importants pour le succès de tout type de C2. Pour de nombreuses raisons, mais évidemment, aucun certificat signifie que le trafic ne sera pas chiffré (c'est-à-dire HTTP, QUI NE DEVRAIT JAMAIS ÊTRE UTILISÉ), mais l'utilisation d'un certificat auto-signé comporte ses limites évidentes. Il existe de nombreuses façons d'obtenir un certificat SSL valide pour créer un magasin de clés ; ma méthode préférée consiste à utiliser une version modifiée de HTTPsC2DoneRight.sh, créée par Cham423.

DNS

Actuellement, la personnalisation DNS n'est pas proposée directement via SourcePoint. Pour permettre tout de même les beacons basés sur DNS, une section commentée pour le dns-beacon se trouve dans chaque profil généré.

Liste des tâches

  • Ajouter plus de profils
  • Staging DNS
Télécharger l’outil