orangeitems’s diary

クラウドではたらくエンジニアの日々の感想です。

アカマイ社「UPnProxy: Blackhat Proxyies via NAT Injections」を日本語で理解する

f:id:orangeitems:20180423141327j:plain

 

アカマイからルーター脆弱性の詳細が発表される

家庭用ルーターの脆弱性の件は記憶に新しいのですが、CDNで大きなシェアを持つアカマイ・テクノロジーズがその詳細をホワイトペーパーにまとめました。

forbesjapan.com

世界有数のクラウドセキュリティ企業「アカマイ」の研究チームによると、サイバー犯罪者たちはルーターの一般的な機能であるUPnP(ユニバーサル・プラグ・アンド・プレイ)を悪用しているという。

詳しい情報についてはアカマイの原文を読み解いたほうが良いと思います。

UPnProxy: Blackhat Proxyies via NAT Injections

英文のため日本人に拡散しにくいと思いましたので、日本語にしていきたいと思います。アカマイより日本語でのドキュメントが今後出てきましたら、そちらを原文としてお考えください。インターネットの安全性を揺るがす問題であり、本内容が周知されることは公益性の高い内容と考えています。

※アカマイ・テクノロジー社の調査および報告に感謝いたします。

 

文書の内容(日本語)

概説

UPnPは、10年に渡ってコンシューマー機器で幅広く実装・利用されている、欠陥のあるプロトコルです。本文書ではこのプロトコルの欠陥がまだ存在していて、どのように悪用され、将来的にDDoSやアカウント漏えい、マルウェアの流通につながっていくかを解説します。

読者は、攻撃者のトラフィックを隠蔽するために利用されている現在も利用されている方法であることを理解しなければいけません。このトラフィックの発信元のロケーションは、脆弱なデバイスをプロキシとして使用します。

キャリアやISPは、1つまたは複数の侵害されたルーターが責任範囲のレイヤーの背後にいる場合、エンドユーザーやお客様が、攻撃用のコンテンツやソースをホストしているように見えることがあることを理解しなければいけません。

捜査関係者は、他の種類のプロキシと同様に、UPnProxyが犯罪者からのトラフィックを難読化する別のレイヤーとして追加されることで、仕事をより困難にする可能性があることに注意する必要があります。

 

UPnP: それは何のためのものですか?

UPnPは、デバイスとサービスの発見とコンシューマデバイスとネットワークの構成を容易にするために設計されたプロトコルです。これは、LAN上のデバイスがローカルネットワーク上の他のデバイスに自動的にサービスと機能を公開できるように設計されています。これらのサービスは実装とデバイスによって異なりますが、UPnPの一般的かつ重要な役割の1つは、NATによるネットワーキング環境内でのポートのオープン/フォワーディングの自動ネゴシエーションと設定です。これにより、ネットワーク上のデバイスがポートを開いて、ネットワーク内外へのトラフィックのルーティングを迅速化できます。この機能セットは、家庭のルータで実装されることが多く、メディアや
パフォーマンスを向上させ、ユーザーの利便性を向上させることができます。

※注 PS4やPCのオンラインゲームなどで利用されることが多いと聞いています。

 

何が悪影響をもたらしている?

2006年に、Armyn Hemel氏は、一部のUPnP実装がWANおよびLANネットワークインターフェイスを介したネットワークセグメンテーションを適切に処理していないことを発見しました。 5年後(2011年)、Daniel Garciaは自分の発見を発表し、ユーザーがこの脆弱性を悪用できるようにDEFCON 19でツールセットをリリースしました。彼のツールセットはリモートユーザーがWANインターフェイスを介してリモートデバイスにNATルールをインジェクションすることを可能にしました。Rapid 7は、2013年にこれらのデバイスを識別するために一連のインターネットスキャンを実施しました。これらのスキャンでは、ベンダー、モデル、および全体的な脅威の状況を識別するために、デバイスによって漏洩された情報が使用されていました。最終的に、Rapid 7は1,500以上のベンダーの数千ものモデルを網羅した、インターネット上の脆弱なデバイスを8,000万件発見しました

Akamaiの顧客に対する攻撃の参加者として検出されたUPnP対応デバイスの調査中に、一部のデバイスが他のデバイスよりもこの脆弱性の影響を受けやすく、悪意のあるNATインジェクションを含むことが判明しました。これらのインジェクションは、無作為で見つかったいくつかのデバイスに存在し、組織化された広範な悪用キャンペーンの一部であるように見えました。

 

どのようにNATインジェクションは動く?

NATインジェクションにつながる脆弱性を簡単に説明するならば、LANでのみ利用されることを想定した信頼のあるデバイスを、これらの機器のWANインターフェースに公開することを意味します。これらの公開されたサービスを使用すると、攻撃者はNATエントリをリモートデバイスに注入することができ、場合によってはルータの背後にあるマシンを公開する一方、他のケースではインターネット経由のホストをNATテーブルにインジェクションします。

 

 簡単な例:

この脆弱性を悪用するために必要な情報は、SSDPプローブの応答で最初に漏洩します。攻撃者は、Locationヘッダーを使用して、TCPが可能なUPnPデーモンとの通信に必要な詳細情報を取得できます。詳細に言えば、このデーモンがリスニングしているポートと、デバイスの詳細とサービスの提供を示すパスが含まれます。

攻撃者は、LANスコープのIPではなく公開されているIPアドレスを使用するように提示されたURLを変更することにより、UPnPデーモンとの通信を開始することができます。

※図1:実例については原文を参照ください。

変更後、URLを訪問すると、提供されるサービスに関する情報を取得するための追加URLを含め、デバイス自体に関する詳細が漏洩するXMLファイルが生成されます。

※図2:実例については原文を参照ください。

デバイスがインジェクションに対して脆弱である場合、単純なSOAP / XMLペイロードを悪意のあるNATエントリを挿入するために攻撃者が作成することができます。

※図3:実例については原文を参照ください。

脆弱なデバイスに対してペイロードを使用するには、前の手順で漏れたURLに向けられたSOAPペイロードを利用して、以下のCurlでもできる簡単なPOSTリクエストを作成する必要があります。

※図4:実例については原文を参照ください。

 

 LANを晒す:

以下では、インジェクションが発生した前後のリモートデバイス上のポートスキャンを示します。ポート5555はランダムに選ばれました。外部ポートは攻撃者によって制御され、1,025〜65,535の範囲内の任意の場所に設定できます。

>図5:実例については原文を参照ください。

これらの手順が完了すると、リモートデバイス上のTCPポート5555に移動すると、ルータの管理インターフェイスへのユーザ名とパスワードのログインプロンプトが表示されます。

f:id:orangeitems:20180423115556p:plain

※図6 原文より引用

※図7:実例については原文を参照ください。


これは、デフォルトまたは弱い資格情報(※デフォルトのID/PASSWORDなど)を引き続き利用するデバイスにとって重大な懸念を表しています。さらに、これらのデバイスは、レート制限またはアラートを利用していないようで、管理者アカウントに対するブルートフォース攻撃のための熟達したターゲットを残しています。

※注 これはつまり、管理画面に無理矢理入りたい攻撃者が、ルーターに対してブルートフォースなどパスワードハッキングの手法をいくらやっても、ルータ機器では何の対策もしていないので攻撃を受け放題になり、最終的にパスワードが漏えいしてしまうということを指していると思います。

 

 UPnProxyを作る

この種のインジェクションとLANインジェクションの主な違いは、NATエントリが指している場所です。前の例では、IP 192.168.0.1を使用してLANとルータ自体を指していましたが、プロキシインジェクションはLAN外のマシンを単に指しています。

f:id:orangeitems:20180423120146p:plain

※図8 原文より引用

インジェクションの方法は以前示したステップと同じですが、SOAPペイロード自体に加えられた変更のみです。図9は、何千もの既存のインジェクションで無作為に発見されたホストを強調しています。

※図9:実例については原文を参照ください。

この例では、アクターは、2つの別々のNATエントリを2つの異なるAkamai CDNサーバーへのプロキシトラフィックにインジェクションしました。最初の注入はポート44981でTCPトラフィックを受け入れ、ポート443で23.73.84.101にプロキシしました。2回目の注入はポート47296でTCPトラフィックを受け入れ、ポート80で209.8.115.80までプロキシしました。デバイスをAkamaiプラットフォームへのHTTP(S)プロキシとして活用できることをテストし、確認します。

※図10:実例については原文を参照ください。

影響を受けたデバイスがAkamaiプラットフォームへのリクエストを正常にプロキシしていたことは明らかですが、最初にテストされたプロパティはHTTPS接続を強制するように設定されていました。このNATエントリを使用してHTTPSを使用しようとすると、暗号化された要求を暗号化されたトラフィックとして処理するように正しく設定されていないAkamaiサーバのポート80にルーティングするため、接続は失敗します。 Hostヘッダーが標準のHTTPサービスを使用するホストに変更されたとき、要求されたサイトは正常に返されました。

※図11:実例については原文を参照ください。

通信するデバイスのポートが47296(リモートポート80)から44981(リモートポート443)に変更された場合、HTTPS接続と要求は適切に暗号化され、プロキシされ、CDNエンドポイントによって処理されました。ブラウザでは、この結果、エンドユーザーの証明書の警告が表示されますが、要求に対して適切なHTTPS暗号化を使用しながら機能します。

※図12:実例については原文を参照ください。

 

 バーチャルホスト/ドメインとそのテクニックが動作する理由

仮想ホスト/ドメイン・フロントニングにより、単一のサーバーで複数のプロパティーを処理できます。これは、要求のHostヘッダーを解析し、それに応じてサーバーのアプリケーションレイヤー内でルーティングします。 AkamaiおよびほとんどのCDNの場合、これはサーバーが顧客の指示に従って一般的なリソースをキャッシュして提供することを可能にするリンチピン技術です。

f:id:orangeitems:20180423121329p:plain

※図13 原文より引用

プロキシインジェクションの例では、同じサーバーがまだ実行されていますが、中央のルータ~または一連のルータ~は追加のプロキシレイヤとして機能します。

f:id:orangeitems:20180423121903p:plain

※図14 原文より引用

 

たくさんのUPnPProxy

 最初のインターネットワイドスキャンでは、480万台を超えるデバイスが、単純なUDP SSDP(UPnPのUDP部分)の照会に対して脆弱であることが判明しました。これらのうち、約765,000(全体の16%)が脆弱なTCP実装を公開していることが確認されました。これらの脆弱なデバイスのうち、65,000を超える(脆弱性の9%、全体の1.3%)、NATインジェクションが検出されました。ここで、少なくとも1つのNewInternalClientのインスタンスがインターネットルーティング可能なIPを指していました。

インジェクションされたNATエントリは、通常、さまざまなデバイス間のセットで動作することが判明しました。少なくとも一回のインジェクションがあったところで、複数のインジェクションを見たことがあります。これらの組み合わせは、異なるデバイス群を超えて塊で見ることができます。65,000台のデバイス全体にわたって、17,599の一意のエンドポイントIPアドレスが検出されました。これらのデバイスは、多くの場合、1台のマシン上の複数の一般公開ポートに1つのIPをインジェクションしていました。最も識別されたIPは、23,286個のデバイスにわたって1,880万回以上インジェクションされています。 2番目にインジェクションされたIPは、59,943個のデバイスにわたって1,100万回を超えていました。

これらのインジェクションは、インターネットの周りの複数のサービスとサーバーを指し示すように見えました。大部分の注入は、TCPポート53(DNSの場合15.9M)、80(HTTPの場合9.5M)、および443(HTTPSの場合は155K)を対象としています。

※注 15.9M、9.5Mなどの数字は、見つかった件数だと思われます。

 

どのように使用されていますか?

これは多目的プロキシボットネットであり、さまざまな目的でさまざまなユーザーがこの脆弱性を利用しているようです。この脆弱性を悪用している人々が何をしているかを証明することは困難ですが、収集されたデータの受動的な分析、傾向に基づいて実際の使用方法や潜在的な使用方法を推測することができます。

 

 検閲をすり抜ける

明白な最初のユースケースは、検閲の努力を迂回するためのケースでした。数百万のユニークな住宅IPと世界中のポートの組み合わせを介して暗号化されているTCP接続を介して、無制限のDNSとCDNサーバーを照会する機能を提供する、広く分散されたプロキシネットワークを構築しています。 

f:id:orangeitems:20180423124428p:plain

※図15 原文より引用

 

 スパム、フィッシング

スパム活動がこれらの代理を利用していたことを示唆するいくつかのケースが発見されました。メールサーバーがTCPポート25(SMTP)でプロキシされているエンドポイントであった場所で、425個以上のデバイスで450以上のインスタンスが検出されました。

 

 アフィリエイト・クリックフラウド(アドフラウド)

インジェクションされたIPに関する受動的なDNS分析を行っている間に我々が気付いた1つの傾向は、プロキシエンドポイント内にかなりの数のオンライン広告ネットワークIPが存在することでした。私たちの理論は、代理店ネットワークビルダーや有料クリックサービスを探しているブラックハットの関連会社の利益を生み出すために、これらがクリック詐欺に巻き込まれているというものです。この手法を使用すると、単一のユーザーが、プロキシサービスに関連付けられていない複数の地理的な場所や居住用のIPスペースから簡単に発信されるように見えることがあります。これは、広告/アフィリエイトネットワーク事業者の不正チームによる検出を避けるのに役立ちます。

※注 これは漫画村のとき(NHKのプロジェクト現代+)に紹介され大きな話題になっていましたね。

 

 アカウント乗っ取り、クレジットカード詐欺

アカウントの引き継ぎとクレジットカードによる不正行為のキャンペーンでは、すでにブラックハットや公的なプロキシネットワークを使って活動を分散し、難読化しています。地理的フットプリントとクリーンな履歴を持ち、口座資格情報をテストし、不正なクレジットカード取引を試みる765,000を超える住宅のエンドポイントをいかに活用するかは、サイト運営者、金融機関、違反の犠牲者、または個人情報の盗難となります。

  

DDoS

これらのデバイスは、TCPベースのDDoS攻撃とUDPベースのDDoS攻撃の両方をより適切に分散して難読化するために活用することができます。レイヤ7をターゲットとするTCP攻撃では、これらのデバイスを使用してボットネットエンドポイントを隠すか、攻撃者の分散フットプリントを増やすことができます。 UDPの意味は、あらゆる方法の難読化と攻撃トラフィックの分散を可能にする可能性があります。

UDPコンポーネントは任意のポートとIPで指し示すことができるため、攻撃者は反射/増幅されたサービスエンドポイントを持つUPnProxyの脆弱なデバイスをロードする可能性があります。この手法は、memcached、DNS、CLDAP、およびその他のよく知られている増幅ベクトルをプロキシするために使用できます。

これらの機能により、攻撃者は一握りのリフレクターでも数十万または数十万個の固有エンドポイントに見えるものに変えることができます。典型的には、リフレクト攻撃の場合、緩和の容易な手段は、サービスに関連するソースポートにリフレクトさせることです。この場合、反映された攻撃は同じ帯域幅のパンチをパックできます。しかし、送信元ポートは攻撃者によって制御されているでしょうか。したがって信頼できません。被害者にとっては、奇妙なソースポートや住宅IPスペースから脆弱なサービスを実行している数千ものユニークなリフレクタが攻撃に参加しているため、軽減の努力がさらに複雑になっているようです。

 

 ボットネット

この手法は、ブルートフォースやデバイステイクオーバーの対象となるHTTP(admin)、SSH、Telnetなどの追加サービスを公開するために使用できます。これらの懸念事項は、公開されて公開されている弱いパスワードのTelnetサービスの裏にMiraiが構築された世界では理論どおりのものとは限りません。さらに、この種のコンシューマデバイスでは、多くの悪用可能なHTTPスタックが検出されています。その中には、管理者アクセスに関連したベンダー提供のバックドアが装備されているものがあります。攻撃者にこれらのサービスを公開し通信する能力を与えることは、デバイスのセキュリティにとって深刻な脅威となり、ボットネットの構築を可能にする可能性があります。

 

 コンテンツ/マルウェアのディストリビューションおよび通信

この技術を使えば、マルウェアやその他の疑わしいコンテンツの配布を目的とする配信サーバーの実際の場所を特定することが難しくなります。マルウェアキャンペーンは、これらのプロキシを簡単に活用して、C2通信とペイロード配信の真のオリジンを隠すことができます。

シマンテックの研究者は、「インセプションフレームワーク」とその背後にあるAPTグループの継続的な調査の結果、このプロキシネットワークの一部を発見しました。シマンテックの調査の場合、このグループは、連鎖UPnProxyインスタンスを使用して事業者の実際の場所を難読化していました。

グループは、別の脆弱なデバイスのTCPデーモンを指すTCPプロキシエントリを挿入します。彼らは、このインジェクションを使用して、追加のプロキシパスを挿入します。通常は、インジェクションを受けたさらに脆弱なデバイスを指しています。これにより、グループは、ファイル/マルウェア管理の目的で、実際の場所を公開することなく、クラウドストレージインフラストラクチャと対話することができました。次の図は、シマンテックの研究者が、これらのプロキシがキャンペーンでどのように使用されたかを示すために提供されたものです。

f:id:orangeitems:20180423133035p:plain

※図16 原文より引用

 

UPnPProxy チェーン

シマンテックの調査を使用し、「インセプションフレームワーク」APTグループに関して、我々は脆弱なデバイス間の関係を分析するためにより多くの時間を費やしました。我々は、データセットに2つの別々の高度に結合されたプロキシのクラスタが存在することを発見しました。

※図17:実例については原文を参照ください。

図17は、UPnProxyの脆弱なシステム間の関係のみを示しています。表された各ノードは、別の脆弱なノードを指し示す少なくとも1つのインジェクションを有することが分かっているノードである。ノードサイズは、各ノードに含まれるプロキシパスの数に基づいてスケーリングされ、他の脆弱なノードを指します。換言すれば、より大きなバブルは、より多くの注入経路を意味する。連鎖ノードの2つの異なるネットワークが存在し、おそらく偶然の重複があることは明らかです。

2つのクラスタを比較すると、上のクラスタがより均等に分散され、多数のより大きな外部ノードが、中間の多数のより小さいノードを指す関係を有します。これと比較すると、内部ノードは非常に小さく、アウトバウンドルートが少なくなっています。これは、最終的な目的地にチェーンを出る前に、最終的なホップになっているためです。

対照的に、下のクラスターは非常に異なる戦略を演じています。 2番目のクラスターには、外向きの中規模ノードと小規模ノードのはるかに大きなコレクションにルーティングする重要なエントリポイントがいくつか組み込まれているようです。これらのチェーンは、ディストリビューションに集中しにくく、できるだけ多くのエンドポイントにあなたを連れて行くことができるオプション豊富な最初のホップを持つことに重点を置いています。このオプションを使用すると、プロキシチェーンの出口ノードには多くのオプションがあるため、発信元IPへのトラフィックを追跡するのが難しくなる可能性があります。

これらのチェーンが「インセプションフレームワーク」を担当するAPTグループによってどのように活用されたかについては、シマンテックのブログ「インセプションフレームワークの隠れたプロキシ」を参照してください

 

私が影響しているかどうかどうやってわかる?

デバイスがUPnProxyingキャンペーンのために積極的に利用されている場合、エンドユーザーにUPnProxyingが発生しているという兆候はありません。 UPnP、NAT、およびコンシューマデバイスの自動性のため、これらのルールは人間によって維持されることを意図したものではありません。これは、人間がデバイス上でそれらを監査または修正するための容易な方法がないことを意味します。これらのパケットは受信され、影響を受けるデバイス上のWANインターフェイスからルーティングされるため、(NATエントリをあなたのLANにピボットするためにNATエントリを侵入しない限り)内部ネットワーク全体には何も起こりません。

デバイスが脆弱であるかUPnProxyingのために活発に活用されているかを特定する最も良い方法は、エンドポイントをスキャンしてNATテーブルエントリを監査することです。このプロセスを支援するために、多言語で利用可能なフレームワークとライブラリがいくつかあります。以下は、この研究で使用される単純なbashスクリプトです。デバイスの公開TCPデーモンから最初の1000個のUPnP NATエントリをダンプしようと試みることにより、脆弱性が疑われるエンドポイントをテストすることができます。

※図18:実例については原文を参照ください。

※図19:実例については原文を参照ください。

図19は、NewInternalClientのIPアドレスがインターネットでルーティング可能であり、このデバイスがUPnProxyネットワークで能動的に役割を果たすためにステージングされていることを示しています。

 

影響を受けるのは何のデバイスですか?

幅広いデバイスが影響を受け、そのほとんどがコンシューマーグレードのネットワークハードウェアです。製造元のリストを、漏洩TCPデーモンからの情報に基づいて特定されたモデルと一緒に、この文書の最後にまとめています。それは73ブランド/メーカーと400近いモデルをカバーしています。間違いなく、これらの脆弱なUPnP実装の影響を受けるメーカーとデバイスが増えています。このリストは、われわれが明確に特定できるデバイスのみで構成されています。

 

どうやって修正すればいい?

デバイスがこの脆弱性の影響を受ける場合、緩和のオプションはごくわずかです。

最初は、この種の攻撃に対して脆弱でないことを確認した他のものでデバイスを置き換えることです。

デバイスの交換がオプションでない場合、通常はデバイス上でUPnPサービスを無効にすることができます。ただし、ゲームやメディアストリーミングなど、ネットワークの他の領域に影響を与える可能性があります。

これらのオプションがどちらも機能しない場合、影響を受けるデバイスの前にファイアウォールを展開し、UDPポート1900へのすべての受信トラフィックをブロックすることで、TCPデーモンの検出を可能にする情報漏洩を防止します。

あなたのデバイスが既に侵害されている場合、これは引き続きプロキシのインジェクションとプロキシの使用を許可します。これらの(NATテーブルへの)インジェクションを手動で削除すると、プロキシの使用は停止しますが、将来のインジェクションが行われるのを防ぐことはできません。

 

まとめ

UPnProxyの脆弱性は、私たちが最近見た多くの問題のように、認証されていないサービスが公のインターネットに公開されることは決してありませんでした。攻撃者は、UPnPに関する既知の問題のいくつかの側面を取り上げ、それらを組み合わせてトラフィックを隠す強力なプロキシネットワークを構築しました。これは、攻撃者がコンピュータを引き継ぐことを可能にするリモートエクスプロイトでも、DDoSに対する新しいリフレクションベクターでもありませんが、トラフィックの原点をどのように隠すことができるかという点で依然として重大な懸念事項です。

エンドユーザーはこのような脆弱性を単独で検出することはできません。調査では、ルータ経由でトラフィックが終了しているため、罪のない人に誤って責任を割り当てる可能性があります。メーカーは、外部インターフェイスでUPnPなどのプロトコルを有効にすることを止める必要があります。この問題が発見されてから10年以上が経過した後も、コンシューマ向けデバイスに悩まされ続けています。また、通信事業者やISPは、信頼できるLANの使用がネットワークを横切ることを意図したプロトコルを許可する必要があるかどうかを検討する必要があります。

基本的なセキュリティモデルに従っている場合、これらの問題が存在する理由はありません。

 

影響を受ける製造者/モデル

原文をご確認ください。

 

内容を読んでみての感想

理屈はわかりました。UPnPの実装に不備があり、UDPをWAN側から受け付けてしまうということが始まりです。そこから管理画面のアドレスをPROXYされ、WAN側からデフォルトのID/PASSWORDであればすぐには入れてしまうこと。そして、WAN側にNATを設定されてしまい、秘匿性の高いプロキシネットワークを形成してしまっていることがわかりました。

とりあえずUPnPはオフにしなければいけないのですが、すでに乗っ取られている場合はNATテーブルに余計なものが書かれているので消さなければいけないんですね。UPnPをオフにしたりファームウェアをアップデートしたりしてホッとしている人も多いように感じました。NATテーブルを見るなんて普通やりませんものね。

ぜひ、上記の内容をご理解の上、ご対処ください。