NFLabs. エンジニアブログ

セキュリティやソフトウェア開発に関する情報を発信する技術者向けのブログです。

ペネトレーションテスト演習環境を新しく作った話


はじめに

この記事は、NFLaboratories Advent Calendar 2024 9日目の記事です。

こんにちは、教育ソリューション事業部の吉浦です。
普段はセキュリティ学習用の教育コンテンツの設計、開発、運用をしています。
今回は、教育コンテンツの1つであるペネトレーションテスト演習をオーバーホールしたときの話です。

NFLabs.のペネトレーションテスト演習とは

弊社が提供するセキュリティ研修の中には、ペネトレーションテスト科目があります。
その中でも「ペネトレーションテスト演習」は、模擬企業ネットワークに対してペネトレーションテストを実施するという内容です。
演習は約10日間連続で実施し、標的端末は10台程度です。

既存の演習環境はリリースから少し時間が経っており、やや陳腐化していました。
そこで今回オーバーホールに挑戦し、演習環境を刷新することにしました。

開発記録

概要

開発期間は2024/8~2024/12頃です。総工数は1.5人月程度でしょうか。
大部分は単独作業でしたが、一部作業は社内の有識者の援助もいただきました。
自分だけでは解決できない問題もあったため、本当に助けられました。

シナリオ設計

ここまで規模の大きい演習環境の設計は初めてで、非常に楽しかったです。
まずは典型的な企業ネットワーク構成を作り、そこから侵入経路を考えていきました。
結果的に以下のようになりました(実際とは少し違います)。

攻撃経路はこんな感じです。
ネットワーク境界はFWによって通信が制御され、一部システムではセキュリティ機能が動作しています。


実装

演習環境はAnsibleを使って自動化しています。元となる共通ovaファイルに設定を加えていくという流れで作ります。

しかし自分の経験不足もあり、この作業は非常に難航しました。
特にCMSの初回インストールやWindows初回ログインなど、GUI操作が必要な作業は自動化が間に合いませんでした…
こうした作業はやむなく手動でセットアップしていますが、来年には自動化したいです。

動作検証

実際にやってみると色々と不満を感じることが多く、何度も設計からやり直しました。
ウォーターフォール型開発が好きなんですが、今回は全然無理でしたね…
最後は同僚にもフィードバックをもらいつつ、本番ギリギリで何とか仕上げました。

本番

最初の本番は2024/12で、この記事を執筆時点ではまだ演習期間中です。
一番不安だった難易度設定は、(意外にも)良い感じに出来ているようでした。
演習環境もおおむね安定して動作してくれています。

とはいえ、予想外のトラブルもいくつか生じたので紹介します。

  • 一部の攻撃が失敗した時、標的端末のプロセスがハングして完全に詰むことがあった
    • プロセスを定期的に強制再起動させる緊急対処を入れましたが、今度は攻撃に成功したプロセスまで再起動されることに…
    • 研修生に攻撃成功時は再起動処理を削除するよう依頼して、何とか運用しました。
  • PsExec.exeによる横展開に失敗した時、PsExec.exeプロセスがリソースを無尽蔵に浪費することがあった
    • CPU使用率が100%に達して、全く応答しなくなるのには困りました。検知できても対処できない…

感想

この演習を通じて多くの研修生がスキルアップできているように見受けられ、自分としては嬉しい限りです。時間をかけて作った甲斐はあったかなと思います。

また研修生の活動状況を精査して、研修生への適切なアドバイスや教育コンテンツの改善に繋げていこうと考えています。
研修生の活動状況を精査できる仕組みづくりは、全社的に力を入れている分野です。
研修の効果的な運用なども研究を続けており、その方面でも何らかのアウトプットを出していきたいと思います!