持続性維持の手法は、攻撃者がシステムに侵入したあと持続的な活動を維持するために使用する手法である。一度の侵害ではすべての目標を達成するのが困難な場合があるため、攻撃者はシステムに再度アクセスできる方法を確保しておくことがある。そのため、マルウェアがシステムの再起動後も動作できるよう、様々な方法によって設定を行う、またはバックドアアカウントをインストールするなどの方法を使用する。
一般的に Windows 環境では Run キーやスタートアッププログラム、タスクスケジューラ、サービスなどを利用する方法がよく使用される。もちろん、このほかにも DLL Side-Loading、Winlogon Helper DLL、ルートキットなどの様々な手法も活用されている。これは Linux でも同様だが、bash_profile、.bashrc、profile.d などの起動スクリプトや Sys Vinit、Systemd のようなサービス、Cron ジョブ、Preload などの手法が活用されている。
AhnLab EDR(Endpoint Detection and Response)は、韓国国内で唯一の振る舞いベース解析エンジンをもとにエンドポイント領域に対して強力な脅威モニタリングと解析、対応力を提供する次世代エンドポイント脅威検知および対応ソリューションである。AhnLab EDR は、疑わしい振る舞いに関するタイプ別情報を常時収集し、検知および解析、対応の観点からユーザーが脅威を正確に認識できる機能を提供し、これによって総合的な解析を通じ原因把握と適切な対応、再発防止プロセスを確立できる。
ここでは、Linux システムを対象とする攻撃者が使用する持続性維持手法を分類し、AhnLab EDR を活用してこれらの攻撃を検知する方法を整理する。
1. 起動スクリプト (profile.d)
Linux では、システム起動時やユーザーがログインする際に実行される起動スクリプトがある。ここでは代表的なものとして、グローバル環境設定ファイルを悪用する事例を紹介する。グローバル環境設定ファイルは「/etc/profile.d/」内に存在し、システム起動時に当該ディレクトリ内のすべてのスクリプトが実行される。
マルウェアはこれを悪用する場合があり、例えばコインマイナーマルウェアの一種である Kaiji は自身を「/etc/profile.d/bash_conf」パスにコピーして、これを実行するためのスクリプト「/etc/profile.d/bash_conf.sh」を作成する。これにより、システムが起動すると、「/etc/profile.d/」内に存在する「bash_conf.sh」が実行され、最終的に Kaiji マルウェア「bash_conf」が実行される。
AhnLab EDR は、起動スクリプトが新たに登録されるイベントを主な振る舞いとして検知し、管理者がこれを事前に認知できるようサポートしている。
2. Cron ジョブ
Linux の Cron ジョブは、Windows のタスクスケジューラと同様、決められた時間や周期に応じて特定のタスクを自動で実行できるように設定するスケジューリングシステムである。一般的には定期的に実行する必要があるバックアップ、ログ管理、システムメンテナンスなどのタスクに使用されるが、マルウェアも持続性維持のためにこれを悪用するケースが多い。
XorDDoS は昔から出回っている DDoS マルウェアであり、持続性維持のために様々な手法を使用するが、代表的なものに Cron ジョブがある。Cron ジョブに「/etc/cron.hourly/gcc.sh」パスのスクリプトを3分間隔で実行するコマンドを登録するが、このスクリプトには「/lib/libudev.so」パスにインストールされた自身をコピーして再度実行するコマンドが保存されている。
AhnLab EDR は、Cron ジョブを操作して持続性を維持するイベントを主な振る舞いとして検知し、管理者がこれを事前に認知できるようサポートしている。
3. Systemd
Linux 環境でも Windows と同様、サービスの概念が存在し、これを管理して制御する方法として最近では Systemd サービスが標準的に使用されている。Systemd は systemctl を通じて管理され、サービスに関連する設定情報は「/etc/system/system」パスに位置する unit ファイルに保存される。
Lady は Go 言語で開発されたコインマイナーマルウェアであり、持続性維持のために Systemd を悪用する。Ntp サービスに偽装して自身を「/usr/sbin/ntp」パスにコピーし、systemctl を利用して「ntp.service」で登録する。Lady が登録された「ntp.service」の unit ファイルを確認すると、以下のように NTP daemon に偽装した設定情報を確認できる。
AhnLab EDR は、Systemctl を利用してサービスを登録するイベントを主な振る舞いとして検知し、管理者がこれを事前に認知できるようサポートしている。
4. Preload (環境変数)
Linux には LD_PRELOAD という環境変数が存在しており、Linux のローダーは実行ファイルをロードする際にこの環境変数を参照して、他のライブラリよりも先にロードされるように指定する振る舞いを行う。このような機能のため、Linux 環境のマルウェアは不正な so ライブラリファイルを作成し、環境変数 LD_PRELOAD にパスを指定する方法で、正常なプロセスによってロードされるように悪用するケースが存在する。
Roopre はバックドアマルウェアであり、PHP ドロッパーによってインストールされる。PHP ドロッパーはアーキテクチャに合わせてライブラリフォーマットの Roopre を「cached.so」という名前でインストールし、その後 LD_PRELOAD 環境変数にこれを登録して host コマンドを実行する。これにより host コマンドが実行され、LD_PRELOAD 環境変数に登録された Roopre をロードして実行することになる。
AhnLab EDR は、LD_PRELOAD 方法によって疑わしいライブラリがロードされる場合、これを主な振る舞いとして検知し、管理者がこれを事前に認知できるようにサポートする。
5. Preload (ld.so.preload)
Linux のローダーが Pre Loading を行う方法には、LD_PRELOAD 環境変数以外にも「/etc/ld.so.preload」ファイルを利用する方法がある。当該ファイルが存在する場合、環境変数を登録する方法と同様に、ファイル内部に定義されたパスのライブラリを先にロードする。
コインマイナーマルウェアである Kinsing は、隠蔽のためにオープンソースのユーザーモードルートキットである Beurk をカスタマイズして使用する。ルートキットはライブラリフォーマットであり、プロセスにロードされたあと、ファイルおよび TCP 通信と関連する関数をフックし、Kinsing に関連した場合、これを隠蔽する。Kinsing は、ルートキットがファイルやネットワーク通信を照会するプロセスにロードされるよう「/etc/ld.so.preload」ファイルを悪用するが、単純にルートキットを「/etc/libsystem.so」パスにインストールしたあと「/etc/ld.so.preload」ファイルに当該パス名を登録する方法である。これにより新たに作成されるプロセスは、ルートキットである「/etc/libsystem.so」を自動でロードするようになる。
AhnLab EDR は「/etc/ld.so.preload」ファイルを操作するイベントを脅威として検知し、管理者がこれを事前に認知できるようサポートしている。
6. 結論
攻撃者は、システムに侵入したあと持続的な活動を維持するため、様々な持続性維持手法を悪用している。これにより、初期侵入プロセスで目標を達成できなかったとしても、持続的にシステムにアクセスし、最終的に情報窃取やファイルの暗号化、操作権限の奪取などの目的を達成することができる。
AhnLab EDR は、持続性維持段階で使用される疑わしい振る舞いを脅威および主な振る舞いとして検知し、管理者がこれを事前に認知できるようにサポートする。管理者はこれにより原因の把握と適切な対応を行うことができ、攻撃に晒された後も攻撃対象となったシステムから攻撃者の証跡資料として侵害事例の調査に必要なデータを確認することができる。
振る舞い検知
– Persistence/DETECT.T1053.M10875
– Persistence/DETECT.T1543.M10920
– Suspicious/DETECT.T1574.006.M10894
– Suspicious/EDR.Preload.M10892
| Tactic | Technique |
|---|---|
| Persistence (TA0003) | Event Triggerd Execution: Unix Shell Configuration Modification (T1546.004) |
| Persistence (TA0003) | Scheduled Task/Job: Cron (T1053.003) |
| Persistence (TA0003) | Create or Modify System Process: Systemd Service (T1543.002) |
| Persistence (TA0003) | Hijack Execution Flow: Dynamic Linker Hijacking (T1574.006) |