DLLハイジャックの脆弱性攻撃、防止および検出

DLLは(DLL)ダイナミックリンクライブラリ(Dynamic Link Libraries)の略で、 Windowsまたはその他のオペレーティングシステムで実行されるアプリケーションの外部部分です。ほとんどのアプリケーションはそれ自体では完全ではなく、コードを別のファイルに保存します。コードが必要な場合は、関連ファイルがメモリにロードされて使用されます。これにより、 RAM(RAM)の使用を最適化しながら、アプリケーションファイルのサイズを削減できます。この記事では、DLLハイジャック(DLL Hijacking)とは何か、およびそれを検出して防止する方法について説明します。

DLLファイル(Files)またはダイナミックリンクライブラリとは何ですか(Dynamic Link Libraries)

DLLハイジャック

DLLファイルはダイナミックリンクライブラリ(Dynamic Link Libraries)であり、その名前から明らかなように、さまざまなアプリケーションの拡張機能です。私たちが使用するアプリケーションは、特定のコードを使用する場合と使用しない場合があります。このようなコードは異なるファイルに保存され、関連するコードが必要な場合にのみ呼び出されるか、 RAMにロードされます。(RAM)したがって、アプリケーションファイルが大きくなりすぎないようにし、アプリケーションによるリソースの占有を防ぎます。

DLLファイルのパスは、 Windowsオペレーティングシステムによって設定されます。パスは、地球環境変数(Global Environmental Variables)を使用して設定されます。デフォルトでは、アプリケーションがDLLファイルを要求すると、オペレーティングシステムはアプリケーションが保存されているのと同じフォルダーを調べます。そこに見つからない場合は、グローバル変数で設定されている他のフォルダーに移動します。パスには優先順位が付けられており、Windowsが(Windows)DLL(DLLs)を探すフォルダーを決定するのに役立ちます。これがDLLハイジャックの出番です。

DLLハイジャックとは

DLL(DLLs)は拡張機能であり、マシン上のほとんどすべてのアプリケーションを使用するために必要であるため、説明したように、DLLはコンピューターのさまざまなフォルダーに存在します。元のDLLファイルが悪意のあるコードを含む偽のDLLファイルに置き換えられた場合、それはDLLハイジャック(DLL Hijacking)と呼ばれます。

前述のように、オペレーティングシステムがDLLファイルを探す場所に関して優先順位があります。まず(First)、アプリケーションフォルダと同じフォルダを調べてから、オペレーティングシステムの環境変数によって設定された優先度に基づいて検索を行います。したがって、good.dllファイルがSysWOW64フォルダーにあり、誰かが(SysWOW64)SysWOW64フォルダーよりも優先度の高いフォルダーにbad.dllを配置した場合、オペレーティングシステムは、 DLLと同じ名前のbad.dllファイルを使用します。アプリケーションによって要求されました。RAMに入ると、ファイルに含まれている悪意のあるコードを実行し、コンピュータやネットワークを危険にさらす可能性があります。

DLLハイジャックを検出する方法

DLLのハイジャックを検出して防止する最も簡単な方法は、サードパーティのツールを使用することです。DLLのハッキングの試みを検出し、それを防ぐのに役立つ、いくつかの優れた無料ツールが市場に出回っています。

そのようなプログラムの1つがDLLHijackAuditorですが、32ビットアプリケーションのみをサポートします。コンピュータにインストールし、すべてのWindowsアプリケーションをスキャンして、すべてのアプリケーションがDLLハイジャックに対して脆弱であるかどうかを確認できます。インターフェースはシンプルでわかりやすいです。このアプリケーションの唯一の欠点は、64ビットアプリケーションをスキャンできないことです。

DLLハイジャック を検出する別のプログラムDLL_HIJACK_DETECTは、(DLL_HIJACK_DETECT,)GitHubから入手できます。このプログラムは、アプリケーションをチェックして、 DLL(DLL)ハイジャックに対して脆弱なアプリケーションがあるかどうかを確認します。そうである場合、プログラムはユーザーに通知します。アプリケーションにはx86とx64(x64)の2つのバージョンがあるため、それぞれを使用して32ビットと64ビットの両方のアプリケーションをそれぞれスキャンできます。

上記のプログラムは、Windowsプラットフォーム上のアプリケーションをスキャンして脆弱性を検出するだけであり、 DLLファイルの乗っ取りを実際に防ぐものではないことに注意してください。

DLLハイジャックを防ぐ方法

セキュリティシステムを強化する以外にできることはあまりないので、そもそもプログラマーがこの問題に取り組む必要があります。相対パスの代わりに、プログラマーが絶対パスの使用を開始すると、脆弱性が軽減されます。絶対パスを読み取ると、Windowsまたはその他のオペレーティングシステムはパスのシステム変数に依存せず、目的のDLLに直接アクセスするため、同じ名前の(DLL)DLLをより優先度の高いパスにロードする可能性がなくなります。この方法も、システムが危険にさらされ、サイバー犯罪者がDLLの正確なパスを知っている場合、元のDLLを偽のDLLに置き換えるため、フェイルプルーフで(DLL)あり(DLL)ませ(DLL)。これは、ファイルを上書きして、元のDLLが悪意のあるコードに変更されることを意味します。しかし、繰り返しになりますが、サイバー犯罪者は、 DLL(DLL)を呼び出すアプリケーションで言及されている正確な絶対パスを知る必要があります。このプロセスはサイバー犯罪者にとって困難であるため、信頼できます。

できることに戻って、セキュリティシステムをスケールアップしてWindowsシステム(secure your Windows system)のセキュリティを強化してみてください。優れたファイアウォール(firewall)を使用してください。可能であれば、ハードウェアファイアウォールを使用するか、ルーターファイアウォールをオンにします。誰かがあなたのコンピュータで遊んでいるかどうかを知るために、良い侵入検知システムを使用してください。

コンピュータのトラブルシューティングに興味がある場合は、セキュリティを強化するために次の手順を実行することもできます。

  1. リモートネットワーク共有からのDLLの読み込みを無効にする
  2. WebDAVからの(WebDAV)DLLファイルのロードを無効にする
  3. WebClientサービスを完全に無効にするか、手動に設定します
  4. (Block)TCPポート445および139は、コンピューターを危険にさらすために最もよく使用されるため、ブロックします。
  5. オペレーティングシステムとセキュリティソフトウェアに最新のアップデートをインストールします。

Microsoftは、 (Microsoft)DLLロードハイジャック攻撃をブロックするツールをリリースしました。このツールは、アプリケーションがDLL(DLL)ファイルからコードを安全にロードしないようにすることで、 DLLハイジャック攻撃のリスクを軽減します。

記事に何か追加したい場合は、以下にコメントしてください。(If you would like to add anything to the article, please comment below.)



About the author

私は Firefox と Google Docs の経験を持つ Web 開発者です。私はフロリダ大学で経営学の学位を取得しています。私のスキルには、Web サイト開発、コンテンツ管理システム (CMS)、データ分析、およびユーザー インターフェイス設計が含まれます。私は経験豊富なコンサルタントであり、チームが効果的な Web サイトとアプリケーションを構築するのを支援できます。



Related posts