セキュリティ界隈の皆さん、こんにちは!
今回はAWSセキュリティを攻撃者の視点から学べる教材「CloudGoat」について紹介です。
「CloudGoat」を利用することで、AWSに対する代表的なハッキング手法や、攻撃に利用するツールなどを学習することができます。
近年、ペンテストでAWSを評価することが増えているので、ぜひCloudGoatを利用して勉強してみてください!
目次
CloudGoatとは?
CloudGoatとは、AWS上に脆弱な環境を自動的に構築してくれるツールです。
Rhino Security Labs社が開発しており、Githubにて無償公開されています。
導入は非常に簡単で、コマンドを1つ2つ打つだけで、Terraformと連携して環境構築を行います。
CloudGoatには現在10個のシナリオ(脆弱な環境)が用意されているのですが、主に次のようなことを学ぶことが可能です。
- IAMの設定不備を突いた特権昇格
- EC2インスタンスのメタデータを悪用した情報漏洩
- SSRFによるIAMキーの窃取
- セキュリティ保護されたRDSデータベースへの不正アクセス
セットアップ手順
大前提
ソフトウェア要件としては次の通りです。
• LinuxまたはMaxOS
• Python 3.6以上
• Terraform 0.14以上
• aws CLI
aws CLIやTerraformの構築はここでは割愛しますが、もし分からない方がいれば下記を参考にしてください。
CloudGoat導入手順
1. CloudGoatのインストール
git clone https://github.com/RhinoSecurityLabs/cloudgoat.git cd cloudgoat pip3 install -r ./core/python/requirements.txt chmod u+x cloudgoat.py
2. 設定ファイルの作成
./cloudgoat.py config profile
3. 「ローカル端末のグローバルIPアドレス」をホワイトリストに追加
./cloudgoat.py config whitelist --auto
ここまでで基本的な設定は完了です。次からは脆弱な環境をAWS上に構築し、攻撃を行います。
シナリオ選択&環境構築
現在用意されているシナリオは次のコマンドで表示可能です。
./cloudgoat.py list undeployed
本記事では、cloud_breach_s3を紹介します。
このシナリオでは、EC2のリバースプロキシの設定を悪用することで、①メタデータからインスタンスプロファイル(IAMキー含む)を取得し、②s3に保存されている機密情報を窃取するといったものです。
では、実際に下記のコマンドで環境構築します。
./cloudgoat.py create cloud_breach_s3
上記コマンドを実行するとEC2のグローバルIPアドレスが出力されるのでメモします。
(GUIからでも確認可能)
次に作成したEC2のメタデータを取得してみます。
iamが見つかったのでさらに調べてみます。
結果的に、「http://100.26.41.216/latest/meta-data/iam/security-credential/cg-banking-WAF-Role-cloud_creach_s3_cgid6buw9gslv5」にインスタンスプロファイルを発見しました。
次にこのIAMキーを「~/.aws/credentials」に追加し、aws CLIで権限を確認するとアクセス可能なs3を発見しました。
後はs3に保存されている機密情報をダウンロードし完了です。
データの中身はダミーの個人情報でした。
まとめ
AWSセキュリティをハンズオンで学べるCloudGoatを紹介しました。
今回紹介したシナリオ以外にも様々なシナリオがあるので、興味ある方はぜひ一度やってみてください。
もし、AWS初心者の方でCloudGoatが難しすぎて分からないと感じたら、まずはAWSの基礎を勉強してから取り組まれることがオススメです。
というのも、AWSハッキングは基本的な用語やアーキテクチャを理解していないと学習できないからです。
個人的には、AWS 認定ソリューションアーキテクトの知識があればベースは十分に出来上がると思います。
下記教材は初心者の方でも取り組みやすく、さっとAWSの全体像を理解するのによい教材なのでぜひ使ってみてください。
1) ハンズオンで学びたい方におすすめ
2) 本でさらっと学びたい方におすすめ