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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
FalconEye — プロセスインジェクション技術(シェルコード、DLL、リフレクティブインジェクションを含む)をリアルタイムで検出するためのカーネルモードWindowsドライバ。syscallフックと異常検知機能を備えています。 | Kitploit
ツール/GitHubGitHub/rajiv2790/falconeye
防御ツールマルウェア分析バイナリ解析侵入検知
GitHubrajiv2790/falconeye

FalconEye

プロセスインジェクション技術(シェルコード、DLL、リフレクティブインジェクションを含む)をリアルタイムで検出するためのカーネルモードWindowsドライバ。syscallフックと異常検知機能を備えています。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

FalconEye: Windowsプロセスインジェクション向けリアルタイム検出ソフトウェア

FalconEyeは、Windowsエンドポイント向けのリアルタイムプロセスインジェクション検出ソフトウェアです。これはカーネルモードドライバであり、プロセスインジェクションをリアルタイムで捕捉することを目的としています。FalconEyeはカーネルモードで動作するため、ユーザーモードのフックを回避しようとするプロセスインジェクション技術に対して、より強力で信頼性の高い防御を提供します。

プレゼンテーションは2021 Blackhat ASIA Arsenalとスライドでご確認いただけます。

プロジェクト概要

検出カバレッジ

以下の表は、さまざまなプロセスインジェクション技術に対する実装状況と検出ロジックを示しています。WPMはWriteProcessMemoryの略です。検出をテストするには、参考文献セクションを参照してください。

手法ステータス検出方法使用したPOC
Atombombing✓QueueUserAPCをフックし、GlobalGetAtom系関数を監視するPinjectra
Instrumentation callback injection✓浮動コードから新しいスレッドが作成された場合に検出https://github.com/antonioCoco/Mapping-Injection
Reflective DLL Injection✓浮動コードから新しいスレッドが作成されたか、PEヘッダが被害プロセスに書き込まれているかを検出MInjector
PROPagate✓SetPropをフックして書き込まれているプロパティのアドレスを取得し、以前のWPM呼び出しと関連付けて浮動コードのアドレスを検出Pinjectra
Process Hollowing✓ターゲットプロセスメモリに書き込まれたPEヘッダを使用して検出MInjector
CreateRemoteThread with LoadLibrary✓開始アドレスがLoadLibraryを指す新しいスレッド。MInjector版ではWPMを使用してDLLパスも書き込まれ、これも検出MInjector, Pinjectra
CreateRemoteThread with MapViewOfFile✓浮動コードから新しいスレッドが作成された場合に検出Pinjectra
Suspend-Inject-Resume✓浮動コードから新しいスレッドが作成されたか(MInjector)、WPM経由でDLLパスが書き込まれているか(MInjector)、以前に中断されたスレッドにコンテキストが設定された場合に検出(Pinjectra)MInjector, Pinjectra
QueueUserAPC✓WPM経由でDLLパスが書き込まれているMInjector
QueueUserAPC with memset (Stackbombing)✓QueueUserAPCをフックし、memsetを監視Pinjectra
SetWindowLong (Extra window memory injection)✓SetWindowLongをフックして書き込まれる関数ポインタのアドレスを取得し、以前のWPM呼び出しと関連付けて浮動コードのアドレスを検出Pinjectra
Unmap + Overwrite✓攻撃者プロセスが被害プロセスからntdllをアンマップした場合に警告Pinjectra
Kernel Ctrl Table✓WPMが被害プロセスのPEB内のKernelCallbackTableフィールドを上書きしているか検出https://github.com/odzhan/injection/blob/master/kct
USERDATA✓WPMターゲットアドレスがconhost.exeの範囲内か確認。該当する場合、conhostからの関連する関数ポインタが以前に保存されたWPMアドレスと一致するか確認https://github.com/odzhan/injection/blob/master/conhost
Ctrl-inject✓攻撃者が被害プロセスのKernelBase.dll範囲でWPMを実行した場合に検出Pinjectra
ALPC Callback✓

アーキテクチャ概要

alt text

  1. ドライバはオンデマンドロードドライバです
  2. 初期化には、libinfinityhookを介したコールバックとシステムコールフックの設定が含まれます
  3. コールバックは、OpenProcessなどのプロセス間アクティビティから構築されたPIDのマップを保持しますが、OpenProcessに限定されません
  4. 後続のコールバックとシステムコールフックはこのPIDマップを使用して、処理のノイズを低減します。ノイズ低減の一環として、システムコールフックは同一プロセス内のアクティビティをフィルタリングします。
  5. 検出ロジックは、ステートレス(例:Atombombing)、ステートフル(Unmap+Overwrite)、浮動コード(複数の手法のシェルコード)のサブカテゴリに分けられています。
  6. ステートフル検出の場合、システムコールフックは循環バッファとして実装されたActionHistoryを記録します。例えば、呼び出し元プロセスがターゲットプロセスと異なるすべてのNtWriteVirtualMemory呼び出しを記録します。
  7. 検出ロジックには、浮動コード検出やリモートプロセスでのシェルコードトリガー検出などの共通異常検出機能があります。コールバックとシステムコールフックの両方が、実際の検出のためにこの共通機能を呼び出します。

注:私たちの焦点は検出であり、パフォーマンスの高い検出エンジンの作成ではありません。BlackHat発表後もこれらの取り組みを継続します。

ファイル

root@kitploit:~
.
├── src 
│   ├── FalconEye ---------------------------# FalconEye user and kernel space
│   └── libinfinityhook ---------------------# Kernel hook implementation
├── 2021BHASIA_FalconEye.pdf
└── README.md

はじめに

前提条件

  1. Windows 10 Build 1903/1909
  2. Microsoft Visual Studio 2019以降
  3. VmWare、Hyper-Vなどの仮想化ソフトウェア(オプション)

インストール

ビルド

  1. Visual Studio 2019でソリューションを開く
  2. ビルドプラットフォームとしてx64を選択
  3. ソリューションをビルドします。これにより、src\kernel\FalconEye\x64\Debug または src\kernel\FalconEye\x64\Release の下に FalconEye.sys バイナリが生成されます。

テストマシンのセットアップ

  1. VMにWindows 10 Build 1903/1909をインストール
  2. 未署名ドライバをテストするためにVMを構成
  • bcdeditを使用して、整合性チェックを無効にする:BCDEDIT /set nointegritychecks ON
  1. VM内でsysinternalsからDbgViewを実行するか、WinDbgを使用してデバッグ接続を開始します。

使用方法

  1. FalconEye.sysをテストマシン(Windows 10 VM)にコピー
  2. OSR Loaderまたは類似ツールを使用して、FalconEye.sysを「オンデマンド」ロードドライバとしてロード
  3. pinjectra、minjector、その他のサンプルなどのインジェクションテストツールを実行
  4. WinDbgまたはDbgViewを介してデバッグログを監視

参考文献

InfinityHook, 2019

Itzik Kotler and Amit Klein. Process Injection Techniques - Gotta Catch Them All, Blackhat USA Briengs, 2019

Pinjectra, 2019

Mapping-Injection, 2020

Atombombing: Brand new code injection for windows, 2016

Propagate - a new code injection trick, 2017

Windows process injection: Extra window bytes, 2018

Pavel Asinovsky. Diving into zberp's unconventional process injection technique, 2016

Rotem Kerner. Ctrl-inject, 2018

Windows process injection: Consolewindowclass, 2018

Windows process injection: Windows notication facility, 2018

A paradox: Writing to another process without openning it nor actually writing to it, 2007

Windows process injection: Service control handler, 2018

Marcos Oviedo. Memhunter - Automated hunting of memory resident malware at scale. Defcon Demo Labs, 2019

ライセンス条項

FalconEyeはApache 2.0オープンソースライセンスの下で提供されています。

ツールをダウンロード
ALPCポートへのNtConnectPort呼び出しから被害プロセスPIDを抽出。攻撃者-被害PIDの組に対して以前のWPM呼び出しを確認し、浮動コード検出を適用
Pinjectra
WNF Callback✓WPMの後にUpdateWNFStateData呼び出しが続くhttps://github.com/odzhan/injection/tree/master/wnf
SetWindowsHook✓NtUserSetWindowsHookExフックに登録されたモジュールパスを保存。後でこのパスに一致するモジュールが別のプロセスにロードされた場合にアラートを生成MInjector
GhostWriting✓以前に中断されたスレッドにコンテキストが設定された(NtSetContextThreadが呼び出された)場合に検出Pinjectra
Service Control✓WPMがプロセス(サービス)のService IDEを上書きhttps://github.com/odzhan/injection/tree/master/svcctrl
Shellcode injection✓浮動コードから開始された新しいスレッド。WPMによって書き込まれるDLLパスMInjector
Image Mapping✓浮動コードから開始されたスレッド。WPMによって書き込まれるPEヘッダ。WPMによって書き込まれるDLLパスMInjector
Thread Reuse✓浮動コードから開始されたスレッド。WPMによって書き込まれるDLLパスMInjector