マイクロソフトは、Windows 10上のLinuxサブシステムのアクティビティに対するウイルス対策制御を提供します

企業ブログの以前の投稿で、Windows 10(WSL)でのLinuxサブシステムサポートのトピックについて何度か触れ 、その技術的な実装の機能について説明しました 。 このサブシステムのベータ版は、今年8月のWindows 10 Redstone 1(Anniversary Update)アップデートの一部として、オフモードのユーザーに配信されました。







最近、Microsoftは、ELF実行可能ファイルが起動されるコンテキストで、AVドライバーがLinuxサブシステムのプロセスで正しく動作するのを支援するWindowsカーネルの変更を発表し始めました。



カーネルモードでさまざまな操作を制御するコールバック関数メカニズムが登場する前に、ファイアウォールおよびウイルス対策ドライバーの作成者は、カーネルによってエクスポートされたKeServiceDescriptorTable変数を使用して検出できるKiServiceTableシステムコールテーブルでAPI呼び出しのインターセプトを使用したことが知られています。 コールバック関数を登録するための、既に文書化された新しいAPIコールの出現により、開発者は使用に切り替えました。 さらに、64ビットバージョンのWindowsでは、最初からKiServiceTableサービスをインターセプトすることはできませんでした。





図 WSLファイルシステムアーキテクチャ。 LXCore.sysは、Windowsカーネルの機能を使用してさまざまなLinuxオブジェクトをエミュレートしていることがわかります。



ウイルス対策またはHIPSによって制御される主な操作の1つは、プロセスとスレッドの作成です。 ドライバーは、 PsSetCreateProcessNotifyRoutineExとPsSetCreateThreadNotifyRoutineを使用してコールバック関数を登録できます。 その後、プロセスまたはプロセス内のスレッドを作成すると、ドライバーはこの操作に関する通知を受け取ります。 Microsoftは、 PsSetCreateProcessNotifyRoutineEx2およびPsSetCreateThreadNotifyRoutineEx APIを追加することにより、これらの機能をアップグレードしました。 これらのカーネルAPIは、ドライバーがLinuxサブシステムプロセス内のアクティビティを追跡するのに役立ちます。



Type = PsCreateProcessNotifySubsystems; //   Status = PsSetCreateProcessNotifyRoutineEx2(Type, Callback,TRUE); // API void Callback (_In_ HANDLE ParentId, _In_ HANDLE ProcessId, _Inout_opt_ PPS_CREATE_NOTIFY_INFO CreateInfo) { if (CreateInfo->Flags.IsSubsystemProcess == 0) { /*    callback */ } else { Type = ProcessSubsystemInformation; Status = NtQueryInformationProcess(ProcessHandle, Type, &Subsystem, sizeof(Subsystem), NULL); if (Subsystem == SubsystemInformationTypeWSL) { /*       WSL */ } } }
      
      





 Type = PsCreateThreadNotifySubsystems; //   Status = PsSetCreateThreadNotifyRoutineEx(Type, Callback); // API void Callback (_In_ HANDLE ProcssId, _In_ HANDLE ThreadId, _In_ BOOLEAN Create) { Type = ThreadSubsystemInformation; Status = NtQueryInformationThread(ThreadHandle, Type, &Subsystem, sizeof(Subsystem), NULL); if (Subsystem == SubsystemInformationTypeWin32) { /*    callback */ } else if (Subsystem == SubsystemInformationTypeWSL) { /*       WSL */ } }
      
      





» マイクロソフトは、Windows 10上のLinuxサブシステムでのVFSの実装に関する情報を公開しています

» マイクロソフトは、Windows 10でのLinuxサブシステムの実装の技術的側面を明らかにしました

" MicrosoftはWindows 10でのLinuxサブシステムの統合に関する噂を確認しました

» Windows 10でLinuxサブシステムを有効にする



All Articles