
したがって、ユーザーはネットワーク設定GUIでDNSサーバー設定を見ることができませんでした。 さらに、システムがDHCPプロトコルを使用して設定を取得することも示します。 システムで同様の操作を実行する不要なアプリケーションは、 DNS Unlockerと呼ばれます 。
DNS Unlockerアプリケーションは、DNSサーバーのダミーアドレスを指すように、被害者のシステムのネットワーク設定を設定します。 Webブラウザーがgoogle-analytics.comの被害者にアクセスすると、偽のDNSサーバーがJavaScriptコンテンツが埋め込まれた悪意のあるアドレスを指します。 これは、DNS Unlocker Webページに挿入される広告がGoogle Analyticsに依存するようにするためです。 通常、DNS Unlockerがインストールされているユーザーには、Webページの下部に「Ads by DNSUnlocker」(図1)または他の多くのオプションに類似したもの(図2)が記載された広告が表示されます。

図 1. Webページに埋め込まれた広告コンテンツ。

図 2.ユーザーを脅かすフィッシングメッセージ。
Windowsの設定でDNSスプーフィングメカニズムを使用する悪意のあるソフトウェアは新しいものではありません。さらに、そのようなインスタンスは詳細なカバレッジに値しません。 ただし、DNS Unlockerの構成には、他の同様の例とは異なる興味深い機能があります。 これは、ユーザーが気付かないようにDNS設定を密かに変更するために使用されます。 ユーザーはコントロールパネルで新しいTCP / IPv4設定を見ることができません。これは静的DNSレコードのフィールドを担当します。 原則として、DNSサーバーアドレスを指定する場合、「次のDNSサーバーアドレスを使用する」フラグが設定されている場合、そのアドレスは「優先DNSサーバー」設定リストに表示されます。 さらに、ユーザーは「代替DNSサーバー」設定に注意を払うことができます。 DHCPを使用してDNSアドレスを取得する場合(ホームおよびオフィス環境のほとんどの構成で使用される)、「DNSサーバーアドレスを自動的に取得する」設定がアクティブになります。

図 3. TCP / IPv4のネットワーク設定と一般的な設定。
DNS Unlockerで使用される技術の特徴は、設定された静的DNSアドレスがネットワーク設定のリストに表示されないことです。さらに、ユーザーがDNSアドレスを自動的に受信することを示します。 ipconfig / allコマンドもDHCPの使用を示しますが、静的に設定されたDNSアドレスも表示します。 ただし、ipconfigツールを使用する場合、DHCPが使用されるネットワーク接続および静的アドレスを確立することはできません。 ネットワーク設定GUIは静的部分を表示せず、ユーザーにDHCPの使用を保証します。 以下では、これが発生する理由、つまり、静的エントリがネットワーク設定GUIに表示されない理由について質問します。
ネットワークインターフェイスの構成を担当するレジストリキーを検討してください。
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ Interfaces \
このレジストリキーは、ネットワークインターフェイスの設定をキャプチャします。各設定はGUIDで指定されます。 各ネットワークアダプタの設定セクションには、 DhcpNameServerおよびNameServerパラメータが含まれている場合があります 。 NameServerパラメーターは興味の対象です。 通常、静的DNSサーバー設定を設定する場合、コントロールパネルのネットワーク設定が使用されます(またはnetshコマンドが使用されます)。 この場合、サーバーの静的アドレスは、値要素の区切り記号として記号「、」とともにNameServerレジストリパラメーターに格納されます。
192.168.1.21,192.168.1.22
ここで、このパラメーターのアドレス区切り文字としてスペースが使用されている場合を考えます。
192.168.1.21 192.168.1.22
この小さな変更により、ネットワーク設定のGUIインターフェースから使用されるDNSサーバーのアドレスを非表示にすることができます。実際、そのうちの1つがメインであり、2つ目は追加であるためです。 ユーザーにとって、この事実は、ユーザーが訪問したWebサイトに埋め込まれた広告を受信することを意味します。
WindowsはプライマリおよびセカンダリDNSサーバーのアドレスが既に設定されていると考えているため、新しい値を設定するユーザーは、以下に示すように、既存の要素のリストの最後にのみ追加します。
192.168.1.21 192.168.1.22,208.67.222.123,208.67.220.123
Windowsでは、区切り文字として「、」文字が使用されていますが、最初の要素では引き続きスペースが使用されていることがわかります。
問題は、Windowsがシステムコンポーネントのこの動作を許可する理由です。 この質問に対する信頼できる答えはありません。 仮説は、 DhcpNameServerパラメーターが区切り文字としてスペースを含むリストを使用し、 NameServerがその動作をコピーするという仮定です。 さらに、TechNetのMicrosoft自身によると、 NameServerパラメーターが存在する場合、 DhcpNameServerよりも優先されます 。
NameServerの値が有効な場合、DhcpNameServerの値よりも優先されます。
ソース: technet.microsoft.com/en-us/library/cc962470.aspx
DhcpNameServerパラメーターの値には区切り文字としてスペース文字を使用できるため、 NameServerにも同様の文字を使用できます。 さらに、TechNetリソースは 、スペース文字を使用してNameServerパラメーター値の要素を区切ることができることを示しています 。 実際、レジストリ値のこのようなプロパティは標準ではなく、コントロールパネルのGUIはこの値を処理する方法を知りません。 コントロールパネルは、優先DNSサーバーと代替DNSサーバーの区切り文字としてコンマのみを使用します。 このレジストリ設定で動作する他のWindowsアプリケーションは、通常、スペースとして区切り文字として動作することに注意してください。 [TCP / IP詳細設定]タブの設定にも同じことが当てはまります。
最悪なことに、この機能は不要なアプリケーションによって使用され、ユーザーのDNSクエリを必要なリソースにリダイレクトします。 これは、ハイジャックDNS方法として使用され、ユーザーになりすましDNSサーバーでの作業を強制します。 ユーザーはコントロールパネルのネットワーク接続設定でそれらを見ることができないため、非表示と呼びます。
DNSハイジャックがわかったので、コントロールパネルのTCP / IPv4ネットワーク設定GUIの他の領域を見てみましょう。 [DNS]タブの[TCP / IPの詳細設定]ウィンドウに注目します。 タブの上部には、DNSサーバーの使用順序を決定するリストが含まれており、2つ以上のIPアドレスを使用するように指定できます。 各アドレスは、独自の個別の行を使用する必要があります。 DNSがインターセプトされて非表示になった場合、TCP / IP設定は次のようになります。

図 4. TCP / IPプロトコルの高度なDNS設定のタブ。区切り文字としてスペースを含むオプションを使用します。
上記のスクリーンショットの設定では、2つのアドレスがスペースで区切られて示されていることがわかります。 「追加...」ボタンをクリックしてスペースで区切られた2つのアドレスを追加しようとすると、システムは間違ったIPアドレスを示すエラーメッセージを表示します。 既に指定されている隠しアドレスに追加のDNSサーバーアドレスを追加しようとすると、TCP / IPプロパティタブのGUIインターフェイスに別の行として追加されます。

図 5.「非表示」レコードがすでにオンになっている場合、DNSサーバーのアドレスを手動で設定します。
幸いなことに、ユーザーはTCP / IP詳細設定ページの[DNS]タブで悪意のあるDNSエントリを削除できます。
MSRCはこの問題を認識しましたが、レジストリ値を変更するには管理者権限が必要であるため、脆弱性として分類しませんでした。 彼らはこの問題を他の開発チームに向け、将来のバージョンで修正をレビューしました。
おわりに
Windows自体はNameServerパラメータの値で正常に機能することに注意してください。NameServerパラメータでは、コンマの代わりにスペースが区切り文字として使用されます。 また、不要なアプリケーションはこの方法を使用して、システムのDNS設定を隠すことができます。 2015年12月以降、DNS Unlockerの使用で確認されており、Windows XP以降のすべてのWindows OSで動作します。 DNSハイジャック方式では、セミコロンも区切り文字として使用できますが、2016年5月31日現在、他の種類のマルウェアまたは不要なソフトウェアでこのオプションの使用を確認していません。
侵害インジケータ
DNS Unlockerの上記バージョンは、ESETによってMSIL / Adware.CloudGuard.Cとして検出されます。 次のIPアドレスを使用してDNSを偽装します。
- 203.131.145
- 203.131.150-199.203.131.152
- 163.142.2-82.163.142.7
- 163.142.66-82.163.142.70
- 163.142.130-82.163.142.189
- 163.143.131-82.163.143.190
- 211.158.129-95.211.158.135
- 211.158.145-95.211.158.151
次のIPアドレスは、Webページに広告を表示する悪意のあるJavaScriptコンテンツを注入するHTTPサーバーとして使用されます。
- 163.143.23-82.163.143.250
- 88.193.133-209.88.193.141
次のマルウェアサンプルでは、この手法を使用しています。
