SPAWN - Cobalt Strike BOF
Cobalt Strike BOF that spawns a sacrificial process, injects it with shellcode, and executes payload. Built to evade EDR/UserLand hooks by spawning sacrificial process with Arbitrary Code Guard (ACG), BlockDll, and PPID spoofing.
- Due to ACG, this does not support shellcode which is dependent on these fuctionalities:
- Toggling memory permissions between RW/RX.
- RWX memory
- To inject shellcode into a spawned process that is dependent on the above functionilities please see the Hollow BOF project
- For an awesome explaination on ACG please see Adam Chestner's blog below.
Nouveautés (08/01/2021)
- Spawn sacrificial process with Arbitrary Code Guard (ACG) to prevent EDR solutions from hooking into sacrificial process DLL's.
- Inject & Execute shellcode.
Popin' Calc from ACG Protected Process

beacon> spawn notepad.exe 6248 /Users/bobby.cooke/git/boku7/SPAWN/popCalc.bin
[*] SPAWN (Bobby Cooke//SpiderLabs|@0xBoku|github.com/boku7)
[+] Opened handle 0x534 to process 6248(PID)
[+] Spawned process: notepad.exe | PID: 8404 | PPID: 6248
[+] Allocated RE memory in remote process 8404 (PID) at: 0x00000177A72C0000
[+] Wrote 280 bytes to memory in remote process 8404 (PID) at 0x00000177A72C0000
[+] APC queued for main thread of 8404 (PID) to shellcode address 0x00000177A72C0000
Nouveautés (07/19/2021)
- CNA Agressor Script interface
beacon> help
spawn Spawn a process with a spoofed PPID and blockDll
beacon> help spawn
Synopsis: spawn /path/to/exe PPID
beacon> ps
8264 5536 OneDrive.exe x86 1 DESKTOP-KOSR2NO\boku
beacon> spawn cmd.exe 8264
[*] SPAWN (@0xBoku|github.com/boku7)
Opened handle 0x634 to process 8264(PID)
Success! Spawned process: cmd.exe | PID: 5384 | PPID: 8264
- PPID Spoofing
- Cobalt Strike "like"
blockdll functionality
Compilation avec MinGW x64:
x86_64-w64-mingw32-gcc -c spawn.x64.c -o spawn.x64.o
Exécution depuis la console Beacon de Cobalt Strike
- Après compilation, importez le script spawn.cna dans le Script Manager de Cobalt Strike.
beacon> spawn /path/to/exe PPID /local/path/to/shellcode.bin
Liste des tâches à faire
Script Agressor pour une meilleure expérience utilisateur

Spoofing PPID pour une meilleure OPSEC de la relation processus parent-enfant
- Ici, nous pouvons voir notre processus
cmd.exe être généré avec le PPID comme OneDrive.exe
Implémenter la fonctionnalité blockdll de Cobalt Strike pour empêcher les DLL non signées par Microsoft de se charger dans la mémoire des processus générés
- Nous voyons la relation parent-enfant du processus, et que notre processus généré a été créé avec la restriction
Signatures restreintes (Microsoft uniquement)
- La restriction
Signatures restreintes (Microsoft uniquement) fait que les DLL non signées par Microsoft ne peuvent pas être chargées dans notre processus généré
Ne pas faire planter le processus beacon lorsque le fichier PE n'existe pas
- Ne plante plus lors d'un échec de création de processus !
Retourner le PID à la console Cobalt Strike lorsque le nouveau processus est généré
Pourquoi ai-je construit cela ?
1. Pour en apprendre davantage sur les BOF Cobalt Strike
2. Je veux de la flexibilité dans le choix de mes processus sacrificiels.
- Générer le même processus pour chaque fork-and-run me semble être une OPSEC mauvaise/prévisible.
- Il existe probablement des méthodes pour cela déjà disponibles ou intégrées dans CS. Quoi qu'il en soit, je voulais construire la mienne.
3. J'ai beaucoup d'idées cool de BOF que je veux construire là-dessus.
Crédits / Références
Spoofing PPID et fonctionnalité blockDll
- Crédit/remerciements à : Adam Chester @_xpn_ + @SEKTOR7net + Raphael Mudge
- Merci pour le travail incroyable que vous avez apporté. Je ne pourrais pas publier cela sans vos blogs, vidéos et contenu génial !
- Références principales pour le spoofing PPID et blockdll
Raphael Mudge - Beacon Object Files - Luser Demo
Cobalt Strike - Beacon Object Files
Références de code BOF
anthemtotheego/InlineExecute-Assembly
ajpc500/BOFs
trustedsec/CS-Situational-Awareness-BOF
Cours Sektor7 Malware Dev Essentials - a appris à faire la technique d'injection early bird