WinSock モジュール (送受信関数) でいくつかのインライン フックを実行するプロセスがあります。マカフィーがインストールされているマシンでは、2 つの dll がプロセスに挿入されていることがわかります。
- hipi.dll
- hipqa.dll
どちらもおそらくこれらの関数でインラインフックを行っており、衝突や望ましくない動作が発生します。これらの dll が干渉しないように、これらの dll を防止/アンロードするオプションはありますか?
10x、ガイ
WinSock モジュール (送受信関数) でいくつかのインライン フックを実行するプロセスがあります。マカフィーがインストールされているマシンでは、2 つの dll がプロセスに挿入されていることがわかります。
どちらもおそらくこれらの関数でインラインフックを行っており、衝突や望ましくない動作が発生します。これらの dll が干渉しないように、これらの dll を防止/アンロードするオプションはありますか?
10x、ガイ
DLL インジェクション (フック) を実現するには多くのシナリオがありますが、すべてのメソッドの背後でどのように機能するかについてもっと学ぶ必要があります。 CreateRemoteThread() への呼び出しまたは「危険な」API 呼び出しをフック/リダイレクト/拒否します。
PS: ただし、次の点に注意してください。
ユーザーモードフックは、安全な方法で追加のセキュリティチェックを適用するためのオプションになることは決してありません. 専用のプロセスを「サンドボックス化」したいだけで、そのプロセスが EasyHook についてよく知っていて、実際にはそのプロセスが EasyHook について知らない場合、これは成功する可能性があります。ただし、ユーザー モードのフックに基づいてセキュリティ ソフトウェアを作成しようとしないでください。うまくいきません、約束します…</p>
最も簡単な解決策は、影響を受ける関数のフックを解除することです。いくつかのDellのクラップウェアを回避するには、同じことをしなければなりませんでした。x86アセンブリについてある程度理解する必要がありますが、それほど難しくはありません。DEPを無効にし、パッチを適用したコードを書き込み可能にし、元の命令を見つけて、それらをコピーして戻す必要があります。元の手順を見つけることは、おそらくパッチを逆アセンブルすることを意味します。
別の方法は、単に別の場所に引っ掛けることです。たとえば、代わりにIATをフックし、必要な処理が完了したら、実行を実際の関数に転送して、McAfeeのフックを通過させます。
2 つのオプションがあります。
McAfee がカーネル モードから DLL インジェクションを実行していると思います。彼らは KeServiceDescriptorTable のアドレス (32 ビット システムでは NTOSKRNL によってエクスポートされ、そのアドレスは KiSystemServiceRepeat によって 64 ビット環境でリークされます -> IA32_LSTAR Model Specific Register によって検出された KiSystemCall64 に近い) のアドレスを見つけてから、NtCreateThreadEx を見つけます。または、APC インジェクション (カスタム NtQueueApcThread ラッパー) に KeInitializeApc と KeInsertQueueApc (両方とも NTOSKRNL によってエクスポート) を使用しています。彼らが多くのリソースを持つセキュリティベンダーであることを考えると、それは論理的です.
新しいプロセスの作成を検出するために、PsSetCreateProcessNotifyRoutineEx または PsSetLoadImageNotifyRoutineEx を悪用している可能性があります。最初のものは後者ほど良くありません。後者は NTDLL.DLL のフィルタリングに適しています。これは、すべての単一プロセスに最初に読み込まれるモジュールであり、プロセスが実際に適切に開始され、実行の準備が整ったことを示すためです。独自のコード (Windows モジュールのロード後、および McAfee は kernel32.dll などの Win32 モジュールがロードされるまで待機する必要があるため、ロードされない場合、挿入されたモジュールで Win32 API を使用するとプロセスがクラッシュします)。
LdrInitializeThunk または KiUserApcDispatcher をインターセプトしてみることができますが、正直なところ、できることはあまりありません。マカフィーは、カーネル モードから制御できるため、ユーザーが何をしてもプロセスに挿入する方法を見つけます。ドライバーからのさまざまなカーネル モード コールバックを使用してプロセス保護を開発すると、ntoskrnl.exe のパターン マッチ スキャンによって検出されたエクスポートされていないルーチン、またはコールバック通知 API を呼び出さないエクスポートされたルーチンを使用してプロセス保護がバイパスされます。リモートの攻撃者によって実行されたときに、スレッド作成/APC のために呼び出されたルーチンを自分のプロセスでローカルにパッチすると、攻撃者はこれを防止してバイパスする方法を見つけます (たとえば、プロセスのアドレス空間にあるパッチを適用したルーチンを元の、挿入し、バイトを再パッチして戻します)。
マカフィーが持っている権限でセキュリティ ソフトウェアを停止したい場合は、火遊びをしていることになります。これは、Anti-Cheat がカーネル モード アクセスを持つゲーム ハッカーを阻止できないことに似ており、現在有効になっているデバッグ モード/テスト モードにフラグを立てることさえも抜本的な対策を講じています。