本サイトは、快適にご利用いただくためにクッキー(Cookie)を使用しております。
Cookieの使用に同意いただける場合は「同意する」ボタンを押してください。
なお本サイトのCookie使用については、「個人情報保護方針」をご覧ください。
2024年4月18日~4月19日にかけてシンガポールのMarina Bay Sandsで開催されたBlack Hat ASIA 2024 Arsenalに、セキュリティトレーニングツール「ZANSIN (Zero-based Automated New SecurIty traiNing)」のプレゼンターとして当社メンバー(一ノ瀬、洲崎、高江洲)が参加してきました。本ブログでは今回発表したZANSINの概要や、発表に至る経緯・当日の模様などを紹介いたします。
ZANSIN (Zero-based Automated New SecurIty traiNing)
Black Hat ASIA 2024のエントランス
はじめに
今回当社メンバーが登壇したのはBlack Hat ASIAのArsenalというカテゴリとなります。Black Hat Arsenalとは、Briefingsと並行して開催される「先進的なセキュリティに関するツールの展示会」であり、事前審査をクリアしたツールのみが出展可能です。今回も世界各国から約60のツールが出展されていました。ちなみに、弊社はArsenalに過去6回出展しています。
※各回の参加ブログはこちらからご参照ください。
Black Hat ASIA 2024 Arsenalの会場
Arsenalのスケジュールボード
ZANSINとは?
ZANSINは実際のサイバー攻撃を想定したインシデント・レスポンスを体験するためのトレーニングツールです。実はこのツールはセキュリティ業界の有志で運営している「MINI Hardening」というコミュニティのメンバーで開発しています。
ここでMINI Hardeningについて簡単に紹介させていただきましょう。MINI Hardeningとは、WASForumが主催するHardening Projectから派生して設立したサイバーセキュリティのコミュニティです。Hardening Projectでは、サイバーセキュリティの実践力の向上を目的として、参加者が仮想環境に構築された脆弱なシステムを運用し、運営が実行するサイバー攻撃に対応することで、Hardening=堅牢化のスキルを競い合う競技を行っています。本家のHardening Projectでは、まるまる2日間かけて上記の競技やフィードバックなどを行いますが、MINI Hardeningでは、「カジュアルにセキュリティインシデントを体験する!」ということをコンセプトとして、半日から1日程度でより気軽にこの競技を体験できるイベントを開催しています。
MINI Hardeningは実はすでに発足から10年が経過しており、過去日本国内及び海外で25回以上のイベントを開催しています。当社メンバーの一ノ瀬、洲崎、高江洲も本コミュニティの運営メンバーとして参加し、活動しています。過去当社ブログでも本コミュニティが台湾でイベント開催した模様を記事にしていますのでよろしければご参照ください。
現在のMINI Hardeningでは、Version 4.xというオンラインゲームをモチーフとした競技環境を利用しています。ただし、この環境を利用してからもうすでに3年程度が経過しており、過去9回のイベントを開催してきました(SECCON・AVTokyoなどの国内セキュリティイベントとの併設開催・台湾HITCONでの開催・日本各地での地方開催などを行い、約200人以上の方にご参加いただいてます!)。
現環境を利用してきてからそこそこ時間が経過したこともあり、運営内ではそろそろ新たな競技環境を検討するタイミングではないかと議論していました。Version 4.xの環境は数多くのイベントをこなす中で修正を繰り返しており、安定して競技を提供できるコンテンツに仕上がっている状態となっています。そのため、新しい競技環境に移った場合にお蔵入りとなってしまうのは、少々もったいないと感じていました。
上記のような背景から、ならばいっそのことOSS化して現在の競技コンテンツを全て公開し、より多くの方に使っていただけるようにした方が、世の中の役に立つのではないのかと思い立ち、ZANSINのプロジェクトがスタートしました。
つまり、私たちが開発したZANSINは、個人でいつでも好きな時に、MINI Hardeningのイベントで利用していた競技環境を利用して、サイバーセキュリティを学ぶことができるツールなのです。
ZANSINの概要について
ZANSINの全体概要
ZANSINは以下の2つのシステムから構成されます。
- Training Machine
脆弱性なゲームシステムが動作している演習環境 - ZANSIN Control Server
Training Machineに対して、ゲームシステムの稼働状況を確認するための定期的なアクセス・攻撃の実行・学習者の対応評価などを行うためのシステム
利用者は事前に初期状態のUbuntuサーバを2台用意していただくだけで(※)、上記の2つのシステムを自動的に構築できるように開発されています。
※厳密には、2 台の Linux マシンは相互に通信でき、パスワード認証を使用して SSH経由で接続できるなどのいくつかの条件が必要となるため、GitHubリポジトリのRequirementsの項目にて詳細をご確認ください。
ZANSINを利用して学習するために、学習者はTraining Machineにアクセスして演習を行います。学習者は演習中に、Training Machine上で動作する多数の脆弱性が存在するゲームシステムを運用しなければなりません。演習を開始するとZANSIN Control Serverはゲームシステムを利用して遊ぶユーザの動きをシミュレートしてゲームシステムに対して定期的にアクセスを行います(以降この動作をCrawlingと記載します)。また、それと並行してゲームシステムに対してあらかじめ定義されたシナリオに沿ったサイバー攻撃を実行します。上述したようにこのゲームシステムには脆弱性が存在しているため、そのまま攻撃されてしまえば、当然セキュリティインシデントが起こってしまうでしょう。
このように学習者は、Training Machine上のゲームシステムを運用して安定稼働させながら、ZANSIN Control Serverによって実行されるサイバー攻撃へ対応しなくてはなりません。もし、なんらかのセキュリティインシデントが発生してしまった場合には、ゲームシステムを正常な状態へと自分で復旧する必要があります。また、サイバー攻撃の被害を受けないようにするためには、ゲームシステムに存在する脆弱性の修正に取り組まなければなりません。このようなサイバー攻撃の被害を受ける環境を実際に運用する演習を通じて、仮想的なインシデント・レスポンスを体験し、学習することができるようになっています。
脆弱なゲームシステム「MINI QUEST」
ここで、ZANSINの演習において、学習者が運用することになる脆弱なゲームシステムについてちょっと紹介したいと思います。
脆弱なブラウザゲーム「MINI QUEST」
私たちは、この演習環境のために「MINI QUEST」と呼ばれるブラウザゲームを独自に開発しました。ちょっと懐かしい8bit風の見た目のゲームとなっており、いわゆる日本のソーシャルゲームにありがちな機能は一通り存在しています。また、もちろん実際にゲームで遊べるようにもなっています。
ゲームシステムの環境構成
演習環境の構成は、フロントにNginxのWebサーバが動作し、バックエンドではdockerコンテナを利用してゲームアプリとデータベースを提供する上記のようなものとなっています。ゲームアプリについてはPHPを利用して開発しています。
上記のゲームシステムにはプラットフォームの設定不備やWebアプリケーションの実装上の問題など、現実の世界でもありがちな様々な脆弱性が作りこまれています。インフラエンジニアの方だけではなく、アプリケーション開発者の方もセキュリティを学ぶことができるような演習環境となっています。
学習者の対応内容を評価する仕組みについて
概要で述べたようにZANSIN Control Serverでは、攻撃を行う以外にも学習者のインシデント対応内容を評価する機能を実装しています。現時点のバージョンでは2つの評価項目が存在します。
1つ目の項目はシステム稼働率であり、ZANSIN Control Server のCrawlingの結果からスコアを算出しています。このシステム稼働率のスコアはゲームシステムが正常稼働している時間が長いほど、上昇する仕組みとなっています。例えばゲームシステムが攻撃でダウンまたは正常稼働できない状態となった場合には、システムの稼働率が低下する仕組みになっています。このため、高いスコアを獲得するためには、セキュリティインシデントが発生した場合に素早くシステムを復旧する必要があります。
また、今回の演習環境であるゲームシステムならではの特徴として、ゲームチート(ゲームにおける不正行為)によってもスコアが変動する仕組みとしています。演習では脆弱性を利用して、ゲームシステムに対するいくつかのチート行為が行われるシナリオとなっています。もし、チート行為が横行しているゲームだったら、真面目に遊んでいるゲームユーザはやる気がなくなってしまいますよね?そのような理由からゲームチートが横行している状態となっていた場合にも、システムの稼働率が低下する仕組みとしています。このため、良いスコアを獲得するためには、ゲームチートに対しても対応する必要があるのです。
2つ目の項目は脆弱性の修正状況の評価です。ZANSIN Control Serverは演習環境のゲームシステムに存在する脆弱性が演習中にどれくらい修正されているかを評価してスコアを算出します。そのため、発生したセキュリティインシデントに対する場当たり的な対応だけではなく、インシデント発生の原因となる脆弱性を特定し、根本的な修正を行った場合により良いスコアを獲得できるような仕組みとしています。
ZANSINの利点の一つとして、いつでも好きな時に自分もペースで、何度でもこの演習環境を利用して学習できるという点があります。是非高得点を獲得できるように、繰り返し遊んでみてください!
また、演習環境に存在する脆弱性及び、演習中に行われる攻撃などについてはZANSINのGitHubリポジトリにて詳細を解説しています。そのため一度演習をやってみた結果、全く歯が立たないという方でも、解説ページを読みながら手を動かすことで学習することができるようにしています。
Black Hat ASIA 2024 Arsenalの模様
ここまでZANSINに関する説明をしてきましたが、ここからは本ツールの発表を行ったBlack Hat Arsenalの模様についてご紹介したいと思っています。
ZANSINを開発するにあたり、期限や目標を設けた方が開発のモチベーションも高まると思われたので、当初からBlack Hat ASIA 2024 Arsenalへの応募をターゲットとして本プロジェクトの開発を進めていました。CFPを応募した結果、無事採択いただけたので非常に嬉しく思っています!MINI Hardeningの運営一同で今回シンガポールに乗り込みBlack Hatの舞台にてZANSINをお披露目してきました。
ZANSINの発表の聴講者
当社洲崎がプレゼンターとして説明
ZANSINの出展ブースはArsenalエリアの奥に位置していて聴講するのには場所が悪く、また発表する時間も夕方(帰り支度をする来場者が多い時間帯)とあまり良い条件ではなかったと思われました。全然発表を聴講していただけないのではないかと、冷や冷やしていたのですが、結果として同時間帯のArsenalエリアでも1,2を争うほど多くの来場者に発表を見ていただけました。また、ブースに来場していただいた方からも「ZANSINに興味がある。新人のトレーニングに利用したい」・「教育現場で使ってみたい」などの好意的なコメントもいただき非常に嬉しく思いました!
おわりに
今回有志にて開発して公開したZANSINについて本ブログにて紹介させていただきました。Black Hat Arsenalでも発表したのですが、ZANSINについては今後現在リリースしている機能の改善や、新たな機能の実装なども検討しています。メンテナンスを継続しアップデートしていきたいと考えており、利用していただいた感想などをアウトプットいただけると開発しているメンバーの励みもなりますので是非お待ちしています。ZANSINを利用して、お家でカジュアルにセキュリティインシデントを体験して、楽しみながら学習してみてください!
おすすめ記事