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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/trickster0/offensiverust
特権昇格エクスプロイトIDS/IPS回避リバースエンジニアリングシェルコードポストエクスプロイトマルウェア分析コマンド&コントロール学習と教育レッドチーミングペイロード開発バイナリエクスプロイト
3.0k343193年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

OffensiveRust

レッドチームエンゲージメントのためのRust武器化

リポジトリを見る

OffensiveRust

OffensiveRust

Rust をインプラント開発や一般的な攻撃操作に活用するための実験用リポジトリです。

目次

  • OffensiveRust
    • なぜRustなのか?
    • このリポジトリのサンプル
    • サンプルのコンパイル方法
    • このリポジトリのサンプルのコンパイル方法
    • クロスコンパイル
    • 実行ファイルのサイズ最適化
    • 私が陥りがちな落とし穴
    • 便利なRustライブラリ
    • Opsec(運用セキュリティ)
    • 私がRustで作成した他のプロジェクト
    • 参考になるRust製プロジェクト

なぜRustなのか?

  • C/C++ よりも高速である
  • 多目的言語であり、優れたコミュニティが存在する
  • Cargo と呼ばれる素晴らしい組み込み依存関係ビルド管理機能を備えている
  • LLVM ベースであるため、静的 AV 検出をバイパスするのに非常に適している
  • *nix/MacOS から Windows へのクロスコンパイルが非常に簡単で、mingw ツールチェーンをインストールするだけで済む(ただし、一部のライブラリは他の OS では正常にコンパイルできない場合がある)

このリポジトリのサンプル

このリポジトリのサンプルのコンパイル方法

このリポジトリではバイナリを提供していません。自分でコンパイルする必要があります。

Rust をインストールする
バイナリをダウンロードしてインストールするだけです。

このリポジトリは Windows 10 でコンパイルされましたので、そちらを使用することをお勧めします。前述の通り、OpenSSL バイナリは OpenSSL と Perl のインストールを必要とする依存関係の問題が発生します。
TCP SSL クライアント/サーバーについては、実行先のホストに依存するため、静的ビルドを推奨します。 プロジェクトを作成するには、以下を実行します。
cargo new <名前> これにより、以下の構造化されたプロジェクトフォルダが自動的に作成されます。```bash
project ├── Cargo.toml └── src └── main.rs

root@kitploit:~
Cargo.toml は、依存関係とコンパイルの構成を含むファイルです。main.rs は、ライブラリを含む可能性のあるディレクトリとともにコンパイルされるメインファイルです。

プロジェクトをコンパイルするには、プロジェクトディレクトリに移動して次を実行します:  
`cargo build`

これにより、デフォルトのツールチェーンが使用されます。
最終的な「リリース」バージョンをビルドする場合は、次を実行します:  
`cargo build --release`

静的バイナリの場合は、ビルドコマンドの前にターミナルで次を実行します:  
`"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"`  
`set RUSTFLAGS=-C target-feature=+crt-static`

コードの書き方が読みにくいと感じた場合は、プロジェクトディレクトリ内で以下のコマンドを使用して、より良い形式にフォーマットすることもできます  
`cargo fmt`

一部の例は、Rustの最新機能を備えたナイトリービルドが必要なため、コンパイルできずエラーが発生する可能性があります。インストールするには次のようにします:  
`rustup default nightly`  



依存関係(または [Crates](https://crates.io/) と呼ばれるもの)を見つける最も簡単な場所。

## Cross Compiling

クロスコンパイルには、[ここ](https://rust-lang.github.io/rustup/cross-compilation.html)の指示に従う必要があります。
異なるツールチェーンをインストールすることで、以下のコマンドでクロスコンパイルできます:  
`cargo build --target <toolchain>`  

システムにインストールされているツールチェーンを表示するには:  
`rustup toolchain list`  

システムにインストール可能なすべてのツールチェーンを確認するには:  
`rustup target list`  

新しいツールチェーンをインストールするには:  
`rustup target add <toolchain_name>`  


## Optimizing executables for size

この[リポジトリ](https://github.com/johnthagen/min-sized-rust)には、ファイルサイズを削減するための多くの構成オプションとアイデアが含まれています。
静的バイナリは通常かなり大きくなります。

## Pitfalls I found myself falling into

\0 バイトに注意してください。メモリ内の文字列ではそれらを忘れないでください。多くの時間を費やしましたが、windbg が常に解決に役立ちました。


## Interesting Rust libraries

- WINAPI  
- [WINAPI2](https://github.com/MauriceKayser/rs-winapi2)  
- Windows - これは Microsoft 公式のもので、あまり触っていません

## OPSEC

- Rust には良い利点がありますが、それに慣れるのはかなり難しく、直感的ではありません。  
- シェルコード生成は LLVM による別の問題です。これに取り組むいくつかの方法を見つけました。  
[Donut](https://github.com/TheWover/donut) は時々動作するシェルコードを生成しますが、プロジェクトの作り方によっては動作しない場合があります。  
一般に、シェルコード生成のために作成されるツールは、すべてのコードを .text セグメントに配置するように作られるべきであり、それがこの素晴らしい[リポジトリ](https://github.com/b1tg/rust-windows-shellcode)につながります。
このプロジェクトには、シェルコード生成を成功させるためにコードを構造化する方法を示すシェルコードのサンプルがあります。  
さらに、このプロジェクトには、バイナリの .text セグメントを取得し、いくつかのパッチを実行した後にシェルコードをダンプするシェルコードジェネレータもあります。  
このプロジェクトは特定の場所からバイナリを取得するため、バイナリのパスを引数として受け取るフォークを作成しました[こちら](https://github.com/trickster0/rust-windows-shellcode-custom)。  
- すべてのデバッグシンボルを削除しても、Rust はバイナリ内にホームディレクトリへの参照を保持することがあります。これを削除する唯一の方法として、次のフラグを渡すことです: `--remap-path-prefix {your home directory}={some random identifier}`。Bash変数を使用してホームディレクトリを取得し、ランダムなプレースホルダを生成できます: `--remap-path-prefix "$HOME"="$RANDOM"`。([Yamakadi](https://github.com/yamakadi) より)
- 上記の方法に加えて、Cargo.toml の先頭に `cargo-features = ["strip"]` を追加することで、ホームディレクトリに関する情報を削除する別の方法があります。  
Rust はデフォルトで多くのものをバイナリ内に文字列として残すため、私は主にこの [cargo.toml](../master/cargo.toml) を使用してそれらを回避し、ビルドコマンド   
`cargo build --release -Z build-std=std,panic_abort -Z build-std-features=panic_immediate_abort --target x86_64-pc-windows-msvc`
- [Yamakadi] 氏はまた、インポートされたライブラリによっては、ストリップがホームディレクトリを隠すことに関して一貫していない可能性があると指摘しています。そのため、パスを再マッピングする彼の解決策と上記の cargo 設定を組み合わせるのが最善でしょう。バイナリを実行する前に、適切にストリップされていない可能性のある文字列がないか確認するように注意してください。

## Other projects I have have made in Rust

- [UDPlant](https://github.com/trickster0/UDPlant) - 基本的にUDPリバースシェル  
- [EDR Detector](https://github.com/trickster0/EDR_Detector) - インストールされている.sysファイルに基づいて、システムのEDRを検出します  
- [Lenum](https://github.com/trickster0/Lenum) - シンプルなUnix列挙ツール

## Projects in Rust that can be hepfull 

- [houdini](https://github.com/yamakadi/houdini) - 実行ファイルの自己削除を支援します
ツールをダウンロード
ファイル説明
Allocate_With_Syscallsntapi ライブラリを使用して NTDLL 関数を直接呼び出す
Create_DLLDLL を作成してメッセージボックスを表示する。Rust は DLL に main 関数がないため、この機能を完全にはサポートしておらず、動作が不安定になる可能性がある
DeviceIoControlドライバハンドルを開いて DeviceIoControl を実行する
EnableDebugPrivileges現在のプロセスで SeDebugPrivilege を有効にする
Shellcode_Local_injectポインタをキャストして、ローカルプロセス内でシェルコードを直接実行する
Execute_With_CMDRust を介してコマンドを渡し、cmd を実行する
ImportedFunctionCalldbghelp から minidump をインポートして実行する
Kernel_Driver_Exploitシンプルなバッファオーバーフローを利用したカーネルドライバのエクスプロイト
Named_Pipe_Client名前付きパイプのクライアント
Named_Pipe_Server名前付きパイプのサーバー
PEB_WalkWindows API を動的に解決して呼び出す
Process_Injection_CreateThread実行中のプロセスに CreateThread でプロセスインジェクションを行う
Process_Injection_CreateRemoteThreadリモートプロセスに CreateRemoteThread でプロセスインジェクションを行う
Process_Injection_Self_EnumSystemGeoIDEnumSystemsGeoID API 呼び出しを使用してシェルコードを実行するセルフインジェクター
Unhookingフックの解除
asm_syscallアセンブリを使用して PEB アドレスを取得する
base64_system_enumBase64 エンコード/デコード文字列
http-https-requests証明書チェックを無視して HTTP/S リクエスト(GET/POST)
patch_etwETW をパッチする
ppid_spoof作成したプロセスの親プロセスを偽装する
tcp_ssl_client証明書チェックを無視する SSL 対応 TCP クライアント(コンパイルには OpenSSL と Perl のインストールが必要)
tcp_ssl_serverポートパラメータ付き TCP サーバー(コンパイルには OpenSSL と Perl のインストールが必要)
wmi_executeWMI クエリを実行してホスト上の AV/EDR を取得する
Windows.h+ Bindingsこのファイルには Windows.h の構造体と、Microsoft が公式に文書化していないカスタマイズされた LDR、PEB などが含まれています。ファイルの先頭に include!("../bindings.rs"); を追加してください。
UUID_Shellcode_ExecutionUUID 配列からシェルコードをヒープ領域に配置し、EnumSystemLocalesA コールバックを使用してシェルコードを実行する
AMSI Bypassローカルプロセスでの AMSI バイパス
Injection_AES_LoaderAES 復号化による NtTestAlert インジェクション
Litcrypt_String_EncryptionLitcrypt クレートを使用して、静的 AV を無効化するためにリテラル文字列を保存時およびメモリ内で暗号化する
Api Hookingdetour ライブラリを使用した API フッキング
memfd_creatememfd_create テクニックを使用してメモリからペイロードを実行する(Linux 用)
RC4_EncryptionRC4 復号化されたシェルコード
Steal Tokenプロセスからトークンを奪取する
Keyboard HookingSetWindowsHookEx を使用したキーボードフックによるキーロギング
memN0ps arsenal: shellcode_runner_classic-rsntapi を使用したクラシックなシェルコードランナー/インジェクター
memN0ps arsenal: dll_injector_classic-rswindows-sys を使用したクラシックな DLL インジェクション
memN0ps arsenal: module_stomping-rswindows-sys を使用したモジュールストンピング / モジュールオーバーローディング / DLL ホロウイング
memN0ps arsenal: obfuscate_shellcode-rsシンプルなシェルコード XOR および AES 難読化ツール
memN0ps arsenal: process_hollowing-rsntapi を使用したプロセスハローイング
memN0ps arsenal: rdi-rswindows-sys を使用したリフレクティブ DLL インジェクション
memN0ps: eagle-rsRusty Rootkit: Red Team 向け Rust による Windows カーネルドライバ。winapi と ntapi を使用
memN0ps: psyscalls-rswinapi を使用した Rusty パラレルシステムコールライブラリ
memN0ps: mmapper-rswinapi を使用した Rusty マニュアルマッパー
memN0ps: srdi-rswindows-sys を使用した Rusty シェルコードリフレクティブ DLL インジェクション
memN0ps: mordor-rs - freshycalls_syswhisperswindows-sys を使用した Rusty FreshyCalls / SysWhispers1 / SysWhispers2 / SysWhispers3 ライブラリ
memN0ps: mordor-rs - hells_halos_tartarus_gatewindows-sys を使用した Rusty Hell's Gate / Halo's Gate / Tartarus' Gate ライブラリ
memN0ps: pemadness-rswindows-sys を使用した Rusty Portable Executable パースライブラリ(PE パースライブラリ)
memN0ps: mimiRust@ThottySploit による Rust 製 Mimikatz。原作者が GitHub アカウントを削除したため、コミュニティ用にアップロードされています。
memN0ps and trickster0: ekko-rsRusty Ekko - windows-sys を使用した Rust によるスリープ難読化