せてぃーずノート

Javaのイベント参加レポートとかを書いたりします。

セキュリティ対策メモ

セキュリティ設計どうすればいいんですか?って聞かれたので説明するためネタを用意するためのメモ。 元ネタはこの本の3章あたり。

攻撃者の分析

キルチェーンで考える。キルチェーンとは攻撃者がシステムに侵入して目標を達成するための具体的手順。

1. 対象選定

攻撃者は「誰の」「何を」目的とするのかを決定する。

  • SNS登録者のパスワード
  • 銀行口座の預金
2. 偵察

攻撃者が攻撃するシステムに対する情報を収集する。ハード・ソフトの双方から行う。

  • ハード:システム構成やセキュリティ対策
  • ソフト:組織体製図、ビジネス目標、採用情報、従業員や関係者
    3. 武器化

2の偵察で得た情報に基づいて攻撃方法の決定と攻撃準備を行う。 例えばマルウェアDoS攻撃用のサーバー、偽造した証明書などを用意する。

4. 配送

攻撃対象に用意した武器を用いて脅威を送り込む。 フィッシングメールの送信、SQLインジェクション水飲み場攻撃やWebサイトの進入。 攻撃経路を確保する。

5. 攻撃

経路を用いて潜入した攻撃対象のシステムに拠点を構築する。 例えばマルウェアを実行するための権限を取得する。

6. インストール

攻撃するためのコードをインストールする。 バックドアや認証情報の取得。

配送・攻撃と異なり、持続的な経路を確保する。 標的型攻撃でマルウェアを送り込む攻撃であれば、配送はメール送信、攻撃でマルウェア起動、インストールで対象のPCに潜伏になる。

7. コマンド&コントロール

インストールしたソフトウェアを用いて目的を実行するための準備。 例えば外部に通信するための帯域の確保や認証情報の取得等。

8. 目的実行

目標達成に向けた行動を実行する。 例えば一時的に監視をオフにしてその間に目標のファイルを盗む。 目標達成と同時に攻撃されていることが判明する場合が多い。 (例えば不正送金等)

防御者の観点

キルチェーンに対して、事前準備・特定・封じ込め・根絶・復旧・教訓からなるインシデント対応サイクル準備する。 それぞれのフェーズはキルチェーンの以下のフェーズに対応する。

  • 1〜3:事前準備
  • 4〜8:特定・封じ込め・根絶
  • インシデント後:復旧・教訓

このサイクルを回すことで攻撃に対抗する。

1. 事前準備

以下の準備を行う。

  • データ測定:システムの監視。そもそも攻撃を受けていても測定できなければ対策できない。
  • ハードニング:セキュリティパッチの適用、ファイアウォール等の攻撃を制限する
  • プロセスと文書化:インシデント発生時の対応準備。マニュアルやコミュニケーションルート
  • 訓練:インシデント発生時の訓練
2. 特定

リソースに対する攻撃を検知する。 例えばデータ測定で監視しているサーバーやユーザーが、異常な動作をしていることを検知する。

3. 封じ込め

攻撃を緩和する。 例えばネットワークをブロックしたり、不正行為を行っていると思われるアカウントのロック、感染したシステムを一時ダウンさせる。

このフェーズ以降はプロセスと文書化による手順や訓練が効果を発揮する。

4.根絶

攻撃者を完全に締め出すための対策。

  • パスワードが流出したのであれば全アカウントをリセット
  • 証明書や認証情報の再生成
5. 復旧

システムを元の状態に復旧する。 そのまま復旧しても再度攻撃を受けるため、必要な対策はここで行う。

6. 教訓

インシデントの振り返り。事前準備に繋がる。 例えばネットワーク構成の脆弱性を突かれたのであれば、1のハードニングでネットワーク構成を見直す。

で、何をすればいいのか?

まずは一般的なセキュリティ対策を行う。AWS上でSpringアプリを動かすのであれば以下のことを設定する。

  • 最小権限のIAMロールの設計やWAF・セキュリティグループ
  • JavaやSpringのセキュリティパッチの適用。脆弱性のスキャン。ゼロデイ対策。
  • XSSCSRFの対策
  • CloudWatchや監視SaaSを利用したログやメトリクスの取得と分析
  • 侵入テストの実施
  • コードレビュー

ここら辺はいい資料や書籍といった教科書がたくさんあるのでその通りにやればいいだけだと思う。 これができてれば、事前準備のデータ測定とハードニングはできているはず。

訓練は攻撃者が標的にしそうなところを中心に対策する。

  • ユーザーのログインIDとパスワード
  • お金を取り扱うサービスであればフィッシング
  • AWSルート権限のっとり

ここら辺の攻撃とかをシミュレーションしてセキュリティ対策を入れていけばいいと思います。