{"componentChunkName":"component---src-templates-post-template-js","path":"/a-part-of-anti-virus-3-01","result":{"data":{"markdownRemark":{"id":"d9fe4551-9311-54ea-bcde-3594dd5c071b","html":"<p>本章では、WFP の概要と基本的なアーキテクチャについて解説します。</p>\n<p>WFP は、Windows におけるエンドポイントセキュリティ、\n特にネットワーク通信の監視や制御を語る上では避けて通ることのできない仕組みです。</p>\n<p>WFP は OS 標準の Microsoft Defender ファイアウォールだけでなく、\nAntivirus や EDR などのエンドポイントセキュリティ製品など、様々な用途で利用されています。</p>\n<p>この章では、2 章以降で WFP を利用したツールやドライバーを作成するための土台として、WFP がなぜセキュリティ製品に利用されるのか、\nまたその全体像や構成要素がどのように連携してパケットを処理しているのかをできるだけシンプルに解説します。</p>\n<h2 id=\"wfp-とは\" style=\"position:relative;\"><a href=\"#wfp-%E3%81%A8%E3%81%AF\" aria-label=\"wfp とは permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>WFP とは</h2>\n<h3 id=\"wfp-の概要\" style=\"position:relative;\"><a href=\"#wfp-%E3%81%AE%E6%A6%82%E8%A6%81\" aria-label=\"wfp の概要 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>WFP の概要</h3>\n<p>WFP は Windows Vista および Windows Server 2008 以降で\nネットワークフィルタリングアプリケーションを作成するためのプラットフォームを提供する一連の API とシステムサービスです。</p>\n<p>WFP は IPv4/IPv6 をサポートしており、データのフィルタリングや変更、再挿入 (re-injection) やパケットとストリームの両方の処理を可能としています。\nさらに、システムブート時に Base Filtering Engine (BFE) が起動するまでの間のセキュリティの提供や、IPsec で暗号化される前と暗号化後の両方のデータの処理などを実現できます。<sup id=\"fnref-1\"><a href=\"#fn-1\" class=\"footnote-ref\">1</a></sup></p>\n<p>WFP を使用することで、開発者やアプリケーションベンダーは Windows 用のファイアウォールや侵入検知システム (IDS/IPS)、\nまた Antivirus やネットワーク監視ツールなど、様々なソフトウェアを実装できます。</p>\n<p>例えば、Windows に既定で搭載されている Microsoft Defender ファイアウォールも、\nこの WFP を利用してステートフルファイアウォールや様々な条件に基づく通信のフィルタリングを実現しています。<sup id=\"fnref-2\"><a href=\"#fn-2\" class=\"footnote-ref\">2</a></sup></p>\n<p>実際に WFP Explorer などのツールを用いてシステム内に登録されている WFP フィルターを確認すると、\nファイアウォール以外にも Antivirus や VPN ソフトなど、様々なアプリケーションが WFP を利用していることを確認できます。</p>\n<p>このようなネットワークフィルタリングアプリケーションを作成するためのプラットフォームとして提供される WFP には、\nWindows のネットワークスタック内のすべてのレベルでネットワークトラフィックを監視、受信、処理するためのプラットフォームが含まれています。</p>\n<p>以下の図は WFP の様々なコンポーネントのアーキテクチャを示したものです。<sup id=\"fnref-3\"><a href=\"#fn-3\" class=\"footnote-ref\">3</a></sup></p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 698px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/3c134abd02766189b253ab0509a587e8/487bb/01-wfp-001.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 122.49999999999999%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAIAAAC+dZmEAAAACXBIWXMAAAsTAAALEwEAmpwYAAACmElEQVQ4y33U6U5bQQwF4Pv+z4SEhAoCxCJBxR7WsCUEyAokIemXOWlEq1L/mPjaPvaxx5NqMplMp9OXl5eDg4NarXZ1dUU5PT09OTnZ29vzeXl5GcvFxQW9VmQ4HEJV0yJSjEajj4+P8Xj8+fkZRcSoCIUln5T39/eUnIMjYA8PD9fX181mc5F0+r38Dd7f319aWnKen59jfnd39/T0JJeTThHzbzCqujo+Pj47O9va2lpZWanX680iwHrG639gbsibm5ujoyMDA3h8fLy9vWXPKeZbsLGr9vz8vGALfH9/32q1gH3+AUbD9MyQYjxgbkIo/imreSOUlAXYwBezrN7e3n4U6ff7HGDdbncwGIhDQTVIlRcsQoT0er0Z+GcR1k6noyv3OSmyuKrX11eJuGCMw+bIqEYllKnRaKCXHUpXumi32wCQi9tWqV1EGewqodw+GkUkZs0aaYSrX2RQRDWuMBJQRcvt+bYJmpFbhzBCYUwRVeOgiAkvLKoMeXFVmYqCrSLmFJ6m7QTOtOeVNWmk0iuYIjB0DJ3A3d+iNWe64BJZpeG8mOTDBx0WOm/eE8v4iwiWokLSW9VqmmFNP+bMZVUpvEK/PrI5bc24NBEURXBOb3lDOnIFAQugG4qzU6TqFcnVSUZHUmWXr0M3zwWMhUVaX1/f3Nzc2NjwWmf3nEnwyadD6TM2g2T0sGQBzs6vrq4uLy9vb28jK35WGZPsMJ5qagl5C6d/ML1IZD2x2N3d9c5ltEsmNZu2H1khNZZW0y1SCsoOyX54eIj22toa2nlqs8oZRm6FSS6W0NnZ2YHEMHvOqz67XubTVpZVhzhnZqLzJPyfKJ4/Ay5cJI0ye1U++IIcFskCsKipvTzGbEHuORtNfgG25HecvvWqZAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/3c134abd02766189b253ab0509a587e8/8ac56/01-wfp-001.webp 240w,\n/static/3c134abd02766189b253ab0509a587e8/d3be9/01-wfp-001.webp 480w,\n/static/3c134abd02766189b253ab0509a587e8/d1b7f/01-wfp-001.webp 698w\"\n              sizes=\"(max-width: 698px) 100vw, 698px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/3c134abd02766189b253ab0509a587e8/8ff5a/01-wfp-001.png 240w,\n/static/3c134abd02766189b253ab0509a587e8/e85cb/01-wfp-001.png 480w,\n/static/3c134abd02766189b253ab0509a587e8/487bb/01-wfp-001.png 698w\"\n            sizes=\"(max-width: 698px) 100vw, 698px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/3c134abd02766189b253ab0509a587e8/487bb/01-wfp-001.png\"\n            alt=\"WFP のアーキテクチャ\"\n            title=\"WFP のアーキテクチャ\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>このアーキテクチャ図に記載されている通り、WFP は大きく分けて以下のコンポーネントにより構成されています。\n各コンポーネントの詳細については後述します。</p>\n<ul>\n<li>フィルターエンジン (Filter Engine)</li>\n<li>Base Filtering Engine (BFE)</li>\n<li>Shim</li>\n<li>Callout ドライバー </li>\n</ul>\n<h3 id=\"windows-ネットワークスタックにおける-wfp\" style=\"position:relative;\"><a href=\"#windows-%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B-wfp\" aria-label=\"windows ネットワークスタックにおける wfp permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Windows ネットワークスタックにおける WFP</h3>\n<p>以下の図は、「インサイド Windows 第 6 版 上」から引用した Windows ネットワークコンポーネントの概要を表したものです。(本書執筆時点で最新の「インサイド Windows 第 7 版」では、ネットワークの章が削除されているため第 6 版を参照しています。)<sup id=\"fnref-4\"><a href=\"#fn-4\" class=\"footnote-ref\">4</a></sup></p>\n<p>この図からも、WFP は Windows のネットワークスタック内の様々なレベルで処理を行うことがわかります。</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 864px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/2e0ade6cf9b94253d37dc92e1f29d3ae/9cab2/01-wfp-002.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 122.49999999999999%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAYAAAAxFw7TAAAACXBIWXMAABYlAAAWJQFJUiTwAAAF2UlEQVQ4y0WV629bdxnHzTuk8YYXvIL/YBXS3m6T0ITQhBAS0rhIbPBihWoFBNVQJSAtrCCgHYINrVq7Sk3bNWlI2sZ1Ls795jg3+/h+vx37nGM7vqRJ7NjOxUk+PD7NkiM98s8//87Hz/e5/Syq61NUx1WSwVHiiUUMw8tOfYvI0Nv4e17FN/p7PA9fI2j9CY36BvVGhaqxQqMwT/sQeY7Z39+nVCqxtbWFJTv8bbK9X8M3+wGK7xGJmJXnGxuEnR/isl/C67jJyvCv8c78mY1qAS3vRBm5iDb+I9rHnD4b8s7Ozg6WcmyAcuAmxayTYjFEqRih2WigGx7UrINczksi7SQn33d2NonGp3GNXiZgfYfyhiFeqTSbDTY3N9ne3sZirLvIVcKkDRehxDze0CRu/6iYnUhqlpTmJKOOsbVZFmCTXGGJyNwfiVq/h16YEaljsr9FpVyRM5tY9JQD/+PzeAZ+ifL4PRy9F3H0vIf3ya/wP72I0v8LjPQcY9Mr3OudZmPdQ2L5FuraJ2zVVgWyQKu1cyrdsq67yc13YTivkZjqIjzWRWS8i9TMFfLOv5KZ7aJacLPqUlhYDlMc+y3rt79OauIa9ZZH4jojkutnwHRmmEJ1Fr00QyonMpM2grFBWY+KvAm04iTJ1ADFfJLtRpvs4M+ofPJlUiO/Y7vpFeA0u7s71LZrNCT2Fo8yzMpyH27XUzweK0vOPoKBMRLxOVLJedOi0TlazZrpgW57l8rNr6COXyZfdmJooxwctKhWpaTqdQF6bcTiQwKwEvL3EYs9k4yVaR8gBw/Z2zugLfVxfHx0CtQ/egl17DKF8hKGPipnGmeSBx91sTB1nYBkbqr7u1RKI9RqJTloiHcJdE0ToNBPgJoAw/946YWHpRcefgE8Pj7Gsjz5dwJLNwh7bqPM/oVk0kqtXjUP7B/si7U5koPHR4enwPiNM6AuwN29nTNgKjWFmhlFcffjUQbwunsIBQbxe58Qi0jC9An03Dx7u61TYPG/L4DGCbDd3j0Drg//kOePzhH97BWMe+cw+r+F2vMaqTvnCN1+Be3ey6j2C7T22yfA85RPklKsLJmSS6X8GXCl9+cEul/H/+A7JHvfoNLzMot3v0/s4Ruy9ybp7m9SGPoxzf0XkvXBt6l8/CXU0UsUqyvi4YiEKXoCPJIY2v/Nmu0PrA5dwTvyJ+L295m3foDL3LuK33aJ5MK/OHjBIzt1jdz9V0lM36DWcFOpSMjU5JmH+WIKVYuQ1cPk9ChpLSG96yOR8pNIymBIeQlFfRJnhXTGT2atj+ziLTKBSUnestTfDLqeFXBVBoX0sqFNkFMfywtWcrK2912l//qbPL3zG6am72If+Q9DtluM2T/GZvsU5ebrhP75VULDV2js+cxOSSaiHB4emXPRotz/AavXv4HL8RlpdRKf8oiA8jkBr3RMcFC6xIrbbSXgf0IwZCXifUhw7Q4R6aatrc7ImyAeC5uSDw8PsYSmPpLJ8j4RGVnF4jKalIghQ9QwFs11Zy8WX5A4zZHNzokKB9mcQ8IhCdHHyWSGKBR0Ke596eldkVzNk6tq5IpJVIlhRguSzoUkliGJa9Qcuvm8R8wnQzeMZvhNyxeiApokb4yb8/C09Xz2v6H0/RT3wAWm7l1g9sG7uPrPs9b7DqvPrlDZWJaXxIv1WdyTH7LY/RZL99/C7+xmvbwgSuzS+xX543W5BqpypwTHSS7dIrn6gIjzLtGlu6TXPie1coeE8lQyvkZWXZLrwC1xmyKw+j+xATQ1KB7OoGljbNeeU6/VZS42sWj5FKHYHEnVQywl8Uo6SWU9RJOLJDMuwuFJ/HIdxOMOKZsVwtEZKaVFmq26SH0usIp5OXUS0m63sSQSbunhThZHTPN6hsRsKIpN9sU8w+aezzdBQDxUlGeyHpEEnE3pVqslnmpSkyK5MxQ72elkqXOv6rpu/lgoFMx1Pp83151PwzBM61yZHUir1TRvvI7UL57/A4JKqzRmWKYnAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/2e0ade6cf9b94253d37dc92e1f29d3ae/8ac56/01-wfp-002.webp 240w,\n/static/2e0ade6cf9b94253d37dc92e1f29d3ae/d3be9/01-wfp-002.webp 480w,\n/static/2e0ade6cf9b94253d37dc92e1f29d3ae/b4e26/01-wfp-002.webp 864w\"\n              sizes=\"(max-width: 864px) 100vw, 864px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/2e0ade6cf9b94253d37dc92e1f29d3ae/8ff5a/01-wfp-002.png 240w,\n/static/2e0ade6cf9b94253d37dc92e1f29d3ae/e85cb/01-wfp-002.png 480w,\n/static/2e0ade6cf9b94253d37dc92e1f29d3ae/9cab2/01-wfp-002.png 864w\"\n            sizes=\"(max-width: 864px) 100vw, 864px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/2e0ade6cf9b94253d37dc92e1f29d3ae/9cab2/01-wfp-002.png\"\n            alt=\"OSI モデルと Windows ネットワークコンポーネント\"\n            title=\"OSI モデルと Windows ネットワークコンポーネント\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>WFP では、フィルターエンジンによりネットワーク上のフィルタリング操作を行います。\nフィルターエンジンは複数のフィルタリングレイヤー (Layer) を持ち、ネットワークスタック上の要所で Shim から渡される通信 (パケット/ストリーム/イベント) を、レイヤーに登録されたフィルター群と照合して最終的なアクションを決定します。</p>\n<h3 id=\"エンドポイントセキュリティにおける-wfp-の利用\" style=\"position:relative;\"><a href=\"#%E3%82%A8%E3%83%B3%E3%83%89%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B-wfp-%E3%81%AE%E5%88%A9%E7%94%A8\" aria-label=\"エンドポイントセキュリティにおける wfp の利用 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>エンドポイントセキュリティにおける WFP の利用</h3>\n<p>ネットワーク通信は、一般に不正な URL へのアクセスやマルウェアのダウンロード、\nまたはリモートログオン試行やネットワークにポートが解放されているサービスに対する侵害など、\n悪意のある攻撃者による端末の侵入の起点として利用されます。</p>\n<p>また、万が一端末が侵害されて組織内のネットワークに侵入された場合には、\n侵害された端末を足掛かりとして組織ネットワーク内の情報収集や、外部からの遠隔操作コマンドの受信、\nさらには「ラテラルムーブメント (横展開/水平移動)」と呼ばれる侵害範囲の拡大や、外部への機密情報の漏洩など、\n一連の攻撃の中の様々なタイミングでネットワーク通信が利用されます。</p>\n<p>そのため、ネットワーク通信のモニタリングはセキュリティの観点で極めて重要なポイントの 1 つとなっています。</p>\n<p>しかし、いわゆる NIDS (Network Intrusion Detection System) と呼ばれるような侵入検知システムを導入するためには、\n監視対象のネットワーク経路上に、通信のモニタリングが可能な機器を配置する必要があります。</p>\n<p>※ ここで記載している NIDS は、Windows の Network Driver Interface Specification (NDIS) <sup id=\"fnref-5\"><a href=\"#fn-5\" class=\"footnote-ref\">5</a></sup> とは異なります。</p>\n<p>この特性により、NIDS は組織ネットワークとインターネットの境界などの通信を効果的に監視できる一方で、\nネットワーク内のすべての端末間にネットワーク機器を配置することは運用やコストなどの面から実現が困難な場合が多く、\n組織ネットワーク内の各エンドポイント (端末) 間の通信の監視を行うことはできません。</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/273b0616b21019cd37b6a35489f018d0/0d98f/01-wfp-003.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 54.58333333333334%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABYlAAAWJQFJUiTwAAABBUlEQVQoz31TWw6DMAzj/rcECW0/G+VNgZLVkdxZSFukqM84dppW53nauq62LEtxrOnbtllKyWDXdbnrXB1WIYCB+75bjNHnNIBxfQdT414FgOM43J/Phx+SFYOwVjAFwT0qcIZghQD4NE3OErJRChqSKhiSqzKODsjLlEo2zI7geZ49kYKlnFBV4BzugNjr+2BN01jXha+k7O/Xy+q6zvudB4M9RiQJIeS43tUwUWEI9HEcCxMyxDmCeA9BnLN+VIF5Rap8CEq/y9GHYN20K/gwBTDGzdq2zfSTX9be07pqO0GqPl5pGwCCNupDlmral/960BkCaBgGd7QNR/4UbaFfv0T3PnwLYbgAiba1AAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/273b0616b21019cd37b6a35489f018d0/8ac56/01-wfp-003.webp 240w,\n/static/273b0616b21019cd37b6a35489f018d0/d3be9/01-wfp-003.webp 480w,\n/static/273b0616b21019cd37b6a35489f018d0/e46b2/01-wfp-003.webp 960w,\n/static/273b0616b21019cd37b6a35489f018d0/63399/01-wfp-003.webp 1276w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/273b0616b21019cd37b6a35489f018d0/8ff5a/01-wfp-003.png 240w,\n/static/273b0616b21019cd37b6a35489f018d0/e85cb/01-wfp-003.png 480w,\n/static/273b0616b21019cd37b6a35489f018d0/d9199/01-wfp-003.png 960w,\n/static/273b0616b21019cd37b6a35489f018d0/0d98f/01-wfp-003.png 1276w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/273b0616b21019cd37b6a35489f018d0/d9199/01-wfp-003.png\"\n            alt=\"NIDS によるネットワーク通信モニタリングのイメージ図\"\n            title=\"NIDS によるネットワーク通信モニタリングのイメージ図\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>また、仮に組織内の各ネットワークセグメントにネットワーク機器を配置するなどの集約型の構成とすることで\nエンドポイント間の通信をある程度効果的にモニタリングできるようにした場合でも、いくつかのセキュリティ上の課題が残ります。</p>\n<p>そのうちの 1 つは、現在行われる主要なネットワーク通信のほとんどが TLS によって暗号化されている点です。</p>\n<p>TLS により通信が暗号化されている場合、ネットワーク経路上に配置された機器はモニタリング対象のネットワーク通信データを参照することができないため、\n通信内容に基づく監視やブロックを行う場合には一般に TLS インスペクションなどと呼ばれる Man-in-the-Middle (MiTM) による通信の復号と再暗号化が必要となります。</p>\n<p>また 2 点目の課題として、通信経路上のネットワーク機器で収集した情報には\n端末内でその通信を開始したプロセス(アプリケーション)に関する情報が含まれていない点が挙げられます。</p>\n<p>そのため、ネットワーク機器ベースのモニタリングでは、通信を開始したプロセスに関する情報を記録することができず、\nアプリケーションのコンテキストによる分析や調査を行うことが困難です。</p>\n<p>他にも、ネットワーク機器ベースのモニタリングには、ネットワーク機器を経由しない方法で端末間の接続が行われた場合や、\nリモートワークなどにより、組織のネットワーク以外のネットワークに端末が接続している場合のモニタリングが不可能となるような課題も存在します。</p>\n<p>ネットワーク機器ベースの NIDS について上記のような課題が存在していることなどを背景とし、\nエンドポイントベースのネットワークモニタリングがエンドポイントセキュリティ対策の 1 つとして重要視されています。</p>\n<p>エンドポイントベースのネットワークモニタリングとは、通信経路上のネットワーク機器ではなく、\n端末内で稼働するサービスにより、端末が送受信するネットワーク通信の分析や監視を行うものです。</p>\n<p>ネットワーク機器ベースのものと比較して、エンドポイントベースのネットワークモニタリングには一般に以下のような利点があります。</p>\n<ul>\n<li>端末内で暗号化前、もしくは復号後のパケットデータを分析することができる</li>\n<li>アプリケーションのコンテキストを使用した通信のフィルタリングや監視を行うことができる</li>\n<li>端末が接続しているネットワークや通信経路に依存せず、端末の通信をモニタリングすることができる</li>\n</ul>\n<p>このようなエンドポイントベースのネットワークモニタリングの機能は Antivirus や EDR、その他のネットワーク監視製品などの様々なソフトウェアにて提供されています。</p>\n<p>そして、これらのソフトウェアが Windows でエンドポイントベースのネットワークモニタリングを\n実現するために使用する主要なプラットフォームが、本書で解説する WFP です。</p>\n<h2 id=\"wfp-のアーキテクチャ\" style=\"position:relative;\"><a href=\"#wfp-%E3%81%AE%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3\" aria-label=\"wfp のアーキテクチャ permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>WFP のアーキテクチャ</h2>\n<p>この項では、WFP によるネットワーク通信のフィルタリングや監視を行う仕組みについて解説します。</p>\n<p>以下の図は、Microsoft の公開ドキュメントに記載されている WFP の関連コンポーネントのアーキテクチャを示したものです。</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 698px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/3c134abd02766189b253ab0509a587e8/487bb/01-wfp-001.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 122.49999999999999%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAIAAAC+dZmEAAAACXBIWXMAAAsTAAALEwEAmpwYAAACmElEQVQ4y33U6U5bQQwF4Pv+z4SEhAoCxCJBxR7WsCUEyAokIemXOWlEq1L/mPjaPvaxx5NqMplMp9OXl5eDg4NarXZ1dUU5PT09OTnZ29vzeXl5GcvFxQW9VmQ4HEJV0yJSjEajj4+P8Xj8+fkZRcSoCIUln5T39/eUnIMjYA8PD9fX181mc5F0+r38Dd7f319aWnKen59jfnd39/T0JJeTThHzbzCqujo+Pj47O9va2lpZWanX680iwHrG639gbsibm5ujoyMDA3h8fLy9vWXPKeZbsLGr9vz8vGALfH9/32q1gH3+AUbD9MyQYjxgbkIo/imreSOUlAXYwBezrN7e3n4U6ff7HGDdbncwGIhDQTVIlRcsQoT0er0Z+GcR1k6noyv3OSmyuKrX11eJuGCMw+bIqEYllKnRaKCXHUpXumi32wCQi9tWqV1EGewqodw+GkUkZs0aaYSrX2RQRDWuMBJQRcvt+bYJmpFbhzBCYUwRVeOgiAkvLKoMeXFVmYqCrSLmFJ6m7QTOtOeVNWmk0iuYIjB0DJ3A3d+iNWe64BJZpeG8mOTDBx0WOm/eE8v4iwiWokLSW9VqmmFNP+bMZVUpvEK/PrI5bc24NBEURXBOb3lDOnIFAQugG4qzU6TqFcnVSUZHUmWXr0M3zwWMhUVaX1/f3Nzc2NjwWmf3nEnwyadD6TM2g2T0sGQBzs6vrq4uLy9vb28jK35WGZPsMJ5qagl5C6d/ML1IZD2x2N3d9c5ltEsmNZu2H1khNZZW0y1SCsoOyX54eIj22toa2nlqs8oZRm6FSS6W0NnZ2YHEMHvOqz67XubTVpZVhzhnZqLzJPyfKJ4/Ay5cJI0ye1U++IIcFskCsKipvTzGbEHuORtNfgG25HecvvWqZAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/3c134abd02766189b253ab0509a587e8/8ac56/01-wfp-001.webp 240w,\n/static/3c134abd02766189b253ab0509a587e8/d3be9/01-wfp-001.webp 480w,\n/static/3c134abd02766189b253ab0509a587e8/d1b7f/01-wfp-001.webp 698w\"\n              sizes=\"(max-width: 698px) 100vw, 698px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/3c134abd02766189b253ab0509a587e8/8ff5a/01-wfp-001.png 240w,\n/static/3c134abd02766189b253ab0509a587e8/e85cb/01-wfp-001.png 480w,\n/static/3c134abd02766189b253ab0509a587e8/487bb/01-wfp-001.png 698w\"\n            sizes=\"(max-width: 698px) 100vw, 698px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/3c134abd02766189b253ab0509a587e8/487bb/01-wfp-001.png\"\n            alt=\"WFP のアーキテクチャ\"\n            title=\"WFP のアーキテクチャ\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>前述した通り、WFP は大きく分けて以下のコンポーネントにより構成されています。</p>\n<ul>\n<li>フィルターエンジン (Filter Engine)</li>\n<li>Base Filtering Engine (BFE)</li>\n<li>Shim</li>\n<li>Callout ドライバー</li>\n</ul>\n<h3 id=\"フィルターエンジン-filter-engine\" style=\"position:relative;\"><a href=\"#%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%BC%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3-filter-engine\" aria-label=\"フィルターエンジン filter engine permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>フィルターエンジン (Filter Engine)</h3>\n<p>WFP のフィルターエンジンはネットワークデータのフィルタリングなどを行うためのコンポーネントであり、ユーザーモードとカーネルモードの両方にそれぞれ存在しています。(アーキテクチャ図の UM Filter Engine と KM Filter Engine)</p>\n<p>フィルターエンジンには Windows のネットワークスタックレイヤーにマッピングされた複数のフィルタリングレイヤーが含まれています。</p>\n<p>特に、本書で扱うセキュリティのコンテキストで重要となる TCP/IP スタックのネットワーク層とトランスポート層でのフィルター処理や Callout 関数の呼び出しについてはカーネルモード側のコンポーネントが担っています。<sup id=\"fnref-6\"><a href=\"#fn-6\" class=\"footnote-ref\">6</a></sup></p>\n<h3 id=\"フィルタリングレイヤーとサブレイヤー\" style=\"position:relative;\"><a href=\"#%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%81%A8%E3%82%B5%E3%83%96%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC\" aria-label=\"フィルタリングレイヤーとサブレイヤー permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>フィルタリングレイヤーとサブレイヤー</h3>\n<p>フィルタリングレイヤー (レイヤー) は、前述したフィルターエンジンにより管理されるコンテナーであり、フィルターをセットとして整理する機能を持っています。<sup id=\"fnref-7\"><a href=\"#fn-7\" class=\"footnote-ref\">7</a></sup></p>\n<p>内部的に設定された GUID で管理される各レイヤーには、レイヤーごとに追加できるフィルターの種類が定義されています。<sup id=\"fnref-8\"><a href=\"#fn-8\" class=\"footnote-ref\">8</a></sup></p>\n<p>また、各レイヤーはサブレイヤーに分割され、サブレイヤーの優先順位 (weight) に従って評価されます。\nサブレイヤーはシステムに既定で組み込まれているものに加えて、開発者が独自に追加/定義することも可能です。</p>\n<h3 id=\"フィルター\" style=\"position:relative;\"><a href=\"#%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%BC\" aria-label=\"フィルター permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>フィルター</h3>\n<p>フィルターは、受信もしくは送信されるパケット/ストリーム/イベントなどと照合されるルールであり、\n条件に合致する通信のブロックや、Callout 関数の呼び出しなど、\nパケットをどのように扱うかをフィルターエンジンに指示します。</p>\n<h3 id=\"base-filtering-engine-bfe\" style=\"position:relative;\"><a href=\"#base-filtering-engine-bfe\" aria-label=\"base filtering engine bfe permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Base Filtering Engine (BFE)</h3>\n<p>Base Filtering Engine (BFE) とは、WFP コンポーネント間の調整を行うユーザーモードサービスです。</p>\n<p>BFE は WFP のユーザーモード API を実装しており、プラットフォームの管理やカーネルモード側のコンポーネントとの通信を行います。<sup id=\"fnref-9\"><a href=\"#fn-9\" class=\"footnote-ref\">9</a></sup></p>\n<p>BFE の主要なタスクは、システムへのフィルターの追加と削除、フィルター構成の保存、および WFP 構成セキュリティの強制です。<sup id=\"fnref-10\"><a href=\"#fn-10\" class=\"footnote-ref\">10</a></sup></p>\n<p>詳しくは 2 章以降で解説しますが、アプリケーションは WFP の API を利用して BFE にフィルターの登録などの操作を要求します。</p>\n<h3 id=\"shim\" style=\"position:relative;\"><a href=\"#shim\" aria-label=\"shim permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Shim</h3>\n<p>Shim は、1 つまたは複数のフィルタリングレイヤーに対して「Classifying (分類)」を行うカーネルコンポーネントです。<sup id=\"fnref-11\"><a href=\"#fn-11\" class=\"footnote-ref\">11</a></sup></p>\n<p>Shim はネットワークスタックとフィルターエンジンの中間に位置しており、パケットやストリーム、およびイベントがネットワークスタックを通過する際、Shim はこれらを解析して分類可能な条件や値を抽出した後、フィルターエンジンを呼び出して特定のレイヤー内のフィルターと照合します。</p>\n<p>そして、その照合結果を元に、対応するネットワークスタックで特定のネットワークトラフィックを許可もしくはブロックします。</p>\n<p>Shim は端的に言うと、WFP のフィルターエンジンに対して Windows のネットワークスタックを通過するパケットの可視性を提供するコンポーネントです。</p>\n<p>以下は、ネットワークスタックを通過するパケットについて、対応する Shim が WFP フィルターの照合結果を元にアクションを決定する流れをまとめたものです。<sup id=\"fnref-12\"><a href=\"#fn-12\" class=\"footnote-ref\">12</a></sup></p>\n<ol>\n<li>パケットがネットワークスタックに入ります。</li>\n<li>ネットワークスタックは、適切な Shim を特定し、呼び出します。</li>\n<li>Shim は、特定のレイヤーにおいて「Classifying (分類)」プロセスを呼び出します。</li>\n<li>分類プロセス中に登録されているフィルターの照合が行われ、その結果に応じたアクションが決定されます。</li>\n<li>分類プロセスで Callout フィルターに一致した場合、対応する Callout 関数が呼び出されます。</li>\n<li>Shim は、最終的なフィルタリング決定に基づいてパケットの Drop などの操作を行います。</li>\n</ol>\n<h3 id=\"callout-ドライバー\" style=\"position:relative;\"><a href=\"#callout-%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%BC\" aria-label=\"callout ドライバー permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Callout ドライバー</h3>\n<p>Callout ドライバーは、カーネルモードのフィルタリングレイヤーにおいて、\nフィルターエンジンに独自の Callout 関数を登録することで、WFP のフィルタリング機能を拡張します。<sup id=\"fnref-13\"><a href=\"#fn-13\" class=\"footnote-ref\">13</a></sup></p>\n<p>WFP の Callout はパケットの詳細分析や改変などをサポートしており、\nAntivirus などのセキュリティソフトウェアでも利用されます。</p>\n<h3 id=\"フィルタリングレイヤーとフィルター\" style=\"position:relative;\"><a href=\"#%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%81%A8%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%BC\" aria-label=\"フィルタリングレイヤーとフィルター permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>フィルタリングレイヤーとフィルター</h3>\n<p>フィルタリングレイヤー (レイヤー) は、フィルターエンジンにより管理されるコンテナーであり、\nフィルターをセットとして整理する機能を持っています。\nまた、内部的に設定された GUID で管理される各レイヤーには、レイヤーごとに追加できるフィルターの種類が定義されています。</p>\n<p>フィルタリングレイヤーは対応するネットワークスタックに応じて複数存在しています。</p>\n<p>以下は、WFP の主要なフィルタリングレイヤーの例です。</p>\n<ul>\n<li>Inbound/Outbound ALE レイヤー</li>\n<li>Stream/Datagram レイヤー</li>\n<li>Inbound/Outbound Transport レイヤー</li>\n<li>Inbound/Outbound IP レイヤー</li>\n</ul>\n<p>例えば端末から IPv4 を使用して TCP 接続を行う場合は、まずアウトバウンドの ALE レイヤー (<code class=\"language-text\">FWPM_LAYER_ALE_AUTH_CONNECT_V4</code>) によって TCP 接続要求が検査されます。<sup id=\"fnref-14\"><a href=\"#fn-14\" class=\"footnote-ref\">14</a></sup>\n(ALE レイヤーはアプリケーションのコンテキストでのフィルタリングをサポートしており、エンドポイントセキュリティ用途でのフィルタリングにおいて非常に重要なレイヤーです。)</p>\n<p>TCP 接続要求が ALE レイヤーを通過した場合、SYN パケットがアウトバウンドの Transport レイヤー (<code class=\"language-text\">FWPM_LAYER_OUTBOUND_TRANSPORT_V4</code>) とアウトバウンドの IP レイヤー (<code class=\"language-text\">FWPM_LAYER_OUTBOUND_IPPACKET_V4</code>) の順に検査された後に送信されます。<sup id=\"fnref-15\"><a href=\"#fn-15\" class=\"footnote-ref\">15</a></sup></p>\n<p>また、TCP 接続完了後に送信されるデータについては、Stream レイヤー(<code class=\"language-text\">FWPM_LAYER_STREAM_V4</code>) や、\nアウトバウンドの Transport、IP レイヤーなどで検査されます。</p>\n<p>開発者は、その目的や用途に合わせて、適切なフィルタリングレイヤーにフィルターを登録できます。</p>\n<p>しかし、フィルターは様々なアプリケーションが追加することが可能なコンポーネントであるため、\n特定の通信に対して競合する処理 (許可またはブロック) を行うことを指定したフィルターが同時に適用される状況が発生する場合があります。</p>\n<p>そのため、WFP では最終的な判定を決定する「Filter Arbitration (フィルター調停)」のロジックが定められています。<sup id=\"fnref-16\"><a href=\"#fn-16\" class=\"footnote-ref\">16</a></sup></p>\n<p>Filter Arbitration が最終的な判定を行う上で特に重要な要素は以下です。</p>\n<ul>\n<li>各フィルタリングレイヤーに割り当てられたサブレイヤーの優先順位 (Weight とも呼ばれます)</li>\n<li>各サブレイヤーに割り当てられたフィルターが定義した処理(許可/ブロック など)</li>\n<li>各サブレイヤーに割り当てられたフィルターの優先順位 (Weight)</li>\n<li>オーバライドの許可設定 (<code class=\"language-text\">FWPS_RIGHT_ACTION_WRITE</code> など) の有無</li>\n</ul>\n<p>本書では Filter Arbitration のロジックにより通信が許可もしくはブロックされる細かいパターンについては扱いませんが、\n特定のフィルタリングレイヤーにおける判定ロジックは基本的には以下のように判定されます。</p>\n<ol>\n<li>レイヤーはサブレイヤーに分割され、ネットワークトラフィックはサブレイヤーの優先順位 (Weight) が高い順に評価されます。</li>\n<li>各サブレイヤー内では、条件に一致するフィルターが Weight の高い順に評価されます。</li>\n<li>サブレイヤー内で一致したフィルターを評価していき、“Permit” または “Block” が返された時点でそのサブレイヤー内の残りのフィルター評価はスキップされ、最後に評価されたフィルターのアクションがそのサブレイヤーの結果になります。(フィルターが “Continue” を返す場合もあります。)</li>\n<li>レイヤー全体としては、サブレイヤーごとの結果を集約して最終的なアクションを決定します。</li>\n<li>オーバーライド可否はフィルターごとに制御でき、<code class=\"language-text\">FWPS_RIGHT_ACTION_WRITE</code> や <code class=\"language-text\">FWPM_FILTER_FLAG_CLEAR_ACTION_RIGHT</code> により、“soft/hard” な許可もしくはブロックを行います。\n例えば “soft block” は他のサブレイヤーの許可アクションに上書きされる可能性がありますが、“hard block” は別のサブレイヤーで許可することが不可能であり、ブロックが最終的な判定結果となります。<sup id=\"fnref-17\"><a href=\"#fn-17\" class=\"footnote-ref\">17</a></sup></li>\n</ol>\n<p>以下は、Microsoft の公開ドキュメント<sup id=\"fnref-18\"><a href=\"#fn-18\" class=\"footnote-ref\">18</a></sup>から引用した Filter Arbitration ロジックのイメージ図です。</p>\n<p>各レイヤー内のボックスはそれぞれサブレイヤーを表しており、ALE のレイヤー内ですべてのサブレイヤーが評価された結果、\nサブレイヤーとしての優先順位は FW1 (Firewall 1) より低い FW2 (Firewall 2) のブロックアクションが最終的な判定結果に利用されることを示しています。</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 508px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/eb6a47cefb8328049acff04858b9acf3/2fd48/01-wfp-004.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 74.16666666666667%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAAAsTAAALEwEAmpwYAAACEUlEQVQoz32T667aMBCE8/7PhMRPjkQP4lLUInEJCQkhV9uJ48QB0i+hRUet1FWE1mOvZ2fWON8+P6fT6WQyWa/X8/n8Y/Yxm81Wq1Xf988x+i/xF+KkaRbHcRAERVGUZRmG4dnzQF5Hq0pHUXQbg0QIWY5xv9/btnXaxlyCIB72bmfX1bp+bXTWmrou8jwM2Q98zzseD2VFWSekqEqVZZmjtU7TVAy0KrgEomCjrLVujCnyQgjxbpIb4VBKceDnj93p5DpN275lWGu7zkopaOP+uEuyQjyfj8vFP7knVsktBgGHNs+zobjrOiTFaSKlaq1lA83w4MKLGSFN2+h6CDpqmgawqiqH7PF46EqXFe2UqADpbMc2y69tg5eKkgoQRb5/cWAwxkhVGvypdZ7l9Hw4HCCHmUPjiPoXPx1jTW0Mznue56BTKnn2/SAM5aBSuEfCrWtDbZZmlHEvXcHs+V4UXWHmasb2u+1rFPm+nxdFkqTe2ccOangC+ZhwOgxCVHC1GgkYJKCDW3hg25YPwUpxpkqSZDBAcVq+NVOAYGRizstOp/8nGJxpDDOztq11DZPrHuMkwRJZCMbC5PI8H9zu/xtcQDuDvYVARTJ+iEJwHCeDYePbGGLgov8/CDlsmPzKGQpsPEfeOk6BO7vdbrFYfB9js9mQg/CvYrndbpfLJUtwfmkEa6NrtN/vm6Zl+Qs93E8tKbyEjAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/eb6a47cefb8328049acff04858b9acf3/8ac56/01-wfp-004.webp 240w,\n/static/eb6a47cefb8328049acff04858b9acf3/d3be9/01-wfp-004.webp 480w,\n/static/eb6a47cefb8328049acff04858b9acf3/7b066/01-wfp-004.webp 508w\"\n              sizes=\"(max-width: 508px) 100vw, 508px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/eb6a47cefb8328049acff04858b9acf3/8ff5a/01-wfp-004.png 240w,\n/static/eb6a47cefb8328049acff04858b9acf3/e85cb/01-wfp-004.png 480w,\n/static/eb6a47cefb8328049acff04858b9acf3/2fd48/01-wfp-004.png 508w\"\n            sizes=\"(max-width: 508px) 100vw, 508px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/eb6a47cefb8328049acff04858b9acf3/2fd48/01-wfp-004.png\"\n            alt=\"Filter Arbitration のイメージ図\"\n            title=\"Filter Arbitration のイメージ図\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<h2 id=\"wfp-フィルターの情報を確認する方法\" style=\"position:relative;\"><a href=\"#wfp-%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%BC%E3%81%AE%E6%83%85%E5%A0%B1%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95\" aria-label=\"wfp フィルターの情報を確認する方法 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>WFP フィルターの情報を確認する方法</h2>\n<p>この項では、実際にシステムに登録されている WFP のコンポーネントの情報や、\n通信のフィルタリング状況を確認する方法を解説します。</p>\n<h3 id=\"wfp-explorer-を使用する\" style=\"position:relative;\"><a href=\"#wfp-explorer-%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B\" aria-label=\"wfp explorer を使用する permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>WFP Explorer を使用する</h3>\n<p>システムに登録されている WFP コンポーネントを参照するために最も効果的な方法の 1 つは、WFP Explorer を使用することです。</p>\n<p>WFP Explorer は、インサイド Windows 第 7 版の著者でもある Pavel Yosifovich 氏が公開している GUI ツールであり、\n以下のリポジトリからダウンロードすることができます。</p>\n<p>WFP Explorer</p>\n<p><a href=\"https://github.com/zodiacon/AllTools/blob/master/WFPExp.exe\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://github.com/zodiacon/AllTools/blob/master/WFPExp.exe</a></p>\n<p>WFP Explorer を使用すると、システムに登録されているプロバイダーやフィルターなどの様々な情報を GUI 上で直感的に一覧参照することができます。(アプリケーションがフィルター等を登録する際に指定しているセキュリティディスクリプタによっては、WFP Explorer のようなツールや netsh コマンドの出力結果に表示されない場合があります。)</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/e89d650c359a34463a15b853f452088d/0d98f/01-wfp-005.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 47.5%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAABYlAAAWJQFJUiTwAAABmklEQVQoz21Sa4+CMBDk//+1+3IfLjFnVEpbKqW8RB6i1Lndgp4Xr8nQ0sDs7MxG2fGINE3Bu9YpulOLefa43wFPAMKD3u8r+GY5e+8Dbrcbrtdr2KM8L7FJLJLcYZeW0J8fKFMB07TQzqKlAnVdY15/9LflRyb8b0VKpVDWwZYliuaEoiiQuxJSxNhuvqBMjsIVqJoadVWhKzNUZYWmadDUDS6XC/q+D/vsZ0RGK1hrcTQmIEkSInTIbQ5xSDBdpmfLvwYgEDoqxPdMyK0HhVIISKWhpIKISdX2G5LOhnw97PZwZAX78+ojr4KKWirKi9UtPpKHWkoKxUATqSa1MZFySI4+liLBnki7c/dGOA4jWVAHZcMwkOJTQKSpRVbECpVSOBzikHa+EopYoO/6v22/BMLnRwdLKETIClkVIyZCQ14+CPm974fwsfcvCscR51V5UEgB8V3wMKNQ2DNWyC1rrYmQRmlV2Lbnt/EYqMg0TU9yDoaVRjIoXMgYHIyhIbdZRimLQMpIyWP2jGdyIewDyUPhieaVw/kB34v6dKH0LHUAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/e89d650c359a34463a15b853f452088d/8ac56/01-wfp-005.webp 240w,\n/static/e89d650c359a34463a15b853f452088d/d3be9/01-wfp-005.webp 480w,\n/static/e89d650c359a34463a15b853f452088d/e46b2/01-wfp-005.webp 960w,\n/static/e89d650c359a34463a15b853f452088d/63399/01-wfp-005.webp 1276w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/e89d650c359a34463a15b853f452088d/8ff5a/01-wfp-005.png 240w,\n/static/e89d650c359a34463a15b853f452088d/e85cb/01-wfp-005.png 480w,\n/static/e89d650c359a34463a15b853f452088d/d9199/01-wfp-005.png 960w,\n/static/e89d650c359a34463a15b853f452088d/0d98f/01-wfp-005.png 1276w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/e89d650c359a34463a15b853f452088d/d9199/01-wfp-005.png\"\n            alt=\"WFP Explorer でプロバイダーの一覧を参照する\"\n            title=\"WFP Explorer でプロバイダーの一覧を参照する\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>これらの情報は後述する netsh wfp コマンドを使用した方法でも参照可能ですが、\n素早くフィルターなどの情報を確認する場合には WFP Explorer の方が適しています。</p>\n<h3 id=\"netsh-wfp-コマンドを使用する\" style=\"position:relative;\"><a href=\"#netsh-wfp-%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B\" aria-label=\"netsh wfp コマンドを使用する permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>netsh wfp コマンドを使用する</h3>\n<p>netsh wfp コマンドは、WFP の管理とトラブルシューティングのために提供されているツールです。<sup id=\"fnref-19\"><a href=\"#fn-19\" class=\"footnote-ref\">19</a></sup></p>\n<p>netsh wfp コマンドには様々なオプションがありますが、本書で特に使用するコマンドを以下にまとめます。</p>\n<h3 id=\"netsh-wfp-show-state\" style=\"position:relative;\"><a href=\"#netsh-wfp-show-state\" aria-label=\"netsh wfp show state permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>netsh wfp show state</h3>\n<p>以下のコマンドは WFP と IPsec の現在の状態をファイルに出力します。</p>\n<p><code class=\"language-text\">netsh wfp show state file=-</code> のようにファイルパスの部分を <code class=\"language-text\">-</code> に置き換えることで、\nコンソール上に結果を出力することも可能ですが、データ量が多いので通常はファイルとして保存して確認します。 </p>\n<div class=\"gatsby-highlight\" data-language=\"powershell\"><pre class=\"language-powershell\"><code class=\"language-powershell\">netsh wfp show state file=<span class=\"token operator\">%</span>USERPROFILE%\\Downloads\\wfpstate<span class=\"token punctuation\">.</span>xml</code></pre></div>\n<p>このコマンドで出力した XML は以下のような要素で構成されており、プロバイダーやサブレイヤーなどの情報を確認できます。</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 805px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/ae610aa2e9af0b6fd7949239b7eaf48e/c946b/01-wfp-006.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 58.333333333333336%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAABYlAAAWJQFJUiTwAAACGklEQVQoz32SW4ucQBCF/f8/Jm/JayAPgUDCksDsOF7Hyzi2d+211ZnWk2MPybIkrPBR3UVXeepiPf34CvfpM/xfX5AePyH6+Q1NkaMtS5SiRiVaNDy3RWFskTWEvqo2vv1dXez+jtaH5fhn2E6AIPRwTT8gvcyQeYOlriCbEX19w9z1uDUVJlIlE+p0wUTfUha48Z1qWtSJpv0IK4ljnM8h4jjCNAFdB8QpIEqgKhSyc4DymuGS5LikAmUlUDclsusVg9TkEaMYu39WEATwPR++72MYWlSlguOMiM8SMoygTgc0rMD7LnFNFMZpxDi+4EWSl9EgJa3c/SOs4/EIz/OYMEBN+Wna43Tq4LodUl9AOBFK9wxxTJCfclRX9jbv0feE0vr+lY5363A4wHFdo1DKHkLMsG2qdGckoUTh5hiiFJ2foXJqDDUTtTOmeWKL/sWybdski6KICQdUleJ5JApJMlLxyD/vpc6GaVJkL08ZlHqLUehSYRiG5nFdr7zf2YY7J38355C2aTWWboAWwky2yxdugYZe77jfX7Hsk419MDttWyFnfzzv0UOXNgg6XC6PHrXdo0/vYT0/P3OqDoMuDLrRrlSkkWUr7yu0XrFtf9BYV6K18a8761v+lhxzH5vmBq4XkwG5ABMCy8IdUzA7Os9gEN79zFD2tdkVKqVZ9p5wY+kbl3fjoDbu58OO40ZlG8M2qv0/vwGz4Io7Wfh40wAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/ae610aa2e9af0b6fd7949239b7eaf48e/8ac56/01-wfp-006.webp 240w,\n/static/ae610aa2e9af0b6fd7949239b7eaf48e/d3be9/01-wfp-006.webp 480w,\n/static/ae610aa2e9af0b6fd7949239b7eaf48e/82ef0/01-wfp-006.webp 805w\"\n              sizes=\"(max-width: 805px) 100vw, 805px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/ae610aa2e9af0b6fd7949239b7eaf48e/8ff5a/01-wfp-006.png 240w,\n/static/ae610aa2e9af0b6fd7949239b7eaf48e/e85cb/01-wfp-006.png 480w,\n/static/ae610aa2e9af0b6fd7949239b7eaf48e/c946b/01-wfp-006.png 805w\"\n            sizes=\"(max-width: 805px) 100vw, 805px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/ae610aa2e9af0b6fd7949239b7eaf48e/c946b/01-wfp-006.png\"\n            alt=\"WFP の状態\"\n            title=\"WFP の状態\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<h3 id=\"netsh-wfp-show-filters\" style=\"position:relative;\"><a href=\"#netsh-wfp-show-filters\" aria-label=\"netsh wfp show filters permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>netsh wfp show filters</h3>\n<p>以下のコマンドは、指定の条件を含むフィルターの情報を出力するためのコマンドです。</p>\n<div class=\"gatsby-highlight\" data-language=\"powershell\"><pre class=\"language-powershell\"><code class=\"language-powershell\">netsh wfp show filters verbose=ON file=<span class=\"token operator\">%</span>USERPROFILE%\\Downloads\\wfpfilters<span class=\"token punctuation\">.</span>xml</code></pre></div>\n<p>条件には、プロトコルやローカル/リモートアドレスやポート番号、\nまたはアプリケーションのパスやユーザーの SID、トラフィックの方向などを指定できます。</p>\n<p>例えば、トラフィックの送受信を行っているアプリケーションのパスを条件としたい場合は、\n以下の例のように appid に対象のアプリケーションのフルパスを指定します。</p>\n<div class=\"gatsby-highlight\" data-language=\"powershell\"><pre class=\"language-powershell\"><code class=\"language-powershell\">netsh wfp show filters verbose=OFF file=<span class=\"token operator\">%</span>USERPROFILE%\\Downloads\\wfpfilters<span class=\"token punctuation\">.</span>xml appid=<span class=\"token string\">\"C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe\"</span></code></pre></div>\n<h3 id=\"netsh-wfp-show-netevents\" style=\"position:relative;\"><a href=\"#netsh-wfp-show-netevents\" aria-label=\"netsh wfp show netevents permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>netsh wfp show netevents</h3>\n<p>以下は、直近のネットワークイベントを出力するためのコマンドです。</p>\n<p>WFP フィルターによるネットワークトラフィックのフィルタリング結果などを確認できます。</p>\n<div class=\"gatsby-highlight\" data-language=\"powershell\"><pre class=\"language-powershell\"><code class=\"language-powershell\">netsh wfp show netevents file=<span class=\"token operator\">%</span>USERPROFILE%\\Downloads\\wfpnetevents<span class=\"token punctuation\">.</span>xml</code></pre></div>\n<p>netevents の場合も、プロトコルやローカル/リモートアドレスやポート番号、\nまたはアプリケーションのパスやユーザーの SID などを条件として指定できます。</p>\n<h3 id=\"netsh-wfp-capture\" style=\"position:relative;\"><a href=\"#netsh-wfp-capture\" aria-label=\"netsh wfp capture permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>netsh wfp capture</h3>\n<p>以下のコマンドは、WFP によって処理されるネットワークイベントのキャプチャセッションを開始するコマンドです。</p>\n<p><code class=\"language-text\">netsh wfp capture start</code> コマンドを実行してキャプチャセッションを開始後、\n<code class=\"language-text\">netsh wfp capture stop</code> コマンドを実行するまでのイベントをキャプチャできます。</p>\n<div class=\"gatsby-highlight\" data-language=\"powershell\"><pre class=\"language-powershell\"><code class=\"language-powershell\">netsh wfp capture <span class=\"token function\">start</span> cab=off file=<span class=\"token operator\">%</span>USERPROFILE%\\Downloads\\wfpdiag\n\nnetsh wfp capture stop</code></pre></div>\n<p>このコマンドを実行した結果生成される wfpdiag.xml からネットワークイベントを確認することができます。</p>\n<p>以下は wfpdiag.xml に含まれるドロップイベントの抜粋です。</p>\n<div class=\"gatsby-highlight\" data-language=\"xml\"><pre class=\"language-xml\"><code class=\"language-xml\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>netEvent</span><span class=\"token punctuation\">></span></span>\n   <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>header</span><span class=\"token punctuation\">></span></span>\n   \t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>timeStamp</span><span class=\"token punctuation\">></span></span>2026-02-11T01:28:57.540Z<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>timeStamp</span><span class=\"token punctuation\">></span></span>\n   \t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>ipVersion</span><span class=\"token punctuation\">></span></span>FWP_IP_VERSION_V4<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>ipVersion</span><span class=\"token punctuation\">></span></span>\n   \t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>ipProtocol</span><span class=\"token punctuation\">></span></span>6<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>ipProtocol</span><span class=\"token punctuation\">></span></span>\n   \t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>localAddrV4</span><span class=\"token punctuation\">></span></span>192.168.52.236<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>localAddrV4</span><span class=\"token punctuation\">></span></span>\n   \t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>remoteAddrV4</span><span class=\"token punctuation\">></span></span>8.8.8.8<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>remoteAddrV4</span><span class=\"token punctuation\">></span></span>\n   \t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>localPort</span><span class=\"token punctuation\">></span></span>50685<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>localPort</span><span class=\"token punctuation\">></span></span>\n   \t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>remotePort</span><span class=\"token punctuation\">></span></span>80<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>remotePort</span><span class=\"token punctuation\">></span></span>\n   \t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>appId</span><span class=\"token punctuation\">></span></span>\n   \t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>asString</span><span class=\"token punctuation\">></span></span>\\.d.e.v.i.c.e.\\.h.a.r.d.d.i.s.k.v.o.l.u.m.e.3.\\.p.r.o.g.r.a.m. .f.i.l.e.s. .(.x.8.6.).\\.m.i.c.r.o.s.o.f.t.\\.e.d.g.e.\\.a.p.p.l.i.c.a.t.i.o.n.\\.m.s.e.d.g.e...e.x.e...<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>asString</span><span class=\"token punctuation\">></span></span>\n   \t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>appId</span><span class=\"token punctuation\">></span></span>\n   \t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>header</span><span class=\"token punctuation\">></span></span>\n   <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>type</span><span class=\"token punctuation\">></span></span>FWPM_NET_EVENT_TYPE_CLASSIFY_DROP<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>type</span><span class=\"token punctuation\">></span></span>\n   <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>classifyDrop</span><span class=\"token punctuation\">></span></span>\n   \t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>filterId</span><span class=\"token punctuation\">></span></span>71422<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>filterId</span><span class=\"token punctuation\">></span></span>\n   \t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>layerId</span><span class=\"token punctuation\">></span></span>48<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>layerId</span><span class=\"token punctuation\">></span></span>\n   <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>classifyDrop</span><span class=\"token punctuation\">></span></span>\n   <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>internalFields</span><span class=\"token punctuation\">></span></span>\n   \t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>terminatingFiltersInfo</span> <span class=\"token attr-name\">numItems</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>2<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n   \t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>item</span><span class=\"token punctuation\">></span></span>\n   \t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>filterId</span><span class=\"token punctuation\">></span></span>71422<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>filterId</span><span class=\"token punctuation\">></span></span>\n   \t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>subLayer</span><span class=\"token punctuation\">></span></span>32768<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>subLayer</span><span class=\"token punctuation\">></span></span>\n   \t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>actionType</span><span class=\"token punctuation\">></span></span>FWP_ACTION_BLOCK<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>actionType</span><span class=\"token punctuation\">></span></span>\n   \t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>item</span><span class=\"token punctuation\">></span></span>\n   \t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>item</span><span class=\"token punctuation\">></span></span>\n   \t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>filterId</span><span class=\"token punctuation\">></span></span>69913<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>filterId</span><span class=\"token punctuation\">></span></span>\n   \t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>subLayer</span><span class=\"token punctuation\">></span></span>FWPP_SUBLAYER_INTERNAL_FIREWALL_WF<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>subLayer</span><span class=\"token punctuation\">></span></span>\n   \t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>actionType</span><span class=\"token punctuation\">></span></span>FWP_ACTION_PERMIT<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>actionType</span><span class=\"token punctuation\">></span></span>\n   \t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>item</span><span class=\"token punctuation\">></span></span>\n   \t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>terminatingFiltersInfo</span><span class=\"token punctuation\">></span></span>\n   \t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>policyAppId</span><span class=\"token punctuation\">/></span></span>\n   <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>internalFields</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>netEvent</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p>このイベントからは、msedge.exe による <code class=\"language-text\">8.8.8.8</code> の 80 番ポート宛ての通信が\n<code class=\"language-text\">FWPM_NET_EVENT_TYPE_CLASSIFY_DROP</code> の通りドロップされたことを示しており、\nフィルター ID 71422 のフィルターにより <code class=\"language-text\">FWP_ACTION_BLOCK</code> によりブロックの評価が行われたことがわかります。</p>\n<p>また、<code class=\"language-text\">netsh wfp show state</code> などで出力した情報と組み合わせることで、\nlayerId が 48 であるレイヤー (<code class=\"language-text\">FWPM_LAYER_ALE_AUTH_CONNECT_V4</code>) にて、\nfilterId が 71422 のフィルター (<code class=\"language-text\">Block Edge</code>) により通信のブロック判定が行われたことなども確認できます。</p>\n<h2 id=\"まとめ\" style=\"position:relative;\"><a href=\"#%E3%81%BE%E3%81%A8%E3%82%81\" aria-label=\"まとめ permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>まとめ</h2>\n<p>本章では、WFP が Windows のネットワークスタックに組み込まれたフィルタリングプラットフォームであり、Microsoft Defender ファイアウォールや Antivirus または EDR などの実装に広く利用されていることを確認しました。</p>\n<p>また、WFP の主要コンポーネントであるフィルターエンジン、BFE、Shim、Callout ドライバーの役割と、\nフィルタリングレイヤー/サブレイヤー/フィルターの関係を整理するとともに、\nサブレイヤーやフィルターの優先順位、オーバーライド可否に基づいて最終的な許可/ブロック判定が決定される動作について解説しました。</p>\n<p>次章では、ユーザーモードから WFP フィルターを利用してトラフィックのフィルタリングを行うサンプルコードの解説を行います。</p>\n<h2 id=\"本書のもくじ\" style=\"position:relative;\"><a href=\"#%E6%9C%AC%E6%9B%B8%E3%81%AE%E3%82%82%E3%81%8F%E3%81%98\" aria-label=\"本書のもくじ permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>本書のもくじ</h2>\n<ul>\n<li><a href=\"/a-part-of-anti-virus-3-00\">まえがき</a></li>\n<li><a href=\"/a-part-of-anti-virus-3-01\">1 章 WFP の概要とアーキテクチャ</a></li>\n<li><a href=\"/a-part-of-anti-virus-3-02\">2 章 WFP によるアクセス制御を行うサンプル</a></li>\n<li><a href=\"/a-part-of-anti-virus-3-03\">3 章 Callout ドライバーによるアクセス制御を行うサンプル</a></li>\n</ul>\n<div class=\"footnotes\">\n<hr>\n<ol>\n<li id=\"fn-1\">\n<p>WFP Features <a href=\"https://learn.microsoft.com/ja-jp/windows/win32/fwp/about-windows-filtering-platform#wfp-features\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://learn.microsoft.com/ja-jp/windows/win32/fwp/about-windows-filtering-platform#wfp-features</a></p>\n<a href=\"#fnref-1\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-2\">\n<p>インサイド Windows 第 6 版 上 P.736 ( Mark E. Russinovich, David A. Solomon, Alex Inescu 著 / 株式会社クイープ 訳 / 日経BP社 / 2012 年)</p>\n<a href=\"#fnref-2\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-3\">\n<p>WFP Architecture <a href=\"https://learn.microsoft.com/ja-jp/windows/win32/fwp/windows-filtering-platform-architecture-overview\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://learn.microsoft.com/ja-jp/windows/win32/fwp/windows-filtering-platform-architecture-overview</a></p>\n<a href=\"#fnref-3\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-4\">\n<p>インサイド Windows 第 6 版 上 P.653 ( Mark E. Russinovich, David A. Solomon, Alex Inescu 著 / 株式会社クイープ 訳 / 日経BP社 / 2012 年)</p>\n<a href=\"#fnref-4\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-5\">\n<p>Overview of NDIS driver types <a href=\"https://learn.microsoft.com/ja-jp/windows-hardware/drivers/network/ndis-drivers\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://learn.microsoft.com/ja-jp/windows-hardware/drivers/network/ndis-drivers</a></p>\n<a href=\"#fnref-5\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-6\">\n<p>Filter Engine <a href=\"https://learn.microsoft.com/ja-jp/windows/win32/fwp/windows-filtering-platform-architecture-overview#filter-engine\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://learn.microsoft.com/ja-jp/windows/win32/fwp/windows-filtering-platform-architecture-overview#filter-engine</a></p>\n<a href=\"#fnref-6\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-7\">\n<p>WFP Operation <a href=\"https://learn.microsoft.com/ja-jp/windows/win32/fwp/basic-operation\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://learn.microsoft.com/ja-jp/windows/win32/fwp/basic-operation</a></p>\n<a href=\"#fnref-7\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-8\">\n<p>Filtering conditions available at each filtering layer <a href=\"https://learn.microsoft.com/ja-jp/windows/win32/fwp/filtering-conditions-available-at-each-filtering-layer\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://learn.microsoft.com/ja-jp/windows/win32/fwp/filtering-conditions-available-at-each-filtering-layer</a></p>\n<a href=\"#fnref-8\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-9\">\n<p>Windows Kernel Programming, Second Edition P.472 (Pavel Yosifovich 著 / Independently published / 2023 年)</p>\n<a href=\"#fnref-9\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-10\">\n<p>Base Filtering Engine <a href=\"https://learn.microsoft.com/ja-jp/windows/win32/fwp/windows-filtering-platform-architecture-overview#base-filtering-engine\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://learn.microsoft.com/ja-jp/windows/win32/fwp/windows-filtering-platform-architecture-overview#base-filtering-engine</a></p>\n<a href=\"#fnref-10\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-11\">\n<p>Shims <a href=\"https://learn.microsoft.com/ja-jp/windows/win32/fwp/basic-operation#shims\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://learn.microsoft.com/ja-jp/windows/win32/fwp/basic-operation#shims</a></p>\n<a href=\"#fnref-11\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-12\">\n<p>WFP Operation <a href=\"https://learn.microsoft.com/ja-jp/windows/win32/fwp/basic-operation#wfp-operation-1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://learn.microsoft.com/ja-jp/windows/win32/fwp/basic-operation#wfp-operation-1</a></p>\n<a href=\"#fnref-12\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-13\">\n<p>Callout Drivers <a href=\"https://learn.microsoft.com/ja-jp/windows/win32/fwp/windows-filtering-platform-architecture-overview#callout-drivers\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://learn.microsoft.com/ja-jp/windows/win32/fwp/windows-filtering-platform-architecture-overview#callout-drivers</a></p>\n<a href=\"#fnref-13\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-14\">\n<p>Packet Inspection Points <a href=\"https://learn.microsoft.com/ja-jp/windows-hardware/drivers/network/packet-inspection-points\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://learn.microsoft.com/ja-jp/windows-hardware/drivers/network/packet-inspection-points</a></p>\n<a href=\"#fnref-14\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-15\">\n<p>TCP Packet Flows <a href=\"https://learn.microsoft.com/ja-jp/windows/win32/fwp/tcp-packet-flows\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://learn.microsoft.com/ja-jp/windows/win32/fwp/tcp-packet-flows</a></p>\n<a href=\"#fnref-15\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-16\">\n<p>Filter Arbitration <a href=\"https://learn.microsoft.com/ja-jp/windows/win32/fwp/filter-arbitration\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://learn.microsoft.com/ja-jp/windows/win32/fwp/filter-arbitration</a></p>\n<a href=\"#fnref-16\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-17\">\n<p>Configurable Override Policy <a href=\"https://learn.microsoft.com/ja-jp/windows/win32/fwp/filter-arbitration#configurable-override-policy\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://learn.microsoft.com/ja-jp/windows/win32/fwp/filter-arbitration#configurable-override-policy</a></p>\n<a href=\"#fnref-17\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-18\">\n<p>Filter Arbitration <a href=\"https://learn.microsoft.com/ja-jp/windows/win32/fwp/filter-arbitration\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://learn.microsoft.com/ja-jp/windows/win32/fwp/filter-arbitration</a></p>\n<a href=\"#fnref-18\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-19\">\n<p>netsh wfp <a href=\"https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/netsh-wfp\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/netsh-wfp</a></p>\n<a href=\"#fnref-19\" class=\"footnote-backref\">↩</a>\n</li>\n</ol>\n</div>","fields":{"slug":"/a-part-of-anti-virus-3-01","tagSlugs":["/tag/a-part-of-anti-virus-3/","/tag/windows/","/tag/win-dbg/","/tag/anti-virus/"]},"frontmatter":{"date":"2026-04-11","description":"技術書典 20 で頒布した A PART OF ANTI-VIRUS 3 の WEB 版です。","tags":["A PART OF ANTI-VIRUS 3","Windows","WinDbg","AntiVirus"],"title":"A PART OF ANTI-VIRUS 3 - 公開サンプルコードで学ぶ Windows Filtering Platform (WFP) - (WEB 版) 【1 章 WFP の概要とアーキテクチャ】","socialImage":{"publicURL":"/static/272acc1e889df0e25d89217e89d5fd13/a-part-of-anti-virus-3.png"}}}},"pageContext":{"slug":"/a-part-of-anti-virus-3-01"}},"staticQueryHashes":["251939775","401334301","825871152"]}