Serverless Agents を利用して ECS on Fargate 環境で Sysdig Secure のマイニング検知をしてみた

2023.09.14

こんにちは、AWS事業本部の平木です!

今回は、Sysdig Secure から提供されている Serverless Agents を利用して ECS on Fargate 環境でマイニング検知をしてみました。

Sysdig Secure や Serverless Agents については、下記ブログを参照ください。

実際にマイニングを行ってしまう場合、不正なアクティビティとして AWS で検知される可能性がございます。
本検証ブログの方法では実際にマイニングを行わずに一般的に使用されるマイニングプールポートアドレスと宛先の IP アドレスに接続する方法を紹介していますが、 マイニング検知を試す際は、必ず検証用の AWS アカウントで実行してください。

前提条件

  • AWS アカウントを持っていること
  • Terraform の実行環境があること
  • Sysdig Secure のアカウントを持っていること

Sysdig Secure の導入については下記ブログも参照ください。

デプロイされるリソース

下記リソースをデプロイします。

  • VPC
  • Subnet(Public/Private)
  • Route Table
  • Internet Gateway
  • Nat Gateway
  • EC2(疑似アタック用サーバ)
  • EC2 Instance Connect Endpoint
  • Network Load Balancer
  • ECS Cluster
    • Sysidig Orchastrator Agent
    • Security Playground(擬似アタック被害コンテナ) + Sysdig Workload Agent

構成図

構成図としては下記のようになります。1

通信要件

下記のような通信経路になります。2
EC2 Instance Connect でプライベート接続

EC2 サーバから curl コマンドで疑似アタックを実施(TCP:8080)

Workload Agent でランタイム検知

Workload Agent から Orchestrator Agent へ転送(TCP:6667)

Orchestrator Agent 経由で Sysdig Secure へ転送(TCP:6443)

やってみる

環境構築

デプロイ用の Terraform のコードを GitHub のリポジトリに配置しています。

下記コマンドでリポジトリのクローンからデプロイまで実施します。
クローン

git clone https://github.com/Keisuke-Hiraki/ECS-Fargate-Sysdig-Secure-Mining-Detection.git

初期化

terraform init

作成

terraform apply \
-var 'access_key=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
-var 'secure_api_token=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
-var 'collector_url=xxx.xxx.sysdig.com' \
-var 'sysdig_secure_url=https://xxx.xxx.sysdig.com'

各パラメータについては下記をご確認ください。

Ex.) US West (Oregon) の場合
collector_urlingest-us2.app.sysdig.com
sysdig_secure_urlhttps://us2.app.sysdig.com

デプロイが完了し、Sysdig Secure の画面で「Integrations > Sysdig Agents」の順で選択すると、
Status が Up to Date のノードが検出されていることが確認できます。
表示されればデプロイ完了です。

マイニング検知してみる

今回は、Sysdig Runtime Threat Intelligenceという ランタイムポリシーの中の、
Detect outbound connections to common miner pool portsというルールを使用し、検知してみます。

こちらのルールは、一般的に使用されているマイニングプールポートアドレスと、宛先の DNS および IP アドレスを監視し検知するものになります。
まずは対象 IP アドレスは下記順を追ってみることができます。

Policies > Rules > Rules Library の順に進みます。

左上の検索窓に Detect outbound connections to common miner pool ports と検索し、
対象の Rule を押下、さらに右側の net_miner_pool を押下します。

続いて minerpool_other を押下します。

最後、 miners_ip を押下すると IP のリストが表示されます。

ここで表示された IP アドレスを後で使用するため控えておいてください。

前提

「Policies > Runtime Policies」から

  • Sysdig Runtime Threat Intelligence
  • Sysdig Runtime Notable Events

が 有効化されていることを確認します。

踏み台サーバから疑似アタックする

EC2 Instance Connect エンドポイントを使用しアクセスできるようになっているため、
起動している EC2 インスタンスへ接続します。

まず下記コマンドで Sysdig Secure でマイニング以外の攻撃の検知ができるか確認します。

ここの<攻撃対象のPrivate IP アドレス>は、workload 用 ECS サービスのプライベート IP アドレスをご確認ください。

curl <攻撃対象のPrivate IP アドレス>:8080/etc/shadow

検証した環境では、10.0.1.108だったため、

curl 10.0.1.108:8080/etc/shadow

と実行したところ、

機密ファイル(ユーザー/パスワード/認証情報を含むファイルなど)を読み取ろうとした場合に検知される、
Read sensitive file untrustedが表示されました。

では続いて本題である、マイニング検知を実施してみます。

下記コマンドを実行します。

curl -X POST <攻撃対象のPrivate IP アドレス>:8080/exec -d 'command=curl <マイナープールの IP アドレス>'

実行してみたところ

上記のようにリアルタイムで検知できていることが分かりました。

片づけ

下記コマンドで環境を削除できます。

terraform destroy \
-var 'access_key=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
-var 'secure_api_token=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
-var 'collector_url=xxx.xxx.sysdig.com' \
-var 'sysdig_secure_url=https://xxx.xxx.sysdig.com'

参考

おわりに

以上が Sysdig Secure でマイニング検知してみた、でした!
ぜひ Sysdig Secure を活用しセキュアに ECS on Fargate を使ってみてください。

万が一 AWS から不正なアクティビティを検知した場合にはこちらもご確認ください。
AWS アカウントでの不正なアクティビティに関する問題を解決する | AWS re:Post

この記事がどなたかの役に立てば嬉しいです。

脚注


  1. 構成図に誤りがあったため訂正しております。(2023/09/16) 
  2. 同上