攻撃に対して「ハックされにくい人間」に

Day 106 手法5: ハンズオン攻撃トレーニング Method 5: Hands-On Attack Training

»

[シリーズ構造] 柱D|脅威の現実

セキュリティは、知識ではなく体験で身につく。攻撃を「学ぶ」のではなく「体験する」ことで、脅威は初めて現実になる。意図的に壊し、試す訓練が、設計・実装・運用の判断を変えていく。

▶ シリーズ概要: シリーズ全体マップ:人間のしなやかさ ― サイバー判断力のために

▶ 柱E|脅威の現実 関連記事:

手法5: ハンズオン攻撃トレーニング

u5292553157_Create_a_split-panel_illustration_divided_vertica_9cf6d924-b075-4676-8687-da7d487528e0_3.png

Day 60 を覚えていますか。研究結果ははっきりしていました。知識は行動を変えない。経験が変える。

「水の安全」を いくら本で読んでも泳げるようにはならない。泳げるようになるのは、水に入ったときだ。

セキュリティも同じ。

だから私たちは、チームに「攻撃者はこうする」と説明する代わりに、実際にやってもらう。安全に、意図的に、そして支援つきで。

ここで全部がつながる。

自分が"うっかり"書いたバグを自分で突いてしまった瞬間。
インジェクションがどれだけ簡単かを目で見た瞬間。
API に制限がなくて、システムがあっけなく崩れるのを見た瞬間。

その瞬間、コンプライアンスが「納得」に変わる。
"やらされ感"が "確信"に変わる。

ハンズオン攻撃トレーニングの実装方法

文化と成熟度に合わせて、形式を選ぶ。

オプション A : CTF(Capture The Flag、キャプチャ・ザ・フラッグ)

チャレンジが好きなチーム向け。

  • 脆弱な学習用アプリを使う(OWASP Juice Shop / OWASP WebGoat など)
  • 脆弱性を見つけて悪用できたら "フラグ" を獲得
  • デブリーフで結び直す:「これ、うちのコードベースではこういう形で出ます」

学びがゲームになる。でも、学ぶ内容は現実そのもの。

オプション B : 自分たちのコードを壊す

「自分ごと化」を最短距離でやりたいチーム向け。

  • 各チームが"意図的に脆い機能"を作る
  • 別チームがそれを壊しにいく
  • そしてノートを交換する:なぜ脆かった?どこで判断を間違えた?どう直す?

いい意味で、へこむ。
そして、定着する。

人は、自分が壊したものを忘れない。

オプション C : レッドチーム / ブルーチーム

シミュレーションに耐えられる段階のチーム向け。

  • 半分が攻撃(レッド)
  • 半分が防御・検知(ブルー)
  • そのあと役割を入れ替える

全員がこう言うようになる。

「ああ......だからログが大事なんだ」

トレーニング構成(90〜120分)

マラソンじゃない。制御された、再現可能な "体験" を回す。

  1. 導入(15分)
    何を狙うか。なぜ重要か。現実だとどう起きるか。
  2. 悪用(45分)
    壊す。攻撃する。落とす。
  3. 予防(30分)
    二度と起きないように、防御的に書く。
  4. 振り返り(15分)
    何が意外だった?
    どんな前提が崩れた?
    明日から何を変える?

振り返りは"任意"じゃない。
ここで学びが刺さる。

定期化する

年1回は、行動変容じゃない。

  • Don't:年1の「セキュリティ研修の日」
  • Do:四半期ごとに 90 分の攻撃ラボ
  • Don't:全部を外部コンサルに丸投げ
  • Do:Security Champions が社内で回す

攻撃トレーニングはショーじゃない。習慣だ。練習だ。

続けるほど、開発者はセキュリティチームに言われる前に、設計の段階で自分から脆弱性に気づき始める。

それがゴール。完璧なコードじゃない。予測的な気づきだ。

次に起きること

一度でも自分の手で"悪用"してしまうと、人は「善意前提の設計」をやめる。

代わりに、「悪意があっても壊れない設計」を始める。

それが adversarial thinking。敵から視線の思考。
それが human hardening。人間中心防御。
それが、シフトだ。

――――

[Series Structure] Pillar D | Threat Reality

Hands-on attack training lets teams safely simulate real attacker behavior, turning abstract threats into lived understanding. By breaking systems on purpose, people develop adversarial thinking that actually changes how they design, code, and operate.

▶ Series overview: Series Map - Human Flexibility for Cyber Judgment

▶ Other posts in Pillar E (Pillar D | Threat Reality):

Method 5: Hands-On Attack Training

u5292553157_Create_a_split-panel_illustration_divided_vertica_9cf6d924-b075-4676-8687-da7d487528e0_3.png

If you remember Day 60, the research was clear. Knowledge doesn't change behavior. Experience does.

We don't learn to swim by reading a book on "water safety." We learn by getting in the water. Security is the same.

So instead of telling teams what attackers do, we let them try it--safely, intentionally, and with support.

This is where everything clicks: the moment someone exploits a bug they accidentally wrote, or sees how trivial injection can be, or watches a system fall over because nobody constrained resource consumption.

That's the moment conviction replaces compliance.

How to implement hands-on attack training

Pick the format that matches your culture and maturity.

Option A -- Capture the Flag (CTF)

For teams who like challenges and momentum.

Use deliberately vulnerable apps and turn learning into a scored hunt:

  • OWASP Juice Shop (modern, challenge-based, tracks progress via a scoreboard)
  • OWASP WebGoat (teaches by explaining the vuln, then "learn by doing," then mitigation)

Run it like this:

  • Give teams "flags" for finding and exploiting specific issues.
  • Debrief each flag with: "Here's exactly how this shows up in our codebase."

This turns learning into a game--but the consequences are real. (Just contained.)

Option B -- Break Your Own Code

For teams who want direct relevance, fast.

  • Each team writes an intentionally vulnerable feature (in a sandbox/staged environment).
  • Another team breaks it.
  • Then you swap notes: Why was it vulnerable? What signal did the attacker follow? What would we change in the design and the implementation?

This is humbling in the best possible way.

No one forgets what they break.

Option C -- Red Team / Blue Team

For teams ready for simulation and shared empathy.

  • Half the group attacks a staged environment.
  • Half defends and detects.
  • Then you switch roles.

Everyone walks away saying, "Oh. Now I get why logging matters."

The training structure (90-120 minutes)

We're not running a marathon. We're running a controlled, repeatable experience.

  1. Introduction (15 min)
    What you're targeting. Why it matters. What it looks like in the wild.
  2. Exploitation (45 min)
    Break it. Attack it. Make it fall down.
  3. Prevention (30 min)
    How to code defensively so it doesn't happen again.
  4. Reflection (15 min)
    What surprised you?
    What assumptions broke?
    What will you do differently tomorrow?

Reflection is non-negotiable. That's where learning sticks.

Make it regular

Because once a year ≠ behavior change.

Don't: "Annual security training day."
Do: Quarterly 90-minute attack labs.

Don't: Outsource everything to consultants.
Do: Have Security Champions run internal sessions.

Attack training is not a spectacle. It's a practice.

Over time, developers start seeing vulnerabilities in their own designs before security ever mentions them.

That's the goal: not perfect code--predictive awareness.

What happens next

When people have personally exploited:

  • a broken access control path (including IDOR-style "not my object" access)
  • injection patterns (including SQL injection as a classic example)
  • missing controls around resource consumption and rate limiting (the "we didn't constrain anything" failure mode)

...they stop designing systems that assume good behavior.

They start designing systems that survive bad behavior.

That's adversarial thinking.
That's human hardening.
That's the shift.

-----

References

Ajzen, I. (1991). The theory of planned behavior. Organizational Behavior and Human Decision Processes, 50(2), 179-211. https://doi.org/10.1016/0749-5978(91)90020-T

Bandura, A. (1986). Social foundations of thought and action: A social cognitive theory. Prentice-Hall.

Kolb, D. A. (1984). Experiential learning: Experience as the source of learning and development. Prentice-Hall.

Merritt, M., Hansche, S., Ellis, B., Sanchez-Cherry, K., Snyder, J. N., & Walden, D. (2024). Building a cybersecurity and privacy learning program (NIST Special Publication 800-50r1). National Institute of Standards and Technology. https://doi.org/10.6028/NIST.SP.800-50r1

National Institute of Standards and Technology. (2003). Building an information technology security awareness and training program (NIST Special Publication 800-50). https://csrc.nist.gov/pubs/sp/800/50/final

OWASP. (2021). A01:2021 - Broken access control. https://owasp.org/Top10/2021/A01_2021-Broken_Access_Control/

OWASP. (2021). A03:2021 - Injection. https://owasp.org/Top10/2021/A03_2021-Injection/

OWASP. (2023). API4:2023 - Unrestricted resource consumption. https://owasp.org/API-Security/editions/2023/en/0xa4-unrestricted-resource-consumption/

OWASP. (n.d.). OWASP Juice Shop. https://owasp.org/www-project-juice-shop/

OWASP. (n.d.). OWASP WebGoat. https://owasp.org/www-project-webgoat/

Puri, N., & Hall, K. (2014). When knowledge is not enough: Changing behavior to change vaccination results. Human Vaccines & Immunotherapeutics. https://pmc.ncbi.nlm.nih.gov/articles/PMC4975060/

Shaffer, V. A. (2017). Advocating for behavior change with education. American Journal of Lifestyle Medicine. https://pmc.ncbi.nlm.nih.gov/articles/PMC6124997/

Comment(0)

コメント

コメントを投稿する