マルウェア

ユーザー認証情報のインターセプトや操作を狙う Linux 用マルウェアの PAM API 悪用

Clock Icon 2 min read
Related Products

This post is also available in: English (英語)

概要

本稿は、悪意のあるソフトウェアにおける PAM (Pluggable Authenticaton Modules) の API (application programming interface) 利用について解説します。また、サンドボックス環境での PAM API 監視がなぜ役に立つのかについても提示します。

PAM というのは、Linux システムで認証 (authentication) や認可 (authorization) に広く使われているフレームワークです。Linux システムでは、よく使われるアプリケーションやサービスの多くが PAM に依存しており、認証に PAM API を使っています。たとえば、SSH サービスや GNOME ディスプレイ マネージャー (GDM)、システム サービスの sudo なども PAM API を使っています。

PAM の設計は柔軟でモジュール式です。このため、マルウェアの PAM API を認証プロセスのインターセプトや操作に使いたいと考える攻撃者にとって、PAM は魅力的な標的になっています。

Advanced WildFire for Linux は、クレデンシャル (資格情報) へのアクセスなどの潜在的なセキュリティ脅威を確実に特定して迅速に対処するために、PAM API の使用状況を監視し、ログに記録します。

関連する Unit 42 のトピック Sandbox, Linux

概要

PAM は Linux システム用の柔軟なモジュール式の認証フレームワークで、ユーザーの認証・認可の管理を一元的に行う方法を提供してくれます。PAM のモジュール設計は、特定の認証・認可タスクを処理する共有オブジェクト ライブラリーである「pluggable modules (プラグイン可能なモジュール)」の概念に基づいています。これらのモジュールは個別に開発できて、PAM フレームワークにプラグインすれば機能を拡張できます。

PAM モジュールの一例として、pam_unix があげられます。このモジュールは、昔ながらの Unix スタイルのパスワード ファイル (/etc/passwd/etc/shadow) を使った認証・認可タスクを処理します。このモジュールを PAM フレームワークにプラグインすれば、アプリケーションが Unix のパスワードに基づいてユーザーを認証できます。

PAM フレームワークには中心となるライブラリー (libpam) があり、このセントラル ライブラリーがさまざまな PAM モジュールと通信しています。認証や認可を必要とするアプリケーションは、PAM API を使ってこのセントラル ライブラリーと対話し、それを受けてセントラル ライブラリーがそれらのタスクを適切なモジュールに委任します。要するに、libpam は PAM モジュール (たとえば pam_unix.so) のロードと管理を担い、アプリケーション − PAM モジュール間の通信を支えています。

Linux システムでは、よく使われているアプリケーションやサービスの多くが PAM に依存しており、認証に PAM の API を使っています。たとえば、SSH サービスや GNOME ディスプレイ マネージャー (GDM)、システム サービスの sudo なども PAM API を使っています。図 1 は、PAM を使った SSH の認証プロセスを示したものです。

画像 1 は、PAM を使った SSH 認証プロセスのフレームワークです。SSH クライアントが SSH サーバーに接続し、そこからユーザーを認証する PAM モジュールへとプロセスが流れていきます。
図 1. SSH の認証プロセス

攻撃者は、PAM のモジュール性と柔軟性を悪用し、認証プロセスのインターセプトや操作を行ってきました。マルウェアは標的システムのセキュリティ侵害に PAM API を使ってきました。

マルウェアにおける PAM API の利用法

以下、ユーザー クレデンシャルのログの取得やリモート アクセスの確立に PAM API を使うマルウェア ファミリーの一例を取り上げます。

Orbit マルウェア

Orbit マルウェアは 2022 年に発見されました。このマルウェアはさまざまな共有オブジェクト ライブラリーの API をフックしますが、PAM API もその対象の 1 つです。Orbit マルウェアのペイロードは、pam_open_session() API、pam_authenticate() API、pam_acct_mgmt() API をフックして、被害者の SSH パスワードをファイルに記録します。

pam_open_session() API は認証が成功した場合に対象のユーザー用の新たなセッションを開始します。pam_authenticate() API はユーザー認証プロセスを処理します。pam_acct_mgmt() API はユーザー アカウント情報を管理していて、アカウントの有効期限は切れていないか、そのユーザーは特定の時間に対象システムへのアクセスを許可されているか、といったことを確認します。

Azazel ルートキット

Azazel ルートキットは、古い Linux カーネルを狙うオープンソースのルートキットで、LD_PRELOAD 技術をベースにしています。図 2 は、このルートキットが PAM API (pam_open_session()pam_authenticate()pam_acct_mgmt()) をどのように使ってリモートからの被害マシン侵入を実現しているかを示したものです。

画像 2 は、多数のコード行からなるスクリーンショットです。Azazel ルートキットは、赤い四角形で強調表示した pam_authenticate() を使ってリモートからの侵入を実現しています。
図 2. Azazel ルートキットによる pam_authenticate() API の利用

Derusbi マルウェア

Derusbi は、Linux と Windows システムの両方を狙うことで知られるマルウェア ファミリーです。脅威アクターは主に、標的システムへのリモート アクセスの取得・維持のために Derusbi を使っています。これにより、アクターは機微情報の窃取や偵察の実施などの悪意のあるアクティビティを実行できます。Derusbi マルウェアもまた LD_PRELOAD 技術を採用しています。これによって悪意のある共有オブジェクトライブラリーをロードし、このライブラリーに PAM API をエクスポートさせています。

Skidmap マルウェア

Skidmap マルウェア は 2019 年に初めて確認されました。これは主に Linux システムをクリプトマイニングのために狙います。被害マシンにアクセスするため、Skidmap は対象マシン上の正規の pam_unix.so を悪意のあるライブラリーに置き換えます。この悪意のある pam_unix.so ファイルは特定のパスワードを指定すればどんなユーザーでも受け入れます。このため、攻撃者はマシンに任意のユーザーとしてログインできます。

結論

PAM は Linux システムには欠かせないコンポーネントです。Linux システムはこれがあるおかげで、標準化され、柔軟で、安全なモジュール式フレームワークでユーザー認証を行えています。安全な認証システムを維持し、機微データを保護するには、サンドボックス環境で PAM API を監視することが重要です。

安全かつ隔離された環境で、ほかの潜在的に不審なアクティビティとともに PAM API を監視することは、PAM API 経由で認証プロセスを改ざんしようとする悪意のある試みを検出するうえで有効です。LD_PRELOAD 環境変数の使われかたや、関連するイベントをよく観察することで、攻撃者が PAM API を使って認証プロセスに干渉する可能性のあるインスタンスを特定できます。

パロアルトネットワークスの Advanced WildFire for Linux は、クレデンシャルへのアクセスなどの潜在的なセキュリティ脅威を確実に特定して迅速に対処するために、PAM API の使用状況を監視し、ログに記録します。

Advanced WildFire による PAM アクティビティの捕捉

パロアルトネットワークスの Advanced WildFire for Linux は、クレデンシャルへのアクセスなどの潜在的なセキュリティ脅威を確実に特定して迅速に対処するために、PAM API の使用状況を監視し、ログに記録します。図 3 のグラフは、WildFire が検出した PAM API を使うマルウェアの発生状況 (6 か月間) を示しています。

画像 3 は、2023 年 5 月から 2023 年 10 月までの 6 か月間に発生した PAM API を使うマルウェアを記録したグラフです。
図 3. PAM API を使うマルウェア (6 か月間の統計)

パロアルトネットワークスは、ファイル サンプルや IoC (侵害指標) をふくむ調査結果を Cyber Threat Alliance (CTA: サイバー脅威アライアンス) のメンバーと共有しました。CTA のメンバーはこのインテリジェンスを使って、お客様に保護を迅速に提供し、悪意のあるサイバー攻撃者を体系的に阻害できます。詳細は Cyber Threat Alliance にてご確認ください。

IoC (侵害指標)

Azazel マルウェア ファミリー

  • SHA256 ハッシュ: 2ad5993cf4db52ef72e299590d79dd7414bc3b119f5d8be8274ad89bec4cbbae
Enlarged Image