クラウド環境
Linuxのネイティブツールを悪用した攻撃方法に関する解説
ハニーポットやテレメトリにより、Linuxのネイティブツールを悪用してLinux環境に攻撃を仕掛ける攻撃事例が確認されました。本稿では、これらのユーティリティがどのように悪用されたかを説明し、その影響を最小化する方法について推奨事項を示します。
はじめに
コンテナの導入は主流となり、世界的に利用が増加しています。Cloud Native Computing Foundation(CNCF)のアンケートによると、回答者の93%が現在、本番環境でコンテナを使用しているか、使用する予定であると答えています。Kubernetesのようなコンテナオーケストレーションプロジェクトや、クラウドやインターネット上で利用できるその他のツールにより、企業や組織の運営方法に関して、従来のモノリシックアーキテクチャからマイクロサービスで構成される分散システムの構築へと、変革の波が押し寄せています。
しかし、こうした変化は、特にセキュリティの設定ミスや導入時の脆弱性によって、アタックサーフェス(攻撃対象領域)を拡大させる結果にもなっています。さらに、クラウドのセキュリティは、修正パッチの管理が企業や組織にとってしばしば膨大な作業になるため、アップデートが必ずしもタイムリーに実施されず、作業の複雑化を招いています。
公開用のWebアプリケーションでは、脆弱性のあるオープンソースライブラリLog4ShellやSpring4ShellからフレームワークApache StrutsやDrupal、Atlassian Confluence、Oracle WebLogic Server、Apache HTTP Serverなどのアプリケーションまで、幅広いソースで重大な脆弱性が発生していることが確認されています。脆弱性の概念実証(PoC)が公開されると、攻撃者はそれを悪用して、暗号資産のマイニングから時にはランサムウェアの展開まで、さまざまな不正活動を仕掛けることが可能となります。
防御する側の視点に立てば、何よりもまず、攻撃者に活動の足場を築かせないことが理想です。しかしその理想の実現が常に可能であるとは限りません。攻撃者がシステムに侵入した場合、防御する側の仕事は、多層防御のセキュリティ戦略を駆使して、攻撃者のさらなる活動を阻止することです。
そして今回、トレンドマイクロでは、ハニーポットのネットワークや詳細なテレメトリにより、攻撃で駆使された脆弱性悪用の大半について、特にLinuxのネイティブツールによる手口について興味深い特性を確認することができました。
Linux環境における正規のユーティリティやツールを用いた攻撃
Linuxベースのシステムに対する攻撃は、通常、典型的な脆弱性悪用の感染フローに従います。まず、攻撃者は脆弱性を悪用して、その時点で侵害が可能と判断された環境への初期侵入を試みます。そこから攻撃者は、環境内をさらに移動するために、異なる経路を取ること可能性があります。
トレンドマイクロでは、実際の攻撃および同社のハニーポットに基づき、curl、wget、chmod、chattr、ssh、base64、chroot、crontab、ps、pkillといったLinuxディストリビューションに同梱されているさまざまなツールが攻撃者に悪用され、不正活動が展開されていたことを確認しました。
このようなツールを悪用する攻撃者が野放しになっている状況ともいえます。これらのユーティリティのツールは、特にコンテナ環境内において、攻撃者に新たな手段を提供することになるため、何らかの対策を講じる必要があります。
以下、実際にTrend Micro Cloud One™およびVision Oneで確認された攻撃活動や不正利用の事例を紹介します。
base64ツールは、base64形式で暗号化された文字列を復号するLinuxのユーティリティです。攻撃者は、多くの場合、検知を回避するためにbase64の暗号化を使ってペイロードやコマンドを難読化します(T1027)。この手法については、以前の記事「The Evolution of Malicious Shell Scripts」で詳しく解説しています。
ユーザのホームディレクトリに保存される履歴ファイル.bashは、ユーザがbashシェル上で実行したコマンドのログを記録します。「Misconfigured Docker Daemon API Ports Attacked for Kinsing Malware Campaign」で説明されたとおり、攻撃者は、標的となる環境のコンテキストを理解するためにこれらのファイルから情報を抽出することが知られています。
このファイルには、環境内に登録されたユーザのリストが含まれており、どのユーザがログイン時に関連するシェルを持っているかが表示されます。この情報は、攻撃者が環境を理解し、利用価値のあるユーザをピンポイントで特定するのに役立ちます。(T1003.008)
ユーティリティツール「chattr」は、ファイルやフォルダの属性を変更し、ファイルの削除や変更といった操作を制御する際に使用されます。例えば、図5のでは「/etc/crontab」ファイルの属性が変更され、安全でないファイルになっていることが分かります。このユーティリティは、以前、攻撃グループ「TeamTNT」によって悪用されたことが確認されており、トレンドマイクロのホワイトペーパー「TeamTNTの追跡調査-クラウドを狙う攻撃者グループの活動実態調査」でも紹介しています。
ツール「chmod」は、ファイルのモード変更や、ユーザやグループごとにアクセスを細かく設定するために使用されます。このツールは、新たにダウンロードした実行ファイルの実行に必要です。この場合、パス「 */tmp* 」にある「_agettyd_file 」の実行可能ビットを設定されていることがわかります。
cronジョブは、タスク(またはジョブ)をスケジュール化するために使用されるユーティリティツールです。攻撃者は、このcron ジョブを悪用し、「crontab」を変更して、実行、持続、時には特権昇格の手法を駆使しています(T1053.003)。なお、図 7 の例では、既存の cron ジョブが削除されているのがわかります。これは、暗号資産のマイナー(採掘者)が、他のマイナーの痕跡を削除することで互いに競争し、可能な限り最大限のリソースを乗っ取るためによく取られる手法です。トレンドマイクロのブログ「Linuxシステムを狙う不正マイニング戦争」では、このような活動について詳しく説明しています。
curl(またはcURL)ユーティリティツールは、HTTP、HTTPS、FTP(File Transfer Protocol)など、異なるプロトコル間でデータを転送するために使用されます。図8の例では、OSのバージョンやリリースバージョンなどのシステム情報が、攻撃者のインフラにPOSTリクエストとして送信されています。
今回の場合は、GithubからコインマイナーXMRigのバイナリをダウンロードするためにcurlを使用しています。攻撃者は、以前のブログ「GitHub、Netlify経由でコインマイナーを配信、脆弱性の悪用事例を解説」で説明したように、GithubやNetlifyのような正規のプラットフォームを悪用して、暗号マイニングツールを提供することが知られています。
ユーティリティ「kill suite」は、プロセスにシグナルを送るためのものです。例えば、図10の例に示すように、「kdevtmpfsi」という名前のプロセスに対してシグナル「SIGKILL」を送ります。2020年の時点で、kdevtmpfsiという名称のコインマイナーが確認されています。トレンドマイクロのブログ記事「Analysis of Kinsing Malware's Use of Rootkit(英語)」では、コインマイナーが競合相手を強制終了させる別の例を紹介しています。
ユーティリティツール「ps」は、プロセスの状態を表示するために使用されます。図11は、コマンド「ps aux」であり、システム上で現在実行中のプロセス、プロセスID、プロセス権限など、プロセスに関する詳細な情報を取得している様子を示しています。この情報は、攻撃者が事前調査の手法(T1057- Process Discovery)を実行し、標的となる環境についての情報を得るのに役立ちます。
図12は、ツール「rm」を使って、ディレクトリ「/tmp」以下の隠しファイルやフォルダを削除している様子を示しています。攻撃者は、ファイルまたはフォルダ名の前に「.」を追加することで検出回避の隠しディレクトリを作成する手法を駆使します(Hide Artifacts: Hidden Files and Directories - T1564.001)。
ユーティリティツール「ssh」は、ワーム活動のようにSecure Shell(SSH)を使ってシステムへのアクセスを可能にするリモートクライアントです。図13では、攻撃者が(wget/curlを使用して)コインマイナーMoneroをダウンロードし、SSHが試みられているリモートマシンに感染させる様子が示されています。攻撃者は、コンテナの安全でない構成(例えば、特権コンテナ)を介して、基盤となるホストのファイルシステムをマウントすると、新しいSSH鍵のペアを作成し、それを使用して「ssh」のセッションを確立し、そうした基盤となるホストにコインマイナーを感染させます。
この場合の例では、マルウェアのバイナリがダウンロードされ、パーミッションの変更後に実行されるという、異なるLinuxユーティリティツールの組み合わせによる活動が確認できます。なお、「runnable」は、脆弱性Log4shell(CVE-2021-44228)の悪用で拡散されたマルウェアMiraiの実行ファイルです。
Vision Oneのworkbench を使用すると、攻撃者によって 「chroot」および「base64」の2つのユーティリティが使用されていることがわかります。「chroot」は、提供されたディレクトリ(この場合「/host」)のルートを変更するために使用され、そこで、基礎となるホストのファイルシステムがコンテナ内にマウントされるため、注意が必要です。この機能がコンテナに付与された場合に生じる弱点についてはブログ記事「Dockerコンテナを特権モードで実行することが危険な理由」という記事で説明しています。
ユーティリティツールの悪用からLinuxシステムを保護するベストプラクティス
Distrolessコンテナイメージを使用する
上述で確認したこれら手法からは、攻撃者がOSにバンドルされているツール群を自由に利用できることがわかります。防御策としては、必要なツールだけを含むコンテナイメージを用意し、不要なツールは削除しておくことが推奨されます。
このようなセキュリティ対策により、Log4Shellのような重大な脆弱性に対しても、リスクを大きく軽減することができます。また、アプリケーションの実行に必要なツールの数を減らすことで、オープンソースのライブラリやツールの依存関係の脆弱性によってもたらされる攻撃対象も減らすことができます。つまり、アプリケーションとその実行時の依存関係に関するDistrolessコンテナイメージのアプローチであり、パッケージマネージャやシェルなど、典型的な Linux ディストリビューションに含まれるはずのプログラムをセキュリティの観点から排除しておく取り組みといえます。
Cloud One Workload Securityにおけるアプリケーションコントロール
防御する側の視点としては、多層防御のセキュリティ対策によって攻撃者を無力化すること、つまり、攻撃者の武装を解除することに焦点を当てるべきです。悪用を最小限に抑える、あるいは防止するためにシステムを変更することも有効ですが、複数のセキュリティ対策を活用する多層的なアプローチ、理想的にはベストプラクティスと効果的な防御技術を組み合わせることによって、高いレベルのセキュリティを実現することができます。
コンテナ化されていない環境では、Cloud One Workload Securityがアプリケーションコントロールのモジュールを提供し、ソフトウェアの変更を監視して、設定構成に基づいて許可やブロックを行います。既存のアプリケーションのベースラインを作成し、ダウンロードやインストールされる新しいアプリケーションにルールを適用します。この場合、バイナリに対してはSHA256ハッシュに基づいて対処されます。
そしてユーザが以下を実施するためのオプションを提供します。
- 明確な許可が下されるまで、未認識のソフトウェアをブロックする
- 明確な許可が下されるまで、未認識のソフトウェアを許可する
また、Ubuntu 20.04 long-term support (LTS) サーバ上のwgetを使って GitHub からネットワーク列挙ツール nmap のコンパイル済みバイナリをダウンロードすることです。このサーバは、Cloud One Workload Securityエージェントを実行し、アプリケーション制御モジュールが未認識のソフトウェアに対して「ブロック」モードに設定されています。そして図17のとおり、アプリケーションコントロールによる実行阻止が確認されます。
結論
攻撃者はOSに組み込まれた正規のツールやユーティリティを利用することから、セキュリティ対策では、攻撃のさまざまな局面でどのように制御を設定するかという理解を優先させる必要があります。コンテナ内のDistrolessイメージを使用して攻撃対象領域を最小化し、Cloud One Workload Securityのアプリケーションコントロールのような予防的コントロールを適用すれば、クラウド環境を狙う攻撃者の速度を大幅に低下させることが可能となります。Distrolessの実装が難しい場合は、同じイメージの「スリム化された」バージョンを使用して、攻撃対象領域を減らし、クラウド配備のセキュリティを強化することも可能です。
参考記事:
• 「How Malicious Actors Abuse Native Linux Tools in Attacks」
By: Nitesh Surana, David Fiser, Alfredo Oliveira
翻訳:与那城 務(Core Technology Marketing, Trend Micro™ Research)