Windows
 Computer >> コンピューター >  >> システム >> Windows

Windows 10 エクスプロイト保護 - チュートリアル

Windows 10 Fall Creators Update (ビルド 1709) のリリースにより、最も優れた洗練された Enhanced Mitigation Experience Toolkit (EMET) が利用できなくなったか、このオペレーティング システムにインストールできなくなりました。代わりに、これらの軽減策は Windows 10 の不可欠な部分になりました。

私は EMET の大ファンであり、すべての Windows マシンで EMET を使用しているため、Windows 10 で新しい軽減策を展開して調整する方法について、詳細で実用的かつ実際の使用ガイドを作成することにしました。お願いします。フォローしてください。


目次


  1. 紹介と予備の読み物
  2. Windows 10 エクスプロイト保護 <オール>
  3. システム設定
  4. プログラムの設定
  • 構成のエクスポートとインポート <オール>
  • 構成ファイルの形式
  • 古い EMET 構成を使用する
  • アプリケーション テンプレート
  • 実際の使用法と例 <オール>
  • 新しい構成をインポートする
  • 構成ファイルの内容
  • エクスプロイト プロテクションの実行と使用
  • 構成の編集と微調整
  • 熱心すぎる保護
  • 追加資料
  • 結論

  • 導入と予備の読み物

    このトピックのニッチでオタク的な性質を考えると、偶然この記事に出くわした場合は、EMET について簡単に紹介させてください。このユーティリティは、不正なコードの実行を防止する一連のシステムおよびプログラム メカニズムです。このようにして、実行中のプログラムのエクスプロイトを潜在的に停止およびブロックできます。

    Microsoft は何年も前に EMET をスタンドアロン ツールとしてリリースし、どのシステムにも手動で展開できました。ビルド 1709 までは、以前の 2 つのバージョンの Windows と Windows 10 で引き続き使用できます。

    EMET は、実行中のプログラムが実行できる命令とメモリ アクセスの種類を制限することによって機能します。このアイデアの優れた点は、私たちが良いプログラムとマルウェアと呼んでいるものを区別しないことです。準拠した、いわゆる合法的なコードと準拠していない、いわゆる違法なコードを区別するだけです。つまり、Chrome や Powerpoint などの完全に正当なプログラムがあり、それらが EMET ライブラリによってカプセル化されて保護されている場合でも、違法な命令が原因で誤動作する場合 (ほとんどの場合、間違いやずさんなプログラミング手法または従来の制約によって導入された可能性があります)、EMET は実行をブロックし、プログラムを終了します。

    これにより、EMET のアイデアはセキュリティ ツールとして機能します。適切に構成された後は、ファイア アンド フォーゲット ソリューションになります。軽量で邪魔にならず、非常に効率的でスマートです。実行品質の観点からソフトウェアを見るという概念は、悪いプログラムをブラックリストに載せようとするよりもはるかに賢明です。

    EMET は、DEP、SEHOP、ASLR など、Windows で利用可能なシステム レベルのセキュリティ メカニズムとも連動します。非常にきれいで、非常に便利で、非常に便利です。

    EMET の使用方法に関する詳細なチュートリアルを作成しました。これはプログラムのバージョン 4 で作成されましたが、ガイドラインは 100% 真実であり、それ以降のバージョンでも正しいものです。軽減ツールキットの前回のレビューはバージョン 5.5 に関するものでした。それらを読んで、さまざまな概念と保護について理解してください。

    Windows 10 エクスプロイト保護 - チュートリアル

    ただし、インストールできなくなりました:

    Windows 10 エクスプロイト保護

    EMET の機能は、組み込み機能として Windows 10 ビルド 1709 内で利用できるようになりました。関連する UI には、Windows Defender セキュリティ センターからアクセスできます。左側のサイドバーで、最後から 2 番目のアイコンをクリックし、リストの最後までスクロールして、[Exploit protection settings] をクリックします。

    新しい UI は EMET に比べて簡素化されています。また、現在有効になっているものに対する可視性が低いため、使いにくくなっています。また、アプリと有効な軽減策の完全なマトリックス スタイル ビューもありません。しかし、人間工学的な考慮事項は脇に置きましょう。生の機能だけに注目しましょう。実際のインターフェースをどのように改善できるか、また改善する必要があるかについては、後で触れます。

    システム設定

    デフォルトのビューには、システム設定が一覧表示されます。古いオペレーティング システムと同様に、Windows 10 には、コードの悪意のある (読み取りが正しくない/違法な) 実行を防止するためのいくつかの低レベル メカニズムが付属しています。繰り返しますが、ここでは特にマルウェアについて話しているわけではありません。システムのクラッシュや不安定性などを引き起こす可能性のあるコードについて話しているのです。

    Windows 10 で利用できる 6 つの保護には、CFG、DEP、必須 ASLR、ボトムアップ ASLR、SEHOP、およびヒープ整合性が含まれます。これらは、Windows が以前に持っていたものとほぼ同じですが、基礎となるカーネル構造にいくつかの変更があったため、正確な 1:1 の変換はありません。デフォルトでは、これらの保護はすべてオンになっています。

    プログラムの設定

    2 番目のカテゴリをクリックすると、現在エクスプロイト保護メカニズムでカバーされている個々のプログラムのリストが展開されます。オーバーライドのあるプログラムのみがリストされます。プログラムにシステムのデフォルトと一致する構成がある場合、そのプログラムは追加されません。

    Windows 10 には、特定のオーバーライドを含む、既にリストされているいくつかのアプリケーションが付属しています。現時点では、最適なセキュリティと互換性のために Microsoft によって構成されているため、これらはそのままにしておく必要があります。

    パスまたは名前で新しいプログラムを追加できます。後者は、ディスク上のどこにインストールされているかに関係なく、特定の実行可能ファイル名に一致する特定のアプリケーションの任意のバージョンを保護できるため、より優れています。

    プログラムを追加すると、新しいウィンドウがポップアップし、エクスプロイト保護の構成をカスタマイズできるようになります。使用可能な軽減策の長くてややこしいリストが表示されます。軽減策を個別にオンまたはオフにできるようになりました。これらの保護の一部はデフォルトでオフになっていますが、その他はオンになっており、通常は前述のシステム構成と一致しています。したがって、デフォルトを上書きできます。


    利用可能な緩和策は 15 あります。それらを有効にすると、システムの既定値よりも優先されます。監査を許可するオプションもあります。基本的に、例外が発生した場合、システムが通知し、プログラムを手動で閉じるか終了する必要があります。そうしないと、システムは軽減策に一致する不正な命令でプログラムを終了します。

    構成のエクスポートとインポート

    さて、面白くてトリッキーな部分です。新しいメカニズムにはより扱いにくいインターフェイスが付属しているため、プログラムの構成が面倒になります。たとえば、20 ~ 30 個のプログラムにそれぞれ最大 15 個の軽減策が含まれており、これを整理するにはマウスを何度もクリックする必要があります。

    幸いなことに、XML 構成ファイルを使用して、保護をより迅速に更新できます。リストにプログラムを追加したりリストから削除したり、特定の軽減策を微調整したり、必要なセットアップをより迅速かつ効率的に実行したりできます。そのためには、構成ファイルの基本的な形式を理解する必要があります。

    メイン インターフェイスで、[設定のエクスポート] をクリックし、XML ファイルをディスクのどこかに保存します。これをテキスト エディターで開き、構成と、さまざまなディレクティブと値の意味を簡単に見てみましょう。

    構成ファイルの形式

    確認しましょう:


    <ルート>
    <システム構成>
    OverrideForceRelocateImages="false">


    OverrideExtensionPoint="false">

    ...

    これらは、実際の構成の最初の数行です。インデントは、他のほとんどの言語と同様に、開始点と停止点を視覚的に区別するためにあります。上部に XML 宣言があります。次に、ルート セクションがあります。これは基本的に、システムとアプリケーションの構成を含むブロックを定義します。

    システム構成は SystemConfig によって宣言されます。アプリケーションは AppConfig によって宣言されます。アプリケーション名は、変数 Executable によって宣言されます。次に、ExtensionPoints、Fonts、Payloads、DynamicCode など、さまざまな種類の軽減策があります。たとえば、追加されたアプリケーションのほぼ完全なリストには、次のようなものが含まれます:


    <厳格なハンドル
    有効にする="true"
    OverrideStrictHandle="false">

    <システムコール
    DisableWin32kSystemCalls="false"
    OverrideSystemCall="false"
    監査="true">

    <拡張ポイント
    DisableExtensionPoints="true"
    OverrideExtensionPoint="false">

    BlockDynamicCode="false"
    AllowThreadsT​​oOptOut="false"
    OverrideDynamicCode="false"
    監査="true">

    <フォント
    DisableNonSystemFonts="false"
    AuditOnly="false"
    OverrideFontDisable="false"
    監査="true">

    BlockRemoteImageLoads="false"
    OverrideBlockRemoteImageLoads="false"
    BlockLowLabelImageLoads="false"
    OverrideBlockLowLabel="false"
    AuditRemoteImageLoads="true"
    AuditLowLabelImageLoads="true">

    <ペイロード
    EnableExportAddressFilter="true"
    OverrideExportAddressFilter="false"
    AuditEnableExportAddressFilter="true"
    EnableExportAddressFilterPlus="true"
    OverrideExportAddressFilterPlus="false"
    AuditEnableExportAddressFilterPlus="true"
    EnableImportAddressFilter="true"
    OverrideImportAddressFilter="false"
    AuditEnableImportAddressFilter="true"
    EnableRopStackPivot="true"
    OverrideEnableRopStackPivot="false"
    AuditEnableRopStackPivot="true"
    EnableRopCallerCheck="true"
    OverrideEnableRopCallerCheck="false"
    AuditEnableRopCallerCheck="true"
    EnableRopSimExec="true"
    OverrideEnableRopSimExec="false"
    AuditEnableRopSimExec="true">


    当分の間、実際の値は無視してください。 3 つの重要な変数を理解しましょう:

    値 - true/false にすることができ、軽減策が有効かどうかを定義します。

    上書き - あなたの考えに反して、これは指定された値がシステムのデフォルトを上書きするかどうかを教えてくれません。いいえ。それはすでに設計されています。この変数が true に設定されている場合、UI から設定を編集できないことを意味します。特に false は Defender Security Center を介して制御できることを意味し、true は制御できないことを意味するため、これはかなり紛らわしいです。この変数は無視してください。

    監査 - プログラムが監査モードで実行されるか、完全な強制モードで実行されるか。

    これで、基本的な準備が整いました。それでは、実際に構成ファイルを作成して、エクスプロイト リストにインポートしてみましょう。これまでの苦労を無駄にしたくないので、古い EMET 構成を実際にインポートすることでそれを行います。

    古い EMET 構成を使用する

    実際に Powershell コマンド ラインを使用していくつかのタスクを実行します。つまり、EMET 構成ファイルを新しい形式に変換してからインポートします。これらのコマンドには現在、同等の GUI がありません。 Powershell と管理者アクセスが必要です。とにかく、EMET ファイルは次のようになります:


    <設定>







    <緩和が有効="true" />
    <緩和が有効="true" />
    <緩和が有効="true" />

    これは、はるかにクリーンで優れた形式だと思います。でも気にしないで。この構成ファイルを変換しましょう。これを行う方法に関するオンライン ドキュメントを読むと、次のコマンドが必要です:

    ConvertTo-ProcessMitigationPolicy -EMETFilePath emetconfig.xml -OutputFilePath newconfig.xml

    たくさんのエラーが発生しました:

    エラー:何らかの理由で Wi​​n10 の設定を読み取る必要がありますか?:PinRuleMember
    エラー:何らかの理由で Wi​​n10 の設定を読み取る必要がありますか?:アクティブ
    エラー:何らかの理由で Wi​​n10 の設定を読み取る必要がありますか?:PinnedSite
    エラー:何らかの理由で Wi​​n10 の設定を読み取る必要がありますか?:ドメイン
    エラー:何らかの理由で Wi​​n10 の設定を読み取る必要がありますか?:PinRuleMember
    エラー:何らかの理由で Wi​​n10 の設定を読み取る必要がありますか?:アクティブ

    どうやら、Windows 10 より前のルールで証明書に固定されたすべてのルールは、新しい形式と互換性がありません。このような構成をインポートしようとすると、失敗します。変換を再度行う前に、XML をクリーンアップする必要があります。

    <ピニング>
    <ピンルール>
    <ピンルール>
    {392c02ca-a7dd-49e3-888f-7fb505de9333}
    FacebookCA
    ...

    注:EMET と新しいエクスプロイト保護メカニズムの間に正確な 1:1 の一致はありません。特に、複数のオペレーティング システム間で移動する場合はそうです。私の推奨は、古い構成をアドバイザリとしてのみ使用することです。

    したがって、変換されたファイルは次のようになります - アプリの軽減策に関して:

    Executable="AcroRd32.exe">
    有効にする="true"
    EmulateAtlThunks="false"/>
    ForceRelocateImages="false"
    RequireInfo="false"
    BottomUp="true"
    HighEntropy="false"/>
    <厳格なハンドル
    有効にする="false"/>
    <システムコール
    DisableWin32kSystemCalls="false"
    監査="偽"/>
    <拡張ポイント
    DisableExtensionPoints="false"/>
    BlockDynamicCode="false"
    AllowThreadsT​​oOptOut="false"
    監査="偽"/>
    有効にする="false"
    SuppressExports="false"
    StrictControlFlowGuard="false"/>
    MicrosoftSignedOnly="false"
    AllowStoreSignedBinaries="false"
    EnforceModuleDependencySigning="false"
    監査="false"
    AuditStoreSigned="false"
    AuditEnforceModuleDependencySigning="false"/>
    <フォント
    DisableNonSystemFonts="false"
    監査="偽"/>
    AuditPreferSystem32="false"
    AuditLowLabelImageLoads="false"
    AuditRemoteImageLoads="false"
    PreferSystem32="false"
    BlockLowLabelImageLoads="false"
    BlockRemoteImageLoads="false"/>
    <ペイロード
    EAFModules=""
    EnableExportAddressFilter="true"
    AuditEnableExportAddressFilter="false"
    EnableExportAddressFilterPlus="true"
    AuditEnableExportAddressFilterPlus="false"
    EnableImportAddressFilter="false"
    AuditEnableImportAddressFilter="false"
    EnableRopStackPivot="true"
    AuditEnableRopStackPivot="false"
    EnableRopCallerCheck="true"
    AuditEnableRopCallerCheck="false"
    EnableRopSimExec="true"
    AuditEnableRopSimExec="false"/>
    Enable="true"
    TelemetryOnly="false"
    Audit="false"/>
    TerminateOnError="true"/>
    DisallowChildProcessCreation="false"
    Audit="false"/>

    Application template

    Most of the mitigations imported from EMET will be set to false unfortunately - and the system ones will no longer fully match. So my recommendation is as follows:the six system mitigations cover the basics. You can also enabled an additional six mitigations that seem to match 1:1 between EMET and new protection mechanism, including:EAF, EAF+, IAF, StackPivot, CallerCheck, and SimExec. Therefore our basic template for applications, based on previous usage becomes:



     
         EnableExportAddressFilterPlus="true"
       EnableImportAddressFilter="true"
       EnableRopStackPivot="true"
       EnableRopCallerCheck="true"
       EnableRopSimExec="true">
     

     

    We can extend this with fonts protection (the text is formatted for visual clarity):



     
         AuditOnly="false"
       OverrideFontDisable="false"
       Audit="false">
     

         EnableExportAddressFilterPlus="true"
       EnableImportAddressFilter="true"
       EnableRopStackPivot="true"
       EnableRopCallerCheck="true"
       EnableRopSimExec="true">
     

     

    And this is a template section you can use as your baseline:







    Real-life usage and examples

    All right, so far, we have covered the new UI, system and program settings, overview of new exploit mitigations, how to export configuration files, how to convert old EMET settings, and now we will import our app templates and use them.

    We will use our app template from above to quickly and elegantly add new applications into the system list, bearing in mind that system settings are best left at their defaults, and they already cover a great deal, plus there are six other mitigations that closely match past configurations, and are likely to work well. This is the MAIN reason why I have chosen this baseline, plus the fonts, which make simple sense, and also go hand in hand with past vulnerabilities on this issue.

    There are other mitigations that we could potentially enable, but unless you fully understand what you're doing, you may cripple your programs. In some cases, even the developers of software will NOT know what their applications are doing wrong, so it is quite possible you won't find an easy answer.

    • ACG, low integrity and remote images - should be okay.
    • Code integrity guard - unless signed by Microsoft, images won't run - this is basically Windows 10 S. Not recommended.
    • Extension points - very likely to cause problems in how software runs.
    • Disable system calls - highly likely to cause problems.
    • Child processes - will definitely cripple programs.
    • Handle usage - likely to cause problems with sloppily designed software.

    The rest we already have covered - six basics, six old mitigations, fonts, and potentially three written in the first bullet, with the rest best left alone.

    Import new configuration

    This is done as follows, again from Powershell, and with admin credentials:

    Set-ProcessMitigation -PolicyFilePath .\config.xml

    Configuration file contents

    Based on our template, we can add the applications inside the file. You can either create a single configuration with several programs listed inside and then import it once, or make an per-app template and perform multiple imports. It makes no difference.

    What you need to take into account is:1) you can do with the Security Center running, but it will NOT show the changes on the fly; the config is loaded once and/or whenever you make changes through the UI 2) old app settings will be removed with the new ones.

    Running and using exploit protection

    I tested with the following programs:Firefox, LibreOffice, VLC, IrfanView, Notepad++, and these run without any problems, including updates. Google Chrome would not run with ANY mitigation enabled except the fonts - both the pages and extensions kept crashing. This is in contrast to EMET behavior. Like I said, there's no GOLDEN list on what works and what does not, but I believe you can have 7/15 and maybe even 10/15 mitigations enabled, with code signing, child processes and system calls disabling really being unnecessary. That leaves only two mitigations that might need closer look:extension points and handle usage. Pretty good, I'd say.

    Edit and tweak configuration

    You can always go back and make changes - also through GUI after you've imported the bulk of your configuration, and now you just need fine tuning. If things do not work, you can always remove an entry and start fresh.

    Overzealous protection

    If you go wild, and I tried, just to see what gives, you may completely cripple your programs, and they won't run. It's all too easy to do this, so please be utterly careful, and make sure you understand what you're doing. This is a long-term investment. Do it well once and you won't have problems down the road.

    Additional reading

    You may also want to check these official Microsoft articles:

    Apply mitigations to help prevent attacks through vulnerabilities

    Customize exploit protection

    結論

    ほらね。 A very thorough, hands-on, real-life guide on how to use the new exploit protection mechanism in Windows 10. We didn't just blindly look at the list and wonder what magic happens behind the scene, we went behind the scene, and got ourselves autographs on our chests.

    On a more technical note, we learned about the exploit mechanism, the new UI, system and program settings, types of exploits and what they roughly do, how to export and import XML configuration files, we created our work template, we converted and used our old EMET settings, we tried to match the level of protection that EMET gave us while still maintaining sane and practical functionality with most programs and most mitigations. We have about 80-90% coverage without breaking things. There are no guarantees in this process, but it's so much ahead of any conventional security software.

    The mitigation protection remains Microsoft's best product by far, and hopefully, they will improve the workflow so it is more accessible to advanced users. For the time being, you have this guide, and hopefully, it will make your journey into the post-EMET world of mitigations simpler and faster. And your apps will still work!またね。

    If you like this tutorial, then give some love back, support Dedoimedo.右?

    乾杯。


    1. Ultimate Windows Tweaker - じゃじゃ馬ならし

      大げさな名前は大げさな期待をもたらします。 Ultimate Windows Tweaker (UWT) は、Breakfast Club に似た The Windows Club の熱狂的でオタク志向のメンバーによって開発されたツールですが、唯一の違いがあります。このソフトウェアは、200 を超えるオプションと設定で Windows 10 を調整および微調整できるように設計されています。 なぜこれが欲しいのですか? Windows 10 はいたずらなオペレーティング システムであり、広告、テレメトリ、およびその他の IQ 100 未満の機能に関しては、以前のすべてのオペレーティング シス

    2. Windows 10 を bash しましょう。つまり、Windows 10 で BASH を実行します!

      はい。 Windows 10 は特別なことではありません。オペレーティング システムがリリースされたとき、1 年前の G50 に関する私のレビューと、最近の Anniversary Update に関する私の記事の両方で、それを確立しました。良くも悪くもありません。ちょうど平均。 ただし、興味深いのは、BASH を実行できることです。はい、基本的に適切な Linux です。仮想マシンとしてではありません。これは、Linux システムコールを NT API に変換し、Linux カーネルをエミュレートする Pico カーネル ドライバーを使用した、Ubuntu のユーザーモード実装です。邪悪