はじめに
『Network Security Assessment, 3rd Edition』(Chris McNab 著)
ネットワークセキュリティの評価・診断をテーマに、偵察からエクスプロイトまでの一連のワークフローを、ツールと手順の両面から体系的にまとめた一冊です。セキュリティエンジニアはもちろん、「自分が守る側のシステムが攻撃者にどう見えているか」を知りたいエンジニアにとっても有益な内容でした。
本書の概要
- 著者:Chris McNab(セキュリティコンサルタント・ペネトレーションテスター)
- 出版社:O'Reilly Media(第3版)
- 構成:全15章 + 付録3本 + 用語集・索引
- 難易度:中〜上級(TCP/IPの基礎知識と、Linux/Windowsの基本操作が前提)
第1章:ネットワークセキュリティ評価の概要
本書の土台となる章です。まず前提として、現代のインターネットが世界経済の基幹インフラであるという認識から出発しています。Stuxnet、Saudi Aramco、Sony Picturesへの攻撃など、実際のインシデントを引きながら、攻撃の経済的インパクトを示します。
本章で重要なのは「防御側のジレンマ」という概念です。攻撃者はシステムの欠陥を1つ突けばよい一方で、防御側はすべての整合性を保つ必要があります。この非対称性が、プロアクティブな評価アプローチの必要性につながります。
評価手法は大きく以下の2軸で整理されています。
- 静的分析:設計レビュー・構成レビュー・静的コード解析
- 動的テスト:ネットワークインフラのテスト・Webアプリのテスト・Webサービステスト・ソーシャルエンジニアリング
また、「露出したロジック(Exposed Logic)」という考え方が繰り返し登場します。公開されたネットワークサービスやクライアントが処理する入力パス=攻撃者が操作できるロジックであり、この攻撃対象領域(Attack Surface)の把握が評価の起点になります。
第2章:評価ワークフローとツール
ペネトレーションテストの方法論を4ステップで整理しています。
- 偵察:WHOIS・DNS・Webなどオープンソースからターゲット環境をマッピング
- 脆弱性スキャン:Nmap・Nessus・Nexpose・QualysGuard等でアタックサーフェスを特定
- 脆弱性調査:CVE・Exploit DB・Full Disclosure等の公開情報と、プライベートフィードを組み合わせた深掘り
- 脆弱性の悪用:Metasploit・Core Impact・CANVAS等のフレームワークを用いた実証
このプロセスは直線的ではなく反復的です。悪用で得た情報(認証情報やIPアドレスブロックなど)が偵察・スキャンにフィードバックされる構造になっています。
テスト環境としては Kali Linux(VMware上での実行推奨)と、Rapid7の Metasploitable 2/3 を組み合わせることが推奨されています。実際に手を動かして学ぶための土台作りについても実用的な記述があります。
また、著者が10社のテストベンダーを評価した実例が紹介されており、2社はTCPの65,536ポートを全スキャンできず、5社はMySQLのrootパスワード「password」を発見できなかったとの結果が示されています。方法論の欠如がどれだけ評価の質を下げるか、という問題意識が伝わります。
第3章:脆弱性と敵対者
本書で最もボリュームのある章であり、かつ最も読み応えがあります。
ソフトウェアセキュリティエラーの7分類
Gary McGrawらによる分類(7 Pernicious Kingdoms)に基づき、以下の観点を整理しています。
- 入力検証と表現(バッファオーバーフロー・XSS・XXEなど)
- APIの不正使用
- セキュリティ機能の欠陥(乱数生成・最小権限など)
- 時間と状態(競合状態・セッション固定など)
- エラー処理の欠陥
- コード品質
- カプセル化の欠陥
さらに第8の要素として「環境」(インタープリタやフレームワーク自体の欠陥)が挙げられています。
ランタイムメモリレイアウトとバッファオーバーフロー
C/C++ベースのソフトウェアに対する攻撃を理解するために、スタック・ヒープ・データセグメントの構造、プロセッサレジスタ(eip・ebp・esp)の役割が丁寧に解説されています。
保存された命令ポインタ(EIP)・関数ポインタ・GOTエントリ・SEHポインタといった、実際の悪用で標的となるメモリ構造も具体的に説明されています。
DEP・ASLR等の緩和機能とそのバイパス
- DEP(Data Execution Prevention):書き込み可能領域からの命令実行をブロック。バイパスにはROPガジェットを使用
- ASLR(Address Space Layout Randomization):ライブラリのベースアドレスをランダム化。情報漏洩やブルートフォースによるバイパスが存在
- スタックカナリア:関数リターン前にカナリア値を検証。fork()で子プロセスがカナリアを再生成しないため、Nginx/Apacheでは繰り返し試行でバイパス可能なケースがある
Heartbleed(CVE-2014-0160) はヒープオーバーリードの実例として詳細に解説されており、最大64KBのヒープ内容がリクエストごとに漏洩し、RSA秘密鍵の抽出につながることが示されています。
暗号の弱点
衝突攻撃・暗号文改変・リプレイ攻撃・サイドチャネル(タイミングオラクル・エラーオラクル)など、暗号プリミティブの実装誤用による問題も網羅されています。
第4〜6章:ネットワーク探索・スキャン
インターネットネットワーク(第4章)とローカルネットワーク(第5章)の探索手法、そしてIPスキャン(第6章)が扱われています。
DNS・WHOIS・BGP経路情報などのオープンソース情報収集に始まり、Nmapを用いたポートスキャン・サービスフィンガープリント・OS検出の実践的な使い方が解説されています。ローカルネットワーク環境では、ARPキャッシュポイズニングやVLANホッピングなどOSIレイヤ2の攻撃手法も扱われています。
第7〜10章:サービス別の評価
各章がサービスカテゴリに特化しており、実用的なチェックリストとして機能します。
| 章 | 対象サービス |
|---|---|
| 第7章 | 共通ネットワークサービス(FTP・SSH・SNMP等) |
| 第8章 | Microsoftサービス(SMB・RPC・Active Directory等) |
| 第9章 | メールサービス(SMTP・IMAP・フィッシング手法) |
| 第10章 | VPNサービス(IPsec・SSL VPN等) |
第9章のフィッシング演習の記述が印象的でした。偽のSSL VPNエンドポイントに誘導するメールを200人に送信したところ、2時間以内に13人がActive Directoryのユーザー名・パスワード・2FAトークンを入力したとのことです。技術的な堅牢性だけでは防げない攻撃の現実を示しています。
第11〜15章:TLS・Web・データストアの評価
TLS(第11章)では、証明書の検証・暗号スイートの選定・各種TLS攻撃(BEAST・POODLE等)が扱われています。付録Cに「安全でないTLS暗号スイート」の一覧も収録されており、実査に役立ちます。
Webアプリケーション関連(第12〜14章)では、アーキテクチャの理解から始まり、サーバーソフトウェア(Apache・Nginx等)やフレームワーク(Rails・Node.js等)の評価手法が整理されています。OWASP Top 10の各項目に対応するテスト手法も紹介されています。
第15章のデータストア評価では、MySQLやOracle DatabaseなどのRDBMS、MongoDBなどのNoSQLに対するアクセス制御の欠陥・認証バイパス・インジェクション攻撃が解説されています。
全体的な所感
良かった点
- 体系性が高い:偵察→スキャン→調査→悪用という評価のライフサイクルが一貫して流れており、各章がその枠組みの中に位置づけられている
- 実例が豊富:著者自身のコンサルタント経験から引いた事例が多く、「実務でどうなるか」のリアリティがある
- 付録が実用的:ポート一覧・脆弱性情報の出典・安全でない暗号スイート一覧は、日常業務のリファレンスとして使える
注意点
- 発行が2016年:TLSの最新動向(TLS 1.3・QUIC等)や、クラウドネイティブ・コンテナ環境の評価は本書のスコープ外です。時代的な背景を踏まえて読む必要があります
- Webアプリの深掘りは別書籍に委ねている:本書はあくまでネットワークインフラ寄りの評価に特化しており、Webアプリの詳細は『The Web Application Hacker's Handbook』等を参照するよう明記されています
総評
セキュリティ評価・診断に関わる実務者に向けた、体系的かつ実践的な一冊です。攻撃手法の理解をベースに防御設計を考えたいエンジニアにとっても、自分のシステムが何を評価されているのかを知るための良い教材になります。