要旨

セキュリティ製品を入れて検証する際は、有効性やインシデント時のオペレーションを確立するために事前に概念実証 (PoC: Proof of Concept) や動作検証を実施することが望ましいです。

実際の画面でどのように検知されるかであったり、セキュリティ製品の全体で通知の連携が行われているかなどの確認のため、本番と同様の製品をインストールして、検知することが望ましいです。

検証をする際の課題として、悪意ある挙動の検知をどのように行うか? という問題があります。

この問題について、本記事では解決策を示したいと思います。

(本記事では、固有名詞に含まれるマルウェア以外は、ウイルスと称します)

テストファイル

当たり前のことですが、不正な挙動 (ウイルスのダウンロード、ウイルスの実行、ウイルスの悪意ある処理、他) の確認のため、本物のウイルスを利用することは出来ません。

例えば、悪性が低いジョークウイルスを実行したとしてもそれが本当にシステムに影響を与えていないか確認する手立てがないためです。

そのため、ウイルスの検知・検疫・隔離・通知などの動作を確認するため、一般的にはテストファイルを利用して確認を行います。

これは、信頼された機関が作成したファイルで、このファイルを検知したアンチウイルス製品はウイルスと同様に検知・検疫・隔離・通知などの処理を行うものです。

アンチウイルスの世界では、EICAR (European Institute For Computer Antivirus Research) の公表している EICAR anti malware testfile が使われています。

これは、68Byte の安全な文字列ですが、アンチウイルスソフトはこのファイルを発見した際にウイルスとして処理を行います。

これにより、アンチウイルスソフトの検知や隔離、通知が正しく動作しているか確認できます。

しかし、この仕組みは Sysdig などの CWPP (Cloud Workload Protection Platform) では利用できません。
Sysdig などの多くの CWPP 製品は、ウイルスを検知するために、ファイル自体を検知せずに、ウイルスの不正な挙動を検知するためです。

そのため、EICAR anti malware testfile では、 Sysdig などにより不審な挙動を確認することができず、CWPP 専用のテスト手法が求められています。

不正な挙動のシミュレーション

不審な挙動を検知する CWPP を検証する際は、実際に悪意のある挙動を実行させ、その動作を検知する必要があります。

しかし、この場合であっても信頼出来る機関の管理された挙動であることが必要です。
実際に悪意ある挙動を行うため、不正な処理が行われる可能性が高いためです。

この処理に利用できるツールの一つとして、 Falco の event-generator があります。
Falco は Sysdig 社の OSS プロジェクトの一つで、Sysdig Secure のコア機能となっているものです。
Falco のエコシステムの一つとして、不正な挙動のシミュレーターが用意されています。

event-generator

このツールは、不正な操作を模したコマンドを実行するものであるため、不正な処理により環境に影響を与える可能性があります。

最終的には、 GitHub に記載された内容をすべて理解して、お客様の責任のもと実施してください。

Actions

このツールは、Actions として複数の挙動が定義されています。
引数として正規表現を渡した場合、マッチしたものだけが実行されます。

Actions としては、以下のようなものが定義されています。

  • k8saudit.ClusterRoleWithWritePrivilegesCreated
  • k8saudit.CreateSensitiveMountPod
  • syscall.ReadSensitiveFileUntrusted
  • syscall.ScheduleCronJobs

これらの不正な挙動を試すことで、Sysdig 上で検知できるか試すことが出来ます。

詳細はこちら

実行環境

各種環境で、ツールを実行することが出来ます。

システムに影響を与えてしまう可能性があるため、実行環境は Docker が推奨されています。

Linux

Linux 上でコマンドを実行することが出来ます。

詳細はこちら

event-generator run [regexp]
Kubernetes

Kubernetes 上でコマンドを実行することが出来ます。
Helm を利用してインストールが可能なため、簡単に実行することが出来ます。

詳細はこちら

helm repo add falcosecurity https://falcosecurity.github.io/charts
helm repo update

helm install event-generator falcosecurity/event-generator \
  --namespace event-generator \
  --create-namespace \
  --set config.loop=false \
  --set config.actions=""
Docker

Docker 上でコマンドを実行することが出来ます。

詳細はこちら

docker run -it --rm falcosecurity/event-generator run

テスト結果

Docker 上で実行した結果です。

このように、イベントを検知することが出来ます。

イベントが検知できない場合や、想定したイベントが検知できていない場合は、ルールセットや環境を見直してください。

まとめ

CWPP も、導入後の動作検証が必要となります。
不審な挙動を検知する CWPP では、EICAR anti malware testfile などの静的なファイルによる検証は出来ません。
Falco の event-generator のような、実際の挙動を模倣するツールが必要です。

実際にコマンドが実行されるため、検証環境などでテストを行ってください。
検知が不十分な場合には、追加の設定が必要です。