DLLは(DLL)ダイナミックリンクライブラリ(Dynamic Link Libraries)の略で、 Windowsまたはその他のオペレーティングシステムで実行されるアプリケーションの外部部分です。ほとんどのアプリケーションはそれ自体では完全ではなく、コードを別のファイルに保存します。コードが必要な場合は、関連ファイルがメモリにロードされて使用されます。これにより、 RAM(RAM)の使用を最適化しながら、アプリケーションファイルのサイズを削減できます。この記事では、DLLハイジャック(DLL Hijacking)とは何か、およびそれを検出して防止する方法について説明します。
DLLファイル(Files)またはダイナミックリンクライブラリとは何ですか(Dynamic Link Libraries)
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)を使用してください。可能であれば、ハードウェアファイアウォールを使用するか、ルーターファイアウォールをオンにします。誰かがあなたのコンピュータで遊んでいるかどうかを知るために、良い侵入検知システムを使用してください。
コンピュータのトラブルシューティングに興味がある場合は、セキュリティを強化するために次の手順を実行することもできます。
- リモートネットワーク共有からのDLLの読み込みを無効にする
- WebDAVからの(WebDAV)DLLファイルのロードを無効にする
- WebClientサービスを完全に無効にするか、手動に設定します
- (Block)TCPポート445および139は、コンピューターを危険にさらすために最もよく使用されるため、ブロックします。
- オペレーティングシステムとセキュリティソフトウェアに最新のアップデートをインストールします。
Microsoftは、 (Microsoft)DLLロードハイジャック攻撃をブロックするツールをリリースしました。このツールは、アプリケーションがDLL(DLL)ファイルからコードを安全にロードしないようにすることで、 DLLハイジャック攻撃のリスクを軽減します。
記事に何か追加したい場合は、以下にコメントしてください。(If you would like to add anything to the article, please comment below.)
DLL Hijacking Vulnerability Attacks, Prevention & Detection
DLL stands for Dynamіc Link Libraries and are еxternal parts of apрlicatіonѕ that run on Windows or any other operаting system. Most applications are not complete in themselvеs and storе code іn different files. If thеre is a need for the code, the related filе is lоaded into memorу and used. This reduces application file size while optimizing the usage of RAM. Τhis artiсle explains what is DLL Hijacking and how to detect and prevent it.
What are DLL Files or Dynamic Link Libraries
DLL files are Dynamic Link Libraries and as evident by the name, are extensions of different applications. Any application we use may or may not use certain codes. Such codes are stored in different files and are invoked or loaded into RAM only when the related code is required. Thus, it saves an application file from becoming too big and to prevent resource hogging by the application.
The path for DLL files are set by the Windows operating system. The path is set using Global Environmental Variables. By default, if an application requests a DLL file, the operating system looks into the same folder in which the application is stored. If it is not found there, it goes to other folders as set by the global variables. There are priorities attached to paths and it helps Windows in determining what folders to look for the DLLs. This is where the DLL hijacking comes in.
What is DLL Hijacking
Since DLLs are extensions and necessary to using almost all applications on your machines, they are present on the computer in different folders as explained. If the original DLL file is replaced with a fake DLL file containing malicious code, it is known as DLL Hijacking.
As mentioned earlier, there are priorities as to where the operating system looks for DLL files. First, it looks into the same folder as the application folder and then goes searching, based on the priorities set by the environment variables of the operating system. Thus if a good.dll file is in SysWOW64 folder and someone places a bad.dll in a folder that has higher priority compared to SysWOW64 folder, the operating system will use the bad.dll file, as it has the same name as the DLL requested by the application. Once in RAM, it can execute the malicious code contained in the file and may compromise your computer or networks.
How to detect DLL Hijacking
The easiest method to detect and prevent DLL hijacking is to use third-party tools. There are some good free tools available in the market that helps in detecting a DLL hack attempt and prevent it.
One such program is DLL Hijack Auditor but it supports only 32-bit applications. You can install it on your computer and scan all your Windows applications to see what all applications are vulnerable to DLL hijack. The interface is simple and self-explanatory. The only drawback of this application is that you cannot scan 64-bit applications.
Another program, to detect DLL hijacking, DLL_HIJACK_DETECT, is available via GitHub. This program checks applications to see if any of them are vulnerable to DLL hijacking. If it is, the program informs the user. The application has two versions – x86 and x64 so that you can use each to scan both 32-bit and 64-bit applications respectively.
It should be noted that the above programs just scan the applications on the Windows platform for vulnerabilities and do not actually prevent the hijacking of DLL files.
How to prevent DLL Hijacking
The issue should be tackled by the programmers in the first place as there is not much you can do except to beef up your security systems. If instead of a relative path, programmers start using an absolute path, the vulnerability will be reduced. Reading the absolute path, the Windows or any other operating system will not depend on system variables for path and will go straight for the intended DLL, thereby dismissing the chances of loading the same name DLL in a higher priority path. This method too, is not fail-proof because if the system is compromised, and the cybercriminals know the exact path of DLL, they will replace the original DLL with the fake DLL. That would be overwriting the file so that the original DLL is changed into malicious code. But again, the cybercriminal will need to know the exact absolute path mentioned in the application that calls for the DLL. The process is tough for cybercriminals and hence can be counted upon.
Coming back to what you can do, just try to scale up your security systems to better secure your Windows system. Use a good firewall. If possible, use a hardware firewall or turn on the router firewall. Use good intrusion detection systems so that you know if anyone is trying to play with your computer.
If you are into troubleshooting computers, you may also perform the following to up your security:
- Disable DLL loading from remote network shares
- Disable loading of DLL files from WebDAV
- Disable WebClient service completely or set it to manual
- Block the TCP ports 445 and 139 as they are used most for compromising computers
- Install the latest updates to the operating system and security software.
Microsoft has released a tool to block DLL load hijacking attacks. This tool mitigates the risk of DLL hijacking attacks by preventing applications from insecurely loading code from DLL files.
If you would like to add anything to the article, please comment below.