デジタル時代のゴールド ラッシュにおける負の側面
Azim Khodijbaev と David Liebenberg の寄稿に基づき、Nick Biasini、Edmund Brumaghin、Warren Mercer、Josh Reynolds が投稿しました。
エグゼクティブ サマリー
脅威は常に変化を続け、ここ数年でマルウェア脅威の感染経路や手法、ペイロードは急速に進化しています。最近では、暗号通貨の価値が急騰したことで、マイニング関連の攻撃が、ランサムウェアのような従来の攻撃よりも金銭面でのメリットが大きいことに多くの攻撃者が気づき始め、主な関心が移っています。マイニングでは、感染者に実際に関わる必要がなく、ランサムウェアと違って司法当局の目を引くことがないことも大きな利点です。
「ブロックチェーン」を備えたさまざまな暗号通貨の価値が急騰してニュースを賑わせていることを考えると、マイニングに注目が集まるのは当然のことです。攻撃者が暗号通貨から得られる利益に気づき、その拡大から収益を得ようとして新たな攻撃を生み出しています。Talos は、過去数ヵ月に渡って、悪意のある暗号通貨のマイニング ソフトウェアへの感染数が著しく増加していることを確認してきました。
この新しいビジネス モデルでは、添付ファイルを開いたり、悪意のあるスクリプトを実行したりしても、システムを人質に取られ、身代金を請求されることはありません。攻撃者は、感染システムのリソースを活用して暗号通貨をマイニングするだけです。マイニングでは、標的にしたシステムのパフォーマンスや処理性能が優れているほど、得られる収益が多くなります。監視機能がなく、日常的にユーザが操作するわけではない IoT デバイスが急速にマイニング攻撃の格好のターゲットになり、知らない内に処理能力を利用されています。ほとんどの IoT デバイス内のコンピューティング リソースは限定されていますが、一般に利用可能なエクスプロイトに対して脆弱なデバイスの数は膨大なため、サイバー攻撃の対象として魅力的です。
得られる収益の観点では、平均的なシステムで 1 日あたり約 0.25 ドル相当の Monero(モネロ)を生成できます。つまり、2,000 台に感染すれば(これ自体は難しいことではありません)、1 日に500 ドル、年間 182,500 ドル生み出すことができます。Talos は、数百万台の感染システムで構成されたボットネットを監視していたことがあります。これは、先の計算で言えば、理論上年間 1 億ドル以上を生成できる規模です。暗号通貨市場の変動性の大きさを考慮すると、上記の価値も日々大幅に変化する可能性があることに注意してください。このブログ内のすべての計算は、執筆時点の XMR/USD レートに基づいています。
このような収益は、最初に感染さえすれば、後は最小限の労力で得ることができます。さらに重要なことは、感染を検出される可能性が少ないため、収益源を長期間維持できることです。これだけでも十分なメリットですが、もう少し詳細に検討すると、この攻撃によって得られるメリットがさらに大きいことがわかります
- 多くの暗号通貨の価値が急騰しています。マイニング ターゲットとして最も人気のある Monero は、過去 1 年間で 3,000 % 増加しました。
- 検出される可能性は従来の攻撃よりはるかに少なくなっています。感染者から盗むのは、コンピューティング能力だけです。また、マイニング ソフトウェア自体は、技術的にはマルウェアではないので、理論上は、攻撃者が自ら離れない限り、感染者は攻撃者のボットネットの一部に組み込まれたままです。
- 通貨をマイニングしたら、攻撃者がそれを何に使用しようと自由です。現金化する時まで長期的な投資(または引退後の年金)スキームに組み込まれるかもしれません。
はじめに
ここ数年間、ランサムウェアは、脅威の中心でした。不正なアクティビティから直接金銭を得ることができる、収益性の高いビジネス モデルを構築できるため、それも当然のことです。ただし、ランサムウェアを使用するにはいくつか制約があります。まず、感染したユーザが要求された身代金を実際に払うことは非常に少ないということです。次に、システムやテクノロジーが向上し、ランサムウェアを検知してブロックすることができるようになり、感染対象の候補が変わってきています。多くの国でターゲットになる可能性がある人には、データを取り返すために、300 ~ 500 ドルも払う余裕はありません。おそらくこのような制約によって、配信されるペイロードが確実に変化し始めています。特に、エクスプロイト キットやスパム キャンペーンなどの最もよく利用されるマルウェア配信方式に顕著です。
Talos は、数ヵ月前から暗号通貨マイナーの配信が急増しているのを確認しています。暗号通貨の価値が飛躍的に増加しているため、ここ数ヵ月「ブロックチェーン」と合わせて話題になっています。マイニングは、暗号通貨を生成する最も効果的な方法の 1 つで、攻撃者は明らかに注目しています。
マイニングとは
簡単に言うと、システム リソースを利用して大量の数学的計算を行い、その報酬として暗号通貨を得ることです。マイニングの詳細に入る前に、マイニングする価値のある通貨について説明しましょう。
Bitcoin(BTC; ビットコイン)は、利幅が大きいため、最も普及している暗号通貨です。利用開始以来ずっとマイニングされてきましたが、今ではあまり効果的に収益を得られる方法ではなくなっています。ASIC(特定用途向け集積回路)と呼ばれる特別なハードウェアを使用せずにマイニングして利益を得られる暗号通貨がほとんどないからです。各暗号通貨は、使用するハッシュ アルゴリズムが異なっています。中には、ASIC のような特別なハードウェアを使用せず、CPU や GPU などの一般消費者が利用可能な装置を使用できるように設計されている暗号通貨もあります。現在、標準システムでマイニングして最もメリットのある通貨は Monero(XMR)であり、攻撃者もすでに調査済みです。また、Monero は非常にプライバシーを重視しています。当局がビットコインの監督を強化し始めたため、Monero などのプライバシーを重視する通貨が脅威攻撃者の格好の対象になっています。
マイニングには、スタンドアロン マイナーによるものと、マイニング プールを活用するものの 2 つの方法があります。プールベースのマイニングでは、複数のシステムのリソースをプールすることでハッシュ レートを上げ、より多くの通貨を得ることができます。Monero のマイニングに最も多く利用されているのはプールベースのマイニングです。最も多くのリターンが得られ、マイニング ソフトウェアを簡単に感染対象に配信できるからです。プールベースのマイニングでは、攻撃の対象となっている標準的なシステムで使用されているコンピューティング リソースの利用効率も最も高くなります。これは、分散型サービス妨害(DDoS)攻撃が 10 万台のマシンで偽造トラフィックを利用してターゲットにフラッディングするほうが、1 台のシステムで偽造トラフィックを送信するよりも遥かに効率的であるのと同じです。
プールベース マイニングの仕組み
プールベース マイニングは、「Worker ID」を利用して調整されています。Worker ID は、各システムを 1 つの大きなリソース プールに統合するためのものです。正規のユーザに配信された特定の Worker ID に関連付けられているプールを活用することで通貨がマイニングされます。Worker ID によって、悪意のあるアクティビティの規模や範囲を判断することができます。また、攻撃によって得られる収益の額もわかります。ここでの説明のために、以下を前提とします。
- プールベース マイニングは、「Worker ID」を利用して調整されています。Worker ID は、各システムを 1 つの大きなリソース プールに統合するためのものです。正規のユーザに配信された特定の Worker ID に関連付けられているプールを活用することで通貨がマイニングされます。Worker ID によって、悪意のあるアクティビティの規模や範囲を判断することができます。また、攻撃によって得られる収益の額もわかります。ここでの説明のために、以下を前提とします。
- 一般的なコンピュータが 1 秒あたりに処理するハッシュ数を 125 H/秒とする。
- 実際のマイニングでは、常に暗号通貨を生成できるとは限らないが、通貨獲得の仕組みをわかりやすくするために、ここでは、悪意のあるマイニング プールで常に通貨を得られるものとする。
悪意のあるマイナーは、通常、コマンド ラインから一連の引数を指定してマイニングを実行します。引数を指定してマイニング ソフトウェアを実行するコマンド ライン シンタックスの典型的な例を以下に示します(使用するマイニング ソフトウェアによって、パラメータ名は異なる場合があります)。
コマンド ライン シンタックスの例
例のように、主に 2 つの引数に値を設定する必要があります。マイニング プールの URL と、システムで実施するマイニング アクティビティを特定のマイニング プールに結びつける「Worker ID」です。「Worker ID」は、支払い方法の管理にも使用されます。ただし、これまでの調査から、マイナーが自分達のアクティビティを検出されないようにするために指定したパラメータが他にもたくさんあることがわかっています。そのようなオプションを指定せずにマイニング ソフトウェアが実行された場合、コンピューティング リソースの使用制限が適用されないため、システムのパフォーマンスが著しく劣化し、感染者に気づかれてしまいます。次のようなオプションがあります。
- CPU 使用率の制限
- システム温度の制限
- 使用するコア数
- スリープ期間
各マイニング プログラムには独自のフラグ セットがあり、合法的なマイナーにも、悪意のあるマイナーにもさまざまな方法で利用されます。攻撃者が長期間潜伏することに成功している場合、通常上記のオプションが指定されています(スケジュール済みのタスクを作成するか、Run キーを指定し、Windows Command Processor で引数を指定してマイナーを実行する)。
アンダーグラウンドでの起源
Talos は、中国とロシアのクライムウェア グループによる、暗号通貨マイナーを悪意のあるペイロードに使用することに関するディスカッションを監視しています。中国の攻撃者がマイナーとマイニング ボットネットについてディスカッションしているのを初めて確認したのが 2016 年 11 月で、それ以来注目しています。
ロシアのアンダーグラウンドでは、過去半年の間にマイニングに関する顕著な動向が確認されています。ロシアのトップレベルのハッキング フォーラムで多くのディスカッションがなされ、いくつかの機能が提示されています。ディスカッションは大きく 2 つのテーマに分かれています。1 つは、マイニング ボットへのアクセス権の売買に関することで、もう 1 つは、ボットの開発者が、暗号通貨のマイニングに利用するために、侵害されたホストへのアクセス権を求めているものです。どれぐらいの通貨がマイニングできるかや、マイニングに適した時間がどれぐらいあるかなど、マイニングに関する理解が深まるにつれ、マイニングの人気が出てきました。マイニング用マルウェアはほとんどが C# か C++ で開発されています。上記のようなフォーラムで頻繁に取り上げられているように、アドバタイズの際の検出率が低く長期間潜伏し、継続して開発されています。多くのケースでこれらの脅威は、日次または週次で更新されています。
一般に攻撃者は、ボットでより多くの収益を得て、その後も収益の拡大が続くことを期待しています。脅威がより長期間潜伏できるようになってきているのはそのためです。次に、悪意のあるマイニングの仕組みと、それを配信する脅威について詳しく見ていきましょう。
悪意のあるマイニング
脅威の新たなトレンドになっている悪意のあるマイニングが今回の記事の中心です。攻撃者は常に不正な活動から収益を得ることを狙っており、悪意のあるマイニングが急速に、収益を生み出す源泉になりつつあります。
過去数年間、金銭獲得を目的としたマルウェアにおいては、ランサムウェアが脅威の中心を占めていました。Talos の Angler Exploit Kit の調査で示してきたように、ランサムウェアが非常に収益性の高いビジネス モデルであることを考えるとそれも当然です。Angler を活用した場合に得られる収益は少なく見積もっても年間3,000 万ドルになります。一方で、成功することによって注目を集め、その結果ランサムウェアを阻止しようとする活動も増加することになりました。オペレーティング システムやセキュリティに関するベンダーは、ランサムウェアが多くのシステムに感染するのを未然に防ぐ能力を向上させました。
そのため攻撃者は重大な決断をすることを迫られています。つまり、攻撃対象となる脆弱なユーザやシステムが少なくなっていっても引き続き主な収益源としてランサムウェアを使用し続けるか、他のペイロードに移るかという決断です。利用できる他の攻撃手段には事欠きません。バンキング型トロイの木馬、ボット、クレデンシャル窃取、クリック詐欺マルウェアなどがその例です。
ではなぜ暗号通貨マイニング ソフトウェアが選ばれたのでしょうか。
それには多くの理由があります。可能性が高い理由の 1 つは、マイニング ソフトウェアは、感染後ほとんど管理する必要がないということです。システムにマイナーをドロップしてマイニングを開始したら、攻撃者は他にする事はありません。C&C アクティビティの必要性がなく、マイナーが削除されるまで収益を生み続けます。そのため、もしプール内のマイニングしているノード数が減れば、さらに別のシステムに感染すればよいのです。もう 1 つの理由は、大半のユーザが感染されていることに気づかないということです。ユーザが電子メールを読んだり、Web を閲覧したり、新しい提案書を書いたりしている間に、マイニングが進行中であることに気づくでしょうか。ユーザによる検知という観点では、できるだけユーザの目の届かないところに潜んでいるマイナーとランサムウェアは正反対です。マイナーが実行されていることにユーザが気づくまでの期間が長いほど、得られる収益は大きくなります。
結局最大の理由は、マイニングよって得られる収益にあります。収益を生まなければ攻撃者も利用することはありません。悪意のあるマイナーの特別な性質によって、大きな収益が得られます。マイニングに必要なコストの中で最も大きいのは、マイニング用ハードウェアとそのハードウェアに供給する電力です。悪意のあるマイナーを活用することで、この 2 つのコストのことを気にする必要がなくなります。感染したシステムのコンピューティング リソースを活用できるため、ハードウェアや電力にコストがかからず、マイニングした通貨がすべて収益になります。
では、感染したシステムからどれぐらいの収益が得られるか詳しく確認してみましょう。前述のとおり、コンピュータのハッシュ レートは、使用しているハードウェアのタイプとマイナー以外によってかかる平均的なシステム負荷によって大きく異なります。平均的なシステムでは、1 秒あたり約 125 ハッシュ計算できます。ハードウェアと電力にかかるコストを抜きに、1 台のシステムから得られる通貨は、1 日あたり約 0.25 ドル相当の Monero です。大した額ではないと思われるかもしれませんが、システムをプールすれば、収益は飛躍的に増加します
マイナーに関する脅威の中で最大のボットネットでは、攻撃者は数百万台におよぶシステムに感染して制御しています。このボットネットのごく一部(約 2,000 ホスト)を制御することを考えてみましょう。1 日あたりに得られる収益の額は、500 ドル相当の Monero まで大幅に増え、年間にすると 182,500 ドルになります。後で示すように、Talos では、この規模の収益を得るために必要な 125 KH/秒をはるかに上回る計算能力をもった悪意のあるプールをいくつか確認しています。
分析したキャンペーンの 1 つでは、攻撃者は 55.20 KH/秒のハッシュ レートに達するコンピューティング リソースを管理していました。以下のスクリーン ショットでわかるように、[合計支払額(Total Paid)] は、528 XMR で、米ドルに換算すると約 167,833 ドルとなります。このケースのマイニング プールでは、Monero をマイニングするボットネットによって「Worker ID」が使用されていました。
Worker ID 統計情報
2017 年 12 月末から始まった、Talos が確認した一連の攻撃では、Oracle WebLogic の脆弱性(CVE-2017-3506/CVE-2017-10271)をターゲットにしたエクスプロイトが利用されていました。このケースでは多くの場合、エクスプロイトに成功するとマイニング ソフトウェアがインストールされ、実行されていました。
ハッシュ レートの推移
このキャンペーンの規模と範囲を分析する中で、「Worker ID」を使用した攻撃が始まってすぐに 500 KH/秒以上の速度でハッシュが生成されていることを確認しました。この記事の執筆時点では、この攻撃者は依然として約 350 KH/秒で生成しています。
現在のハッシュ レート
ハッシュ レート、消費電力、コストを計算できるオンライン計算機を使用して収益を見積もってみます。ハッシュ レートを 350 KH/秒とすると、マイニングされる Monero は、1 日あたり 2.24 XMR になります。つまり、攻撃者は 1 日あたり、約 704 米ドル、年間 257,000 米ドルを得られることになります。このことから、この活動が攻撃者にとってどれほど収益性の高いものであるかは明らかです。
この「Worker ID」に関連する統計データと支払い履歴を分析すると、合計で 654 XMR が得られたことがわかりますこれは、この記事の執筆時点で約 207,884 ドルに相当します。
Worker ID に対する支払い履歴
マイニング ソフトウェアの配信に関連したマルウェア キャンペーンを分析した際に、大規模な「Worker ID」をいくつも特定しました。その中の上位 5 つの活動の分析結果から、マイニングによってどれだけ多くの収益が得られるかがわかります。
大規模な計算
Monero をマイニングするもう 1 つの利点は、Monero の価値がどんどん上昇していることです。Bitcoin と同様に、Monero の価値は 2017 年に高騰しました。2017 年 1 月に 13 ドルだったのが、一時 500 ドルに達することもあり、この記事の執筆時点では 300 ドルを超えています。暗号通貨の狂騒が続く限り、価値も上がり続けます。マイニングした暗号通貨の価値も上がり、得られる収益が増えることになります。これで、攻撃者が悪意のあるマイニングを行う金銭面での理由がわかったでしょう。では、このような悪意のあるマイナーは最初にどうやってシステムに侵入するのでしょうか。
マイナーを配信する脅威
暗号通貨マイナーは、サイバー攻撃者の格好の新たな手段として、さまざまな方法でエンド ユーザに配信されます。マイナーの配信方法として確認された中で多いのは、スパム キャンペーンやエクスプロイト キットを利用するもので、直接エクスプロイトするものもあります。
電子メール ベース
ランサムウェア、バンキング型トロイの木馬、マイナーなどさまざまなペイロードを配信するスパム キャンペーンが継続して実施されています。以下は、マイナーを配信するキャンペーンの例です。これらの感染が発生する典型的な方法は、ファイルが添付された電子メールをユーザに送信することです。これらの添付ファイルは通常、悪意のあるマクロを利用してマイナーをダウンロードする Word ドキュメントのアーカイブを含んでいます。または、圧縮された実行可能ファイルを展開してマイニングの感染を開始する Word ドキュメントの場合もあります。Talos が確認したキャンペーンの多くでは、Word ドキュメントに含まれていた Monero マイナーのバイナリが広範囲に配信されていました。そのバイナリが不正な Worker ID とプールを利用して実行され、攻撃者に利益をもたらしました。
以下は、2017 年後半から始まったキャンペーンの 1 つです。これは、就職申し込みを装ったもので、候補者の履歴書と称する Word ドキュメントが含まれています。
悪意のある電子メールの例
ご覧のように、電子メールには Word ドキュメントが添付され、開くと次のような表示がされます。
サンプル Word ドキュメント
悪意のある Word ドキュメントと同様に、このドキュメントを開くとファイルがダウンロードされます。これは、使われている命名規則によると「bigmac」と呼ばれる大規模なマイナー キャンペーンの例です。
この画像は、デフォルトではブロックされる、ドキュメント内のマクロ コンテンツをユーザに有効化させるためのものです。クリックすると、Word の Document_Open 関数によって、高度に難読化された一連の VBA マクロが実行されます。
Document_Open() 関数で実行される高度に難読化された VBA マクロ
マクロが実行されると、シェル コマンドが呼び出されます。
VBA.Shell を呼び出す高度に難読化された VBA マクロ
このコマンドによって何が実行されるかは、MsgBox 呼び出しの第 1 パラメータに値をセットして難読化を解除することで確認できます。
シェル変換用 MsgBox
これは、System.Net.WebClient を使用してリモートから実行可能なファイルを取得し、Start-Process を利用して実行するものです。また、Threat Grid の動的アクティビティ分析でも確認できます。
Threat Grid で確認された Office ドキュメントによる Powershell 起動
ダウンロードされたバイナリが、イメージ ファイルの拡張子を使用して偽装しようとしていることも特定しています。
Threat Grid で特定されたイメージ ファイル拡張子付きポータブル実行ファイル
このケースでは、ダウンロードされたバイナリは、VB6 で書かれたポータブル実行ファイルで、xmrig XMR CPU マイナーの亜種を実行します。このアクティビティは、Threat Grid の動的分析で確認できます。
Threat Grid で確認された xmrig 実行
マイナーの動的アクティビティは、AMP for Endpoints 製品ラインでも確認することができます。以下の例は、AMP for Endpoints ポータルのデバイス トラジェクトリに表示されたものです。
AMP for Endpoints のデバイス トラジェクトリに表示されたマイナーの動的実行
Cognitive Threat Analytics を使用してマイニング ネットワーク トラフィックを分類し、エンタープライズ環境内のマイナーを特定することもできます。
Cognitive Threat Analytics によるマイニング トラフィックの分類
暗号通貨マイニング マルウェア Dark Test
Dark Test(逆コンパイルしたソース コードから取得した名前)は、C# で開発された暗号通貨マイニング マルウェアの例で、UPX で圧縮した xmrig XMR CPU マイナーをドロップします。C# で開発されたバイナリには、.NET IL(中間言語)が含まれており、ソース コードに逆コンパイルできます。C# コードは高度に難読化されており、すべての参照文字列のリソース セクションは暗号化され、関数はランタイムに解決されるようになっています。次のセクションでこれらの技術を詳細に説明します。
Dark Test 難読化
Dark Test はパッカーで圧縮解除後、CreateProcessA を使用して自身の休止バージョンを作成します。次に WriteProcessMemory を使用して、バイナリの圧縮解除バージョンでメモリ内の元のバイナリを上書きします。元のバイナリは、デバッガで WriteProcessMemory にブレークポイントを設定し、lpBuffer バッファのアドレスから nSize までダンプすれば簡単に復元できます。
Dark Test には高度に難読化された C# コードが含まれており、不要な命令やさまざまなコード セクションに分岐する算術式、リソース セクションに保管された暗号化文字列、ランタイムに解決される関数などが大量に存在しています。関数は、算術演算によってロード時に解決され、metadataToken が、Method.ResolveMethod と MethodHandle.GetFunctionPointer に渡されます。
metadataToken 整数型を使用して動的にメソッドを解決
Dark Test の関数は、呼び出す関数のエントリー ポイントへのポインタや関連パラメータを calli 関数に渡して間接的に呼び出すこともできます。
calli を使用してランタイムに解決される関数呼び出し
復号関数は、3 つの整数型パラメータを受け取ります。最初の 2 つは、復号の対象となる文字列の長さとオフセットを示すもので、3 つめは、そのオフセットにある文字列に対する XOR キーです。
Dark Test の文字列復号関数
計算されたオフセットの最初の 4 バイトは、暗号文のオフセットを示し、次の 4 バイトは、復号対象の文字列の長さを示します。次に文字列の長さ分 XOR をとるループ処理を実行して、オフセットにある文字列を復号します。これらの整数型パラメータは、通常、一連の算術演算とランタイム参照オブジェクトによってランタイムに計算されます。
Dark Test 文字列復号関数呼び出し
この例では、文字列は、「-o pool.minexmr.com:4444 -u」と復号されます。これは、マイナーが参加しているマイニング プールのドメインとポートを示しており、ユーザ名パラメータには値が設定されていません。これらの文字列は、ランタイムに復号されますが、Threat Grid の動的アクティビティ実行分析で簡単に確認できます(今回は、使用している設定から別のプールが選択されています)。
動的マイナー アクティビティのコマンド ライン引数
オブジェクトおよび関数がランタイムに解決されるため、逆コンパイルですべての文字列を完全に抽出することは困難です。また、コードがさまざまに分岐するため、動的分析ですべての文字列を復号することもできません(上記例のとおり)。num6 の長さを計算することで、長さごとに 3 つの一のバイト数(10 進数):[106, 242, 28] が生成されます。この 3 つのバイト数(長さ計算の最初の 3 つ)を見つけることで、ランタイムに計算されるオフセットがわかります。長さがわかれば、最初の 4 バイトから暗号文のオフセットを取得し、そのオフセットの XOR キーに対してあらゆる可能性を手当たり次第に試して、有効な ASCII 範囲に該当する結果が得られないか確認することができます。
#!/usr/bin/ruby fr = File.read(ARGV[0]) fb = fr.bytes for i in 0..fb.length-4 #Through their obfuscation technique we get an egg for obfuscated string lengths and offsets to find in the resource if fb[i] == 106 && fb[i+1] == 242 && fb[i+2] == 28 #Perform their arithmetic with provided bytes into an 32-bit int length = [fb[i-1], 106, 242, 28].pack("V*").split("\x00").join.unpack("V")[0] - 5 ^ 485648943 seek_offset_bytes = [fb[i-5], fb[i-4], fb[i-3], fb[i-2]] seek_offset = (seek_offset_bytes.pack("V*").split("\x00").join.unpack("V")[0] ^ 2100157544) - 100 puts "Found length of: #{length}" puts "Seek offset bytes: #{seek_offset_bytes.inspect}" ciphertext = [] for j in 0..length-1 ciphertext << fb[seek_offset+j] end if length > 2 for x in 0x00..0xFF finished = true result = [] for c in ciphertext unless((x ^ c).between?(0x20,0x7E)) finished = false break end result << (x ^ c) end if finished puts "Found possible XOR key for string: #{result.pack("I*").split("\x00").join} of length: #{length}" end end end end end
この手当たり次第のアプローチで有効な結果が得られない場合もありますが、人間が確認すればクリア テキストの文字列が得られる場合もあります。確認できた文字列はすべて付録に記載しています。特筆すべき興味深い文字列は、コンピュータを常にオンラインにしてマイニングを継続できるようにするためのものです。
/C net accounts /forcelogoff:no
上記の設定で、リモート管理者が強制的にログオフできなくなります。
/C net accounts /maxpwage:unlimited
上記では、パスワードの最長有効期限が無期限に設定され、パスワードの期限切れが発生しません。
/C powercfg /x /standby-timeout-ac 0
上記を設定すると、コンピュータがスタンバイ モードにならないため、アイドル状態のときにマイニングを続けることができます。
/C reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaveTimeOut /t REG_SZ /d 600000000 /f of length: 99
上記ではスクリーンセーバーが起動しなくなります。
また、分析防止対策として次の文字列が確認されています。
procexp PROCEXP pROCESShACKER ProcessHacker procexp64 Detect detector! Clear! taskmgr
Dark Test ネットワーク トラフィック
2 つの GET リクエストが api.ipfy.org に送信され、パブリック IP アドレスの識別に使用されます。送信後、qyvtls749tio[.]com に GET リクエストが送信されます。そのリクエストでは、識別用の HwProfileInfo.szHwProfileGuid、64 ビットのフラグ、ビデオ カード パラメータ(常に null)、CPU コア数が送信されます。サーバは、bz.exe と cpu.zip 2 つの実行可能ファイルの youronionlink[.]onion URL ロケーションを返します。
動的マイナー アクティビティのコマンド ライン引数
奇妙なことに、この URL は .onion の有効なアドレスではなく、このドロッパーに対するサーバからのプレースホルダのようです。もしくは、リクエストに基づいてゲートウェイがドロッパーに返そうとしていた内容を置き換えずにセットアップした稚拙なものかもしれません。このパターンを検索していた際に、有効な Pastebin(ペーストビン)のアドレスを見つけることがありました。そのアドレスに保存されていたテキストには、以下のようなドメインをデータベースに設定するための SQL コマンドが多数記載されていました。ロシア語のコメントも付いていました。
Pastebin の SQL コマンド
これはさらに、ビルダーまたは分散ゲートウェイが使用されていた可能性を示しています。さらに調査を進めると、現在活動中のウェアーズ(非合法ソフト)のファイル名が多数見つかりました。
Dark Test の VirusTotal で確認された現在活動中のファイル名
これは、ウェアーズが Dark Test の配信経路であった可能性を示しています。
Dark Test バージョン 2
11 月中、Talos では、同じ C&C 用パラメータおよびマイニング プールが設定された、Dark Test.という名前の永続的実行可能ファイルのサンプルを監視していました。そのサンプルは別の xmrig バイナリをドロップして実行することはありませんでしたが、別のバージョンが静的にリンクされていました。Dark Test の最初のバージョンと同じ属性を持っているため、この別のバージョンは、C# ではなく、Visual C++ で開発された新しいイタレーションだと考えています。このバイナリは、NSIS 自己解凍式インストーラ内に含まれ、休止状態のプロセスを新たに生成し、メイン スレッドを再開させる展開コードを起動します。バージョン 1 と 2 の顕著な違いは、Process32FirstW を使用して検索される分析防止対策用の文字列が増えていることです。
分析防止対策文字列
vnc.exe に興味深い追加がなされ、VNC を使用して接続される VPS や分析システムを検知できるようになっています。
エクスプロイト キット ベース
Talos では上記のスパム キャンペーンの他に、RIG エクスプロイト キットも確認しています。RIG エクスプロイト キットは、ここ数ヵ月に渡って Smoke Loader(スモークローダー)を利用してマイナーを配信しています。RIG エクスプロイト キットによって実際に発生した感染は、RIG のアクティビティとしてはかなり標準的なものです。ただし、マイニングについて注目すべき点は、システム上に、「Worker ID」という容易に追跡可能な要素が残されていることです。以下がその例です。
コマンド ライン シンタックス
使用された Worker ID
43Z8WW3Pt1fiBhxyizs3HxbGLovmqAx5Ref9HHMhsmXR2qGr6Py1oG2QAaMTrmqWQw85sd1oteaThcqreW4JucrLGAqiVQD
Talos は、このシステムがマイニングしているハッシュの量を詳細に分析し始めました。その結果、25 ~ 60 KH/秒の間で変動しているワーカーを発見しました。平均すると 42.5 KH/秒で、このワーカーは 1 日に約 85 ドル稼いでいることになります。
それだけ見ると大した金額ではないと思われるかもしれませんが、何年もではないにしても、何ヵ月もの間何もメンテンスせず、検知もされずにマイニングし続けられることを考えてみてください。唯一の運用コストは、エクスプロイト キットと関連するインフラストラクチャをレンタルするのに必要なコストだけです。一度感染させると、黙っていても毎年 31,000 ドルも稼ぎ続けることができます。
これまでの推移を調べてみると、このキャンペーンは 6 ヵ月間に渡って断続的に継続し、ピーク時には 100 KH/秒を超えるハッシュ レートを達成していたことがわかりました。
ハッシュ レートの推移
このキャンペーンは、2017 年 9 月から勢いが増したように思われますが、2017 年の 6 月または 7 月から展開されていることがわかっています。10 月末にマイニングのアクティビティがすべて突然停止し、12 月中旬に再開しています。その後この記事を執筆している現在もまだ継続しています。このことから、エクスプロイト キットを使用して Smoke Loader のようなマルウェア ローダーからマイナーを導入し、収益を得られることがわかります。
アクティブなエクスプロイト
Talos は、ユーザをターゲットにした脅威の他に、アクティブなエクスプロイトを利用して配信された通貨マイナーについても、Talos のハニーポット インフラストラクチャで確認していますこの中には、通貨マイニング ペイロードを配信する際に複数の異なるエクスプロイトを活用している例もあります。マイナーのインストールに EternalBlue が使用されている例が多く報告されています。また、さまざまな Apache Struts2 エクスプロイトや、最近では、Oracle WebLogic エクスプロイトもありました。このタイプのペイロードは、エンド システムに永続的にアクセスする必要がないため、アクティブ エクスプロイトに最適です。大部分はエンド ユーザに認識されないまま大きな収益を得ることができます。
電子メール経由でユーザに配信される脅威があることや、Web などのインターネットに接続されているシステムが侵害されてマイナー ペイロードが配信されていることから、ランサムウェアが 1 年前にさまざまなシステムにプッシュされていたのとまったく同様に、マイナーも現在の攻撃者によってプッシュされていることがわかります。この証拠に基づいて、実際のマイニング活動とすでにマイニングしているシステムについて少し詳細に分析を始めました。
マイニングとワーカーの詳細分析
数ヵ月に渡って、複数のシステムで暗号通貨マイニングを確認し、異なる複数のグループが一般的なトリックを利用してシステムに脅威を広めていることがわかりました。さらに、個人的に収益を得ることを目的に、マイナーを自社のシステムで実行中、または実行しようとしている企業ユーザが多くいることもわかりました。
Talos が見つけた悪意のあるマイナーのほとんどに共通しているのは、ファイル名の選択方法です。攻撃者は、「Windows 7.exe」や「Windows 10.exe」などの無害に見えるファイル名を選択しています。また、「taskmgrss.exe」、「AdobeUpdater64.exe」、「svchost.exe」も多く見つかっています。以下のように、動的にプルされてコマンド ラインから起動される例もあります。
コマンド ライン シンタックス
興味深いことに、ウイルス対策ソフトウェアを装っているものもありました。その中には、シスコの無料ウイルス対策製品 Immunet も含まれていました。
将来のためのペイロードとしてマイニングする
暗号通貨マイナー ペイロードは、攻撃者が利用できる最も簡単な収益獲得方法の 1 つかもしれません。もちろん、攻撃を助長するつもりはありませんが、このアプローチが、長期間黙って収益を得られる、非常に効果的なものであることも事実です。攻撃者はできるだけ多くのシステムに感染して、検知されないようにマイニング ソフトウェアを実行するだけで、すぐに収益を上げることができます。攻撃者は、ハッシュ レートが 10 KH/秒でも 500 KH/秒でも問題ないはずです。特定のハッシュ レートの目標値があるのであれば、その目標に達するまでマイナーの配信を続ければよいだけです。
感染したマシンの実際の数によって、攻撃者がこのキャンペーンから得られた成果を測定することができます。金銭面で利益を得ることがマイニングの目的なので、これまで Talos で確認してきた金銭目的の攻撃者とは異なり、ホストを侵害してドキュメントやパスワード、ウォレット、秘密キーを盗む必要はありません。ランサムウェアにペイロードが追加されて配信されるのを数多く確認してきましたが、二次的に金銭面でのメリットが得られるものか、本当に悪意のあるペイロードを配信するものかのいずれかでした。後者の場合、ランサムウェアは、撹乱させるための煙幕として利用されます。アクティブな脆弱性のエクスプロイトが、暗号通貨マイニング ソフトウェアを使用してシステムに感染する初期経路として使用されているのを確認しましたが、これは、明らかに悪意のあるアクティビティが拡張されたものです。このシナリオでシステムが感染すると、攻撃者は通常、ハッシュ レートの最大化のみに注力します。
1 つのシステムに感染してリソースを使うだけであれば、十分な収益は得られません。ただし、100,000 システムになれば収益性は飛躍的に向上します。ほとんどの場合、攻撃者はできるだけ簡単かつコストをかけずに最大限の収益を得ようとします。マイニング ソフトウェア使用する場合、システム リソースを制御して大量のハッシュを生成し、収益を得る方式はすでに確立されています。
継続的に収益を得ようとするのは、なにも合法的なビジネスだけではありません。悪意のある攻撃者も同じです。複雑なマルウェアは、設計/開発/テストをして感染させるまでの間に大きな費用がかかります。また、さらに複雑な攻撃のための準備であることも多く、10 万ユーザを攻撃するために使用されることはほとんどありません。そのため、一般的には、複雑なマルウェア攻撃で継続的な収益を得られることはありません。暗号通貨マイナーを利用した攻撃者は、継続的に収益を得るという目的のためだけにソリューション全体を構築しています。
ペイロードとして暗号通貨マイナーを継続的に使用し、システムのフル性能を使用して稼働させる方法は進化を続けるでしょう。Talos は、攻撃者が感染対象のシステムをクリーンアップしてから攻撃するのを確認しています。そのケースでは、該当ユーザの他のマイナーを削除してから感染し、独自のマイニング ソフトウェアをインストールしていました。攻撃者は、現在の収益源と今後見込まれる収益を最大化するために競って多くのリソースを得ようとしています。
マイナーはマルウェアなのか
マイニング用クライアント ソフトウェア自体はマルウェアではありません。望ましくない可能性があるアプリケーション/望ましくない可能性があるプログラム(PUA/PUP)でもありません。マシンに感染してマイニングから収益を得られるように、合法的なマイニング用クライアント ソフトウェアを悪意のある方法で利用しているだけです。マイニング ソフトウェアは、使用されている暗号通貨を人々が利用できるようにするために、取引を実行して確認し、ネットワーク上で合意を得ることを目的に特別に開発されています。マイナーは、そのソフトウェアを使用して複雑な数学的計算を実施し、暗号通貨エコシステムおよびネットワークの整合性とセキュリティを確保していることに対して報酬を得ます。
合法的なユーザがマイニング ソフトウェアをローカルで実行している場合、独自のマイニング プラットフォームを稼働させることができます。さらに、プールに参加して報酬を得る機会を増やすこともできます。合法的なユーザと攻撃者との違いは、悪意を持ってこの作業を行っているかどうかです。悪意のある攻撃者は、方法自体は合法的なユーザとまったく同じでも、ユーザの同意を得ず密かに行っています。エンド ユーザをだまし、悪意を持ってマイニングしているところが異なります。マイニング ソフトウェア自体は、残念ながら悪意の攻撃者が使用する武器に選ばれてはいますが、Powershell や PSExec が悪意のある攻撃に使用されたからといってソフトウェア自体の設計に悪意がないのと同じです。使用する目的が重要なのです。マイナーが攻撃者に悪用されると、感染者は、マイニング処理中の電気代を気づかない内に支払わされてしまいます。また、攻撃者の収益のためにコンピューティング リソースを不正利用されることになります。
企業への影響
マイナーが悪意のある方法で導入されたか、企業ユーザが自分の作業用のコンピュータを使用して通貨を得ようとして導入しただけなのかにかかわらず、企業は、自社の環境のマイナーがマルウェアであるかどうかを判断しなければなりません。
一般的にマイナーが実施することは、CPU/GPU サイクルを活用して複雑な数学的問題を解くだけなので、マルウェアかどうかを判断するのは難しい問題です。一方、組織のリソースが浪費されたり盗まれたりした場合、組織のシステム構成によっては大きな影響を受ける可能性があります。マイナーが上記のような方法でシステムに導入された場合は、明らかに悪意のあるペイロードです。しかし、企業システムでマイナーを意図的に実行して通貨を得ようとしていると思われるユーザが非常に多くいることもわかっています。
そのようなユーザが大量にいるため、組織は、企業システムでのマイナーの使用およびその対応方法に関する新たなポリシーを設定するか、既存のポリシーにセクションを追加する必要があります。さらに、マイナーをマルウェアとして扱い、削除/検疫するかどうかも各組織の判断にかかっています。
失敗例
Monero マイニング ソフトウェアを配信していたマルウェア キャンペーンを調査していた際、興味深いケースに遭遇しました。そのケースでは攻撃者が、「NiceHash Miner」というオープン ソースのマイニング クライアントを使用して配信を始めていました。このケースでは、感染システムで以下のようなコマンド ライン シンタックスがマイナーの実行に使用されていました。
コマンド ライン シンタックス
興味深い点は、マイニング クライアントを特定の Worker ID に登録するために使用されていた userpass パラメータが「3DJhaQaKA6oyRaGyDZYdkZcise4b9DrCi2.Nsikak01」だということです。このキャンペーンを分析すると、この userpass が、実際には GitHub でリリースされたマイニング ソフトウェアのソース コードで指定されていた、デフォルトの userpass だったことがわかりました。攻撃者がデフォルトの値を変更しなかったため、感染したマシンでマイニングされた Monero はすべて、攻撃者にではなく、マイニング アプリケーションの作成者に送信されていました。
ソース コードのデフォルト値
他のいくつかのケースでも、マイナーを実行するためのコマンド ライン シンタックスでデフォルト値を使用している攻撃者が確認されています。以下に例を挙げます。
マイニング失敗例 1
マイニング失敗例 2
マイニング失敗例 3
マイニング失敗例 4
これらの例から、暗号通貨マイナーを利用している多くの攻撃者が、オンラインで見つけたコードやコマンド ライン シンタックスを拡張して使用していることがわかります。また、攻撃者が、使用するコードを実際には理解していないのではないかと思われるケースや、暗号通貨マイニングがどのような仕組みになっているのかさえわかっていないのではないかと思われるケースもありました。その結果、デフォルト値やプレースホルダが更新されておらず、攻撃から収益を得られない場合もあります。
さらに、調査していた中で見つけた興味深い例では、理論的には、第三者が、攻撃者が受け取るはずの報酬を操作できる方法もありました。現在、多くのマイニング プールで使用される Web インターフェイス(および API を通じて公開されているもの)の中に、第三者が編集可能な「Personal Threshold」値があります。この値は、攻撃者のウォレットに報酬を支払う前に必要な通貨のマイニング額を設定するものです。50 XMR などの大きな値を設定すれば、攻撃者は次の報酬を長期間受け取れません。攻撃者がこの値を戻すこともできますが、GET リクエストを使用すればまたすぐに 50 XMR に変更することが可能です。リクエストが次のような構造で、マイニング プールの URL に対するものであれば問題ありません。
"https://p5[.]minexmr[.]com/set_info?address=$WORKER&type=thold&amount=50000000000000"
$WORKER の部分は、「Worker ID」に変更します。このパラメータは、Talos が分析した主なマイニング プール Web サイトで利用できるものと同じです(攻撃に使用するプールによってシンタックスが異なる場合があります)。
まとめ
エンドユーザにマイナーを配信する方法が増えていく様子は、数年前のランサムウェアの急増を彷彿とさせます。これは、攻撃者が配信しようとしているペイロードの種類が大きく変化していることを示しています。また、ペイロードとしてのランサムウェアの有効性に限界があることもわかります。特定の組織や標的に身代金を要求する場合は効果的ですが、不特定多数を侵害するペイロードとしては間違いなく限界があります。どこかの時点で侵害するターゲットの規模が小さくなり、期待する収益が得られなくなります。
暗号通貨マイナーは、攻撃者の新たなペイロードの選択肢として優れています。ペイロードの目的は、これまでも、そしてこれからも収益を得ることであり、暗号通貨マイニングは、その目的にとって効果的な方法です。個別のシステムからは大きな収益は得られませんが、何百台、何千台ものシステムを 1 つにグループ化すれば莫大な収益を得ることができます。また、ランサムウェアとは異なり、密かに行われる脅威です。ユーザが自分のシステムに悪意のあるマイナーがインストールされているのに気づくのは、たまたまシステムがスロー ダウンしているのに気づく以外にはほとんどありません。そのため、システムに感染して収益を生み出す期間が長くなります。多くの点でランサムウェアとは正反対です。ランサムウェアは、被害者から数日の内に収益を得て、すぐに終了するように設計されていますが、悪意のあるマイナーは、数週間、数ヵ月、理想的には数年間システムに存在するように設計されています。
このことが企業にとっての新たな課題となります。マイナーなどにどのように対応するか、すべてマルウェアとして判断するのかを決定する必要があります。各企業は、これらの脅威に対処する方法を決めなければなりません。そのためには、まず自社の環境にどれぐらいマイナーが拡散しているのかを調査し、次に今後どのように対処するかを決定します。
カバレッジ
マイナーへの対応にはさまざまな方法があり、シスコのセキュリティ製品には検知機能が組み込まれています。W32.BitCoinMiner という通貨マイナーに対する専用の検知機能も AMP には搭載されています。ただし、これらのマイナーは、さまざまな脅威にモジュールとして追加できるため、検知する名称は異なる場合があります。また、マイニングを検知するように設計された NGIPS シグネチャもいくつかあります。ただし、お客様のネットワークにおいて、望ましくない可能性があるアプリケーション(PUA)が重要な場合は、このルールがデフォルトでは有効化されていない場合もあります。マイニング アクティビティを検知するシグネチャには、40841 ~ 40842、45417、45548 ~ 45550 などがあります。
また、Threat Grid のような技術によって、マイニング アクティビティの発生時期やサンプルの送信時期を明確に特定する指標が作成されています。
IOC セクション
IP アドレス:
89.248.169[.]136
128.199.86[.]57
ドメイン:
qyvtls749tio[.]com
youronionlink[.]onion
本稿は 2018年1月31日に Talos Group のブログに投稿された「Ransom Where? Malicious Cryptocurrency Miners Takeover, Generating Millions」の抄訳です。