巧妙化するシェルスクリプトの隠蔽手口について解説

PCで複数のコマンドを何度も実行する簡単な方法として、シェルスクリプトがあります。多くのユーザは、ファイル操作やプログラム実行、テキスト印刷を定期的に実施する運用環境においてシェルスクリプトを使用します。WindowsでもLinuxでもシェル(コマンドラインインタープリタ、CLI)が使用できるため、サイバー犯罪者にとっても好都合なツールとなっています。トレンドマイクロではこれまでも、シェルスクリプトを使用して行われた不正活動の事例について報告しています。特に、誤って構成されたRedisインスタンス露出したDocker APIを悪用したり、感染PC内に存在する別の暗号資産採掘ツール(コインマイナー)を削除したりするなど、Linux環境での事例が目立っています。本ブログ記事では、サイバー犯罪者の手によってシェルスクリプトがどのように変更され、不正活動におけるマルウェアペイロードの開発にどのようにCLIが使用されているかに焦点を当てます。

コマンドおよびプログラミング技術の変更

CLIを悪用する手口は目新しいものではありません。実際、多くのサイバー攻撃でCLIが現在も不正に利用されています。とはいえ弊社は、シェルスクリプトの変化と品質の高度化に気付き始めました。

これまでのシェルスクリプトは、ペイロードを直接デプロイ可能なURLリンクと単純なコマンドの組み合わせをプレーンテキストに記述した比較的簡潔なものでした。ところが最近確認された攻撃では、脅威の巧妙化に合わせてより高度なコマンドやプログラミング技術が使用されています。

図1:プレーンテキスト(左)からBase64でエンコードされたペイロード(右)へと高度化したシェルスクリプトの一例
図1:プレーンテキスト(左)からBase64でエンコードされたペイロード(右)へと高度化したシェルスクリプトの一例

プレーンテキストフィールド内に記述されたリンクはBase64でエンコードされたテキストに置き換えられていましたが、一部のコードチャンクはダウンロードまたはエンコードされたペイロードでした。これは、直接ペイロードのリンク先を隠ぺいし、それらを検知する検出ルールを回避し、解析をより困難にするために施された可能性があります。

図2:Base64エンコーディングにより置き換えられたコードチャンク
図2:Base64エンコーディングにより置き換えられたコードチャンク

エンコードされたテキストはBase64を用いてデコードされたのち、シェルスクリプトを実行するためにbashインタープリタに渡されます。

図3:Base64でエンコードされたペイロードがデコードされた際の一例
図3:Base64でエンコードされたペイロードがデコードされた際の一例

これまでコマンドは、サーバ上で実行されている攻撃対象のサービスに関係なく実行されていました。現在の高度化したスクリプトではサービスが実行されているかどうかをチェックし、ペイロードが消費するCPU時間の一部を節約することができます。さらにペイロードはBase64でエンコードされた最新のバージョンとして実行されます。また、特定のリンクの代わりに変数を使用することもできます。

図4:サービスがインストールされているかどうかを確認せずにサービスをアンインストールするコマンド
図4:サービスがインストールされているかどうかを確認せずにサービスをアンインストールするコマンド
図5:実行中のサービスを確認し、対象のサービスをアンインストールするコマンド
図5:実行中のサービスを確認し、対象のサービスをアンインストールするコマンド
図6:変数に置き換えられたwgetのURL
図6:変数に置き換えられたwgetのURL

さらに弊社は、コインマイナー「XMrig」をドロップする活動の例に見られるように、URLリンクやペイロード、あるいはヘルパーアプリケーション全体など、スクリプトの一部を格納するために「Pastebin」が新しく利用されていることも確認しました。

図7:Base64でエンコードされた環境設定とPastebinへのURL
図7:Base64でエンコードされた環境設定とPastebinへのURL
図8:Base64でエンコードされたXMrig
図8:Base64でエンコードされたXMrig
結論

サイバー犯罪者は、攻撃手口や技術を絶えず高度化および最適化させています。検出技術や被害軽減対策を回避して利益を最大化するために、サイバー犯罪者は、過去に概念実証(Proof of Concept、PoC)などで発見された攻撃手法を使用したり、他のOSで試したり、複数の攻撃手法を組み合わせたりします。ペイロードを難読化して送り込むためにシェルスクリプト機能を利用することはその1つと言えます。現在の不正シェルスクリプトでは、難読化により解析を困難化させる仕組みが見受けられるようになりました。マルウェアの作成者は将来、実際のペイロードを隠ぺいするために、さらなる難読化を施すことが予想されます。ただし、これらの技術によりLinuxにおける難読化の手口がさらに巧妙化していると主張するにはまだかなり早い段階と言えるでしょう。また、シェルスクリプトの高度化については、さらに留意して観察する価値があります。さらにリサーチャにとっては、難読化が常套手段となることにより詳細解析のために複数のレイヤーをデコードする必要があります。

トレンドマイクロの対策

サーバ向け総合セキュリティ製品「Trend Micro Cloud One™ Workload Security」(クラウド管理型)および「Trend Micro™Deep Security™」(オンプレミス管理型)では、シェルを悪用するファイルレス活動からシステムおよびユーザを保護します。このソリューションは、ネットワークセキュリティ、システムセキュリティ、およびマルウェアの侵入防止対策を提供しています。また、エクスプロイト対策と組み合わせることで、脆弱性を狙うさまざまな脅威からユーザシステムを保護します。Deep Securityは、脆弱性やマルウェア、不正変更などの脅威を検出し、これらの脅威からサーバを保護する包括的なセキュリティソリューションを提供します。

法人向けクライアント総合セキュリティ製品「Trend Micro Apex One™」は、さまざまな脅威検出機能を採用しています。「ふるまい検知」は、ファイルレス活動に関連する不正スクリプトやインジェクション、ランサムウェアやメモリ、さらにはWebブラウザからの脅威にも対策を講じることができます。加えて、Apex One Endpoitn Sencer™は、イベントを監視し不正アクティビティを伴うプロセスまたはイベントを迅速に検査する事後対処であるEDR(Endpoint Detection and Responce)を提供します。

侵入の痕跡(Indicators of compromise

今回の記事に関する侵入の痕跡はこちらを参照してください。

参考記事:

記事構成:岡本 勝之(セキュリティエバンジェリスト)

翻訳:益見 和宏(Core Technology Marketing, Trend Micro™ Research)