ランサムウェア
Linuxを狙うBash型ランサムウェア「DarkRadiation」
トレンドマイクロは、Linuxなどで採用されるシェル「Bash」を使ったランサムウェア「DarkRadiation」を確認しました。このランサムウェアは攻撃にBashスクリプトを利用しているものの、そのスクリプト自体はまだ開発途中であると当社は推測しています。
トレンドマイクロは、Linuxなどで採用されるシェル「Bash」を使ったランサムウェア「DarkRadiation」を確認しました。このランサムウェアは攻撃にBashスクリプトを利用しているものの、そのスクリプト自体はまだ開発途中であると当社は推測しています。攻撃で使用されるコンポーネントの多くは、主に「Red Hat」および「CentOS」向けのLinuxディストリビューションを対象としていますが、一部のスクリプトには、「Debian」向けのLinuxディストリビューションも含まれていました。また、これらのワームやランサムウェアのスクリプトでは、コマンドアンドコントロール(C&C)の通信にメッセージングアプリケーション「Telegram」のAPIを使用していました。さらにまた、攻撃で使用されたコンポーネントほとんどは「Virus Total」での検出数が非常に少ないことも確認されました。実際、これらのランサムウェアの情報が記載されたハッキングツールのURLは、当初Twitter上で報告されていただけでした。
本記事では、今回扱うランサムウェアおよびランサムウェアの展開に使用された「Secure Shell(SSH)ワーム」、そしてこれらが格納されているディレクトリ「api_attack/」を解析した結果を説明します。

図1:ランサムウェア「DarkRadiation」感染時に表示される画面の例
■ 攻撃の概要
今回確認した攻撃で使用されたハッキングツールの一覧と概要は以下の通りです。

図2:攻撃者が使用するハッキングツールのディレクトリ
これらのスクリプトの中には、オープンソースのコードをベースにしたものも確認されています。例えば、「binaryinject1.so」は「libprocesshider」と呼ばれるルートキットの修正版であり、「ld-preloader」および「pwd.c」(「CVE-2017-1000253.c」)を使用してLinuxでプロセスを隠す機能を備えています。そして「CentOS 7」のカーネルバージョン「3.10.0-514.21.2.el7.x86_64」および「3.10.0-514.26.1.el7.x86_64」の双方向けのエクスプロイトとしても機能します。
これらのツールの中でも「api_attack/」の内容は特筆すべきです。「api_attack/」のディレクトリには、トレンドマイクロが「DarkRadiation」と名付けたBash型ランサムウェアのさまざまな亜種や、このランサムウェアを拡散させた「SSHワーム」が含まれていたからです。このディレクトリにあるスクリプト「Supermicro_cr_third」は、このランサムウェアの最も完全なバージョンであると思われます。また、このスクリプト自体は、「node-bash-obfuscate」というオープンソースのツールで難読化されています。これは、bashスクリプトを難読化する「Node.js」のCLIツールやライブラリでもあります。

図3:「/api_attack」に関する攻撃者のハッキングツールのディレクトリ

図4:攻撃者が使用するマルウェアのホスティングディレクトリ
このディレクトリで確認されたスクリプトのほとんどは発見時点で「Virus Total」での検出数がゼロとなっていました。

図5:「Virus Total」の検索結果
■ ワームおよびランサムウェアの解析
以下、確認されたワームやランサムウェアのスクリプトについて詳しく説明します。
「SSHワーム」スクリプト
「downloader.sh」はSSHワームです。実行時にセットされる引数を活動時の設定情報として使用します。実行されると設定情報を確認し、ワーム活動の攻撃対象がパスワード認証か公開鍵認証かを判定します。パスワード認証への攻撃の場合、引数として使用する認証情報のリストがBase64エンコードの形式で渡されます。この認証情報リストとしては、感染端末から攻撃者によってダンプされた情報、もしくはパスワード強度が弱い端末を狙ったブルートフォース攻撃(辞書攻撃)用のリストが使用されます。攻撃対象端末のSSHにアクセス成功すると、このワームはリモートでランサムウェアをダウンロードさせて実行します。下図は、デコード後にスクリプトに入力される引数の例です。

さらに下図のコードスニペットは、このワームの動作を示しています。

図6:ワームのエントリー機能
そしてこのワームは、関数「check_ssh_connection」により、感染端末への接続が成功した場合は「code:0」、pingエラーの場合は「code:254」、パスワード認証と公開鍵認証のいずれの場合でもSSH接続エラーの場合は「code:255」を返します。さらにこのワームは、ユーティリティ「sshpass」を使用して、非対話型のSSHパスワード認証を行います。
さらに、このワームは、SSHインラインパスワードの場合、パラメータ「sshpass」に「passwordauthentication=yes」を設定します。そしてその上で、ランサムウェアのスクリプトをディレクトリ「/usr/share/man/man8/」に格納して実行します。なお、このSSHワームによるセッションが終了した場合にも、自身のプロセスを続行するために「screen session」および「nohup」のコマンドが使用されます。

図7:ワームの偵察および拡散のための機能
このワームは、C&CサーバへのAPIコールを通じて暗号化パスワード「($crypt_pass)」を取得した後、さらにそれをスクリプト「supermicro_cr.gz」へ渡します。

図8:暗号化キーの要求
なお、このワームには、動作に必要なユーティリティがまだインストールされていない場合、それをダウンロードしてから感染端末にインストールするための機能「install_tools」も備えています。さらに、このワームはLinuxシステムのソフトウェアパッケージ管理を行うプログラム「yum(Yellowdog Updater Modified)」を使用している点から、「CentOS」もしくは「RHELベース」のLinuxディストリビューションに必要なパッケージのみをダウンロードしてインストールしていると判断できます。他のハッキングツールおよびランサムウェア「DarkRadiation」の亜種の中には、こうした前提条件となるパッケージのダウンロード・インストールする際にyumだけを使用するものがあるからです。

図9:前提条件パッケージのインストール
そして最終的にこのワームは「Telegram」のAPIを介して、スキャンおよび拡散の結果を攻撃者に報告します。

図10:ワームは、攻撃者の「Telegram」チャンネルに実行状況を送信する
ランサムウェア「DarkRadiation」
前節では、認証設定をbase64のパラメータで受け取って感染端末へランサムウェアをダウンロードして実行するSSHワームのスクリプトについて説明しました。
ここでは、ランサムウェア「DarkRadiation」の最新版と推測される「supermicro_cr_third」というスクリプトの解析結果を説明します。このランサムウェアは、bashスクリプトで記述されており、「Red Hat」「CentOS」「Debian」のLinuxディストリビューションを対象としています。また、「OpenSSL」のAESアルゴリズムをCBCモードで使用して、さまざまなディレクトリ内のファイルを暗号化します。また、「Telegram」のAPIを使用して攻撃者に感染状況を送信します。
なお、このスクリプトは、まだ開発途中であり、このランサムウェアのさまざまな亜種の中では、わずかな変更があるだけでいずれも類似していることが確認されています。また、一部の機能はランサムウェアの作者によるコメントが付記されており、一部の機能は使用されていない(デッドコード)場合もあるようです。以下、このランサムウェアがどのように動作するかの詳細について説明します。
このスクリプトは、「node-bash-obfuscate」というオープンソースのツールで難読化されています。このツールは、bashスクリプトを難読化するための「Node.js」のCLIツールであり、ライブラリでもあり、bashスクリプトをチャンクに分割した後、各チャンクに変数名を割り当てた上で、元のスクリプトを変数参照に置き換えることにより、実質的に元のスクリプトを難読化します。
以下のコードスニペットは、このスクリプトを使ってbashスクリプトを難読化する方法を示しています。

図11:「node-bash-obfuscate」 のオプション

図12:「node-bash-obfuscate」 の出力例
そして「supermicro_cr_third」の解析結果は下図のとおりです。

図13:スクリプト「supermicro_cr_third」が難読化された状態
また、このランサムウェアは、実行時にルートとして実行されたかどうかも確認します。実行されていない場合は「Please run as root」というメッセージを表示し、自身を削除して終了します。

図14:スクリプト「supermicro_cr_third」の主な機能

図 15:スクリプトがルートで実行されたかどうかを確認する動作
そして「curl」および「OpenSSL」がインストールされているかどうかを確認し、もしインストールされていなければ、このランサムウェアはそれらをダウンロードしてインストールします。

図16:別バージョンで前提条件パッケージのインストールする動作

図17:「supermicro_cr_third」で前提条件パッケージのインストールする動作
関数「bot_who」は、コマンド「who」を使ってUnixコンピュータシステムにログインしているユーザのスナップショットを取得するbashスクリプトです。そのうえで、取得した結果を「("/tmp/.ccw")」という隠しファイルに保存します。その後、5秒ごとにコマンド「who」を再度実行し、出力されたファイル「.ccw」をチェックします。両者が一致しない場合(新しいユーザーがログインした場合)、このランサムウェアは「Telegram」のAPIを介して攻撃者にメッセージを送信します。

図18:スクリプト「 supermicro_bt」のスクリーンショット
このランサムウェアは、暗号化プロセスの前にファイル「/etc/shadow」を照会することで、感染端末上で利用可能なすべてのユーザのリストを取得します。そして、既存のユーザのパスワードをすべて「megapassword」で上書きし、「ferrum」以外の既存のユーザをすべて削除します。その後、設定セクションからユーザ名「ferrum」、パスワード「MegPw0rD3」の新規ユーザを作成します。そしてコマンド「usermod --shell /bin/nologin」を実行して、感染端末上の既存のシェルユーザをすべて無効にします。

図19:「supermicro_cr_third」の環境設定

図20:「supermicro_cr_third」の関数「user_change」
なお、今回確認したランサムウェアの亜種の中には、ユーザー名「ferrum」や「root」以外の既存のユーザをすべて削除しようとするものがありました。

図 21:「crypt3.sh)」の関数「 user_change」
また、このランサムウェアは、C&Cサーバに「0.txt」が存在するかどうかを確認します。存在しない場合は、暗号化プロセスを実行せずに60秒間スリープし、その後に再試行します。注意すべきは、「wget」がオプション「--spider」付きで起動され、指定されたURLに「0.txt」が存在するかどうかだけをチェックする動作である点です。

図22:関数「 loop_wget_telegram」

図23:ディレクトリ「/check_attack」
このランサムウェアは、暗号化に際して「OpenSSL」のAESアルゴリズムをCBCモードで使用します。そして、ワームのスクリプトから渡されるコマンドライン引数を介して暗号化のパスワードを取得します。

図24:「supermicro_cr_third」キーの環境設定
なお、他のランサムウェアの亜種では、暗号化パスが異なる場合があるため、注意が必要です。「super_micro_third」では、ファイルの暗号化に「(crypt_file.sh)」という分離したスクリプトを使用しています。しかし「supermicro_cr」などの他の亜種では、ファイルの暗号化を自身で実行します。また、このタイプの亜種の場合、暗号化されたファイルの拡張子として放射性記号(「☢」)が付加されている点にも注意が必要です。

図25:「super_micro_third」の暗号化プロセス
<

図26:「 supermicro_cr」の暗号化機能
このランサムウェアは、TelegramのAPIを介して暗号化の状態を攻撃者に送信します。

図27:「Telegram」の環境設定

最終的に、このランサムウェアは感染端末上で稼働しているすべてのDockerコンテナを停止して無効化し、以下のような身代金を要求する脅迫状を提示します。

図28:脅迫状のスクリーンショット
■ 結論
攻撃者は、さまざまなハッキングツールを使用することで感染端末から接続されたネットワーク上を水平方向に内部移動しつつ、ランサムウェアを展開します。これらのハッキングツールには、偵察および拡散向けのスクリプト、Red HatおよびCentOS用エクスプロイト、バイナリインジェクター(「libprocesshider」ルートキット)などが含まれています。しかながら、これらのツールのほとんどは、Virus Totalでの検出数が非常に少ない状況となっています。また、スクリプトの中には、まだ開発段階のものもあるようです。
その他にも注目すべき要素が確認されました。これらワームやランサムウェアのスクリプトは、TelegramのAPIを介して攻撃者と通信し、C&Cサーバに直接アクセスすることができるという点です。さらにランサムウェアは、感染端末上のすべてのユーザを削除し(一部の亜種ではルートユーザを残します)、攻撃者専用のアカウントを作成することが可能となっています。そしてファイルの暗号化する際は「OpenSSL」のAESアルゴリズムを使用して、特定の拡張子を持つファイル、もしくは指定されたディレクトリのすべてのファイルを暗号化します。
この記事では、ワームおよびランサムウェア「supermicro_tr_third」のスクリプトの解析結果を扱いました。解析の結果、このランサムウェアは「node-bash-obfuscate」というオープンソースのツールで難読化されており、さらにこのツールは、bashスクリプトを難読化するための「Node.js」のCLIツールおよびライブラリであることが確認されました。この解析結果により、今後、攻撃者が同様のツールを使った他のランサムウェアの亜種を展開してくる可能性などをも含め、より効果的な検出や攻撃手法の把握に役立つでしょう。
■ トレンドマイクロのソリューション
トレンドマイクロのセキュリティソリューションの中でもランサムウェアへの対策として推奨されるものを以下に示します。
法人向けのエンドポイント製品「Trend Micro Apex One™」や中小企業向けのクラウド型エンドポイントセキュリティサービス「ウイルスバスター™ビジネスセキュリティサービス」では、「FRS」技術によるウイルス検出と同時に、機械学習型検出や挙動監視機能(不正変更監視機能)の強化により、侵入時点で検出未対応のランサムウェアであっても警告可能です。
また「Trend Micro Apex One™」は事前防御(EPP)と事後対応(EDR)を統合し、高い防御力を実現します。また、クロスジェネレーション(XGen)セキュリティアプローチにより、高い検出率と誤検出/過検出の回避を両立しつつ、コンピュータへの負荷軽減を実現します。
「Trend Micro XDR」は高度な分析と人工知能(AI)技術を使用して、エンドポイント、メール、ネットワークなどのアラートを相関させ、一つの防御ポイントの情報だけではわからないような脅威を可視化し、深刻度のレベルに応じて優先順位を付けます。これにより、企業は攻撃がどのように開始され、どの程度拡散しているかを迅速に把握でき、被害を最小化することができます。
■ 侵入の痕跡Indicator of Compromise、IoC)
今回の記事に関する侵入の痕跡は、こちらを参照してください。
参考記事:
- 「Bash Ransomware DarkRadiation Targets Red Hat- and Debian-based Linux Distributions」
by Aliakbar Zahravi
翻訳:与那城 務(Core Technology Marketing, Trend Micro™ Research)