立て続けに新機能がリリースされているSysdig Secureですが、本日 Process Tree 機能がPreview版としてリリースされました。セキュリティイベントの調査を迅速に行うため、ユーザーからプロセスまでの攻撃の流れを示すプロセスツリーを表示し、プロセスの系統、コンテナとホストの情報、悪意のあるユーザーの詳細、影響などを表示できるようになりました。
Sysdig SecureのProcess Treeの詳細については、下記ブログをご参照ください。
https://sysdig.jp/blog/enriched-process-trees-threat-detection/
今回は、実際にProcess Treeを有効にするための手順をご紹介します。手順の詳細は下記ドキュメントをご参照ください。
https://docs.sysdig.com/en/docs/sysdig-secure/secure-events/#process-trees-preview
Sysdig UIでのProcess Treeの有効化
Process Treeはプレビュー版として提供されているため、Sysdig UIで明示的に有効化する必要があります。
Sysdig Agent 12.15のインストール
Process Treeを使用するには以下の要件を満たしている必要があります。
- Sysdig Agentのバージョンが12.15以上であること
- Sysdig Agentへの
enrich_with_process_lineage=true
のパラメータ設定
例として、helmコマンドにハイライトしたオプション記述を追加することで上記要件を満たすAgentをインストールできます(行頭の+は不要です)。
helm repo add sysdig https://charts.sysdig.com
helm repo update
helm install sysdig-agent --namespace sysdig-agent --create-namespace \
--set global.sysdig.accessKey=<SYSDIG_ACCESS_KEY> \
--set global.sysdig.region=<SYSDIG_SAAS_REGION> \
--set nodeAnalyzer.secure.vulnerabilityManagement.newEngineOnly=true \
--set global.kspm.deploy=true \
--set nodeAnalyzer.nodeAnalyzer.benchmarkRunner.deploy=false \
--set global.clusterConfig.name=sysdig-aws \
+ --set agent.image.tag=12.15.0 \
+ --set agent.sysdig.settings.enrich_with_process_lineage=true \
sysdig/sysdig-deploy
SYSDIG_ACCESS_KEYの値には、ご自身のSysdigアクセスキーを入力してください。
SYSDIG_SAAS_REGIONの値はご利用のSysdig SaaSリージョンにより異なります。下記ドキュメントをご参照ください。
https://docs.sysdig.com/en/docs/administration/saas-regions-and-ip-ranges/
Sysdig Agentインストール後にProcess Treeを有効化する場合
Sysdig Agentのバージョン12.15以上を既に使っていて、インストール時にenrich_with_process_lineage=true
のパラメータ設定を指定しなかった場合は、Sysdig AgentのConfigMapにenrich_with_process_lineage=true
を追記することで有効化できます。
kubectl -n sysdig-agent edit cm sysdig-agent
※ハイライトした行頭の+は不要です。
apiVersion: v1
data:
dragent.yaml: |
+ enrich_with_process_lineage: true
new_k8s: true
k8s_cluster_name: sysdig-aws
collector: ingest.us4.sysdig.com
security:
enabled: true
k8s_audit_server_enabled: true
k8s_audit_server_port: 7765
k8s_audit_server_url: 0.0.0.0
kind: ConfigMap
metadata:
annotations:
meta.helm.sh/release-name: sysdig-agent
meta.helm.sh/release-namespace: sysdig-agent
creationTimestamp: "2023-06-28T08:24:36Z"
labels:
app: sysdig-agent
app.kubernetes.io/instance: sysdig-agent
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: agent
app.kubernetes.io/version: 12.15.0
helm.sh/chart: agent-1.8.8
name: sysdig-agent
namespace: sysdig-agent
resourceVersion: "1289760"
Sysdig Agent Daemonsetをリスタートします。
kubectl -n sysdig-agent rollout restart ds sysdig-agent
脅威検知テスト
それでは、実際にProcess Treeが表示されるかをテストしてみます。
- nginxをpodとして起動する
kubectl run nginx --image nginx
2. ターミナルシェルにログインする
kubectl exec -it nginx -- bash
3. Sydig UIにログインし、Events > Events Feed に移動します。
4. Terminal shell in containerイベントが検知され、イベント詳細にプロセスツリーが表示されていることを確認します。
5.ターミナルシェルがDockerコンテナ内で起動されていることがProcess Treeからも確認できます。
Log4ShellでのProcess Tree
いまだ深刻な脅威となっているLog4ShellでどのようにProcess Treeが表示されるかを確認してみましょう。
- 標準入出力をリダイレクトするリバースシェル攻撃が行われていることを検知しています。プロセスツリーを見ると、
java
から派生したbash
プロセス上で標準入出力のリダイレクトが行われているため、Log4Shellであることが推測できます。
2. 同時に、java
からbash
が子プロセスとして起動したこと自体を、疑わしいイベントとして検知しています
3. さらに、攻撃者による/dev配下へのファイル書き込み(攻撃ツールやマルウェアを隠すために/dev配下に置くことが多い)をイベント検知していますが、Process Treeを確認することでLog4Shellによって確立したリバースシェル上での操作であることが一目瞭然です。
まとめ
Process Treeによって、攻撃の流れを視覚的にわかりやすく把握できることが確認できました。