仮想通貨人気が続く中、サイバー犯罪者はさまざまな仮想通貨発掘マルウェアを開発し、継続的に微調整を加えながら攻撃に利用しています。事実、トレンドマイクロは、広範なプラットフォームおよびデバイスで一貫して仮想通貨発掘マルウェアを検出しています。
2018年10月には、Linux PC に感染する仮想通貨発掘マルウェア(「Coinminer.Linux.KORKERDS.AB」として検出)が確認されました。このマルウェアには、不正な仮想通貨発掘プロセスを監視ツールから隠ぺいするルートキットコンポーネント(「Rootkit.Linux.KORKERDS.AA」として検出)が付属しています。これにより、ユーザは不正なプロセスの存在に気付くことが困難になり、感染を示す兆候は PC のパフォーマンス低下のみとなります。また、このマルウェアは、自身とその設定を更新する機能も備えています。
Unix、または Linux のような Unix 系オペレーティングシステム(OS)は、権限管理モデルを備えており、上位の権限を必要とするファイルの実行は容易ではありません。しかし、すでにインストールされたアプリケーションであれば、インストール時に付与された権限によってプラグインをインストールすることが可能です。そのため、トレンドマイクロは、今回確認された仮想通貨発掘マルウェアの侵入経路は、メディアストリーミングソフトウェアのようなサードパーティ製または非公式のプラグイン、あるいは侵害されたプラグインだと推測しています。このような侵入経路は珍しいものではなく、過去にも、Linux PC を狙う仮想通貨発掘マルウェアがこの手法を利用しています。
図 1:感染の流れ
■技術的な解析
はじめに、実行ファイル(「Trojan.Linux.DLOADER.THAOOAAK」)が、ソースコードなどを共有する Webサービス「Pastebin」に接続し、シェルスクリプトをダウンロードして「/bin/httpdns」として保存します。次に、1時間毎にこのスクリプトを実行するタスクをスケジュールに登録し、「/bin/httpdns」を実行します。
図 2:シェルスクリプトをダウンロードして保存するコード
「/bin/httpdns」は、Pastebin に接続し、base64 形式でエンコードされた別のテキストファイルをダウンロードします。このファイルをデコードした結果もまたシェルスクリプトです。「/bin/httpdns」によって実行されると、このシェルスクリプトは Pastebin にアクセスし、利用可能な更新プログラムの有無を確認します。更新プログラムが存在する場合、「echocron」関数を実行し、更新プログラムをダウンロードして実行するタスクをスケジュールに登録します。ただし、本記事執筆時点(2018 年 11 月 8 日)では、更新プログラムの確認結果に「noupdate」という文字列が含まれていることから、利用可能な更新プログラムは存在しないと考えられます。
図 3:「echocron」関数
利用可能な更新プログラムが存在しない場合、「downloadrun」関数を実行することでメインの処理に進み、仮想通貨発掘マルウェアをダウンロードします。仮想通貨発掘マルウェアのダウンロード URL は拡張子が「.jpg」になっていますが、実際は「ELF」形式の実行ファイルです。このマルウェアは「/tmp/kworkerds」として保存されます。
図 4:「downloadrun」関数
次に、シェルスクリプトは「init」関数を実行します。この関数は、あるバージョンの初期ファイルをダウンロードして「/usr/sbin/netdns」として保存し、サービスとしてインストールします。続いて、「echocron」関数が呼び出されます。
図 5:「init」関数
10 秒間の休止後、56415 番ポートの接続を確認し、接続が確認できなかった場合「downloadrunxm」関数を実行します。「downloadrunxm」関数は、「downloadrun」関数によってダウンロードおよび実行した仮想通貨発掘マルウェアが適切に動作しなかった場合に備え、別の仮想通貨発掘マルウェア(「Coinminer.Linux.KORKERDS.AA」)をダウンロードする関数です。
図 6:「downloadrunxm」関数
■ルートキットコンポーネントのインストール
「downloadrunxm」関数がダウンロードする仮想通貨発掘マルウェアは、ルートキットをダウンロードおよびインストールする「top」関数を備えています。この関数は、まずルートキットがすでにインストールされていないか確認します。見つからなかった場合、ルートキットをダウンロードして「/usr/local/lib/libdns.so」として保存し、感染 PC にインストールします。
図 7:「top」関数
通常、プロセス監視ツールによって仮想通貨発掘プロセスを検知することが可能です。図 8 は、Unix 系 OC のプロセス監視ツール「htop」の画面です。仮想通貨発掘プロセス「/tmp/kworkerds」が、感染 PC のリソースを消費し尽くしていることが確認できます。
図 8:プロセス監視ツール「htop」により、仮想通貨発掘プロセス「/tmp/kworkerds」を検知可能
しかし、問題のルートキットは、このような監視ツールから仮想通貨発掘プロセスを隠ぺいします。その結果、図 9 では、感染 PC の CPU 使用率が 100% になっているにも関わらず、リソースを大量に消費しているプロセスを確認することができません。
図 9:ルートキットが仮想通貨発掘プロセス「/tmp/kworkerds」を隠ぺい
このルートキットコンポーネントは、上述した目的のために、公開されているコードにわずかな変更を加えて作成されたものです。このコンポーネントのインストール後、「kworkerds」という名称のプロセスはすべて監視ツールから確認することができなくなります。通常、プロセス監視ツールは、ディレクトリ「/proc/{PID}」のファイルにアクセスすることで動作します。このディレクトリへのアクセスがブロックされると、通常の手段で不正なプロセスを検知することは困難です。
問題のルートキットは、「/proc/{PID}」へのアクセスをブロックするために、「libc」ライブラリの API「readdir」および「readdir64」をフックします。プロセス監視ツールが共通して利用するこれらの API が呼び出されると、ルートキットは、メモリにファイルを格納する「preloading」を通して、正規の「readdir」を、図 9 のコードで上書きします。これにより、プロセス監視ツールから「kworkerds」という名称のプロセスを隠ぺいします。
図 10:仮想通貨発掘プロセスを監視ツールから隠ぺいするコード
■被害に遭わないためには
今回確認されたルートキットは、CPU の高使用率や仮想通貨発掘マルウェアによる接続を隠ぺいすることはできません。しかし、既存ツールのコードをわずかに修正することで、プロセス監視ツールから仮想通貨発掘プロセスを隠ぺいすることに成功しています。また、ダウンローダの役割を持つシェルスクリプトには、仮想通貨発掘マルウェアを更新する機能が含まれているため、今後、収益性を向上するためにより多くの機能が追加されることも予想に難くありません。
Linux は、サーバ、ワークステーション、アプリケーション開発フレームワーク、データベース、モバイルデバイスなど、さまざまな用途でビジネスプロセスを維持するために利用されているため、今回の事例のような Linux を狙う仮想通貨発掘マルウェアの影響は重大なものとなり得ます。IT管理者およびシステム管理者は、このような脅威に対処するために以下のようなベストプラクティスに従ってください。
- 未検証のライブラリまたはリポジトリを無効化し、最小権限の原則を適用すること
- 効果が実証されたセキュリティのための拡張機能を使用し、システムのセキュリティを強固にすること
- ファイル、システムおよびネットワーク資源へのアクセスを制御し、攻撃経路を最小化すること
- システムおよびネットワークを定期的に監視し、異常な活動の有無を確認すること
- 脆弱性の利用を防ぐため、定期的に更新プログラムを適用してアプリケーションを最新に保ち、侵入検知および侵入防御システムのようなセキュリティの仕組みを採用すること
■トレンドマイクロの対策
クロスジェネレーションで進化を続ける「XGen™セキュリティ」は、AI 技術をはじめとする先進技術と実績の高いスレットインテリジェンスを融合した防御アプローチにより、データを保管するサーバ、データを交換するネットワーク、データを利用するユーザの各レイヤーで最適化されたセキュリティを提供します。Web/URLフィルタリング、挙動解析、カスタムサンドボックスのような機能を備えたクロスジェネレーション(XGen)セキュリティアプローチは、既知または未知/未公開の脆弱性を狙い、個人情報の窃取や暗号化、不正な仮想通貨発掘活動を行う脅威をブロックします。XGen は「Hybrid Cloud Security」、「User Protection」、そして「Network Defense」へのソリューションを提供するトレンドマイクロ製品に組み込まれています。
■侵入の痕跡(Indicators of Compromise、IoC)
関連するSHA256値は以下の通りです。
- 「Trojan.Linux.DLOADER.THAOOAAK」:cdd921a5de5d5fffc51f8c9140afa9d23f3736e591fce3f2a1b959d02ab4275e
- 「Coinminer.Linux.KORKERDS.AB」:baf93d22c9d1ae6954942704928aeeacbf55f22c800501abcdbacfbb3b2ddedf
- 「Coinminer.Linux.KORKERDS.AA」:0179fd8449095ac2968d50c23d37f11498cc7b5b66b94c03b7671109f78e5772
- 「Rootkit.Linux.KORKERDS.AA」:023c1094fb0e46d13e4b1f81f1b80354daa0762640cb73b5fdf5d35fcc697960
関連する不正なURLは以下の通りです。
- hxxps://monero[.]minerxmr[.]ru/1/1535595427x-1404817712[.]jpg
参考記事:
- 「Cryptocurrency-mining Malware Targets Linux Systems, Uses Rootkit for Stealth」
by Augusto II Remillano, Kiyoshi Obuchi, and Arvin Roi Macaraeg
翻訳: 澤山 高士(Core Technology Marketing, TrendLabs)