FortiGuard Labs 脅威リサーチ
仮想通貨は最近、激しい下落傾向にありますが、それでも情報技術と無縁の人たちの間では今でも人気となっています。実際、最大の仮想通貨の合計時価総額は現在も1,000億ドルを超えています。そしてお金があるところには、犯罪者がいます。
不正な収入を得る方法の1つが、マルウェアを使うことです。最近はインターネット上にソースコードが気前よく提供されているため、この方法は年々容易になっています。
今回の記事では、クリップボードを差し替えるマルウェアファミリーの代表例を見ていきましょう。このサンプルには、10,000超の既存のビットコインアドレスを利用し、ビットコインウォレットのアドレスの最初と最後の部分だけを確認する疑い深いユーザーさえもだますという、独特な機能があります。
FortiGuard Labsでは定期的に地域のサイバー脅威の監視を行っています。日本の脅威ランドスケープを分析していると、珍しいサンプルに目が留まりました。そのリソースの一つに日本のエンコーディングがあったため、私たちのセンサーがトリガーされたのです。さらに分析を進めると、日本のユーザーだけでなく、ビットコイン資産を持っている人すべてを標的とするものであることが判明しました。
興味深いことに、このサンプルは最初に、2016年4月に発見された「ジグソーランサムウェア」というランサムウェアに関連するいくつかのルールとマッチします。他のベンダー数社も、これをランサムウェアとして検知していることがわかりました。
しかし、このサンプルの挙動はランサムウェアとはかなり異なります。ユーザーのファイルをロックし、支払いを要求することがないからです。この状況に私たちは戸惑いました。そこで、このサンプルの詳細をもう少し集め、こうした相違の本質を探ってみることにしました。
2018年4月8日、私たちのテレメトリーシステムに、SCRIPTCHECKER V0.2.1.EXE という名前でサンプルがアップロードされました。しかし、プロパティを見てみると、そこにはTextToWav.exeという異なる名前がありました。
| Link date: | 22:30 24/03/2018 |
|---|---|
| Publisher: | n/a |
| Company: | DNASoft |
| Description: | Text-to-Speech application |
| Product: | Text To Wav |
| Prod version: | Ver 3.0 |
| File version: | Ver 3.0 |
| MachineType: | 32-bit |
アセンブリの内部記述に、Firefoxブラウザになりすます明らかな試みがあることに私たちは気づきました。
ファイル名がなぜこのように一致しないのでしょうか?確実な理由はわかりませんが、コンパイルや配信という異なる段階で、マッチングのことを気にしない自動システムの仕業のようにも思えます。
アセンブリ名はBitcoinStealer.exeと指定されています。この名前は被害者をだますことを意図したものではありません。なぜなら、リバースエンジニアリングを使ってのみ、読むことができるものだからです。従って、この名前はこのファイルの本質を反映している可能性が高いと思われます。
ですが、どの段階でもマルウェアを信用することはできません。そこで、私たちはこのサンプルの機能を分析し、自分たちで確認してみることにしました。
機能分析を行う前に、マルウェアに使用されている基本的な保護を迂回しなければなりません。
主な機能から、ファイルの分析を始めていきます。「koi」という名前のモジュールを解凍し、ロードすることがわかりました。
モジュールの名前と解凍方法から、マルウェアのコードが、有名な「ConfuserEx」というプロテクターで圧縮されているのは確かです。ロードされたモジュールは高度に難読化されており、コードがConfuserExによって「ダメになって」しまっているため、ILdasmでコードを表示できません。
難読化を解除し、「koi」モジュールを元の状態に回復してから、サンプルコードの分析を始めます。サンプルの最初の挙動は、以下の通りです。
1) .Netフレームワークをインストールしなければならないという、偽のエラーメッセージを表示
マルウェアの主な機能は、クリップボードのコンテンツを変えることです。ビットコインアドレスを攻撃者のアドレスに置き換え、別のウォレットに送金するのです。コピーする際に、アドレスが置き換えられていることが分かるのでは、と思いますよね。しかし、このマルウェアには興味深い特徴があります。正規のアドレスを、文字列の最初と最後に似たような(あるいは同じ)記号を入れた偽のアドレスに置き換えるのです。
このマルウェアには、「vanityAddress」というリソースセクションに、10,000の異なるアドレスが含まれています。
正規表現がクリップボードのデータのマッチングを行うと、コードが10,000のアドレスから最も似たビットコインアドレスの選択を開始します。文字列は、攻撃者のウォレットの最初と最後の部分を可能な限り元のウォレットアドレスに近づける形で選択されます。ただし、行の最初が優先されています。
通常、人は受信者のビットコインアドレスを見て、それをコピーします。このマルウェアは似たようなアドレスを取り出し、それを使ってクリップボードのコンテンツを変えます。変更があったことに被害者が気づくことはほとんどないでしょう。
例えば、以下の左のアドレスが、右のアドレスに差し替えられます。
しかし、同時に2つ以上のアドレスがコピーされると、このマルウェアはそれを変更することができません。また、調べたマルウェアのサンプルにはP2SH ビットコインアドレス(「3」で始まる)が含まれていません。このケースでは、P2PKHアドレス(「1」で始まる)に置き換えられます。このサンプルは、Bech32アドレスを置換することができません。中のRegExpが、26から34の長さのアドレスのみを探すからです。あとで、RegExpの機能をもう少し見ていくことにします。
偽アドレスの一覧を含むリソースの名前(vanityAddress)から、攻撃者はこれら10,000のアドレスのすべてを、「Mass Address Generator」というユーティリティを使って生成したと考えられます。このツールは「vanityAddressess.txt」と「addressSecretPairs.txt」というビットコインウォレットアドレスの一覧を生成します。最初のファイルにはウォレットアドレスが含まれ、2つ目のアドレスにはそれに対応した秘密鍵が含まれています。
このツールはフォーラムの広告にありました。同じフォーラムに、他にも面白いコードがあったので、次のセクションでそれを見ていきます。
今回の悪意のあるキャンペーンの推定収益を分析してみました。私たちが分析を行った時点で、すべてのアドレスの合計収入は8.41400221 BTCになります。約60,000ドルです。
しかし、これらのアドレスの取引は、2017年後半あたりから、私たちが分析を行った時点までに行われたものです。興味深いことに、調べたサンプルのタイムスタンプは2018-03-24となっており、このサンプルが初めて当社のテレメトリーに現れたのは4月上旬でした。コンパイルのタイムスタンプは偽造が可能ですが、今回は違うと思います。
攻撃者は他の悪意のあるキャンペーンでこれらのアドレスを使用し、こうしたマルウェアで他にも改変を行っていたのではないかと私たちは考えています。だからこそ私たちは、コンパイルのタイムスタンプ前に発生した取引も見ることができるのです。
そうした取引の追跡を試みるなかで、攻撃者がいわゆる「ミキサー」というものを使用していることが判明しました。これは大きな金額を細かく分け、複数のアドレスに送信するものです。その後、使用できる取引プラットフォームでお金を引き出せるというわけです。
すべてのウォレットの現在の残高は、0,03955733 BTCとなっています。
先ほど述べましたが、「Bitcoin Stealer」のサンプルは最初、既知のランサムウェアファミリーである「ジグソーランサムウェア」に関連したルールのいくつかとのマッチングを行いました。以下の分析は、なぜこのようなおかしなことをするのか、その理由の解明を試みた結果です。
ジグソーランサムウェアは2016年4月中旬に発見されました。このマルウェアの挙動は、ランサムウェアとしては珍しいものではなく、ユーザーのファイルをエンコードし、身代金を要求するというものでした。
今回のサンプルのアセンブリ記述とジグソーランサムウェアを比べてみると、かなり似ていることが分かりました。「Mozzilla」というスペルの間違った名前も同じです。
どちらのサンプルにも「vanityAddress」というリソース名があります。分析結果から、Bitcoin Stealerは「ランサムウェア」のルーツが根強いと私たちは考えています。おそらく、ジグソーのコードを使うことで「誕生」したプロジェクトの1つということでしょう。
調査の際、他のプロジェクトも発見しました。これらは同一のものではないですが、同じ共通の特徴が見られました。BitcoinStealer.exeというアセンブリプロジェクト名から、私たちはこのソースコードを持つ「BTC Stealer」というマルウェアビルダーをダウンロードするための広告を複数、アンダーグラウンドフォーラムで発見しました。
また、今回のサンプルのソースコードによく似たソースコードが含まれる「Souhardya」という名前のGitHubアカウントも発見しました。Souhardyaは、ハッカーフォーラムからアイデアを拝借したと述べていますし、コードは教育目的用としてのみ提供されていると明確に述べています。残念ながら現時点では、こうした「概念実証」の有用性を悪意のある目的に使用する行為がよく見られます。さらに、それが利用可能な状態にあるため、多くの「スクリプトキディ」たちが、積極的にマルウェアの配信や、亜種の作成を行っています。
このセクションでは、以下のソースを比較してみたいと思います。
まず、アセンブリ記述を見てみましょう。
もう1つ似ている点が、同じ文法ミスを持つまったく同じテキストを含む偽のエラーメッセージが表示されるという点です。
また、4つのソースのうち3つに、同一のコードが入っていました。次に、その3つの悪意のあるコードが使用する正規表現とクリップボードハンドラーを比較してみます。
調べたコードサンプルには、以下のような多くの類似点があります。
残念ながら、コードの属性を構成することはできません。つまり、ジグソーランサムウェアの作成者が、BTC Stealerと同じであるかどうかは確認できないということです。ソースコードが広く配信されていることから、C#コードをコンパイルできる人ならだれでも、悪意のあるキャンペーンを独自に開始させることができます。また、アクターは容易にソースを変え、同様の方法でそれを配信できます。この状況は、Miraiマルウェアのソースがリークした時と非常に似ています。
FortiGuard Labsはシンプルかつ有効な戦法を使って、気づかれないうちにクリップボードのコンテンツを差し替える悪意のあるサンプルを発見しました。別のマルウェアファミリーであるジグソーランサムウェアとコードの類似点が多いことから、同じコードベースが使用されていると思われます。
現時点では、ソースコードがネット上で自由に利用できる状態にあるため、この両方のマルウェアファミリーの作成者が同じアクターかどうかはわかりません。しかし、ビットコインに価値がある限り、同じソースコードを使って、ユーザーのビットコインウォレットへのさらなる攻撃が行われるだろうと私たちは考えています。
フォーティネットでは、BTC Stealerマルウェアとジグソーランサムウェアの改変版を、W32/Generic!tr、MSIL/Ransom.CWF!tr、Generic.MSIL.Ransomware.Jigsaw.DEC34A8B、MSIL/Jigsaw.B!tr、W32/Agent.AA!tr、W32/Generic.AA!trとして検知しています。
-= FortiGuard Lion Team =-
ハッシュ:
BitcoinStealer.exe:
454280128478d0da357e8609d5bef43a601ba18582a96678c0d5e60ceb9b08aa
ジグソーランサムウェア:
bc83ef30422eb7b0c8903d3b4f1d4258e25cf78e9357a30dac773f8d2c17aa28
44fb1c2a1500ab3102907a0422e51cc3394d7a6868f909745a81d27332bbf025
%LOCALAPPDATA% \Drpbx\drpbx.exe
%APPDATA%\Frfx\firefox.exe
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\firefox.exe
フォーティネットの 脅威に関するグローバルリサーチ:
最新の脅威に関する詳細については、四半期ごとの脅威レポートの最新版をご覧ください。 FortiGuard Labsでは、脅威インテリジェンス情報(英文)を毎週お届けしていますので、ぜひご購読ください。