
はじめに
カミナシの認証認可チームのmanaty(@manaty226)です。今年もラスベガスにて12月1日から12月5日まで開催されているre:Inventに参加しています。この記事では、最終日に参加した以下のワークショップセッションについて記載します。
- Active defense strategies using AWS Al/ML services [REPEAT] (SEC401-R1)
AIを使った能動的防御
サイバーセキュリティにおける能動的防御とは、攻撃を受ける前にその予兆を把握して対処することです。特に、本ワークショップではサイバーセキュリティ欺瞞(Cyber Security Deception)と呼ばれる、偽の脆弱なコンテンツを使った攻撃手法の能動的な収集について取り扱っています。 link.springer.com
私は専門でないためハニーポットと欺瞞(deception)の違いをよく知らなかったのですが、欺瞞技術は動的に偽の情報資産を生成して様々なタイプのサーバー、アプリケーション、IoTエンドポイントなどになりすまし、監視分析ソリューションと統合されていることが従来のハニーポットとの違いのようです。 fidelissecurity.com
警告
このワークショップで実行したことは攻撃者を意図的に誘い込んで攻撃を分析するためのものです。したがって、高度なセキュリティ専門のエンジニアがいなければ通常自身の環境で行うことは推奨されません。
ハニートークンによる基本的な欺瞞
ワークショップの始めのコンテンツでは基本的な欺瞞技術を学ぶために、不正アクセスを検知するためにわざと生成したハニートークン(IAMユーザーのアクセスキー)を使って攻撃の検知を行います。
まずは、アクセスキーを生成するためのIAMユーザー登録します。欺瞞を上手く行うために、ユーザー名は admin-backup-53ab63e4というそれらしい名前に設定してアクセスキーを生成します。
つぎに、CloudWatch LogsとEventBridgeを使い、CloudTrail経由で当該アクセスキーが利用されたことを検出してアラートが出るよう設定します。
そのうえで、ハニートークンを不正に利用した攻撃者にとって魅力的な情報が取得できるよう、偽の情報を生成AIで作成します。ワークショップでは以下のようなプロンプトを使って偽の情報を作成しました。
system = "You are an expert in creating realistic but entirely fictional content for cybersecurity deception operations." prompt = f""" Generate a realistic but fake README.md file that would make the following AWS IAM credentials appear valuable to an attacker: - Username: {honey_token_username} - Access Key ID: {access_key_id} The README should suggest these credentials have access to important systems or data, but don't make it too obvious that it's a trap. Include references to fictional internal systems, databases, or S3 buckets that would be attractive targets. The reponse must include the full un-redacted {honey_token_username} and {access_key_id} in the output. """
ワークショップではハニートークンといえども漏洩させるわけにはいかないので、自分でアクセスキーを使って攻撃者のようにアクセスしてみます。すると、CloudWatchアラームでハニートークンが利用されたことがアラートされています。
このように、攻撃者が欲しがるような偽の情報を生成したうえで、偽の情報にアクセス可能なクレデンシャルを作り、攻撃者を誘い込むというのが基本的なサイバーセキュリティ欺瞞の流れのようです。


生成AIを使った高度な欺瞞
このあとのワークショップでは、生成AIを使ったより高度な欺瞞を体験していきます。例えば、以下のようなプロンプトを使って偽の個人情報を生成したり
system = "You are an expert in creating realistic but entirely fictional data for cybersecurity deception operations." prompt = """ Generate a JSON array of 10 fictional customer records for a financial services company. Each record should include: - customer_id - first_name - last_name - email - phone_number - address - account_number - account_balance (between $10,000 and $500,000) - account_type (checking, savings, investment) - last_transaction_date (within the last 30 days) - credit_score (between 300 and 850) Make the data look realistic but ensure it is COMPLETELY FICTIONAL. Do not include any real people's information. Format the response as valid JSON only, with no additional text. """
偽の情報を応答する欺瞞のためのアプリケーションをLambdaやECSをデプロイします。欺瞞のためのアプリケーションをデプロイする際のプラクティスとして以下のようなものがあるようです。
- 分離された AWS アカウントまたは VPC に欺瞞機能を導入し、実稼働リソースとの相互汚染を防止する。
- 欺瞞環境とのすべてのやり取りをキャプチャするために、包括的なログ記録とアラートを実装する。
- 自動化された攻撃ツールによるリソース枯渇を防ぐために適切なレート制限を適用する。
- 偽装環境で使用される資格情報を定期的にローテーションして、その有効性を維持する。
欺瞞のためのアプリケーション作成のためにAmazon Comprehendにbashコマンドを学習させて、Lambdaでコンソール環境を模擬することで、攻撃者のbashコマンドに対してそれらしい応答を返すので実際の環境に侵入できていると攻撃者に誤認させ、どのような攻撃手法を用いるのか収集・分析することができます。

実際にデプロイしたLambdaに対してクライアントコードを作ってコマンドをうってみたのが下図です。lsコマンドやcatコマンドに対して、なんとなくそれらしい結果が表示できていることがわかります。これは全て生成AIによる応答であり、実際にコマンドがどこかで実行されているわけではありません。

他にも、それらしいログインページを生成AIに作らせたうえでECSに偽のWebアプリケーションをデプロイして、偽のクレデンシャル情報で攻撃者を誘い込むといった手法を体験しました。また、IoTエンドポイントの欺瞞など、幅広いエンドポイントやデータに対応した技術を知ることができました。

おわりに
先日投稿された別のセッションレポート「AWS の壮大な脅威インテリジェンスについて」において、AWSが大規模な脅威ハンティングを行っているという話がありました。今回のワークショップは、そうした技術の一部分を体験できたのかなと思います。普段認証基盤を作っていますが、今回のような意味でのセキュリティ技術には通じていないので大変勉強になりました。
カミナシではカードを確率だけでなく心理的駆け引きとしても楽しめるソフトウェアエンジニアを募集しています。興味がある方はカジュアル面談からお願いします。