脆弱性「SambaCry」を利用するLinuxマルウェアを新たに確認。Linux 利用者は至急更新を

Linux および Unix 用の標準的な Windows 相互運用性プログラムスイート「Samba」に、 2010 年 3 月から存在していた脆弱性「CVE-2017-7494」が確認されました。2017 年 5 月に更新プログラムがリリースされていますが、この脆弱性を利用した攻撃は現在も続いています。Samba の開発チームが公開したセキュリティに関する勧告によると、この脆弱性を利用することで、書き込み可能な共有フォルダにアップロードした共有ライブラリの実行が可能になります。これに成功すると、攻撃者は、コマンド実行ツール「シェル」を起動し、任意のコマンドを実行して端末を操作できるようになります。影響を受ける Samba のバージョンは、3.5.0 以降のすべてのバージョンです。

この脆弱性「CVE-2017-7494」は、暗号化型ランサムウェア「WannaCry」が利用した脆弱性と同様、Windows OS のファイル共有プロトコル「Server Message Block(SMB)」に関する脆弱性です。そのため、WannaCry にちなんで「SambaCry(サンバクライ)」と名付けられました。そして、2017 年 6 月、Linux PC をボット化して仮想通貨「Monero(モネロ)」を発掘させるマルウェア「EternalMiner/CPUMiner」が、この脆弱性「SambaCry」を利用する攻撃として初めて確認されました。この時に、トレンドマイクロが入手した検体では、サーバを狙う場合だけこの脆弱性が利用され、検体も単なる仮想通貨発掘マルウェアでした。しかしそれ以降、この脆弱性を利用した攻撃対象は、サーバ以外にも広がっているようです。

脆弱性「SambaCry」を利用するマルウェアは、2017 年 7 月 3 日にも新しく確認され、弊社では「ELF_SHELLBIND.A(シェルバインド)」として検出対応しています。「EternalMiner/CPUMiner」と同様、このマルウェアも、標的にした PC でシェルを起動します。ただし、SambaCry 利用の従来のマルウェアとの相違点も確認されています。1 つは、この「ELF_SHELLBIND.A」が、特に中小企業でよく利用される NAS(ネットワーク接続ストレージ)のような「モノのインターネット(Internet of Things、IoT)」機器を標的としている点です。また、「MIPS」や「ARM」、「PowerPC」のようなさまざまなCPUアーキテクチャも対象としています。仮想通貨発掘以外の目的で SambaCry を利用するケースが確認されたのは、このマルウェアが初めてです。

■マルウェアの解析

同プログラムスイート「Samba」を使用している IP アドレスを特定することは非常に簡単です。例えば、オンライン検索エンジン「Shodan」を用いた場合、文字列「samba」とフィルタ「port:445」のみの検索条件で特定できます。このように何らかの方法で Samba を使用している IP アドレスを特定した攻撃者は、独自のツールを利用し、特定した IP アドレスで公開されているフォルダへ不正なファイルを書き込みます。今回の脆弱性が存在するバージョンの Samba が利用されていた場合、その機器は「ELF_SHELLBIND.A」の被害に遭う可能性があります。

図 1 のように、通常、「ELF_SHELLBIND.A」は、SO 形式の共有ライブラリファイル(SOファイル)として公開フォルダに書き込まれます。これは、SambaCry を利用する従来の仮想通貨発掘マルウェアと類似した挙動です。また、Samba の公開関数「samba_init_module」が呼び出される動作からも、このマルウェアが SambaCry を利用する意図が確認できます。これは、このライブラリが Samba サーバによって自動的に読み込まれる際の挙動でもあります。

Samba の公開共有フォルダに SO ファイルをアップロードした後、攻撃者がこのファイルをサーバに読み込ませて実行させるためには、ファイルのフルパスを推測し、「プロセス間通信(Inter-processcommunication、IPC)」リクエストを送信する必要があります。

図 1
図 1:公開共有フォルダに作成されたマルウェアファイルのサンプル

上述の公開関数を利用してマルウェアが読み込まれると、現在のユーザの EUID(実効ユーザ ID)またはルート権限でマルウェアを実行するために、「change_to_root_user」関数が実行されます。これは特に「SMBv2(SMBバージョン2)」のバックグラウンドプロセス「デーモン」が必要とする実行権限です。実行されたマルウェアは、「detach_from_parent」関数によって親プロセスから自身を分離しデーモン化します。その後、コマンド & コントロール(C&C)サーバと推測されるアフリカのサーバ「169[.]239[.]128[.]123:80」に、以下のような中身の無い「ノック」のメッセージを送信します。

HEAD / HTTP/1.0

このメッセージ自体はいかなる用途にも利用されることはなく、C&C サーバとの接続はこの時点で閉じられます。一方、このメッセージを受け取ることで、攻撃者は、この時点で標的 PC の IP アドレスを入手しています。

次に、「ELF_SHELLBIND.A」は Linux のパケットフィルタリング型ファイアウォールである「iptables」の設定を書き換えます。具体的には、TCP 61422 番ポートの通信に関する通信ルール「チェイン」を削除し、このポートにおけるすべての通信を許可するチェインを追加します。その後、攻撃者からのメッセージを受信するために、ポート 61422 番を待機した状態でソケットを開きます。攻撃者がこのソケットに接続すると、マルウェアは以下のメッセージを返信します。

Welc0me to shell
Enter password:

これはシェルへのリモート接続に対する認証プロセスで、下記が正しいパスワードです。

Q8pGZFS7N1MObJHf

攻撃者がこのパスワードを入力した場合、マルウェアは接続が成功したことを示す下記のようなメッセージを返信します。

Access granted

パスワードが間違っていた場合、シェルを開始することはできません。

接続が確立して認証が確認されると、攻撃者は、感染 PC 上で「シェル」を開始し、任意のコマンドを実行することで感染 PCの制御が可能になります。この際、シェルの標準入力「stdin」、標準出力「stdout」、標準エラー出力「stderr」はすべてソケットに転送されるため、このソケットで受信したあらゆるコマンドの実行が可能になります。

■被害に遭わないためには

脆弱性「SambaCry」に関する OS の更新プログラムは既にリリースされているため、被害規模は限定的となっています。攻撃を開始するために、書き込み可能な共有フォルダが必要であることも、感染率を下げる要因といえます。

Samba の更新プログラムは 2017 年 5 月にリリースされており、定期的に更新している限り問題はありません。他方、 IoT 機器で多用される Unix または Linux ベースの機器の場合、更新プログラムの適用が難しい場合があります。製造業者が Samba を利用している機器に対して更新プログラムをリリースしていない場合、その機器には脆弱性が残ったままとなります。ユーザは、製造業者に対して最新情報を共有して積極的に対応することを推奨します。

■トレンドマイクロの対策

サーバ向け総合セキュリティ製品「Trend Micro Deep Security™」および「Trend Micro Virtual Patch for Endpoint(旧 Trend Micro 脆弱性対策オプション)」は、仮想化・クラウド・物理環境にまたがってマルウェアがサーバに侵入することを防ぎます。同製品をご利用のお客様は、以下の DPIルールによってこの脆弱性を利用する脅威から保護されています。

  • 1008420-Samba Shared Library Remote Code Execution Vulnerability(CVE-2017-7494)

ネットワーク挙動監視ソリューション「Deep Discovery™ファミリー」のサンドボックスやファイル解析エンジンにより、他のエンジンやパターンの更新がなくても、その挙動からこの脅威を検出することができます。

ネットワーク型対策製品「Deep Discovery™ Inspector」は、以下の DDIルールによってこの脅威を検知します。

  • 2451 SHELLBIND – TCP (Request)

ネットワークセキュリティ対策製品「TippingPoint」は、ThreatDV オプションに含まれる以下のフィルタを有効にすることで今回の脅威をブロックします。

  • 29058: TCP: SambaShell Checkin

■IOCS:侵入の痕跡(Indicators of Compromise、IoCs)

関連する SHA256 値

  • c27594b1a1ecee6a62adbaee5b00bad8e3540fe98ff3bac17fef03e0ebd62914
  • 516bafdede5e7a019a71028a7125f98190ee7ab71d03bc3041c9943324a78df5
  • 11f47c90393082e7fdc4213d3b888ef8b7c121a86658077465b03bb7857bc540

【更新情報】

2017/07/20 15:20 TippingPointのフィルタ区分をMainlineDVからThreatDVに修正しました。
2017/07/25 17:50 DDIルールを更新しました。

参考記事:

翻訳:澤山 高士(Core Technology Marketing, TrendLabs)