Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
go-shellcode — Windows Shellcodeランナーとサポートユーティリティのリポジトリ。これらのアプリケーションは、さまざまなAPI呼び出しや手法を使用してShellcodeをロードおよび実行します。 | Kitploit
ツール/GitHubGitHub/ne0nd0g/go-shellcode
ペイロード生成エクスプロイトシェルコードポストエクスプロイトペネトレーションテストレッドチーミングペイロード開発
GitHubne0nd0g/go-shellcode

go-shellcode

Windows Shellcodeランナーとサポートユーティリティのリポジトリ。これらのアプリケーションは、さまざまなAPI呼び出しや手法を使用してShellcodeをロードおよび実行します。

リポジトリを見る
1.2k2394年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

go-shellcode

go-shellcode は、Windows 用 Shellcode ランナーと補助ユーティリティのリポジトリです。これらのアプリケーションは、さまざまな API 呼び出しやテクニックを使用して Shellcode をロードおよび実行します。

利用可能な Shellcode ランナーの一覧:

  • CreateFiber
  • CreateProcess
  • CreateProcessWithPipe
  • CreateRemoteThread
  • CreateRemoteThreadNative
  • CreateThread
  • CreateThreadNative
  • EarlyBird
  • EtwpCreateEtwThread
  • NtQueueApcThreadEx (ローカル)
  • RtlCreateUserThread
  • Syscall
  • Shellcode Utils
  • UuidFromStringA

CreateFiber

このアプリケーションは、Windows の CreateFiber 関数(Kernel32.dll から)を利用して、このアプリケーションのプロセス内でシェルコードを実行します。これは、リモートプロセスインジェクションを避け、CreateThread の呼び出しを避けたい場合に便利です。このアプリケーションは、golang.org/x/sys/windows パッケージの関数を使用しません。最も顕著な違いは、必要な DLL とプロシージャをすべて自身でロードし、プロシージャの Call() 関数を使用することです。

注: プロセスを終了させる方法は見つかっておらず、手動で終了する必要があります。

Windows ホスト上でプロジェクトのルートディレクトリから以下のコマンドでコンパイルできます:

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

CreateProcess

このアプリケーションは、Kernel32.dll の Windows CreateProcess 関数を利用します。プロセスは中断状態で作成され、IMAGE_OPTIONAL_HEADER 構造体内の AddressOfEntryPoint が更新されて子プロセスでシェルコードを実行するようになり、その後プロセスが再開されます。これはプロセスハローイングの一種ですが、既存の PE はアンマップされず、ThreadContext も更新されません。指定するシェルコードのアーキテクチャ(x86 または x64)は、子プロセスのアーキテクチャと一致している必要があります。

Windows ホスト上でプロジェクトのルートディレクトリから以下のコマンドでコンパイルできます:

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

CreateProcessWithPipe

このアプリケーションは、Kernel32.dll の Windows CreateProcess 関数を利用します。プロセスは中断状態で作成され、IMAGE_OPTIONAL_HEADER 構造体内の AddressOfEntryPoint が更新されて子プロセスでシェルコードを実行するようになり、その後プロセスが再開されます。これはプロセスハローイングの一種ですが、既存の PE はアンマップされず、ThreadContext も更新されません。指定するシェルコードのアーキテクチャ(x86 または x64)は、子プロセスのアーキテクチャと一致している必要があります。

このアプリケーションは CreateProcess とは異なり、子プロセスで STDOUT または STDERR に書き込まれたデータを収集し、親プロセスに返します。データは CreatePipe 関数を使用して匿名パイプを作成し、そのパイプを介して親プロセスと子プロセスが通信することで収集されます。これは、Donut のようなツールを使用して .NET アセンブリをシェルコードとして子プロセスで実行し、実行プログラムの出力を取得する場合に便利です。以下のコマンドを使用して、Donut v0.9.3 で Seatbelt を実行するための位置独立型シェルコードを生成できます:

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

Windows ホスト上でプロジェクトのルートディレクトリから以下のコマンドでコンパイルできます:

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

CreateRemoteThread

このアプリケーションは、Kernel32.dll の Windows CreateRemoteThread 関数を利用して、リモートプロセスでシェルコードを実行します。このアプリケーションは、インジェクション対象のターゲットプロセスが既に実行中であることを必要とします。テスト時にターゲットのプロセス ID (PID) を実行時に指定するには、-pid コマンドラインフラグを使用できます。運用時に使用する場合は、以下のコード行で 0 をターゲット PID に置き換えて PID をハードコードします:

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

このアプリケーションは、可能な限り golang.org/x/sys/windows パッケージの関数(例: windows.OpenProcess())を利用します。Windows ホスト上でプロジェクトのルートディレクトリから以下のコマンドでコンパイルできます:

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

CreateRemoteThreadNative

このアプリケーションは、Kernel32.dll の Windows CreateRemoteThread 関数を利用して、リモートプロセスでシェルコードを実行します。このアプリケーションは、インジェクション対象のターゲットプロセスが既に実行中であることを必要とします。テスト時にターゲットのプロセス ID (PID) を実行時に指定するには、-pid コマンドラインフラグを使用できます。運用時に使用する場合は、以下のコード行で 0 をターゲット PID に置き換えて PID をハードコードします:

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

このアプリケーションは、golang.org/x/sys/windows パッケージの関数を使用しません。最も顕著な違いは、必要な DLL とプロシージャをすべて自身でロードし、プロシージャの Call() 関数を使用することです。Windows ホスト上でプロジェクトのルートディレクトリから以下のコマンドでコンパイルできます:

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

CreateThread

このアプリケーションは、Kernel32.dll の Windows CreateThread 関数を利用して、このアプリケーションのプロセス内でシェルコードを実行します。これは、リモートプロセスインジェクションを避けたい場合に便利です。このアプリケーションは、可能な限り golang.org/x/sys/windows パッケージの関数(例: windows.VirtualAlloc())を利用します。Windows ホスト上でプロジェクトのルートディレクトリから以下のコマンドでコンパイルできます:

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

CreateThreadNative

このアプリケーションは、Kernel32.dll の Windows CreateThread 関数を利用して、このアプリケーションのプロセス内でシェルコードを実行します。これは、リモートプロセスインジェクションを避けたい場合に便利です。このアプリケーションは、golang.org/x/sys/windows パッケージの関数を使用しません。最も顕著な違いは、必要な DLL とプロシージャをすべて自身でロードし、プロシージャの Call() 関数を使用することです。Windows ホスト上でプロジェクトのルートディレクトリから以下のコマンドでコンパイルできます:

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

EarlyBird

このアプリケーションは、Windows CreateProcess 関数を使用して、中断状態のプロセスを作成します。子プロセスが中断されると、Windows QueueUserAPC 関数を使用して、割り当てられたシェルコードを指す UserAPC を子プロセスに追加します。次に ResumeThread が呼び出され、間接的に未文書化の NtTestAlert 関数が呼び出されて、作成された UserAPC が実行され、その結果シェルコードが実行されます。これは、AV/EDR が関数をフックして検出をサポートする前にシェルコードが実行されるため便利です。参考: New 'Early Bird' Code Injection Technique Discovered。Windows ホスト上でプロジェクトのルートディレクトリから以下のコマンドでコンパイルできます:

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

EtwpCreateEtwThread

このアプリケーションは、ntdll.dll の Windows EtwpCreateEtwThread 関数を利用して、このアプリケーションのプロセス内でシェルコードを実行します。元の研究は TheWover によるものです。リモートプロセスインジェクションを避けたい場合に便利です。このアプリケーションは、golang.org/x/sys/windows パッケージの関数を使用しません。最も顕著な違いは、必要な DLL とプロシージャをすべて自身でロードし、プロシージャの Call() 関数を使用することです。Windows ホスト上でプロジェクトのルートディレクトリから以下のコマンドでコンパイルできます:

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

NtQueueApcThreadEx (ローカル)

このアプリケーションは、未文書化の NtQueueApcThreadEx を使用して、現在のプロセスの現在のスレッドに「Special User APC」を作成し、シェルコードを実行します。シェルコードは現在のプロセスにロードされて実行されるため、「ローカル」です。同じ手法はリモートプロセスにも使用できます。注: これは Windows 7 以降でのみ動作します。参考: APC Series: User APC API。

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

RtlCreateUserThread

このアプリケーションは、ntdll.dll の Windows RtlCreateUserThread 関数を利用して、リモートプロセスでシェルコードを実行します。このアプリケーションは、インジェクション対象のターゲットプロセスが既に実行中であることを必要とします。テスト時にターゲットのプロセス ID (PID) を実行時に指定するには、-pid コマンドラインフラグを使用できます。運用時に使用する場合は、以下のコード行で 0 をターゲット PID に置き換えて PID をハードコードします:

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

このアプリケーションは、golang.org/x/sys/windows パッケージの関数を使用しません。最も顕著な違いは、必要な DLL とプロシージャをすべて自身でロードし、プロシージャの Call() 関数を使用することです。Windows ホスト上でプロジェクトのルートディレクトリから以下のコマンドでコンパイルできます:

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

Syscall

このアプリケーションは、現在実行中のプロセス内でシェルコードを実行するために、シェルコードのエントリポイントに対してシステムコールを実行します。このアプリケーションは、golang.org/x/sys/windows パッケージの関数を使用しません。Windows ホスト上でプロジェクトのルートディレクトリから以下のコマンドでコンパイルできます:

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

UuidFromStringA

このアプリケーションは、Windows UuidFromStringA 関数を利用してシェルコードをメモリアドレスにロードし、次に EnumSystemLocalesA 関数を呼び出してシェルコードを実行します。このシェルコードのロードおよび実行方法は、nccgroup の RIFT: Analysing a Lazarus Shellcode Execution Method から派生しました。このアプリケーションでは、メモリはヒープ上に割り当てられ、VirtualAlloc は使用しません。Windows ホスト上でプロジェクトのルートディレクトリから以下のコマンドでコンパイルできます:

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

ShellcodeUtils

このアプリケーションは、シェルコードのバイナリファイルを変換するために使用されます。このプログラムは、入力ファイルがシェルコードの 16 進数バイトを含むバイナリファイル(.bin)であることを前提としています。ShellcodeUtils は、入力ファイルを Base64 エンコードするだけか、XOR、RC4、または AES256-GCM で暗号化することができます。また、ファイルの復号にも使用できます。

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

入力ファイルを Base64 エンコードのみ行い、テキストファイルに保存する例:

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

XOR 暗号化(キー: Sh3!1z)と Base64 エンコードを組み合わせた例:

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

AES256-GCM 暗号化(パスワード: Sh3!1z)を Base64 エンコードなしで行う例:

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 には 32 バイトの鍵が必要です。このプログラムは、Argon2 ID アルゴリズムを使用して、-key 入力パラメータで指定されたパスワードから 32 バイトの鍵を導出し、ランダムに生成されたソルトを使用します。ファイルを正常に復号するには、同じ入力パスワード、Argon2 アルゴリズムで使用されたソルト、および AES256 アルゴリズムで使用された nonce が必要です。あるいは、復号関数を更新して、入力パスワードとソルトの代わりに 32 バイトの Argon2 鍵を直接使用することも可能です。

注: 生成された Argon2 鍵を使用するか、パスワードとその生成に使用されたソルトを使用するかは、オペレーターの判断に委ねられます。

AES256 復号の例:

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

Windows ホスト上でプロジェクトのルートディレクトリから以下のコマンドでコンパイルできます:

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

ツールをダウンロード