Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/ne0nd0g/go-shellcode
Payload-GenerierungExploitationShellcodePost-ExploitationPenetrationstestsRed TeamingPayload-Entwicklung
GitHubne0nd0g/go-shellcode

go-shellcode

Ein Repository von Windows Shellcode-Runnern und unterstützenden Hilfsprogrammen. Die Anwendungen laden und führen Shellcode mithilfe verschiedener API-Aufrufe oder Techniken aus.

Repository anzeigen
1.2k239vor 4 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

go-shellcode

go-shellcode ist ein Repository mit Windows-Shellcode-Runnern und zugehörigen Hilfsprogrammen. Die Anwendungen laden und führen Shellcode mithilfe verschiedener API-Aufrufe oder Techniken aus.

Die verfügbaren Shellcode-Runner umfassen:

  • CreateFiber
  • CreateProcess
  • CreateProcessWithPipe
  • CreateRemoteThread
  • CreateRemoteThreadNative
  • CreateThread
  • CreateThreadNative
  • EarlyBird
  • EtwpCreateEtwThread
  • NtQueueApcThreadEx (lokal)
  • RtlCreateUserThread
  • Syscall
  • Shellcode Utils
  • UuidFromStringA

CreateFiber

Diese Anwendung nutzt die Windows-Funktion CreateFiber aus der Kernel32.dll, um Shellcode im eigenen Prozess auszuführen. Dies ist nützlich, wenn Sie die Injektion in einen entfernten Prozess vermeiden und CreateThread nicht aufrufen möchten. Diese Anwendung verwendet KEINE Funktionen aus dem Paket golang.org/x/sys/windows. Der wesentlichste Unterschied besteht darin, dass diese Anwendung alle notwendigen DLLs und Prozeduren selbst lädt und die Call()-Funktion der Prozedur verwendet.

HINWEIS: Ich habe noch keinen Weg gefunden, den Prozess sauber zu beenden; Sie müssen ihn manuell terminieren.

Die Anwendung kann auf einem Windows-Host mit folgendem Befehl aus dem Stammverzeichnis des Projekts kompiliert werden:

set GOOS=windows GOARCH=amd64;go build -o CreateFiber.exe .\cmd\CreateFiber\main.go

CreateProcess

Diese Anwendung nutzt die Windows-Funktion CreateProcess aus Kernel32.dll. Der Prozess wird im angehaltenen Zustand erstellt, der AddressOfEntryPoint in der IMAGE_OPTIONAL_HEADER-Struktur wird aktualisiert, um Shellcode im Kindprozess auszuführen, und dann wird der Prozess fortgesetzt. Dies ist eine Art von Process Hollowing, aber das vorhandene PE wird NICHT aus dem Speicher entfernt und der ThreadContext wird NICHT aktualisiert. Die Architektur des bereitgestellten Shellcodes (also x86 oder x64) muss mit der Architektur des Kindprozesses übereinstimmen.

Die Anwendung kann auf einem Windows-Host mit folgendem Befehl aus dem Stammverzeichnis des Projekts kompiliert werden:

set GOOS=windows GOARCH=amd64;go build -o CreateProcess.exe .\cmd\CreateProcess\main.go

CreateProcessWithPipe

Diese Anwendung nutzt die Windows-Funktion CreateProcess aus Kernel32.dll. Der Prozess wird im angehaltenen Zustand erstellt, der AddressOfEntryPoint in der IMAGE_OPTIONAL_HEADER-Struktur wird aktualisiert, um Shellcode im Kindprozess auszuführen, und dann wird der Prozess fortgesetzt. Dies ist eine Art von Process Hollowing, aber das vorhandene PE wird NICHT aus dem Speicher entfernt und der ThreadContext wird NICHT aktualisiert. Die Architektur des bereitgestellten Shellcodes (also x86 oder x64) muss mit der Architektur des Kindprozesses übereinstimmen.

Diese Anwendung unterscheidet sich von CreateProcess dadurch, dass sie alle Daten sammelt, die im Kindprozess auf STDOUT oder STDERR geschrieben werden, und sie an den Elternprozess zurückgibt. Die Daten werden gesammelt, indem die CreatePipe-Funktion verwendet wird, um eine anonyme Pipe zu erstellen, über die der Eltern- und der Kindprozess kommunizieren. Dies ist nützlich, wenn Sie Tools wie Donut verwenden, um eine .NET-Assembly in einem Kindprozess als Shellcode auszuführen und die Ausgabe des ausgeführten Programms abzurufen. Mit dem folgenden Befehl kann positionsunabhängiger Shellcode erzeugt werden, um Seatbelt mit Donut v0.9.3 auszuführen:

.\donut.exe -o donut_v0.9.3_Seatbelt.bin -x 2 -c Seatbelt.Program -m Main -p "ARPTable" Seatbelt.exe

Die Anwendung kann auf einem Windows-Host mit folgendem Befehl aus dem Stammverzeichnis des Projekts kompiliert werden:

set GOOS=windows GOARCH=amd64;go build -o CreateProcessWithPipe.exe .\cmd\CreateProcessWithPipe\main.go

CreateRemoteThread

Diese Anwendung nutzt die Windows-Funktion CreateRemoteThread aus Kernel32.dll, um Shellcode in einem entfernten Prozess auszuführen. Die Anwendung erfordert, dass der Zielprozess, in den injiziert werden soll, bereits läuft. Die Prozess-ID (PID) des Ziels kann zur Laufzeit mit der Befehlszeilenoption -pid für Tests angegeben werden. Für den operativen Einsatz codieren Sie die PID in der folgenden Codezeile hart, indem Sie die 0 durch Ihre Ziel-PID ersetzen:

pid := flag.Int("pid", 0, "Process ID to inject shellcode into")

Diese Anwendung nutzt – wo möglich – Funktionen aus dem Paket golang.org/x/sys/windows, wie z. B. die windows.OpenProcess()-Funktion. Die Anwendung kann auf einem Windows-Host mit folgendem Befehl aus dem Stammverzeichnis des Projekts kompiliert werden:

set GOOS=windows GOARCH=amd64;go build -o CreateRemoteThread.exe .\cmd\CreateRemoteThread\main.go

CreateRemoteThreadNative

Diese Anwendung nutzt die Windows-Funktion CreateRemoteThread aus Kernel32.dll, um Shellcode in einem entfernten Prozess auszuführen. Die Anwendung erfordert, dass der Zielprozess, in den injiziert werden soll, bereits läuft. Die Prozess-ID (PID) des Ziels kann zur Laufzeit mit der Befehlszeilenoption -pid für Tests angegeben werden. Für den operativen Einsatz codieren Sie die PID in der folgenden Codezeile hart, indem Sie die 0 durch Ihre Ziel-PID ersetzen:

pid := flag.Int("pid", 0, "Process ID to inject shellcode into")

Diese Anwendung verwendet KEINE Funktionen aus dem Paket golang.org/x/sys/windows. Der wesentlichste Unterschied besteht darin, dass diese Anwendung alle notwendigen DLLs und Prozeduren selbst lädt und die Call()-Funktion der Prozedur verwendet. Die Anwendung kann auf einem Windows-Host mit folgendem Befehl aus dem Stammverzeichnis des Projekts kompiliert werden:

set GOOS=windows GOARCH=amd64;go build -o CreateRemoteThreadNative.exe .\cmd\CreateRemoteThreadNative\main.go

CreateThread

Diese Anwendung nutzt die Windows-Funktion CreateThread aus Kernel32.dll, um Shellcode im eigenen Prozess auszuführen. Dies ist nützlich, wenn Sie die Injektion in einen entfernten Prozess vermeiden möchten. Diese Anwendung nutzt – wo möglich – Funktionen aus dem Paket golang.org/x/sys/windows, wie z. B. die windows.VirtualAlloc()-Funktion. Die Anwendung kann auf einem Windows-Host mit folgendem Befehl aus dem Stammverzeichnis des Projekts kompiliert werden:

set GOOS=windows GOARCH=amd64;go build -o CreateThread.exe .\cmd\CreateThread\main.go

CreateThreadNative

Diese Anwendung nutzt die Windows-Funktion CreateThread aus der Kernel32.dll, um Shellcode im eigenen Prozess auszuführen. Dies ist nützlich, wenn Sie die Injektion in einen entfernten Prozess vermeiden möchten. Diese Anwendung verwendet KEINE Funktionen aus dem Paket golang.org/x/sys/windows. Der wesentlichste Unterschied besteht darin, dass diese Anwendung alle notwendigen DLLs und Prozeduren selbst lädt und die Call()-Funktion der Prozedur verwendet. Die Anwendung kann auf einem Windows-Host mit folgendem Befehl aus dem Stammverzeichnis des Projekts kompiliert werden:

set GOOS=windows GOARCH=amd64;go build -o CreateThreadNative.exe .\cmd\CreateThreadNative\main.go

EarlyBird

Die Anwendung nutzt die Windows-Funktion CreateProcess, um einen Prozess im angehaltenen Zustand zu erstellen. Sobald der Kindprozess angehalten ist, wird die Windows-Funktion QueueUserAPC verwendet, um dem Kindprozess eine UserAPC hinzuzufügen, die auf den allozierten Shellcode verweist. Als Nächstes wird ResumeThread aufgerufen, was wiederum die undokumentierte Funktion NtTestAlert aufruft, die die erstellte UserAPC und damit den Shellcode ausführt. Dies ist nützlich, weil der Shellcode ausgeführt wird, bevor AV/EDR Funktionen hooken können, um eine Erkennung zu unterstützen. Referenz: New 'Early Bird' Code Injection Technique Discovered. Die Anwendung kann auf einem Windows-Host mit folgendem Befehl aus dem Stammverzeichnis des Projekts kompiliert werden:

export GOOS=windows GOARCH=amd64;go build -o goEarlyBird.exe cmd\EarlyBird\main.go

EtwpCreateEtwThread

Diese Anwendung nutzt die Windows-Funktion EtwpCreateEtwThread aus ntdll.dll, um Shellcode im eigenen Prozess auszuführen. Ursprüngliche Arbeit von TheWover. Dies ist nützlich, wenn Sie die Injektion in einen entfernten Prozess vermeiden möchten. Diese Anwendung verwendet KEINE Funktionen aus dem Paket golang.org/x/sys/windows. Der wesentlichste Unterschied besteht darin, dass diese Anwendung alle notwendigen DLLs und Prozeduren selbst lädt und die Call()-Funktion der Prozedur verwendet. Die Anwendung kann auf einem Windows-Host mit folgendem Befehl aus dem Stammverzeichnis des Projekts kompiliert werden:

set GOOS=windows GOARCH=amd64;go build -o EtwpCreateEtwThread.exe .\cmd\EtwpCreateEtwThread\main.go

NtQueueApcThreadEx (lokal)

Diese Anwendung verwendet die undokumentierte Funktion NtQueueApcThreadEx, um eine „Special User APC" im aktuellen Thread des aktuellen Prozesses zu erstellen und Shellcode auszuführen. Da der Shellcode im aktuellen Prozess geladen und ausgeführt wird, ist dies „lokal". Dieselbe Technik kann auch für einen entfernten Prozess verwendet werden. HINWEIS: Dies funktioniert nur unter Windows 7 oder höher. Referenz: APC Series: User APC API.

export GOOS=windows GOARCH=amd64;go build -o goNtQueueApcThreadEx-Local.exe cmd\NtQueueApcThreadEx-Local\main.go

RtlCreateUserThread

Diese Anwendung nutzt die Windows-Funktion RtlCreateUserThread aus ntdll.dll, um Shellcode in einem entfernten Prozess auszuführen. Die Anwendung erfordert, dass der Zielprozess, in den injiziert werden soll, bereits läuft. Die Prozess-ID (PID) des Ziels kann zur Laufzeit mit der Befehlszeilenoption -pid für Tests angegeben werden. Für den operativen Einsatz codieren Sie die PID in der folgenden Codezeile hart, indem Sie die 0 durch Ihre Ziel-PID ersetzen:

pid := flag.Int("pid", 0, "Process ID to inject shellcode into")

Diese Anwendung verwendet KEINE Funktionen aus dem Paket golang.org/x/sys/windows. Der wesentlichste Unterschied besteht darin, dass diese Anwendung alle notwendigen DLLs und Prozeduren selbst lädt und die Call()-Funktion der Prozedur verwendet. Die Anwendung kann auf einem Windows-Host mit folgendem Befehl aus dem Stammverzeichnis des Projekts kompiliert werden:

set GOOS=windows GOARCH=amd64;go build -o RtlCreateUserThread.exe .\cmd\RtlCreateUserThread\main.go

Syscall

Diese Anwendung führt Shellcode im aktuell laufenden Prozess aus, indem sie einen Syscall auf den Einstiegspunkt des Shellcodes macht. Diese Anwendung verwendet KEINE Funktionen aus dem Paket golang.org/x/sys/windows. Die Anwendung kann auf einem Windows-Host mit folgendem Befehl aus dem Stammverzeichnis des Projekts kompiliert werden:

set GOOS=windows GOARCH=amd64;go build -o Syscall.exe .\cmd\Syscall\main.go

UuidFromStringA

Diese Anwendung nutzt die Windows-Funktion UuidFromStringA, um Shellcode in eine Speicheradresse zu laden, und ruft dann die Funktion EnumSystemLocalesA auf, um den Shellcode auszuführen. Diese Methode zum Laden und Ausführen von Shellcode wurde von nccgroup's RIFT: Analysing a Lazarus Shellcode Execution Method abgeleitet. Bei dieser Anwendung wird der Speicher auf dem Heap alloziert; VirtualAlloc wird nicht verwendet. Die Anwendung kann auf einem Windows-Host mit folgendem Befehl aus dem Stammverzeichnis des Projekts kompiliert werden:

set GOOS=windows GOARCH=amd64;go build -o UuidFromString.exe .\cmd\UuidFromString\main.go

ShellcodeUtils

Diese Anwendung dient zur Transformation von Shellcode-Binärdateien. Das Programm setzt voraus, dass die Eingabedatei eine Binärdatei (.bin) ist, die die Hex-Bytes des Shellcodes enthält. ShellcodeUtils kann Ihre Eingabedatei einfach Base64-kodieren oder mittels XOR, RC4 oder AES256-GCM verschlüsseln. Die Tools können auch zum Entschlüsseln von Dateien verwendet werden.

Hilfemenü von ShellcodeUtils:

root@kitploit:~
  -base64
        Base64 encode the output. Can be used with or without encryption
  -i string
        Input file path of binary file
  -key string
        Encryption key
  -mode string
        Mode of operation to perform on the input file [encrypt,decrypt] (default "encrypt")
  -nonce string
        Nonce, in hex, used to decrypt an AES256 input file. Only used during decryption
  -o string
        Output file path
  -salt string
        Salt, in hex, used to generate an AES256 32-byte key through Argon2. Only used during decryption
  -type string
        The type of encryption to use [xor, aes256, rc4, null]
  -v    Enable verbose output

Beispiel für eine reine Base64-Kodierung der Eingabedatei und Speicherung als Textdatei:

root@kitploit:~
PS C:\Users\bob> .\ShellcodeUtils.exe -i C:\Users\bob\calc.bin -o C:\Users\bob\calc.b64.txt -base64 -v
[-]Output directory: C:\Users\bob\
[-]Output file name: calc.b64.txt
[-]File contents (hex): 505152535657556a605a6863616c6354594883ec2865488b32488b7618488b761048ad488b30488b7e3003573c8b5c17288b741f204801fe8b541f240fb72c178d5202ad813c0757696e4575ef8b741f1c4801fe8b34ae4801f799ffd74883c4305d5f5e5b5a5958c3
[-]No encryption type provided, continuing on...
[+]Output (string):
UFFSU1ZXVWpgWmhjYWxjVFlIg+woZUiLMkiLdhhIi3YQSK1IizBIi34wA1c8i1wXKIt0HyBIAf6LVB8kD7csF41SAq2BPAdXaW5Fde+LdB8cSAH+izSuSAH3mf/XSIPEMF1fXltaWVjD
[+] encrypt input and wrote 140 bytes to: C:\Users\bob\calc.b64.txt

Beispiel für die XOR-Verschlüsselung der Eingabedatei mit einem Schlüssel Sh3!1z UND anschließender Base64-Kodierung der Ausgabe:

root@kitploit:~
PS C:\Users\bob> .\ShellcodeUtils.exe -i C:\Users\bob\calc.bin -o C:\Users\bob\calc.xor.b64.txt -mode encrypt -type xor -key Sh3!1z -v
[-]Output directory: C:\Users\bob\
[-]Output file name: calc.xor.b64.txt
[-]File contents (hex): 505152535657556a605a6863616c6354594883ec2865488b32488b7618488b761048ad488b30488b7e3003573c8b5c17288b741f204801fe8b541f240fb72c178d5202ad813c0757696e4575ef8b741f1c4801fe8b34ae4801f799ffd74883c4305d5f5e5b5a5958c3
[-]XOR encrypting input file with key: Sh3!1z
[+]Output (hex):
03396172672d0602537b5919320450756832d0841b4479f16120b8572932d81e23699c32d8587baa4f4a503f0faa6d6d7be3473e11325296b8752e5e5cdf1f36bc2851c5b21d362d3a067654def127772f693084d85c9d69308dca97e469b2be63356c7f6a200a30f0
[+]xor encrypt input and wrote 105 bytes to: C:\Users\bob\calc.xor.b64.txt

Beispiel für die AES256-GCM-Verschlüsselung der Eingabedatei mit einem Passwort Sh3!1z OHNE Base64-Kodierung der Ausgabe:

root@kitploit:~
PS C:\Users\bob> .\ShellcodeUtils.exe -i C:\Users\bob\calc.bin -o C:\Users\bob\calc.aes.bin -mode encrypt -type aes256 -key Sh3!1z -v
[-]Output directory: C:\Users\bob\
[-]Output file name: calc.aes.bin
[-]File contents (hex): 505152535657556a605a6863616c6354594883ec2865488b32488b7618488b761048ad488b30488b7e3003573c8b5c17288b741f204801fe8b541f240fb72c178d5202ad813c0757696e4575ef8b741f1c4801fe8b34ae4801f799ffd74883c4305d5f5e5b5a5958c3
[-]AES256 encrypting input file
[+]Argon2 salt (hex): db6126d3ac640f8aaa67cda74b8cf1d2c54513db7bf4fbe3422d1b276af1367e
[+]AES256 key (32-bytes) derived from input password Sh3!1z (hex): 096a40f1aef38dd9b5d63284acc19727c4420dd98f21ea052112bef63eb7d94a
[+]AES256 nonce (hex): 13802153c4b2fb6a3e545ff4
[+]Output (hex):
44a974233e37b460dc2181b16846f265e8e3a07959abf9c8760f7d0ac8029575e67571ea5b313bc8b011739db57c690ec156a4b0bba4e4d632c35c1490aeaac24f5ae05e90934adf57798ee3c702a3c27073fe976fbcc6ee5db355da186c1add58913e41a8c5716a0fcfc27371f0cae906e50e680366496a00
[+]aes256 encrypt input and wrote 121 bytes to: C:\Users\bob\calc.aes.bin

AES256 erfordert einen 32-Byte-Schlüssel. Dieses Programm verwendet den Argon2-ID-Algorithmus, um aus dem mit dem Parameter -key angegebenen Passwort unter Verwendung eines zufällig generierten Salts einen 32-Byte-Schlüssel abzuleiten. Sie benötigen dasselbe Passwort und den Salt, die mit dem Argon2-Algorithmus verwendet wurden, sowie dieselbe Nonce, die mit dem AES256-Algorithmus verwendet wurde, um die Datei erfolgreich zu entschlüsseln. Alternativ könnte die Entschlüsselungsfunktion so aktualisiert werden, dass sie direkt den 32-Byte-Argon2-Schlüssel anstelle des Passworts und des Salts verwendet.

HINWEIS: Es liegt im Ermessen des Bedieners, ob er den generierten Argon2-Schlüssel oder das Passwort und den Salt, die zur Schlüsselgenerierung verwendet wurden, verwendet.

Beispiel für die AES256-Entschlüsselung der Eingabedatei:

root@kitploit:~
PS C:\Users\bob> .\ShellcodeUtils.exe -i C:\Users\bob\calc.aes.bin -o C:\Users\bob\calc.aes.decrypted.bin -mode decrypt -type aes256 -key Sh3!1z -nonce 13802153c4b2fb6a3e545ff4 -salt db6126d3ac640f8aaa67cda74b8cf1d2c54513db7bf4fbe3422d1b276af1367e -v
[-]Output directory: C:\Users\bob\
[-]Output file name: calc.aes.decrypted.bin
[-]File contents (hex): 44a974233e37b460dc2181b16846f265e8e3a07959abf9c8760f7d0ac8029575e67571ea5b313bc8b011739db57c690ec156a4b0bba4e4d632c35c1490aeaac24f5ae05e90934adf57798ee3c702a3c27073fe976fbcc6ee5db355da186c1add58913e41a8c5716a0fcfc27371f0cae906e50e680366496a00
[-]AES256 decrypting input file
[-]Argon2 salt (hex): db6126d3ac640f8aaa67cda74b8cf1d2c54513db7bf4fbe3422d1b276af1367e
[-]AES256 key (hex): 096a40f1aef38dd9b5d63284acc19727c4420dd98f21ea052112bef63eb7d94a
[-]AES256 nonce (hex): 13802153c4b2fb6a3e545ff4
[+]Output (hex):
505152535657556a605a6863616c6354594883ec2865488b32488b7618488b761048ad488b30488b7e3003573c8b5c17288b741f204801fe8b541f240fb72c178d5202ad813c0757696e4575ef8b741f1c4801fe8b34ae4801f799ffd74883c4305d5f5e5b5a5958c3
[+]aes256 decrypt input and wrote 105 bytes to: C:\Users\bob\calc.aes.decrypted.bin

Die Anwendung kann auf einem Windows-Host mit folgendem Befehl aus dem Stammverzeichnis des Projekts kompiliert werden:

set GOOS=windows GOARCH=amd64;go build -o ShellcodeUtils.exe .\cmd\ShellcodeUtils\main.go

Tool herunterladen