資格道場 › レッスン一覧 › セキュリティ
セキュリティ・19/23・12分

脆弱性の検査と攻撃・インシデントの分析

ゴール

ポートスキャン・ペネトレーションテスト・ファジングといった「弱点を探す検査」の違いを見分けられるようになる。サイバーキルチェーン、インシデントの分類、ディジタルフォレンジックスの説明文を選択肢から正しく選べるようになる。

このレッスンの用語は、どれも「〇〇の説明として適切なものはどれか」という形で出題されます。他の対策の説明が選択肢に混ぜられるので、各手法が「いつ・何のために・何をするか」を1行で言えれば得点できます。実務でも、脆弱性診断の見積りや事故対応の報告書を読むときに必ず出てくる言葉です。

このレッスンで稽古する(用語チェック・過去問)

全体像:攻撃の前・最中・後で使う道具が違う

このレッスンの用語は、時間の流れに並べると整理できます。攻撃する前に弱点を探すのがポートスキャン・ペネトレーションテスト・ファジングです。攻撃の流れを段階ごとにとらえる見方がサイバーキルチェーン、事故が起きた後に原因を調べるのがインシデントの分類とディジタルフォレンジックスです。

ポイントは、攻撃者が使う手口を、防御する側も「自分の弱点の点検」に使うことです。たとえばポートスキャンは、攻撃者にとっては下見、守る側にとっては点検になります。

flowchart LR
  A["偵察(ポートスキャンなど)"] --> B["武器化・配送"]
  B --> C["攻撃・侵入"]
  C --> D["遠隔操作・目的の実行"]
  D --> E["事後:インシデント分類・フォレンジックス"]

ポートスキャン:どのサービスが動いているかを調べる(最頻出)

結論:ポートスキャンは、サーバのどのポートが開いていて、どのサービスが動いているかを調べる行為です。 ポートとは、1台のサーバの中で通信の宛先となるサービス(Web、メールなど)を番号で区別する「窓口番号」のことです。サーバに順に通信を送り、反応があった番号を「開いている」と判断します。

たとえるなら、ビルの各部屋のドアを順にノックして、返事がある部屋を探す行為です。どこが空き部屋かは中に入らなくても分かります。

使う人によって目的が変わり、試験では両方の立場が出題されます。

立場 目的 攻撃のどの段階か
攻撃者 攻撃できそうなサービスが動いているかを調べる **事前調査(偵察)**の段階
守る側(検査) 稼働中のサービスを一覧にして、不要なサービスが動いていないか確認する 攻撃ではなく点検
  • 攻撃者の問題では「権限取得」「不正実行」「後処理」の段階を選ばせようとします。ポートスキャンは侵入する前に行うので、答えは必ず事前調査です。
  • 検査の問題では「アクセス履歴の解析」「利用者IDの管理状況の確認」「ログインしてコンテンツを確認」が混ぜられます。ポートスキャナはログもIDも見ません。ポート=動いているサービス、とだけ覚えれば見分けられます。
  • 応用として、FINパケットなどを送って応答から稼働中のサービスを見つける、という説明もポートスキャンの一種です。
窓口番号を順にノックして返事を見るスキャナ中には入らないサーバWeb開いているメール開いている使っていない番号動いていない使っていない番号動いていない反応あり反応あり反応なし反応なし
スキャナがサーバの窓口番号に順に通信を送り、反応があった番号を「開いている」(サービスが動いている)と判断する様子。

ペネトレーションテスト:実際に侵入できるかを試す

結論:ペネトレーションテスト(侵入テスト)は、システムを実際に攻撃して、侵入できるかどうかを確かめる検査です。 依頼を受けた検査者が攻撃者と同じ手口を使い、脆弱性(セキュリティ上の弱点)が本当に悪用できるかを確認します。

鍵の点検でたとえると、鍵の型番を見て「古い型だ」と指摘するだけでなく、実際にピッキングして開くかを試すところまでやるイメージです。キーワードは**「実際に」「侵入を試みる」**です。

試験では、侵入を試みない別の手法と並べて出題されます。

選択肢に出る手法 何をするか 侵入を試みるか
ペネトレーションテスト 脆弱性を探して、実際に侵入できるか確認する 試みる
ソースコード検査(静的解析) 設計書やソースコードを読んで問題を探す 試みない
ハッシュ値による改ざん検知 ファイルのハッシュ値を定期的に比べ、書き換えを見つける 試みない
通信の異常検知(IPFIXなどのフロー情報) 通信記録から不審な振る舞いを見つける 試みない
ウォークスルー/インスペクション 人が集まって成果物をレビューする 試みない(レビュー手法)
リグレッションテスト 修正で他の部分が壊れていないか確認する回帰テスト 試みない

選択肢に「実際に侵入」「攻撃して」と書かれたものがあれば、それがペネトレーションテストです。

ファジング:変なデータを大量に入れて弱点を探す

結論:ファジングは、問題を起こしそうな多様なデータ(ファズ)を大量にソフトウェアへ入力し、異常な動きを監視して脆弱性を見つける手法です。 極端に長い文字列や想定外の記号などを自動で次々に送り込みます。

ファジングで分かるのは脆弱性の検出までです。自動で修正はしません。また、ソフトウェアの内部(ソースコード)を見ずに、入力と出力だけで調べるのでブラックボックステストの一種です。

区分 意味 このレッスンでの例
ブラックボックステスト 内部を見ず、入力と出力の振る舞いだけで調べる ファジング
内部を見る検査(ホワイトボックス的) 設計書・ソースコード・設定などの中身を確認する 設計書のセキュリティレビュー、ソースコード検査、設定ファイル検査
ファズを自動で次々に大量に入れるブラックボックステストファズ(入力)極端に長い文字列想定外の記号でたらめな値ソフトウェア(中は見ない)異常な動きを監視ファジングで分かること○ 脆弱性の検出✕ 自動で修正はしない
ファジングは中身を見ずに多様なデータ(ファズ)を自動で次々に入れ、異常な動きを監視する。分かるのは脆弱性の検出までで、自動で修正はしない。

サイバーキルチェーン:攻撃を段階に分けて見る

サイバーキルチェーンは、攻撃者の視点で、攻撃の手口を「偵察」から「目的の実行」までの段階に分けたモデルです。 段階ごとに防御策を考え、どこかの段階で鎖を断ち切ることを目指します。選択肢には、名前が似た「サプライチェーン(委託先のリスク)」「ブロックチェーン(取引データをつなげて改ざんを検知)」や中間者攻撃の説明が混ぜられるので、**「攻撃者の視点・段階に分ける」**を目印にしてください。

インシデントのタイプ分類:何が「実際に起きたか」で分ける

インシデント(セキュリティ上の事故や事件)は、実際に起きた事実で分類します。攻撃者の最終目的では分類しません。 過去問では Scan(不審なアクセス・探索)、Abuse(不正中継)、Forged(送信者を詐称したメール)、Intrusion(侵入)、DoS(サービス妨害)、Other に分ける例が出ました。

ひっかけは「DoS用の踏み台プログラムが設置されていた」です。目的はDoSでも、プログラムを置かれた時点で侵入されているので Intrusion に分類します。同じように「攻撃の形跡はあるが侵入されていない」は Scan です。

何が実際に起きたかで分ける事実:DoS用の踏み台プログラムが設置されていた目的で分ける目的はDoS → DoS✕ 誤り起きた事実で分ける置かれた=侵入された○ Intrusion攻撃の形跡はあるが侵入されていない→ Scan
「DoS用の踏み台プログラムが設置されていた」は、目的(DoS)ではなく実際に起きた事実(侵入)で分類するので Intrusion になる。

ディジタルフォレンジックス:証拠として使えるように保全・分析する

ディジタルフォレンジックスは、不正アクセスなどの犯罪について、データの法的な証拠性を保てるように、原因究明に必要なデータを保全・収集・分析することです。 警察の鑑識の、コンピュータ版と考えてください。

証拠のデータは、原本をそのまま調べると内容が変わるおそれがあるので、複製を作って分析します。このとき原本と複製のハッシュ値(データから計算する固定長の値で、1ビットでも変わると値が変わる)を比べ、一致すれば原本と複製が同一であることを証明できます。

選択肢には、メールのフィルタリング、外部攻撃からの防御、廃棄前のデータ上書き消去(ハッシュ値の問題ではパスワードの保存や改変データの復元)が混ぜられます。キーワードは**「法的な証拠性」「保全・収集・分析」「同一性の証明」**です。

複製で調べ、ハッシュ値で同一を示す原本そのまま保全複製これを分析する複製を作るハッシュ値ハッシュ値比べる一致 → 原本と複製が同一1ビットでも変わると値が変わる
原本はそのまま保全し、複製を分析する。両方のハッシュ値を比べて一致すれば、原本と複製が同一だと証明できる。
例題 1

インシデントを6タイプに分類する手順

あるコンピュータセンタでは,インシデントを六つのタイプに分類した。 Scan:プローブ,スキャン,その他の不審なアクセス Abuse:サーバプログラムの機能を悪用した不正中継 Forged:From:欄などを詐称した電子メールの配送 Intrusion:システムへの侵入 DoS:サービス運用妨害につながる攻撃 Other:その他 このとき,次の三つのインシデントに対するタイプの組合せのうち,適切なものはどれか。 インシデント 1:ワームの攻撃が試みられた形跡があるが,侵入されていない。 インシデント 2:ネットワークの輻輳による妨害を受けた。 インシデント 3:DoS 用の踏み台プログラムがシステムに設置されていた。
インシデント 1インシデント 2インシデント 3
アAbuseDoSIntrusion
イAbuseForgedDoS
ウScanDoSIntrusion
エScanForgedDoS

ア インシデント1: Abuse/インシデント2: DoS/インシデント3: Intrusion
イ インシデント1: Abuse/インシデント2: Forged/インシデント3: DoS
ウ インシデント1: Scan/インシデント2: DoS/インシデント3: Intrusion
エ インシデント1: Scan/インシデント2: Forged/インシデント3: DoS

出典:基本情報技術者試験 科目A免除 修了試験 20161211 実施分 問43

解き方と答えを見る
  1. 手順1:定義を「実際に起きた事実」で読み直す。Scan=探索・不審なアクセス、Intrusion=侵入された、DoS=サービス妨害を受けた、Forged=送信者を詐称したメール、Abuse=機能を悪用した不正中継。
  2. 手順2:インシデント1「ワームの攻撃が試みられた形跡があるが、侵入されていない」。侵入はしていないので Intrusion ではない。試みや探索の形跡なので Scan。
  3. 手順3:インシデント2「ネットワークの輻輳(混雑)による妨害を受けた」。サービスの運用を妨げられたので DoS。メールの詐称の話ではないので Forged ではない。
  4. 手順4:インシデント3「DoS用の踏み台プログラムが設置されていた」。プログラムを置かれたということは、すでにシステムに入り込まれている。目的はDoSでも、起きた事実は侵入なので Intrusion。
  5. 手順5:組合せが Scan/DoS/Intrusion になっている選択肢を選ぶ。

答え:ウ(Scan/DoS/Intrusion)。踏み台の設置は目的(DoS)ではなく、起きた事実(侵入)で分類する。

要点(試験直前に読む)

  • ポートスキャン=開いているポート(動いているサービス)を調べる。攻撃者なら事前調査、検査なら不要なサービスがないかの確認。
  • ペネトレーションテスト=実際に攻撃して侵入できるか試す。キーワードは「実際に侵入」。
  • ファジング=変なデータを大量に入力して脆弱性を検出する(修正はしない)。内部を見ないブラックボックステスト。
  • サイバーキルチェーン=攻撃者の視点で、攻撃を偵察から目的の実行までの段階に分けたもの。
  • インシデントの分類は起きた事実で決める。踏み台の設置は侵入(Intrusion)。
  • ディジタルフォレンジックス=法的な証拠性のための保全・収集・分析。ハッシュ値は原本と複製の同一性の証明に使う。

ひっかけ

  • ポートスキャンの段階を「権限取得」「不正実行」「後処理」にすり替える。侵入より前に行うので、必ず事前調査。
  • ポートスキャナの用途として、ログ解析・ID管理の確認・コンテンツの確認を並べる。ポートスキャナが見るのは稼働中のサービスだけ。
  • ペネトレーションテストの選択肢に、ソースコード検査・ハッシュ値での改ざん検知・通信の異常検知・レビュー・回帰テストを混ぜる。「実際に侵入を試みる」ものだけが正解。
  • ファジングを「脆弱性を自動修正できる」「ログを相関分析して検知(SIEM)」と書き換える。ファジングにできるのは検出だけ。
  • フォレンジックスでのハッシュ値の目的を「パスワードの保存」「データの復元」にすり替える。正解は原本と複製の同一性の証明。

用語(15)

ポートスキャン ぽーとすきゃん
サーバの各ポートに通信を送って応答を調べ、どのサービスが動いているかを把握する行為。
⚠ ペネトレーションテストは侵入まで試み、ポートスキャンは開いている窓口を調べるだけ。ログ解析やIDS(攻撃パターンとの照合)とも別物。
ポート ぽーと
1台のコンピュータの中で、通信相手のサービスを番号で区別するための窓口。
ペネトレーションテスト Penetration Test(侵入テスト)
脆弱性を探し、実際に攻撃して侵入できるかどうかを確かめる検査。
⚠ ソースコード検査・ウォークスルー・インスペクション・リグレッションテストは攻撃をしない。「実際に侵入」の有無で見分ける。
ファジング Fuzzing
問題を起こしそうな多様なデータを大量に入力し、挙動を監視して脆弱性を見つける手法。
⚠ 脆弱性を検出するだけで、自動修正はしない。FINパケットで稼働サービスを探すのはポートスキャン。
脆弱性 ぜいじゃくせい
攻撃に悪用されうる、ソフトウェアや設定の弱点。
ブラックボックステスト ぶらっくぼっくすてすと
内部構造を見ずに、入力と出力の振る舞いだけで確認するテスト。
⚠ 設計書レビュー・ソースコード検査・設定ファイル検査は、内部を見る検査。
ソースコード検査(静的解析) せいてきかいせき
プログラムを動かさずに、ソースコードを読んだりツールにかけたりして問題を探す検査。
⚠ ファジングやペネトレーションテストは、プログラムを実際に動かして調べる。
ウォークスルー/インスペクション Walkthrough / Inspection
成果物を人が集まって確認するレビュー手法(インスペクションは役割を決めた公式のレビュー)。
⚠ 攻撃を伴わないので、ペネトレーションテストの選択肢に出たら除外する。
リグレッションテスト Regression Test(回帰テスト)
修正や変更で、それまで正しく動いていた部分が壊れていないかを確かめるテスト。
⚠ セキュリティの侵入テストではない。
サイバーキルチェーン Cyber Kill Chain
攻撃者の視点で、攻撃を偵察から目的の実行までの段階に分けたモデル。
⚠ サプライチェーンリスク(委託先の影響)、ブロックチェーン(改ざん検知のデータ構造)、中間者攻撃と取り違えやすい。
インシデント Incident
情報セキュリティを脅かす事故や事件、またはその兆候。
DoS攻撃 Denial of Service(サービス運用妨害)
大量の通信などで相手のサービスを使えない状態にする攻撃。
⚠ 踏み台プログラムが設置された時点で侵入(Intrusion)。DoSは妨害を受けた事象に使う。
踏み台 ふみだい
攻撃者が乗っ取り、別の相手を攻撃する中継点として使うコンピュータ。
ディジタルフォレンジックス Digital Forensics
不正アクセスなどの犯罪で、法的な証拠性を保てるように、原因究明に必要なデータを保全・収集・分析すること。
⚠ メールフィルタリング、不正アクセスの防御、廃棄前のデータ上書き消去は別の対策。
ハッシュ値 はっしゅち
データから一方向に計算する固定長の値で、元のデータが少しでも変わると値が変わる。
⚠ フォレンジックスでの用途は原本と複製の同一性の証明。パスワードの保存や、改変されたデータの復元とは違う。

このレッスンの過去問

このレッスンで稽古する