Miraiのワーム型亜種の活動が活発化

一連の新しいログイン / パスワード攻撃をZyXELデバイスに対して仕掛けるAkumaマルウェアの新たな脅威が発見されたばかりですが、FortiGuard Labsでは先週から、52869と37215という珍しいTCPポートをスキャンする活動が検知されるようになりました。我々や他の脅威研究チームがすぐに考えたのは、これらの活動に何らかの関連性があるのではないか、新しいボットネットが存在するのではないかということでした。

そして、この活動を調査した結果、作成者によってSatoriあるいは「Okiru」と命名された新たなボットネットの存在が明らかになりました。日本語の「起きる」に由来するOkiruが我々のレーダーで初めて検知されたのは2017年10月でしたが、ワームの機能が追加されたことで、12月第1週にその活動が活発化しました。本レポートでは、この新たなボットネットに関する我々の分析を詳しく解説します。

免責事項:以下の分析は、2017年12月5日に発見されたファイル「okiru.x86」(dd6e5607f137b6536097670a1211b4e20821ca136e2db26529948ff0a48555ff)に基づくものです。


このボットネットは、2つの異なるエクスプロイトをコードに埋め込むことで、自らが増殖する能力を身に着けており、脆弱性が存在するデバイスをスキャンして、そのデバイスを感染させます。

それでは早速、詳しい分析に入ることにしましょう。

他の研究者がすでに発表しているように、Okiruで使われている1つ目のエクスプロイトはCVE-2014-8361と関連性のあるもので、この脆弱性は、2015年4月に発表されたものです。具体的には、Realtek SDKとminiigdデーモンを使用するデバイスに、UPnP SOAPインタフェースのOSコマンドインジェクション攻撃に対する脆弱性が存在します。

図1:Realtekエクスプロイトのソースコード

上記のソースコードからわかるように、この脆弱性はUPnP IGD(Internet Gateway Device)の実装に存在するものです。具体的には、SOAPを使ってXMLで表記した不正コントロールメッセージを利用して関数コールをトリガーするものであり、これが、リモートプロシージャコールと同等の機能を果たすことになります。

この例では、サービス「WANIPConnection:1」によってエクスポーズされるSOAPアクション「AddPortMapping」が複数のパラメータを受け付け、パラメータの1つであるNewInternalClientでトラフィックのリダイレクト先であるLANのIPアドレスが指定されます。

ところが、上記のコードに含まれているのは以下の値です。

バッククォートはOSコマンドのインジェクションに使用されるものです。そして、この「wget」コマンドは、不正ペイロードをダウンロードしてファイル名 「c」としてデバイスに保存するHTTP要求を実行するためのものです。次に、同様のSOAP要求が実行されますが、ここではコマンドインジェクションが変更されており、この要求によってペイロードが実行されます。

ISCのポートページによると、12月4日以降にそのポートに対するスキャンが急増しており、このバックグラウンドノイズはOkiruによるものであると考えて間違いないでしょう。

図2:ISCのポート52869の活動

この脆弱性は何年も前に公開されたものですが、我々のこれまでの経験から判断すると、影響を受けたデバイスの多くは、パッチが適用されていないものであるか、最悪の場合、パッチを適用できないデバイスである可能性もあります。Shodanを使った簡易調査で、少なくとも13,000のデバイスに潜在的な脆弱性が存在する可能性があることがわかったため、我々のこの推測が裏付けられたことになります。

図3:ポート52869に対するスキャンの分布を示すShodanの世界地図

この分析から、この攻撃の標的になっている上位3ヶ国が、台湾(33%)、ウクライナ(17%)、日本(14%)であることがわかりました。


この攻撃はどの程度の脅威なのか

現段階で最初のOkiruの攻撃ベクトルは想定どおりには動作しておらず、一定数のネットワークのバックグラウンドノイズが生成されているだけだと我々は見ています。最初に、要求URI(Uniform Resource Identifier)がUPnPディスカバリプロトコルを使ってアドバタイズされ(正しくは「/picsdesc.xml」であり、この例はタイプミス)、これによって、デバイスのXML記述が返されます。ただし、この例の場合は、この要求が「HTTP 404 page not found」エラーになります。また、そのURIがコントロールURLとして使用されることになりますが、これも、WANIPConnection:1サービスのコントロールポイントとなるように定義されていません。したがって、このサービスへのSOAP要求が失敗することになるでしょう。

今回の新しいワーム攻撃について見ると、ポート37215の異常なトラフィック(ISCのポートページの統計を参照)によって、いくつかのアラームが発生しています。

図4:ISCのポート37215の活動

上図を見ると、ポート37215と前述のポート52869でトラフィックが突出している時期が完全に重なっているのがわかります。これらの活動に関連性があると考えて間違いないでしょう。12月5日にソース数がほぼ15万に達していますが、このポートにこれほどの負荷が集中するのは極めて稀なことです。我々は、これらのデバイスが、Okiruのワーム機能ではなく、クレデンシャルスタッフィングに感染したのではないかと見ています。

全体像を把握するため、我々は、Shodanを使ってデバイスのフィンガープリントを調べることにしました。

図5:ポート37215に対するスキャンの分布を示すShodanの世界地図

この分析から、約250,000のデバイスに潜在的な脆弱性が存在する可能性があることがわかりました。これらの中で、攻撃の標的になっている上位3ヶ国は、アルゼンチン(70%)、チュニジア(15%)、ブルガリア(4%)です。

インターネットで調べてみると、このポートでのディレクトリトラバーサルの脆弱性が2015年11月に明らかになっており、Huawei HG532ルーターが標的とされたことがわかりました。

図6:使用されたHuaweiエクスプロイトのソースコード

このエクスプロイトコードを見ると、認証でrealmが「HuaweiHomeGateway」に設定されているため、この攻撃がHuaweiデバイスを標的にしているという我々の推測が証明されたことになります。そして同時に、ディレクトリトラバーサルの脆弱性という我々の仮説を裏付けるものでもあります。これで、SOAPを使ってXMLで表記された不正制御メッセージを送信していることが確認されました。

この例の場合は、「/ctrlt/DeviceUpgrade_1」という正しいURIが指定されているようです。この脆弱性が発見された当時は、こういったエクスプロイトの詳細がインターネットに存在していなかったため、この脆弱性がおそらくはゼロデイであっただろうと我々は考えました。その後に、Huawei PSIRTチームから、Huawei HG532製品のリモートコード実行に関するセキュリティ勧告が発表されましたが、技術的な詳細は公開されていません。

このコードによれば、コントロールURL「/ctrlt/DeviceUpgrade_1」を使って、エクスポーズされたサービス「WANPPPConnection:1」に対するUpgradeアクションがコールされています。そして、以前のCVE-2014-8361の場合と同様、NewStatusURLを使って新しいコードがインジェクションされます。NewStatusURLという名前を見ると、URLをパラメータとして待機するのではなく、デバイスを騙して「$()」を使ってシェルコマンドを実行させるようになっているようです。

上記の例では、「wget」で始まる一連のコマンドがインジェクションされ、それによって、デバイスに保存する不正ファイルを要求するための外部IPアドレスを問い合わせ、その後に、NewDownloadURLを使ってそれを実行するようになっています。これに相当するのが、以下のコードです。

NewDownloadURLは「DownloadURL」をパラメータとして受け入れるよう記述されていますが、それだけでなく、文字列「HUAWEIUPNP」をデフォルトで出力させようとしているようです。この文字列の使用目的については、今のところ明らかではありません。エクスプロイトが動作中かどうかを確認するためのトークンとして使われる可能性はありますが、このような種類の脆弱性のほとんどはブラインドコマンドインジェクションであり、攻撃者にフィードバックが返されることはありません。

POST HTTP要求のAuthorizationヘッダーにも注目しましょう。

Authorization: Digest username="dslf-config", realm="HuaweiHomeGateway", nonce="88645cefb1f9ede0e336e3569d75ee30", uri="/ctrlt/DeviceUpgrade_1", response="3612f843a42db38f48f59d2a3597e19c", algorithm="MD5", qop="auth", nc=00000001, cnonce="248d1a2560100669"

ここでは、RFC 7617で定義されているダイジェストアクセス認証メカニズムが使われています。ダイジェスト認証をRFC 7616で定義されている基本HTTP認証と混同しないよう、注意してください。

このことから、Upgradeアクションが悪用されること、また、付与されるアクセス権に有効な認証情報が必要であることがわかります。分析の結果、このエクスプロイトは、デフォルトTR-064アカウント(ユーザー名はdslf-config、パスワードはadmin)を使用しようとしているらしいことがわかりました。詳細は、後述します。


この攻撃はどの程度の脅威なのか

ポート37215を使用する一部のHuaweiデバイスは、URI「/tr064dev.xml」内の記述を使って自分自身をアドバタイズします。TR-064は、Broadband Forumが公開した技術レポート標準であり、基本的には、ISPによるCPE(Customer-Premises Equipment)デバイスのリモート管理を可能にするものです(モデム / ルーターなど)。

そのファイルに対するHTTP POST要求によって、デバイスのXML記述(Description)、さらには、使用可能なサービスも取得できます。HTTP応答でServerヘッダーに「Linux UPnP/1.0 Huawei-ATP-IGD」が含まれていることから、Huaweiデバイスが標的であるという手掛かりにもなります。

Descriptionに、以下の記述が見つかります。

すべてのHuaweiルーターが「/ctrlt/DeviceUpgrade_1」へのアクセスを許可しているわけではなく、上記の例を見ると、Huawei EchoLife Home Gateway(HG532c)と他のいくつかのモデルに脆弱性が存在する可能性があることがわかります。

したがって、/upnpdev.xmlを使って自分自身をアドバタイズする、たとえば、HG655m「Huawei Home Gateway」などのモデルにも同様の脆弱性が存在する恐れがあります。

それと同時に、ルーターがこのコントロールを公的にアドバタイズしていないのであれば、現段階で攻撃の標的になる可能性がないということにもなります。

もう1つの注目点は、controlURLのリンク先がserviceType DeviceUpgrade:1であり、エクスプロイトで使用されているWANPPPConnection:1ではないということです。これは、使用されるエクスプロイトに問題がある可能性があることを示す、いくつかの手掛かりを我々に与えてくれました。

そして、何よりも重要なのは、このサービスには、認証のための何らかのアクションが必要である点にあり、だからこそ、HTTPダイジェスト認証が使用されているのです。この認証メカニズムは、サーバーが生成するnonce値を使用することでリプレイ攻撃を防止するようことを前提に開発されています。したがって、この種の認証を使用するには、少なくとも2つのHTTP要求が必要になります。1つ目は、応答からWWW-Authenticateヘッダーを抽出するためのダミーです。2つ目の要求は、サーバーから提供されたnonceとパラメータを使用して、そのリソースへのアクセスに必要な暗号化ハッシュを生成します。

この例では、nonceがクライアント側のHTTP POST要求にハードコーディングされています( 「88645cefb1f9ede0e336e3569d75ee30」)。したがって、HTTP要求がデバイスに対して発行されても、nonce値が一致しないため、デバイスのHTTPサーバーから「HTTP 401 Unauthorized」要求が発行されます。

標的となるHuaweiのルーターのHTTP実装に問題があり、生成されるnonceにランダム性がまったくないという可能性も考えられますが、私自身は、このコードではエクスプロイトが想定通りに動作せず、サービスに対する認証は成功しないだろうと推測しています。


結論

Okiruのどちらのエクスプロイトも、HTTP経由で実行されており、静的なUser-Agent「Hello-World」が使用されています。Okiruの攻撃が本格化したように思えますが、そう結論付けるのは時期尚早のように思えます。不備のあるエクスプロイトが十分にテストすることなく埋め込まれていることから判断すると、2016年9月に明らかになったMiraiのコードを流用した、スクリプトキディと呼ばれる初心者による攻撃の可能性が高いと思われます。この攻撃は、最悪の場合でも、HTTP要求を大量に生成することでランダムにデバイスをDDoS攻撃する程度の効力しかありません。あるいは、コードが今は開発中であり、何らかの理由で不注意によって予定よりも早く拡散してしまったという可能性も考えられます。

今回の調査結果は以上のとおりですが、FortiGuardチームは、連続して登場したこれらの新たなIoTボットネットに大いに注目しており、この記事で言及した2つのエクスプロイト攻撃についての分析をすでに実施し、これらの脅威からお客様を保護するための新たなIPSシグネチャを提供しています。

ポート52869に対する攻撃はD-Link.Realtek.SDK.Miniigd.UPnP.SOAP.Command.Execution、ポート37215に対する攻撃はHuawei.HG532.Remote.Code.Executionで検知されます。

-= FortiGuard Lion Team =-


IOC

e5fc493874f2a49e1a1594f3ee2254fa30e6dd69c6f24d24a08a562f03b2fd26 Linux/Mirai.Y!tr.bdr
dd6e5607f137b6536097670a1211b4e20821ca136e2db26529948ff0a48555ff Linux/Mirai.Y!tr.bdr IOC
e5fc493874f2a49e1a1594f3ee2254fa30e6dd69c6f24d24a08a562f03b2fd26 Linux/Mirai.Y!tr.bdr
dd6e5607f137b6536097670a1211b4e20821ca136e2db26529948ff0a48555ff Linux/Mirai.Y!tr.bdr

毎週お届けするFortiGuard Labsインテリジェンス概要、またはフォーティネットのFortiGuard脅威インテリジェンスサービスのオープンベータ版にご登録ください。