本サイトは、快適にご利用いただくためにクッキー(Cookie)を使用しております。
Cookieの使用に同意いただける場合は「同意する」ボタンを押してください。
なお本サイトのCookie使用については、「個人情報保護方針」をご覧ください。
はじめに
こんにちは。MBSD 株式会社に本年入社しました加藤です。今回、世界的に著名な情報セキュリティカンファレンス Black Hat のトレーニングに参加する貴重な機会をいただきました。(感謝しかありません!)
私は新卒入社で参加メンバー内で最も若手ということもあり緊張していましたが、なんとか情報を持って帰りましたので共有いたします。
Black Hat USA 2025 スケジュール
Black Hat USA 2025 は以下のスケジュールで開催されました。まず、トレーニングとブリーフィングに分かれています。トレーニングは、一部4日間コースもありますが、主に2日間の前/後半で開催されており、私は8月4日から8月5日のトレーニングとその後のブリーフィングに参加しました。
Black Hat USA 2025 スケジュール
8/2 ~ 8/3 | Training 前半 |
8/4 ~ 8/5 | Training 後半(ここから参加!!) |
8/6 ~ 8/7 | Briefings |
ほぼ初めての海外で、なかなか時差ボケに苦しめられました。初日は移動疲れですぐに寝れたのですが、特に2日目以降が日本の生活スタイルから抜け出せずに苦労しました。
トレーニング概要
私が参加したトレーニングは Threat Intelligence Pty Ltd. 様による Automating Security With Open Source です。オープンソースのサービスを活用し、セキュリティ運用を自動化する手法を学びました。
講義の中心は自動化テクニックであり、オープンソースを中心に AI も組み合わせて監視体制や診断体制をいかに構築するかという点に重きが置かれています。自動化の切り分け単位や抽象化された自動化フローの解説など座学も豊富でした。実務で運用を考える際には、有料のツール類や自社環境とも組み合わせることが多いと思われますが、そういった状況にも応用できるトレーニング内容でした。
注意点として、AI に関してはあくまで AI をどのように自動化に組み込むかについてのみ言及されており、AI のモデルごとの性能や実用性については特に触れられませんでした。
全体の流れは、それぞれ個別の問題に対する自動化手法の解説が行われ後半徐々にそれらを統合し、最終的なセキュリティ運用の自動化を目指しました。また、本トレーニングでは、Ansible Playbook を積極的に活用し自動化タスクを記述しました。個人的に、Ansible はどちらかというとインフラ構築のイメージがあったためペネトレーションテストの自動化にも活用する点に驚きました。(Ansible は学生の頃に少し学習しましたが、そもそも導入が大変で避けていました...)
トレーニングスケジュール
1日目
- トレーニング概要
- セキュリティ運用の自動化とその有用性
- インテリジェンス収集の自動化
- 座学
- ラボ演習
- ペネトレーションテストの自動化
- 座学
- ラボ演習
2日目
- DevOps と DevSecOps
- 座学
- ラボ演習
- インシデントレスポンスの自動化
- 座学
- ラボ演習
- セキュリティ運用の自動化と統合
- 座学
- ラボ演習
- アラートと視覚化
- 座学
- ラボ演習
全体的に演習が多く、2日目は少しタイトなスケジュールでした。1日目の内には、Ansible Playbook の記法に慣れておく必要があります。(1日目の夜にホテルで練習しました)
トレーニング中には、2-3時間ごとにコーヒータイムやクッキータイムもあり休憩や他の参加者と雑談・相談しながら学習を進めました。(クッキーを2枚とると食べきれずに戦いが始まります。一敗)
トレーニング内容
(トレーニングの休憩時に飲めるコーヒー)
インテリジェンス収集の自動化
最新情報が常に変化する Tor の Exit node などの情報収集と正規化を行い、squid(プロキシサーバー) や Wazuh SIEM(SIEM)に渡すことで、内部のセキュリティ情報を自動で最新化し、検知・防御システムを常に最新の状態に更新する手法を主に学習しました。他にも、後述のペネトレーションテストに渡す情報として、recon-ng(情報収集ツール)を利用した情報収集も行いました。
これらの自動化はすべて Ansible Playbook を使って実装し、ツールのクローンから実行及び実行後の解析までを Ansible Playbook で記述、一連のタスクをまとめた yml ファイルを作成しました。ここまで Ansible を記述した経験がなかったので、演習中は必死に Ansible のドキュメントを漁りながら書き進めていました。(こんな便利なものだったとは!)
SIEM によるアラート情報を AI に渡し脅威度判定や対策案を出力させる演習もありました。トレーニングでは AI の性能がそれほど高くなくびっくりするような対策案を提示されました。しかし、AI モデルやプロンプトによってはアラート対応へのコスト削減につながると実感できました。
ペネトレーションテストの自動化
インテリジェンス収集で得た情報を対象に、脆弱性スキャンやペネトレーションテストツールを自動化する方法を学習しました。
はじめに、OpenVAS(スキャナー)の環境構築及びスキャンを行い、その情報を metasploit(ペネトレーションテストツール)に渡すことでペネトレーションテストの自動化を行いました。
具体的には、OpenVAS で検知した脆弱性名を metasploit で検索及び診断する Resource Scripts(metasploit の機能の一つで自動化用のスクリプト) が用意されており、Ansible を使ってそれらを実行することでペネトレーションテストを行いました。トレーニングでは、Ansible Playbook を用いて OpenVAS の実行結果を metasploit に渡して実行することが主な演習内容でした。(Resource Scripts まで記述するとそれなりの自動化実装コストがかかりそうです)
こちら特に、AI の活用方法に期待していましたが、現状商用レベルでの診断やペネトレーションテストにAIを活用するにはまだ技術的な難しさがあるように感じました。どちらかというと、ペネトレーションテストツールの実行結果を分析するために AI を活用していました。
DevOps と DevSecOps
ビルド後を想定し Jenkins(CI/CDツール)による診断ツール実行と AI による評価の自動化について学習しました。OWASP ZAP(脆弱性診断ツール)を用いてレポートを出力し、そのレポートを元に AI に評価&まとめてもらいました。
唯一 Ansible Playbook を利用しませんでした。代わりに Python コードを記述して、AI とのデータ受け渡しを実装しました。Jenkins に OWASP ZAP を実行するジョブと、実行結果のレポートを Python によって AI に渡し、評価&まとめをまた Jenkins に表示しました(ここで、若干Ansibleが恋しくなりますが後半は怒涛のAnsible演習があります)
こちらも AI 利用についてはあくまで、自動化にどう組み込むかについてのみトレーニングで扱われており、実用的なレポートは生成しませんでした。プロンプトを調整することで総合評価と総評を生成してもらいましたが、総合評価の妥当性の根拠はよくわからず、また一般的な脆弱性対策を勧める総評となっていました。(AI モデルによっては有用となるのか、要実験です)
セキュリティ運用の自動化と統合
最初は、座学を中心にインテリジェンス収集やペネトレーションテスト、SIEMなどの一連の自動化フロー例をいくつか学習しました。
その後、DNS Sinkhole の自動化フローと マルウェア検知時のエビデンス確保及び解析の自動化フローを実装しました。
自動化フロー例では、これまで学習した内容をより抽象化してそれぞれのフローについて解説がありました。どういった自動化の単位で切り分けるべきかといった設計よりの解説が行われました。
DNS Sinkhole の演習では、インテリジェンス収集は終えた想定で、bind(DNSサーバー)を用いて DNS Sinkhole を構築しました。インテリジェンス収集の結果をどのように活用するかその一例を学習しました。
ただ、インテリジェンス収集は終えた想定なので、演習ではどちらかというと Ansible で DNS サーバーを立てることに内容が寄っていました。DNSリストのテキストファイルを元に、DNS の設定ファイルを作成、それを Ansible で構築した DNS サーバーに適用しました。
エビデンス確保及び解析の自動化では、マルウェア検知後を想定し winpmem(メモリダンプツール)によるメモリダンプを行い、 volatility(メモリ解析ツール)を用いた解析を行いました。
はじめに、Ansible Playbook を Windows 対象に記述し、winpmem の実行及び実行結果の取得を行いました。あくまでラボ環境だったので、ダンプされたメモリ情報は、Ansible Host に移し、volatility を用いた解析の自動化まで行いました。
実際にマルウェアの復元まで行い、リモートデスクトップ環境とはいえ慣れない Ansible で操作するのは恐ろしかったです。(講義資料に2回 "DO NOT RUN" と書かれていてトレーニング参加者の中で笑いが起きていました)
また解析結果から YarGen(Yara rules 生成ツール)を用いた Yara rules の生成まで自動化を行いました。
AI の利用については以降あまり触れられず、内容としてもこれまで以上に SOAR や フォレンジック に寄ったものでした。私は普段は診断側の業務が主で、あまりフォレンジック系に触れる機会がなかったため新鮮さとマルウェア実行ファイルへの恐怖感を感じながら学習を進めていました。(volatility 便利!現在はリポジトリが achieve 化されて volatility 3 に移っているみたいです)
アラートと視覚化
アラート情報 や AI による出力を Slack チャンネルと連携する手法について実装しました。
はじめにAnsible の import_tasks を使ってこれまでのタスクを一つの Playbook にまとめ、次に Ansible の Slack 連携モジュールを利用し視覚化を実装しました。これまでの記述と比べるとシンプルでしたが、Slack と連携するためのトークンが必要で、トークン取得のため Slack へログインする際に多くの参加者が Google reCaptcha を突破できず、若干トラブルになっていました。(私も全然突破できませんでした...reCaptcha突破できない問題は世界共通みたいです)
まとめ
トレーニングは、解説のドキュメントが豊富でラボ環境も整っており非常に学習しやすい環境でした。座学とラボでの演習を繰り返し手を動かしながら学ぶことができ、具体的な実装も合わせて知ることができました。特に、今回のトレーニング内では AI の活用方法についてまだ困難な箇所があることを学び、あくまでツール類による解析結果のレビュー用途が主で、AI に何か操作をさせることはありませんでした。
しかし、現時点での AI による業務の自動化の具体例を学習できたことは非常に有意義なものだと考えています。弊社の業務改善と自動化に貢献していきたいと思います。
トレーニング以外にも、参加者同士の交流は非常に価値があるものでした。皆様どのような目的をもって Black Hat に参加しているのか聞くと多種多様で知見が広がります。海外という少し特殊な環境のおかげで、様々な立場や分野の方々と話しやすかったです。また、セキュリティ好きな方がこんなにいるのかと感動しました。
(飛行機窓からの写真)
最後に、事前に上司から聞いていましたが、トレーニング会場の空調が想像を超えるほど寒かったです。冗談だと思っていましたが、本当にダウンジャケットを持って行っても良いほどでした。(個人差はあります)
おすすめ記事