Japan
サイト内の現在位置
Amazon ECRにEvilなコンテナをねじ込んでみた
NECセキュリティブログ2023年2月17日
NEC サイバーセキュリティ戦略統括部セキュリティ技術センターの榊です。昨年末のAWS re:Inventでは多数の新サービスが発表され、AWSファンの間では大変な盛り上がりだったかと思います。セキュリティ系のサービスもいくつか新たに発表、あるいは既存サービスのアップデートが発表されておりました。その中で私が注目したのは「Container runtime threat detection for GuardDuty」です。これは起動しているコンテナ、およびコンテナが実行されているEC2インスタンスのアクティビティを監視し、C&Cサーバーとの通信等、不審な挙動の可視化が期待されるもののようです。そこで本記事では、AWSにおけるコンテナを悪用したサイバー攻撃の検証結果を紹介します。
環境説明と攻撃の流れ
今回用意した検証環境のイメージと、攻撃の流れは以下の通りです。
- ①EC2(Victim)から正常なコンテナイメージをECRにPush
- ②Attacker PCにて①でPushしたコンテナイメージをPullし、リバースシェルの設定を挿入
- ③リバースシェルを挿入したコンテナイメージをECRにPush
- ④EC2(Victim)にて③でPushされたコンテナイメージをPull
- ⑤EC2(Victim)にてコンテナを実行し、EC2(Victim)からAttacker PCへリバースシェル接続
ここでECR(Elastic Container Registry)とは、AWSが提供するフルマネージドなコンテナレジストリです。「フルマネージド」なので、本来コンテナレジストリを自前で作る際に必要な、OSやアプリケーションの構築・設定がほぼ不要なサービスです。大変便利ではありますが、アクセス権の設定を誤ると攻撃者に悪用される可能性があります。
検証結果
では早速検証をしていきます。まず、EC2(Victim)にてUbuntu ver.18.04をPullします。
次に、取得したUbuntuコンテナイメージをECRにPushします。
AWSマネジメントコンソールでECRを確認すると、PushしたUbuntuコンテナが格納されていることを確認できました。
続いてAttacker PCで上記のUbuntuコンテナをPullします。今回は簡単のため、Attacker PCとしてEC2インスタンスを使用しております。このEC2に対し、以下の通りECRに対するフルアクセスを許可するようなIAMポリシーを付与します。
この状態で、ECRに格納されているUbuntuコンテナをPullします。
続いて、このコンテナにリバースシェルを挿入します。今回はDocker Scan [*1]というOSSを使用しました。このツールはコンテナレジストリやコンテナイメージに対し、さまざまなタイプのスキャンや操作が可能なツールです。また、コンテナイメージにリバースシェルを挿入することも可能です。リバースシェルの挿入を実施する際は「trojanize」コマンドを使用します。
これで準備が完了しました。あとは、このコンテナイメージをECRにPushし、Netcatにてリバースシェルを待ち受けます。
EC2(Victim)にて、ECRからコンテナをPullして実行します。リバースシェルが成功しているかの確認のため、「flag」というファイルをコンテナ内に新規作成しておきます。
Attacker PCのターミナルを確認すると、EC2(Victim)とのコネクションが成立していることが確認できました。先ほど作成した「flag」というファイルも確認できることがわかります。
ちなみに以下のスナップショットにあるようなURLに対してアクセスすることで、このコンテナが起動しているEC2(Victim)のメタデータを抽出することが可能なケースもあります。場合によっては認証情報も窃取できてしまいますので、非常に危険です。
現状の対策
この攻撃の恐いところは、「誰が作ったかわからないコンテナイメージがEvilなコンテナだった」のではなく「自分たちが開発しているコンテナがEvilになっている」という点です。対策としては、主に以下の観点があると考えます。
まとめ
以上、Amazon ECR上の正規コンテナ改ざんに関するご紹介でした。クラウドやコンテナ等、比較的抽象度が高いサービスは、管理・監視のノウハウが不十分なケースも多くあるのではないかと想像します。「Container runtime threat detection for GuardDuty」に対する期待も抱きつつ、私自身もさらに色々な事例を検証し、今後も皆様に紹介してまいります。
参考情報
- [*1]DockerScan (Author: Daniel Garcia (cr0hn) / Roberto Munoz (robskye))
https://github.com/cr0hn/dockerscan - [*2]Notary (Provider: Notary Project)
https://github.com/notaryproject/notary - [*3]Cosign (Provider: Sigstore)
https://github.com/sigstore/cosign
執筆者プロフィール
榊 龍太郎(さかき りゅうたろう)
セキュリティ技術センター リスクハンティング・システムグループ
ペネトレーションテスト、脆弱性診断を通じたセキュリティ実装支援、社内CTF運営、ペネトレーションテスト自動化ツール開発リード、その他社内外向けのセキュリティ人材育成施策に従事。
2019年6月にIPA 産業サイバーセキュリティセンター中核人材育成プログラムを修了。
またインプレスグループが運営する技術解説サイト「ThinkIT」にて、RISS試験に関するWeb記事2件の執筆を担当。
https://thinkit.co.jp/article/18849
https://thinkit.co.jp/article/19367
CISSP/情報処理安全確保支援士(RISS) /GIAC GPEN/CEH/AWS CLF・SAA・SOA・DVA・SAP・DOP・SCSを保持。
趣味は家族サービス。
執筆者の他の記事を読む
アクセスランキング