永続化とラテラルムーブメント
侵入状態を維持し、アカウント間を移動します。
「永続化とラテラルムーブメント」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。
侵入を維持し、横へ移動する
権限昇格の後、攻撃者は環境内で永続的なアクセスを確保し、さらに広い範囲へ到達しようとします。クラウドでは、永続化と横展開にディスク上のインプラントではなく、ID と設定を利用します。
- 永続化:認証情報のローテーションや検知を乗り越えてアクセスを維持します。
- 横展開:アカウント、ロール、サービスをまたいでピボットします。
ID に基づく永続化
最も単純な永続化手法は、自分が管理できる新しい認証情報を作成することです。
- 特権ユーザーに追加のアクセスキーを作成します。
- サービスアカウントにログインプロファイル(コンソールパスワード)を追加します。
- サービスプリンシパル(Azure)に追加の認証情報、またはサービスアカウントキー(GCP)を登録します。
# AWS: add a second access key to a target user
aws iam create-access-key --user-name admin
# GCP: mint a long-lived key for a service account
gcloud iam service-accounts keys create k.json --iam-account priv@proj.iam.gserviceaccount.com信頼関係とポリシーへのバックドア
より巧妙な永続化では、通常の設定に紛れ込む形で、信頼される対象を変更します。
- 自身のプリンシパルをロールの信頼ポリシーに追加します。
- 広く使用されている管理ポリシーに許可ステートメントを挿入します。
- 外部の攻撃者が制御するアカウントを信頼する新しいロールを作成します。
これらは認証情報ではなく構造に基づくため、キーをローテーションしても残ります。
リソースベースのバックドア
リソースポリシーを使うと、IAMユーザーを変更せずにクロスアカウントアクセスを許可できます。
- 外部アカウントをS3バケットポリシーまたはKMSキーポリシーに追加します。
- 外部エンドポイントをSNSトピックまたはイベントバスにサブスクライブさせます。
- スナップショット/AMIを攻撃者のアカウントと共有します。
# Share an EBS snapshot with an external account
aws ec2 modify-snapshot-attribute --snapshot-id snap-abc \
--attribute createVolumePermission --operation-type add --user-ids 999999999999コンピューティングと関数による永続化
ワークロード自体に永続化の仕組みを組み込むこともできます。
- スケジュール(EventBridge)で起動するLambdaがアクセスを再確立します。
- ユーザーデータスクリプトがインスタンスの起動時に実行されます。
- 悪意のあるレイヤーや改変されたコンテナイメージにより、再デプロイ後も永続化します。
# Schedule a Lambda to run every hour as a backdoor
aws events put-rule --schedule-expression 'rate(1 hour)' --name keepaliveロールを介したラテラルムーブメント
ロールの引き受けは、ラテラルムーブメントの主要な経路です。1つのアイデンティティから別のアイデンティティへ連鎖的に移動します。
- クロスアカウントロールを引き受けて、別のアカウントに侵入します。
PassRoleを使用して、異なる権限範囲を持つサービスロールとして操作します。- ロールチェーンでは、ロールAを引き受け、そのロールからロールBを引き受けるという操作を繰り返します。
# Chain into another account
aws sts assume-role --role-arn arn:aws:iam::222:role/Deploy --role-session-name pivotコンピューティングを介したラテラルムーブメント
侵害されたVMやコンテナによって、データプレーンへ移動できます。
- SSM / Run Commandを使用して、SSHなしでインスタンス上でコマンドを実行します。
- インスタンスメタデータを読み取り、各ホストで新しいロール認証情報を取得します。
- ピアリングされたVPCと共有サブネットを経由して、別の環境へ移動します。
# Run a command on instances via SSM (no inbound port needed)
aws ssm send-command --document-name AWS-RunShellScript \
--targets Key=tag:env,Values=prod --parameters 'commands=["id"]'データ窃取経路
ラテラルムーブメントは、多くの場合、データ窃取を目的としています。クラウドネイティブなデータ窃取経路は見落としやすいものです。
- バケットポリシーを介して、オブジェクトを攻撃者が所有するバケットにコピーします。
- パブリックなスナップショットを作成し、別の場所にインポートします。
- データベースをレプリケーションするか、ログを外部のシンクにストリーミングします。
検知の回避
攻撃者はテレメトリを減らして、潜伏期間を延ばします。
- CloudTrail / Activity Logの配信を停止またはフィルタリングします。
- 単一のリージョン内で活動し、リージョン間のアラートを抑えます。
- 正規の自動化に見える既存のロールと名前付きセッションを使用します。
ロギングの改ざん自体が、防御側にとって強力な検知機会になります。
検知と防御
ブルーチームは、監視とガードレールによってクラウド上の永続化に対抗します。
- 新しいアクセスキー、信頼ポリシーの編集、外部アカウントへのアクセスを許可するリソースポリシーの変更を検知してアラートを出します。
- CloudTrailが停止されたことや、グローバルサービスイベントの記録が失われたことを検知します。
- SCPを使用して、組織全体でクロスアカウント共有とログ改ざんを拒否します。
- 短期有効の認証情報を優先して継続的にローテーションし、未使用のキーは失効させます。
テスト後のクリーンアップ
永続化の痕跡を残しておくのは危険です。許可を得たテストでは、作成したすべてのバックドア(キー、ロール、信頼設定の変更、スケジュールされた関数、共有スナップショット)を一覧化し、テスト終了時にすべて削除します。
各永続化手法について、正確な復元手順を添えて報告し、防御側が削除を確認できるようにします。
クイックチェック
永続化とラテラルムーブメントに関する知識を確認します。
まとめ
クラウドにおける永続化とラテラルムーブメントについて学びました。
- 永続化には、新しい認証情報、信頼ポリシーやポリシーへのバックドア、リソースポリシーが使われます。
- ラテラルムーブメントでは、ロールの引き受けとコンピューティングへのアクセス(SSM、メタデータ)を連鎖させます。
- 攻撃者はロギングを改ざんして潜伏期間を延ばします。
- SCP、短期有効の認証情報、設定変更のアラートが防御策になります。
これでCloud Penetration Testingコースは修了です。
よくある質問
「永続化とラテラルムーブメント」レッスンは無料ですか?
はい。「永続化とラテラルムーブメント」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。
「永続化とラテラルムーブメント」で何を学びますか?
侵入状態を維持し、アカウント間を移動します。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cyber Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「永続化とラテラルムーブメント」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCyber Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- クラウドの攻撃対象領域
- クラウドリソースの列挙
- IAM設定ミスの悪用
- 永続化とラテラルムーブメント