SSTエンジニアブログ

SSTのエンジニアによるWebセキュリティの技術を中心としたエンジニアブログです。

仮想通貨マイニングを悪用した攻撃の事例紹介

こんにちは!新卒エンジニアの西尾です。
今回、学生時代の研究の延長線上として、仮想通貨を不正マイニングする攻撃を調査・解析してみたので、その解析結果と併せて不正マイニングの事例紹介を書いていきます。
セキュリティ系のエンジニアや研究者の方のお役に立てれば幸いです。

ちなみに最近、大学院時代に書いたDrive-by Download攻撃に関する論文が情報処理学会の論文誌(ジャーナル)に掲載されました!

ipsj.ixsq.nii.ac.jp


はじめに

元々私は大学でDrive-by Download攻撃に関する研究をしていて、去年(2017年)の9月頃からDrive-by Download攻撃と仮想通貨の不正マイニングを組み合わせたDrive-by Miningという攻撃が発生しているのを知りました。
そこで今回、学生時代の研究の延長線上として、不正マイニングを行う攻撃の調査・解析を実施しました。

本記事では、その調査から発見した攻撃手法として、Coinhiveを悪用したDrive-by Mining、マイニングマルウェアに感染させるフィッシングと、Drive-by Download攻撃の3つの事例をご紹介します。

※なお、本記事の内容は個人の見解であり、所属組織を代表するものではありません。


Drive-by Download攻撃 と Drive-by Mining

まず、Drive-by Download攻撃とDrive-by Miningの概要を簡単に説明します。(フィッシングは割愛で)

Drive-by Download攻撃とは

Drive-by Download(DBD)攻撃とは、Webサイトを閲覧しただけで、知らない内にマルウェア感染してしまう攻撃です。
DBD攻撃の流れを簡単に説明します。

f:id:swime:20180914145941j:plain
Drive-by Download攻撃の簡単な流れ

1. 攻撃者が正規Webサイトを改ざんし、不正なサイトのURLをiframe等で埋め込む  
2. ユーザが改ざんサイトへアクセス  
3. 改ざんコード(iframe等)によって、ユーザを不正なサイトへリダイレクト  
4. 不正なサイト上でユーザのブラウザ等の脆弱性を突き、制御を乗っ取る
5. 攻撃者が強制的にマルウェアをダウンロード・実行させる

リダイレクト動作やマルウェアのダウンロード動作などは画面上に表示されないようにされており、ユーザはマルウェア感染するまで攻撃に気づけないことが特徴となっています。
ここ数年はランサムウェアに感染させる攻撃が多い気がします。

Drive-by Miningとは

Drive-by Mining(DBM)とは、攻撃者が正規サイトを改ざんしてCoinhiveなどのマイニングスクリプトを埋め込み、そのサイトの閲覧者にマイニングを行わせる攻撃です。
Cryptojackingとも呼ばれていますが、個人的にはDrive-by Miningの方がしっくりきます。
Drive-by Miningの流れを簡単に説明します。

f:id:swime:20180914160312j:plain
Drive-by Miningの簡単な流れ

1. 攻撃者が正規Webサイトを改ざんし、Coinhive等のマイニングコードを埋め込む
2. ユーザが改ざんサイトへアクセス
3. ユーザのブラウザ上でマイニングを実行
4. マイニングの報酬は攻撃者のものとなる

攻撃の流れを見たら分かる通り、脆弱性の悪用やマルウェアのダウンロードなどをする必要がないので、DBD攻撃よりも攻撃の手間がかかりません。
さらに、脆弱性を突くような攻撃コードはなく、マイニングソフト自体は一般的なものを利用するため、アンチウイルスソフト等から検知されづらいです。(Coinhiveなど、そもそもアンチウイルスソフトが悪性判定してるものは別ですが…)
また、マイニングスクリプトがWebサイトの管理者によって意図的に埋め込んだものか、それとも攻撃者が改ざんして埋め込んだものなのかを外部から判断するのは難しいため、Web改ざんにも気づきにくくなります。
まとめると、DBMはDBD攻撃よりも低コスト・低リスクで稼げる攻撃となっています。


不正マイニングの事例紹介

ここでは不正マイニングの種類として、JavaScriptでマイニングを行うDBMと、実行ファイル形式のマイニングマルウェアの大きく2種類に分けます。
さらに、マイニングマルウェアの感染手法として、フィッシング型DBD型の2パターンを紹介します。

解析データに関して

今回はDrive-by Download攻撃などの解析レポートを公開しているサイトから、不正マイニングサイトにアクセスした際の通信データ(パケットファイル)を取得し、解析しました。
その解析結果の中から、代表的な攻撃事例を3つご紹介します。

Drive-by Mining(事例1)

まずはJavaScriptで不正マイニングを行うケースです。
この事例では、Web改ざんによってCoinhiveのマイニングスクリプトを不正に埋め込んでいました。
マイニングまでの流れを下図に示します。

f:id:swime:20180918172849j:plain

ユーザが改ざんサイトにアクセスすると、Coinhiveのマイニングスクリプトが実行されるだけです。そのため、攻撃としてはかなりシンプルです。

下図は改ざんによって挿入されたJavaScriptになります。

f:id:swime:20180918175118j:plain

HTMLファイルの先頭から10行分だけ改ざんしています。
普通はスクリプト部分だけを見ても、サイト管理者が意図的にマイニングスクリプトを設置したのか、改ざんによって挿入されたのかの判定は難しいです。しかしこのケースでは、DOCTYPE宣言よりも前にスクリプトタグがあること、わざわざDOM操作をしてスクリプトを挿入していること、1行目に謎の数字(改ざんの痕跡?)があることから、改ざんである可能性が高いです。
ちなみに、このパケットファイルを提供していたサイトの解析レポートによると、これはEITestという攻撃キャンペーンによる改ざんとのことでした。
本筋からそれるのですが、このWebサイトではおそらくアクセスしてきたユーザの環境によって改ざんコードを変えており、Coinhiveでマイニングする場合と、Windows Defenderを装った技術サポート詐欺の画面を表示する場合があるみたいです。これはEITestのクローキングという機能によるものだと思われます。

マイニングの話に戻りますが、このマイニングの設定ではthrottle:0.4となっており、これはCPU使用率を60%に設定していることを意味します。ちなみに、Coinhiveのデフォルト設定ではCPUを100%使用するようになっています。攻撃者が負荷率をデフォルトよりも下げているのは、できるだけ閲覧者にマイニング行為を気づかせないようにしていると考えられます。

マイニングマルウェア

次に、exeファイルなど、実行ファイル形式のマイニングマルウェアに感染させる攻撃手法を2種類紹介します。

フィッシング型(事例2)

フィッシング型は、正規ファイルを装ってマイニングマルウェアをユーザにダウンロードさせます。DBD攻撃と違って、Webサイトを閲覧しただけでは感染しません。

下図は実際にあった感染の流れの一例になります。

f:id:swime:20180919115242j:plain

攻撃が仕掛けられたサイトにアクセスすると、偽のゲーム広告か、偽のAdobe Flash Playerのアップデート画面が表示されます。そこからファイルのダウンロードをクリックすると、攻撃者サーバを経由し、Github上に存在するflashupdate.exeという名前のマイニングマルウェア(Bitcoinマイナー)をダウンロードします。マイニングマルウェアは攻撃者のC&Cサーバと通信し、被害者PC上でマイニングを開始します。その後、被害者のブラウザ上では、短縮URLを利用して攻撃者サーバにリダイレクトし、最終的には公式のAdobe Flash Playerのダウンロードサイトを表示させます。

個人的な感想ですが、Githubから実行ファイルをダウンロードしているのが面白く感じました。ユーザが意図しないものをダウンロード・実行させるのが問題であって、Bitcoinマイナー自体は正規のツールですしね…。ちなみに、既にこのファイルはGithub上から削除されています。

マルウェアファイルを解析したわけではないので正確な挙動は分からないのですが、偽のFlashアップデートをクリックすると(最終的に)公式のダウンロードサイトが表示されることから、おそらく被害者に気づかれないように、裏でひっそりとマイニングしていくものと思われます。自分にマルウェア解析の技術があれば負荷率とか調べてみたかったですね…

Drive-by Download型(事例3)

最後に、DBD攻撃でマイニングマルウェアに感染させる事例を紹介します。DBD攻撃はフィッシングと異なり、Webサイトにアクセスしただけでマルウェアに感染してしまいます。

下図が実際にあった感染の流れの一例になります。

f:id:swime:20180919124640j:plain

攻撃の起点となるのはWebサイトではなく、不正なJavaScriptが組み込まれたWeb広告になります(マルバタイジング)。この広告を閲覧すると、偽のお問い合わせフォームのサイトへリダイレクトし、そのサイト上に存在するiframeから攻撃サイトへアクセスします。攻撃サイトでは、Adobe Flash Playerの脆弱性を突き、Quant Loaderというダウンローダをダウンロードさせます。このダウンローダが攻撃者のC&Cサーバと通信し、マルウェア配布サイトからマルウェア本体となるmprocess.exeという名前のマイニングマルウェアをダウンロード・実行します。

不正広告はNgayという攻撃キャンペーンによるもので、脆弱性を突く攻撃などはRig Exploit Kitが行っています(Rigって未だに無くならないんですね…)。
最終的にダウンロードされるマルウェアは、オープンソースのXMRigというマイニングソフトです。XMRigは仮想通貨のモネロを採掘するツールで、これ自体は悪意あるソフトではありません。ただ、悪用されることが多いため、多くのアンチウイルスソフトがマルウェア判定してる気がします…。このマイニングマルウェアは、C&Cサーバからマイニングに関する情報を取得するのではなく、mineXMR.comという正規のマイニングプールサービスと通信を行い、マイニングを実行します。
他にもいくつかのマイニングマルウェアに感染させるDBD攻撃を解析したのですが、どのマイニングマルウェアも、攻撃者のC&CサーバかmineXMR.comとマイニング情報のやり取りをしていました。
また、mineXMR.comでは接続するポート番号(マイニングプール)によって採掘難易度が変わる仕組みになっており、私が解析したマイニングマルウェアは全てEasy(低難易度)に設定されていました。難易度が下がるとCPU負荷も下がるため、できるだけ被害者に気づかれずに採掘し続ける意図があると思われます。


おわりに

本記事では、不正マイニングの攻撃事例を3種類紹介しました。
この3つの共通点として、マイニング時にはどれも正規ツールを利用していることが挙げられます。そのため、アンチウイルスソフト等がマイニング動作を見て悪性か良性かの判定をするのは難しいと思います。だからと言って、これらのマイニングツールをマルウェア扱いするのもどうかと思いますが…。

最後に、Webサイトを見ただけでマルウェアに感染するDrive-by Download攻撃は現在も発生しているので、こまめにWindowsアップデートを実施したり、不要なアプリケーションの削除、Adobe Flash Player等を利用している場合は常に最新状態にしておきましょう。