DLL はダイナミック リンク ライブラリの略で、Windows またはその他のオペレーティング システム上で実行されるアプリケーションの外部部分です。ほとんどのアプリケーションはそれ自体では完成しておらず、コードを別のファイルに保存します。コードが必要な場合は、関連ファイルがメモリにロードされて使用されます。これにより、RAM の使用が最適化されながら、アプリケーションのファイル サイズが削減されます。この記事では、DLLハイジャックそしてそれを検出して防ぐ方法。
DLL ファイルまたはダイナミック リンク ライブラリとは何ですか
DLL ファイルはダイナミック リンク ライブラリであり、名前から明らかなように、さまざまなアプリケーションの拡張機能です。当社が使用するアプリケーションは、特定のコードを使用する場合と使用しない場合があります。このようなコードは別のファイルに保存され、関連するコードが必要な場合にのみ呼び出されるか、RAM にロードされます。したがって、アプリケーション ファイルが大きくなりすぎるのを防ぎ、アプリケーションによるリソースの占有を防ぎます。
DLL ファイルのパスは Windows オペレーティング システムによって設定されます。パスはグローバル環境変数を使用して設定されます。デフォルトでは、アプリケーションが DLL ファイルを要求すると、オペレーティング システムはアプリケーションが保存されているのと同じフォルダーを調べます。そこに見つからない場合は、グローバル変数で設定された他のフォルダーに移動します。パスには優先順位があり、Windows が DLL を探すフォルダーを決定するのに役立ちます。ここでDLLハイジャックが登場します。
DLLハイジャックとは何ですか
DLL は拡張機能であり、マシン上のほぼすべてのアプリケーションを使用するために必要なため、説明したように、DLL はコンピュータ上の別のフォルダに存在します。元の DLL ファイルが、悪意のあるコードを含む偽の DLL ファイルに置き換えられる場合、これは次のように呼ばれます。DLLハイジャック。
前述したように、オペレーティング システムが DLL ファイルを検索する場所には優先順位があります。まず、アプリケーション フォルダーと同じフォルダーを調べ、次にオペレーティング システムの環境変数によって設定された優先順位に基づいて検索を開始します。したがって、good.dll ファイルが SysWOW64 フォルダーにあり、誰かが SysWOW64 フォルダーと比較して優先度の高いフォルダーに bad.dll ファイルを配置した場合、オペレーティング システムは、DLL と同じ名前を持つ bad.dll ファイルを使用します。アプリケーションによって要求されました。 RAM に侵入すると、ファイルに含まれる悪意のあるコードが実行され、コンピュータやネットワークが侵害される可能性があります。
DLL ハイジャックを検出する方法
DLL ハイジャックを検出して防止する最も簡単な方法は、サードパーティのツールを使用することです。 DLL ハッキングの試みを検出し、防止するのに役立つ優れた無料ツールが市場で入手可能です。
そのようなプログラムの 1 つが、DLL ハイジャック監査人ただし、32 ビット アプリケーションのみをサポートします。これをコンピュータにインストールし、すべての Windows アプリケーションをスキャンして、すべてのアプリケーションが DLL ハイジャックに対して脆弱であることを確認できます。インターフェースはシンプルで一目瞭然です。このアプリケーションの唯一の欠点は、64 ビット アプリケーションをスキャンできないことです。
DLLハイジャックを検出するための別のプログラム、DLL_HIJACK_DETECT、GitHub 経由で入手できます。このプログラムはアプリケーションをチェックして、DLL ハイジャックに対して脆弱なアプリケーションがないかどうかを確認します。存在する場合、プログラムはユーザーに通知します。このアプリケーションには x86 と x64 の 2 つのバージョンがあり、それぞれを使用して 32 ビット アプリケーションと 64 ビット アプリケーションの両方をスキャンできます。
上記のプログラムは、Windows プラットフォーム上のアプリケーションをスキャンするだけであることに注意してください。脆弱性DLL ファイルのハイジャックを実際に防止するものではありません。
DLLハイジャックを防ぐ方法
セキュリティ システムを強化する以外にできることはあまりないため、この問題は最初にプログラマが取り組む必要があります。プログラマが相対パスの代わりに絶対パスを使用し始めると、脆弱性は軽減されます。絶対パスを読み取ると、Windows またはその他のオペレーティング システムはパスのシステム変数に依存せず、目的の DLL に直接アクセスするため、同じ名前の DLL を優先度の高いパスに読み込む可能性が排除されます。この方法も確実ではありません。システムが侵害され、サイバー犯罪者が DLL の正確なパスを知っている場合、元の DLL を偽の DLL に置き換えるからです。これは、ファイルを上書きして、元の DLL を悪意のあるコードに変更することになります。ただし、繰り返しになりますが、サイバー犯罪者は、DLL を呼び出すアプリケーションで言及されている正確な絶対パスを知る必要があります。このプロセスはサイバー犯罪者にとって困難であるため、信頼できます。
できることの話に戻って、セキュリティ システムをより良いものにスケールアップしてみてください。Windows システムを保護する。良いものを使いましょうファイアウォール。可能であれば、ハードウェア ファイアウォールを使用するか、ルーターのファイアウォールをオンにしてください。上手に使おう侵入検知システムこれにより、誰かがあなたのコンピュータをいじろうとしているかどうかを知ることができます。
コンピュータのトラブルシューティングに興味がある場合は、セキュリティを強化するために次のことを実行することもできます。
- リモートネットワーク共有からの DLL ロードを無効にする
- WebDAV からの DLL ファイルのロードを無効にする
- WebClient サービスを完全に無効にするか、手動に設定します
- TCP ポート 445 および 139 は、コンピュータの侵害に最もよく使用されるためブロックします。
- オペレーティング システムとセキュリティ ソフトウェアの最新のアップデートをインストールします。
マイクロソフトDLL 負荷ハイジャック攻撃をブロックするツールをリリースしました。このツールは、アプリケーションが DLL ファイルからコードを安全にロードしないようにすることで、DLL ハイジャック攻撃のリスクを軽減します。
記事に何か追加したい場合は、以下にコメントしてください。