こんにちは、NTTドコモグループの現場受け入れ型インターンシップ2024に参加させていただきました、佐藤と鈴木です。
本記事では、現場受け入れ型インターンシップ「D1.攻撃者視点に立ち攻撃技術を開発するセキュリティエンジニア」での取り組み内容について紹介します。NTTドコモグループのセキュリティ業務、とりわけRedTeam PJに興味のある方への参考になれば幸いです。
目次
RedTeam PJの紹介
私たちは、NTTコミュニケーションズ イノベーションセンター テクノロジー部門 RedTeam PJのポストに参加しました。RedTeam PJでは主に次の業務を行っています。
- RedTeamサービスに資する攻撃技術や、先進的な攻撃技術の調査・研究・開発
- 攻撃自動化ツールの開発
- 社内グループ向けRedTeam業務・技術支援
RedTeam PJの活動や、過去のインターン生の体験記については下記資料をご覧ください。
- The Dark Playground of CI/CD: Attack Delivery by GitHub Actions
- MITRE ATT&CK Contribution - T1562.009 Safe Mode Boot
- Pool Partyという攻撃手法を通じてWindowsの深淵を覗いた7日間(インターンシップ体験記)
参加に至った経緯
私たちの背景と参加経緯についてお話しします。
佐藤
- RedTeam PJはどんな業務をおこなっているのか、またオフェンシブセキュリティにも興味があったので、攻撃技術の調査・検証の業務を体験できるポストに参加しました。
鈴木
- 普段は大学院にて、おとりシステムに関する研究を行っています。
オフェンシブセキュリティに興味を持っており、RedTeamとしての研究開発業務を体験したいと考え応募しました。
インターンシップ概要
インターンシップは8/26から9/6の10日間で行われました。オリエンテーションや成果報告会を除くと実質的な期間は8日間でした。初日と最終日に出社し、それ以外の日はリモートで実施しました。
取り組んだテーマは、「ローコード・ノーコード (LCNC) への攻撃技術検証」です。
私たちはどちらもLCNC自体がほぼ未知の領域であったため、LCNCの概要やそのセキュリティを知るところからスタートしました。
攻撃技術検証としては、Microsoftが提供するLCNC開発プラットフォームであるMicrosoft Power Platform1への攻撃ツール、Power Pwn2の検証業務を行いました。
本記事では、検証業務の一部を紹介します。
ローコード・ノーコードとは
ローコード・ノーコードとは、従来の人手によるコーディングに代わり、GUIを介してアプリケーションを簡単に作成できる開発手法です。LCNC開発プラットフォームとして、Microsoft Power Platformなどがあります。
LCNC開発プラットフォームは、ビジネスアプリケーションの迅速な配信を可能にします。一方、LCNC開発プラットフォームが組織で広く使われるようになると、開発されたアプリケーションには潜在的なセキュリティの脆弱性が入り込むリスクが高まります。
非営利団体OWASPがLCNCのセキュリティリスクや関連する課題、解決方法をまとめた文章として、OWASP Low-Code/No-Code Top 103があります。
検証業務
検証業務では、まずPower Pwn自体がどのようなツールであるかの調査から始まりました。
Power Pwnの概要
Power Pwnは、Microsoft Power Platformに対する攻撃的・防御的なセキュリティツールセットです。
ツールに関する講演4がBlackHatやDEFCONなどのカンファレンスで行われています。
このツールは複数のモジュールから構成されますが、今回のインターンシップではPowerDumpというモジュールに焦点を当て、検証しました。
PowerDump
PowerDumpは、Microsoft Entra IDのユーザーアカウントを起点に、テナント内で必要以上のユーザーに対して共有(以降、過剰共有・過剰に共有と記載)されているアプリやコネクタを列挙し、データのダンプを行うツールです。ここでは、アプリと企業のビジネスデータSQLサーバが接続されている例として示します。
下記のような構成のアプリケーションを想像してください。
アプリとSQLサーバの接続を実現するコネクタというものがあり、コネクタにはSQLサーバの認証情報が含まれています。この時、コネクタが過剰に共有されていると、これを悪用してSQLサーバからのデータ取得が可能になります。
このコネクタなどの過剰共有を調査し、データのダンプまでをツール化したものがPowerDumpになります。
攻撃の流れは次の通りです。
テナントへのアクセス権があるユーザーアカウントを用意する。
AADInternals5を利用し、ユーザーアカウントからテナントIDを調査する。
Power Pwnを用いてreconコマンドを実行する。
PowerDumpを用いてデータを取得する。
reconコマンド
reconコマンドでは、テナント内で過剰に共有されているアプリやコネクタを列挙できます。
図は実際にreconコマンドを実行し、GUIで確認した場合の例です。
過剰に共有されたコネクタに紐づく認証情報が確認できます。
dumpコマンド
dumpコマンドでは、reconで取得したコネクタの認証情報を用いて、データのダンプを行うことができます。
図は実際にdumpコマンドを実行し、CLIで確認した場合の例です。
SQLサーバから、各テーブルデータをダンプできることが確認できます。
無意識にコネクタの過剰共有を行っていると、このように情報漏洩のリスクにつながります。対策のためには、適切な共有範囲の設定が重要になります。
条件や制約の調査
検証業務の後半では、PowerDump実行にあたり条件や制約はあるかについて、ソースコードや実際の動作から調査しました。今回は調査から新たに分かった知見について、一部紹介します。
dumpコマンドの制約
RedTeamがdumpコマンドを利用する場合、次のことが制約条件になります。
- dump対象はコネクタが共有可能設定のものに限定されること
コネクタには共有可能/不可の2種類の設定があり、コネクタの作成者が設定します。
dumpコマンドによりデータダンプ可能なコネクタは、共有可能に設定されているものに限定されます。コネクタは現在1200種類以上ありますが、この制約条件により現在データダンプ可能なコネクタは約60種類に絞られます。
RedTeamでは通常何らかの方法で内部ユーザーアカウントを獲得し、その内部ユーザーが保有している機密情報の取得を試みます。しかしコネクタについては内部ユーザーが所有しているものであったとしても、この制約条件を満たせないためにデータダンプできない場合が考えられ、データダンプを目的とした攻撃シナリオに制限がかかります。
ちなみに現在dumpコマンドがサポートしているデータダンプ可能なコネクタは5種類に限定されています。
ここではdumpコマンドの制約について記載しました。
一方でソースコードを確認した結果、コネクタによるデータ操作は実際にはAPI操作によって実現していることがわかりました。
このことから、現在はdumpコマンドがサポートしていないコネクタであったとしても、独自にAPI操作を実装することでdumpコマンドによるデータダンプを可能にできます。
検証まとめ
今回の検証により、RedTeamとしてPowerDumpの利用をまとめると次のようになります。
LCNCのセキュリティを評価する
reconコマンドで過剰に共有設定がされていないかを評価することは可能。
LCNCを利用して、情報漏洩シナリオを評価する
dumpコマンドが利用できるコネクタには制限がある。独自にAPI操作を実装することで対応は可能。
感想
佐藤
- LCNCとそのセキュリティやプラットフォームへの攻撃ツールの調査・検証を通してRedTeam PJの業務について知ることができ、成長することもできました。対象の知識が全くなかったので苦労もありましたが、調査・検証をおこない、無事報告することができてよかったです。
鈴木
- LCNCのセキュリティに関しては全く知見がなかったため、インターンシップを通して新たな領域に触れることができ、とても楽しかったです。検証業務としては、序盤は既存のトレースも多く限られた時間で成果を出す難しさを感じていましたが、トレーナーさんのサポートもあり、なんとか形にすることができ、よかったです。
おわりに
今回は、NTTドコモの現場受け入れ型インターンシップ2024「D1.攻撃者視点に立ち攻撃技術を開発するセキュリティエンジニア」での取り組みについて紹介しました。
トレーナー、上長をはじめとするRedTeam PJの皆さまには大変お世話になりました。ありがとうございました。