こんにちは、イノベーションセンターの松本です。普段はOffensive Securityプロジェクトのメンバーとして攻撃技術の調査・検証に取り組んでいます。
この記事では、我々のチームで開発したレッドチームフレームワーク「GHARF (GitHub Actions RedTeam Framework)」に関する取り組みと、筆者が学生時代に参加したインターンシップから入社を経てBlack Hat Europe 2025のArsenalで登壇するまでに至った道のりについて紹介します。
はじめに
インターンシップ記事から2年
2023年2月に、現場配属型インターンシップで現在の所属チームであるOffensive Securityプロジェクトに業務体験として参加しました。2週間のインターンシップの中で、GitHub Actionsのセルフホスト型エージェントをC2として利用する新たな脅威のPoC(Proof of Concept:概念実証)コードを開発し、その実現可能性の検証を行いました。
その後、2024年度にNTTドコモビジネス(旧NTTコミュニケーションズ)に入社し、2024年9月頃から「GitHub Actions C2をレッドチームフレームワークに発展させる」という取り組みを開始しました。このプロジェクトは、元のGitHub Actions C2のアイデアを考案した先輩社員である久保さんと2名体制で進めました。
インターンシップ参加時にもブログ記事を書かせていただいたため、詳細は以下の記事をご覧ください。
インターンシップ生があるSaaSを用いた未知のC2脅威を実証してみた - NTT docomo Business Engineers’ Blog
本記事の目的と概要
本記事では、PoCから実用的なフレームワークへ発展させた取り組みの流れと、CI/CDを攻撃基盤とする新たなレッドチームフレームワークのコンセプトについて紹介します。また、国際カンファレンスでの発表を通じて得た経験や知見について紹介します。
Offensive Securityプロジェクトの紹介
Offensive Securityプロジェクトでは、攻撃者視点のセキュリティ(Offensive Security)を専門とするチームとして、攻撃技術の調査・開発・検証に取り組んでいます。攻撃者に先んじて新たな攻撃技術を検証することで、将来の脅威を見越した防御の強化につなげています。
主な業務内容として、NTTドコモビジネスの WideAngleプロフェッショナルサービス における攻撃技術の検証支援や、最先端の攻撃技術に関する応用的な研究開発を行っており、成果のカンファレンス発表など対外的な活動にも積極的に取り組んでいます。
取り組みの着想とコンセプト
インターンシップ時点のアイデア
2023年のインターンシップでは、「GitHub Actionsのセルフホスト型エージェントの仕組みを利用してC2(Command and Control)を成立させられるか」というテーマで、「GitHub Actions C2」と名付けたテクニックの概念実証(PoC)の開発と実現可能性の検証を行いました。
GitHub Actionsとは、GitHubが提供するCI/CD(継続的インテグレーション/継続的デリバリー)プラットフォームであり、開発者がコードのビルド、テスト、デプロイなどのワークフローを自動化するために使用されます。GitHub Actionsのセルフホスト型エージェントとは、「self-hosted runners」と呼ばれるもので、ユーザが管理するVMをワークフローの実行環境として利用できる仕組みです。
インターンシップ期間中は、このセルフホスト型エージェントを利用したC2が成立するかという仮説を確かめるために、PythonでCLIツールを実装し、シェルコマンドの実行やファイルの送受信など基本機能をPoCとして用意しました。
また、攻撃者が実際に悪用可能であるか、という観点でいくつかの制約や現実的な論点も検証しました。 具体的には、企業環境で一般的な認証プロキシ配下での通信可否や、永続化の成立可否、発生する通信などです。結果として、C2通信が十分成立しうることを確認できましたが、あくまで「脅威となりうるか」という点での検証にとどめていました。
GitHub ActionsのCI/CD機能を攻撃基盤として活用する
インターンシップ時点でのGitHub Actions C2のアイデアを出発点に、「CI/CDを攻撃基盤としてレッドチームオペレーションの運用ができるか」という観点で再整理し、PoCを実用的なレッドチーム向けフレームワークへ発展させることを目指しました。
具体的には、レッドチームオペレータがGitHub上にリポジトリを用意し、ターゲット環境に設置したセルフホスト型のランナーを実行基盤として利用することで、
- リポジトリで定義したワークフローをC2サーバーの役割を果たす機能として扱う
- セルフホスト型のランナーをC2エージェントとして扱い、実行結果をGitHub上に集約する
- GitHubのWeb UIや別途開発したCLIツールをワークフロー呼び出しやデータの送受信を行うC2クライアントとして利用する
という構成を前提にしています。
このモデルをベースに、GitHub ActionsのCI/CD機能を攻撃基盤として活用し、レッドチーム演習をより効率的かつ再現性高く実施するための新たなフレームワーク「GHARF」のコンセプトを構築しました。
また、このCI/CDのビルド・デリバリーといった仕組みをRed Teamオペレーションに応用するアプローチをCAI/CAD (Continuous Attack Integration / Continuous Attack Delivery)と呼んでいます。
「GHARF」の技術解説
GHARF (GitHub Actions RedTeam Framework)の概要
GHARFとは、GitHub ActionsのCI/CD機能を攻撃基盤として利用するレッドチームフレームワークであり、レッドチーム演習における擬似攻撃オペレータがGitHubリポジトリとセルフホスト型エージェントを活用し、ターゲット環境での攻撃活動を行うためのツールセットです。
GHARFとGHARFのスターターリポジトリは現在GitHubでOSSとして公開しているので、ご興味のある方は以下のリンクからご覧ください。
- GHARF:https://github.com/nttcom/gharf
- GHARFのスターターリポジトリ:https://github.com/nttcom/gharf-workflows
特徴と機能
レッドチームオペレーションの完全な自動化
攻撃開発から準備・実行まで、レッドチーム演習の全工程を自動化できます。これにより、シナリオ開発に集中でき、各フェーズの結果をパイプラインとしてシームレスに連携することが可能です。
Red Team Operations as Code
攻撃オペレーションをワークフローとして構造化し、記述できます。ドキュメントの準備や繰り返し実行、バージョン管理、環境間の移植も容易に行うことができます。
リソースレス
ランナーアプリケーションをC2エージェントとして活用し、C2サーバーやビルド環境を新たに構築する必要がなくなります。GitHubリポジトリやランナーで攻撃ツールのビルドや結果分析も可能です。
簡単かつ迅速なセットアップ
GitHubアカウントを作成し、リポジトリをセットアップし、ターゲット環境でRunnerアプリを実行するだけで、すぐに始められるようになっています。
アーキテクチャ
全体としては以下のような構成になっています。
CLIクライアント
GHARFによる攻撃オペレーションのトリガーや制御を行うためのコマンドラインインターフェースです。ワークフローファイルの実行、結果の取得、インタラクティブなコマンド実行などをこのクライアントを通じて実行できます。
GHARFスターターリポジトリ
GHARFを動かすために必要なプログラムとワークフロー、設定ファイルで構成される最小限の実装が含まれているリポジトリです。ユーザはこのリポジトリをクローンしてカスタマイズし、独自の攻撃オペレーションの管理を行うリポジトリを作成できます。
また、オペレータが利用するクライアントは前述のCLIクライアントだけでなく、GitHubのWebインターフェイスを用いたクライアントも利用できます。これはWorkflow Dispatch(マニュアル実行)を利用したワークフローとして実装しており、以下のようにWebブラウザの画面から別の攻撃オペレーションのワークフローの実行を連鎖的にトリガーできます。
倫理的配慮について
オフェンシブセキュリティに基づいて攻撃技術をベースとするツールをOSSとして公開する場合は、悪意を持った第三者に悪用されるリスクがつきまといます。今回のGHARFの開発にあたって、以下のような倫理的配慮にもとづく設計・準備を行いました。
Responsible Disclosure
今回開発したGHARFのベースとなったGitHub Actions C2の手法については、GitHubに事前に開示し、許可を得た上で発表しています。(過去にBSides LVやDEF CON Cloud Village, AppSec Villageで発表した際にDisclosureを行いました)
ユーザ同意プロセス
ユーザの意図に反して不正なアクションや予期しない操作が実行されることを防ぐため、デフォルトの設定で実行端末における承認プロセスが必須となるような実装をしています。
アーティファクトのトレーサビリティ
ワークフローによって生成されるアーティファクト(バイナリプログラムなど)に侵害指標(IoC)を埋め込むメカニズムを実装しています。また、これらのアーティファクトを検出するためのYARAルール1も公開しています。
セキュリティポリシー
万が一ツールの悪用が確認された際に、迅速に報告を受け取れるようにするための連絡窓口を用意しています。また、詳細なセキュリティポリシーはGitHubリポジトリにて公開しています。
世界の舞台での登壇
GHARFの取り組みについて国際カンファレンスで発表することを目標にし、CODE BLUE 2025 BlueboxとBlack Hat Europe 2025 Arsenalに応募しました。結果としては、両者ともに採択されることができました。特に海外の場で発表を行ったBlack Hat Europeでの経験にフォーカスして紹介します。
登壇したカンファレンス CODE BLUE / Black Hat Europe
CODE BLUEとは?
CODE BLUEとは、日本発の国際的なサイバーセキュリティカンファレンスです。毎年東京で開催されており、国内で開催されるものの中では最大規模のセキュリティカンファレンスです。
CODE BLUEは主に以下の項目で構成されています。
- メイントラック:カンファレンスの中心となるセッションで、最新の研究成果や技術動向を講演形式で発表します。
- Open Talks:カンファレンスのスポンサーによる講演セッションで、最新のセキュリティ技術や製品に関する情報を講演形式で発表します。
- U25: 25歳以下の若手研究者やエンジニアによる講演セッションで、若手の視点から最新の研究成果や技術動向を講演形式で発表します。
- Bluebox:オープンソースのツールやプロジェクトを紹介する場で、デモを交えて講演形式で発表します。
- ワークショップ:セキュリティに関するさまざまなテーマについて、実践的な内容を学ぶことができるセッションで、ハンズオン形式で行われます。
- トレーニング:専門家によるセキュリティに関するさまざまなトレーニングが行われます。
公式サイト:https://codeblue.jp/
Black Hat Europeとは?
Black Hatとは、世界最大級のサイバーセキュリティカンファレンスのシリーズです。毎年アメリカ、アジア、ヨーロッパ、中東の4地域で開催されており、今回参加したのはロンドンで開催されるBlack Hat Europeになります。
Black Hat は主に以下の4つの項目で構成されています。
- Training:専門家によるセキュリティに関するさまざまなトレーニングが行われます。テーマはユニークなものも多く、モダンなセキュリティ技術を学ぶことができます。通常2-4日間の期間で、カンファレンスの会期の前に開催されます。
- Briefings:最新の研究成果を講演形式で発表するメインセッションです。各セッションは40分で構成され、セキュリティの幅広い分野のトピックが扱われます。
- Arsenal:最新のセキュリティツールをデモを交えて発表する場です。発表はブース形式で行われ、議論を通じて発表者と聴講者が直接交流できる場です。ビジネスの目的で発表することは禁じられている点が特徴です。
- Business Hall:セキュリティ関連企業が自社の製品やサービスを展示する場です。
公式サイト:https://blackhat.com/eu-25/
今回のBlack Hat Europe 2025では、115か国から約7,000人が参加し、うち日本からは約50人が参加していました。
発表内容
今回はGHARFというツール開発の成果を発表することを目的としていたため、CFP(Call for Papers)の申し込み時期を踏まえ、CODE BLUEのBlueboxとBlack Hat EuropeのArsenalという2つのカンファレンスに投稿しました。
発表内容はいずれもほとんど同じで、GHARFのコンセプトや特徴、攻撃オペレーションの流れ、デモ動画などを紹介しました。
ロンドンでのデモ発表とその反応
Black Hat Europe 2025はExCeL Londonというカンファレンスホールで開催されました。我々の発表スケジュールはカンファレンス会期2日間のうち初日の午前最初のセッションで、80分の枠の中で3回のデモ発表を実施するという形式で行いました。合計で約60人の聴講者に参加していただき、そのうち6人ほどと口頭で議論を交わしました。
CODE BLUEとBlack Hat Europeの発表で大きく異なる部分としては、CODE BLUEでは講演ルームで日本語で発表するという形式であったのに対し、Black Hat Europeではブース形式で英語で発表するという部分でした。 英語に不慣れである筆者にとってかなり苦労した部分でしたが、なるべくスライドやデモ動画に多くの情報を載せつつ事前に発表スクリプトを用意することで、なんとか発表を行うことができました。質疑応答に関しては、Q&Aを送信できるWebフォームを用意し、音声でのコミュニケーションが厳しそうな場合はQRコードでフォームに誘導するということも準備しました。 他の難しかった点として、ブース形式であるため会場内が騒々しく、マイクの音声が届きづらいという点がありました。
現地での実際の聴講者からの反応としては、機能に関する質問の他に、どの程度利用範囲の拡張ができるかといった質問や、好意的なコメントなどをいただきました。
具体的にいただいた質問・コメントの例としては、以下のようなものがありました。
- 機能に関する質問
- 攻撃ツールはどのように実行されるのか?メモリにロードされるか?
- AV/EDR2に検知されるのか?
- 利用範囲の拡張に関する質問
- Webアプリのペネトレーションテストでは利用できる?
- Kubernetes(k8s)やGoogle Cloudなどは対象にできる?
- コメント
- 面白かった。ツールを触ってみる。
- 個別にデモをしてもらうことはできる?
回答としては、攻撃ツールは主にファイルベースで扱われる、検知回避はこのツールのフォーカス外である、利用範囲の拡張については現時点では限定的であるといったことを回答しました。
余談になりますが、ロンドンへの出張の中で一番苦労した部分は「移動と時差ボケ」でした。羽田~ロンドン間のフライトで約15時間かかり、その後ロンドンのヒースロー空港から会場までの間も車で約2時間かかるという長時間の移動で、大変疲れました。また、幸い発表時間は現地の午前中だったため問題なく済ませることができましたが、日本との時差が9時間あり、午後の講演は眠気と闘いながら聴講することになりました。
おわりに
今回の取り組みを通じて、GitHub Actionsを攻撃基盤として利用するというアイデアを、単なるPoCから実用的なレッドチームフレームワークへと発展させ、最終的にはBlack Hat Europe 2025のArsenalで発表するという目標を達成できました。また、ツール開発と海外カンファレンスでの発表経験は非常に貴重な経験となりました。
インターンシップ参加時の記事で以下のように書かれているように「この取り組みの発展的な内容を国内外のカンファレンスで発表するかもしれない」という話は聞いており、当時はその足掛かりの部分で貢献できたのであればよかったなという程度の気持ちを抱いていました。
※今回注目したあるSaaSに関する発展的な攻撃テクニック(本記事記載のC2への応用を含む)について、NTTコミュニケーションズ RedTeamとして国内外のカンファレンスへ投稿する予定です。そのため、本記事では具体的なSaaS名の記載を控えます。
入社後にインターンシップで行った技術検証の続きに取り組まないかとお誘いをいただき、2年半越しに海外登壇まで達成するということを経験できたことには感慨深いものがありました。
また、入社2年目でこのような大きな挑戦をすることができたのは今回の取り組みをリードしていただいた久保さんと、Offensive Securityプロジェクトのメンバーの方々、そしてアドバイスをいただいたNTTセキュリティジャパンのメンバーの方々の多大なるサポートのおかげであると感じています。
今回の取り組みを通じて得た経験や知見を活かして、今後も攻撃技術の調査・開発・検証に取り組んでいきたいと思います。