
Kratosは、Windowsファイルシステムミニフィルタードライバーであり、検出、ブロック、および完全な免疫化を目的とした高性能な設計です。
防御セキュリティ研究プロジェクト — C++で開発されたWindowsミニフィルタドライバ。カーネルレベル(Ring 0)でランサムウェアをリアルタイムに検出・無力化します。
Kratos(Kratos.sys)は、フィルタマネージャ(fltmgr.sys)を介して高度 425342(アンチウイルス層)で動作するWindowsミニフィルタドライバです。静的なシグネチャベースのアンチウイルスソリューションとは異なり、Kratosは純粋に動作ベースのアプローチを採用しています:
| 目標 | 結果 |
|----------|---------|
| 影響を受けるファイル(初回実行) | < 5 |
| 影響を受けるファイル(再実行) | 0 |
| 誤検出率 | 0%(調整後) |
| 互換性 | NTFS / ReFS |
User-Mode
│
▼
Filter Manager (fltmgr.sys) ← Altitude 425342
│
▼
┌─────────────────────────────────────────────────────┐
│ KRATOS.SYS │
│ │
│ IRP_MJ_CREATE → Initializing contexts │
│ IRP_MJ_WRITE → Entropic analysis │
│ IRP_MJ_READ → R/W ratio counting │
│ IRP_MJ_SET_INFORMATION → Delete/Rename Detection │
│ │
│ RTL_AVL_TABLE → KS_PROCESS_CONTEXT per PID │
│ FLT_FILE_CONTEXT → Entropy + state per file │
└─────────────────────────────────────────────────────┘
│
▼
NTFS / ReFS
Kratosは、KS_IsValuableFile() を使用して、価値のあるファイル(.docx, .pdf, .jpg...)の削除とシステム/キャッシュファイルの削除を区別します:
事前計算されたLUT(KratosEntropyLUT512)を介した計算 — カーネルモードでは利用不可な log2() の使用を回避します。書き込み操作あたり512バイトのサンプル。
.tmp ファイルでエントロピーが7.5/8ビット以上主な革新: 悪意のある拡張子のブラックリストの代わりに、Kratosは正当な拡張子のホワイトリストを使用します。
元の拡張子が価値あり? YES
新しい拡張子が認識されない? NO
→ 疑わしい — 選択された拡張子に関係なく
このアプローチにより、LockBit 3.0(.xmjzh8q)、BlackCat/ALPHV(ランダム)、および将来の未知の拡張子を使用するあらゆるランサムウェアを検出できます。
ValuableDeleteCount > 10 → +10 pts
RenameToSuspicious > 2 → +40 pts
HighEntropyWrites > 3 → +40 pts
RansomNoteCreated → +60 pts
ShadowCopyDeleted → +75 pts
Score ≥ 60 → WARNING
Score ≥ 80 → CRITICAL + Kill + Blacklist
ランサムウェアが検出されると、Kratosは実行可能ファイルの最初の4096バイト(PEヘッダー + コードの先頭)に対して64ビットFNV-1aハッシュを計算し、レジストリに永続化します:
\Registry\Machine\SOFTWARE\Kratos\Blacklist
└── 1F81F13004B5B920 = "C:\Users\...\Hercule.exe"
プロセスが作成されるたびに、ProcessNotifyCallback は実行前にブラックリストをチェックします。プロセスは CreationStatus = STATUS_ACCESS_DENIED によってブロックされます。
リネーム耐性: FNV-1aハッシュはファイル名に関係なく同一です(Hercule-AES.exe, HERCUL~1.EXE, chrome.exe...)。
なりすまし対策: ホワイトリストに登録されたプロセスは、予期される名前 + パスによって検証されます:
chrome.exe + \Program Files\Google\Chrome\Application\ → 正当
chrome.exe + C:\Users\...\Desktop\ → 偽装
# Visual StudioでKratosMinifilter.slnを開く
# 構成: Debug または Release / x64
# ビルド → ソリューションのビルド
# 対象VMでテストモードを有効化
bcdedit /set testsigning on
# Kratos.sysとKratos.infをコピー
# デバイスマネージャーまたはsc.exeでインストール
sc create Kratos type= kernel start= boot binPath= "C:\Kratos\Kratos.sys"
sc start Kratos
KratosDetection.cpp 内の g_LegitExtensions[] を変更して、リネーム後も正当とみなす拡張子を調整します。
g_TrustedProcesses[] を変更して、正当なプロセスとその期待されるパスを追加します:
{ "myapp.exe", L"\\Program Files\\MyApp\\" },
KratosDetection.cpp 内の KS_EvaluateThreatScore() を変更して、環境に応じてWARNING/CRITICALのしきい値を調整します。
⚠️ 本ドライバは防御セキュリティ研究の枠組み内で開発されています。
- 使用は厳密に隔離されたテスト環境(ネットワークアクセスなしのVM)に限定されます
- 実稼働システムへの展開は、ユーザー自身の責任で行われます
- 作者は、不適切な使用に起因するいかなる損害に対しても責任を負いません
- 許可なくセキュリティシステムを回避するために本ドライバを改変することは違法です