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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
SindriKit — 運用上信頼性のある攻撃能力を構築するための基礎的なCライブラリ | Kitploit
ツール/GitHubGitHub/youssefnoob003/sindrikit
ペネトレーションテストフレームワークエクスプロイトフレームワークコード分析リバースエンジニアリングシェルコード学習と教育レッドチーミングペイロード開発バイナリエクスプロイト
GitHubyoussefnoob003/sindrikit

SindriKit

運用上信頼性のある攻撃能力を構築するための基礎的なCライブラリ

7154日前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
リポジトリを見る

SindriKit

攻撃的開発には、より優れたアーキテクチャが必要です。
攻撃機能を構築するためのCライブラリ。


コアコンセプト

ほとんどの攻撃用ユーティリティは、実行メカニクスをテクニックのロジック内部にハードコードしています。リフレクティブローダーは単にイメージをマッピングするだけでなく、VirtualAlloc やネイティブNTAPI呼び出しの特定のハードコードされたチェーンを使用してマッピングします。EDRがその特定のチェーンを監視し始めると、ツール全体を書き直さざるを得なくなります。

SindriKitは、インターフェース抽象化テーブルを介して関心の分離を強制することで、この問題を解決します:

  1. テクニックロジック:(例:ローダー、インジェクション、パッチャー)は、状態追跡とデータオーケストレーションを担当します。メモリがどのように割り当てられるか、スレッドがどのように作成されるかについては一切関知しません。
  2. 実行メカニクス:(例:Win32 API、ネイティブNTAPI、ダイレクトシスコール)は独立したAPIテーブルの内部にあり、ランタイム時にテクニックへ注入されます。

実行メカニクスをランタイム関数ポインタへ移行することで、ペイロード実行ロジックを変更することなく、コード1行で戦略全体をWin32呼び出しから生のダイレクトシスコールへ切り替えられます。


設計アーキテクチャ

  • 分離された実行プロファイル: 呼び出し元のテクニックを壊すことなく、関数ポインタテーブルを介して基盤となるメモリ、モジュール、スレッド操作の動作を切り替えられます。
  • カスケード型シスコールフォールバック: 優先度チェーンを持つプラグ可能なSSNリゾルバー(snd_syscall_resolve_ssn_scan、snd_syscall_resolve_ssn_sort)— ドメインコードに触れることなく戦略を交換または拡張できます。
  • コンパイル時難読化: 文字列およびAPIハッシュアルゴリズム(DJB2、FNV1A)は、CMakeを介してグローバルに切り替えられます。コンパイル時にグローバルシードが自動的にランダム化され、静的シグネチャが変化します。
  • ミューテーションエンジン: SND_MORPH による深いポリモーフィズムを実現します。Cコードへの揮発性オペーク述語の注入、アセンブリスタブへの機能的に等価な数学演算/NOPの注入、そしてコア構造体のメモリレイアウトのスクランブルにより、ビルドごとに一意のバイナリシグネチャを生成します。
  • リリースビルド: サイレントティアは、最終バイナリからすべての診断文字列、ファイル記述子、追跡フレームを取り除き、静的フットプリントを素のプリミティブのみに削減します。

SindriKitの統合

root@kitploit:~
cmake_minimum_required(VERSION 3.16)
project(MyTool C ASM_MASM)

set(SND_BUILD_PAYLOADS  OFF    CACHE BOOL   "")
set(SND_ENABLE_DEBUG    OFF    CACHE BOOL   "")
set(SND_HASH_ALGO      "DJB2"  CACHE STRING "")
set(SND_RANDOMIZE_SEED  ON     CACHE BOOL   "")
set(SND_MORPH           ON     CACHE BOOL   "")

add_subdirectory(libs/SindriKit)

add_executable(my_tool src/main.c)
target_link_libraries(my_tool PRIVATE sindri::engine)
root@kitploit:~
cmake -B build && cmake --build build --config Release

わずか2行で、ツールはSindriKitのすべての機能を継承できます:PEパース、シスコール解決、リフレクティブローディング...


エンジン

API抽象化レイヤー

root@kitploit:~
        ┌────────────────────────────────────────────────────────────────────────────┐
        │                          ANY OFFENSIVE INTENT                              │
        │    Loader · Injector · Spoofer · Patcher · Bypasser · Harvester · ...      │
        ├────────────────────────────────────────────────────────────────────────────┤
        │                     SINDRIKIT API ABSTRACTION LAYER                        │
        │      snd_memory_api_t  ->  alloc · free · protect                          │
        │      snd_module_api_t  ->  load_library · get_proc_address · ...           │
        │      snd_process_api_t ->  open · alloc_remote · write · protect · thread  │
        │      [ future tables ] ->  thread · object · ...                           │
        ├──────────────────┬──────────────────────┬──────────────────────────────────┤
        │   Win32 Profile  │    Native Profile    │    Bring Your Own Mechanic       │
        │  VirtualAlloc    │  NtAllocateVirtual   │  Driver · ROP · Exotic           │
        │  LoadLibraryA    │  PEB Walk + EAT      │  Operator-defined functions      │
        └──────────────────┴──────────────────────┴──────────────────────────────────┘

実際には、すべてのドメインが同じコントラクトに従うことを意味します:

root@kitploit:~
// Reflective loader
snd_ldr_pe_ctx_t ctx = {0};
ctx.raw_source = &payload;
ctx.mem_api    = &snd_mem_win;   // or snd_mem_nt / snd_mem_sys
ctx.mod_api    = &snd_mod_win;   // or snd_mod_nt
snd_ldr_pe_prepare_image(&ctx);
snd_ldr_pe_execute_image(&ctx);

// Classic injection
snd_inj_ctx_t inj = {0};
inj.target_pid = 1337;
inj.payload    = &shellcode;
inj.proc_api   = &snd_proc_sys;  // or snd_proc_win / snd_proc_nt
snd_inj_classic_shell(&inj);
snd_inj_cleanup(&inj);

カスケード型シスコールパイプライン

SindriKitはシスコール解決を注入可能なメカニクスとして扱い、戦略を優先順に積み重ねます。エンジンは、いずれかが成功するまでフォールスルーします:

root@kitploit:~
snd_syscall_set_ntdll(clean_ntdll);
snd_syscall_set_resolver(snd_syscall_resolve_ssn_scan);
snd_syscall_add_resolver(snd_syscall_resolve_ssn_sort);
snd_syscall_set_invoker(snd_syscall_direct_invoke_asm);
// or for indirect syscalls:
// snd_syscall_set_invoker(snd_syscall_indirect_invoke_asm);
// snd_syscall_set_gadget_finder(snd_syscall_find_gadget_scan);

インボーカーはSSN解決から分離されています — ドメインコードを変更することなく、ダイレクトシスコールとインダイレクトシスコールを切り替えられます。インダイレクト呼び出しは正当なNTDLLガジェットにジャンプし、シスコールのリターンアドレスを ntdll.dll 内に保持します。

コンパイル時アルゴリズムの柔軟性

すべてのAPI名とモジュール文字列は、コンパイル時に単一のCMake変数で最終バイナリから取り除かれます:

root@kitploit:~
set(SND_HASH_ALGO "FNV1A")  # or DJB2 recomputes everything automatically
set(SND_RANDOMIZE_SEED ON)  # generates a fresh 32-bit seed on next configure

各ハッシュはランダムに生成されたシードで計算されます(SND_RANDOMIZE_SEED=ON の場合)。Cコードに一切触れることなく、コンパイル間で静的フットプリントが完全に変化します。

アーキテクチャ対応の動的FFI

任意のランタイム関数呼び出しのためのカスタムMASMアセンブリブリッジ。x64ビルドはMicrosoft x64呼び出し規約に正確に従います(シャドウスペース、レジスタ引数の配置、スタックアライメント)。x86ビルドは cdecl と stdcall の両ターゲットをサポートし、引数を逆順でプッシュします。

境界チェック付きPEパーサー

is_mapped フラグを持つ統合PE32/PE32+パーサーで、ディスク上の生イメージとメモリマップドビューの両方を正しく処理します。すべてのデータディレクトリアクセスは、デリファレンスの前に追跡されたバッファ境界に対して検証されます。エクスポート解決は、ハッシュベースのルックアップによる深さ4までのフォワーダーチェーンをサポートします。

テスト対象:

  • x86およびx64におけるエッジケースのEXE、DLL、不正な引数、欠落したエクスポート、TLSコールバックを対象とした40以上のコアテスト組み合わせ。
  • pe_mutator モジュールによって生成された100以上の動的PEミューテーション:ゼロ化されたセクション名、整数オーバーフロー、無効な e_lfanew 境界、破損したインポート。
  • 完全なCorkamiコーパス:有効なサンプルをクリーンにロードし、99%のサンプルでクラッシュすることなく不正なサンプルをクリーンに拒否します。

状態追跡型ドメインコンテキスト

すべての攻撃操作は、ステージ列挙を備えた個別のコンテキスト構造体を通じて管理されます。操作はスリープ難読化やステージ型展開のためにステージ間で一時停止でき、クリーンに再開でき、サブシステムと理由に至るまで正確な障害ポイントを検査できます。


API設計思想

シスコールパイプラインを一度だけブートストラップします(典型的なパターン):

root@kitploit:~
PVOID clean_ntdll = NULL;
snd_om_knowndll_map(&snd_map_nt, L"ntdll.dll", &clean_ntdll);
snd_syscall_set_ntdll(clean_ntdll);
snd_syscall_set_resolver(snd_syscall_resolve_ssn_scan);
snd_syscall_add_resolver(snd_syscall_resolve_ssn_sort);
snd_syscall_set_invoker(snd_syscall_direct_invoke_asm);
// or for indirect syscalls:
// snd_syscall_set_invoker(snd_syscall_indirect_invoke_asm);
// snd_syscall_set_gadget_finder(snd_syscall_find_gadget_scan);

インボーカーはSSN解決から分離されています — ドメインコードを変更することなく、ダイレクトシスコールとインダイレクトシスコールを切り替えられます。インダイレクト呼び出しは正当なNTDLLガジェットにジャンプし、シスコールのリターンアドレスを ntdll.dll 内に保持します。

1回の代入で実行プロファイルを切り替えます:

root@kitploit:~
ctx.mem_api = &snd_mem_win;   // diagnostic
ctx.mem_api = &snd_mem_nt;    // NT stubs via PEB + EAT
ctx.mem_api = &snd_mem_sys;   // direct syscalls (pipeline required)

モジュール解決も同じパターンに従います(snd_mod_win と snd_mod_nt)。シスコールバックエンドのモジュールは存在しません — 完全な _sys プロファイルでも、インポートはPEBウォーク + EATを使用します。


ビルドティア

デバッグティア — SND_ENABLE_DEBUG=ON

ローカル開発用。snd_status_t は file、line、および128バイトの context 文字列バッファを含むように展開されます。SND_ERR_CTX と SND_DEBUG_PRINT は、状態機械の遷移、パースされたPEフィールド値、シスコール解決結果を出力します。SND_USE_PRINTF=ON を使用すると、デバッグコンソールの代わりに stdout へ出力を転送できます。

サイレントティア — SND_ENABLE_DEBUG=OFF

運用バイナリの標準デプロイ設定です。すべての診断文字列、ファイル参照、行番号はコンパイル時に完全に除去されます。snd_status_t は2つの整数に縮小されます。それ以外は何も残りません。

root@kitploit:~
set(SND_ENABLE_DEBUG   OFF   CACHE BOOL   "")
set(SND_BUILD_PAYLOADS OFF   CACHE BOOL   "")
set(SND_RANDOMIZE_SEED ON    CACHE BOOL   "")
set(SND_USE_DEFAULTS   ON    CACHE BOOL   "")
set(SND_HASH_ALGO    "DJB2"  CACHE STRING "")
add_subdirectory(vendor/SindriKit)
target_link_libraries(my_tool PRIVATE sindri::engine)

ドキュメント

完全なリファレンスは docs/ にあります:

  • はじめに — CMake、ビルドティア、DIブートストラップ、最初のローダー/インジェクションワークフロー
  • アーキテクチャ — 依存性注入、状態機械、ステータスシステム
  • プリミティブ — メモリ、モジュール、プロセス、マッピング、シスコール、実行(FFI)
  • ローダー — リフレクティブPEパイプライン
  • インジェクション — クラシックなシェルコードおよびPEインジェクション
  • パーサー — PEおよびenv(PEB)サブドメイン
  • 共通 — CRTフリーヘルパー、バッファ、ハッシュ、ステータス
  • 例とPoC — loader_winapi、loader_nowinapi、inject_pe、inject_shell、heavens_gate
  • テスト — 統合ランナー、PEミューテーター

予定:回避 ドメイン。


免責事項

SindriKitは、教育、研究、および許可されたレッドチーミングの目的のみで構築されています。 完全な法的免責事項とOpSecに関する考慮事項については、セキュリティポリシー を参照してください。


ライセンス

MIT


ツールをダウンロード