【ネットワーク偵察編】Nmapが見つける扉と守り方|CTF思考フレームワーク #21
こんにちは、アンペンです!
ここから新シリーズ、ネットワーク・サーバ編に入ります。Web画面の裏側ではなく、サーバや通信機器そのものに目を向けていきます。
最初は、攻撃者がまず最初に行う「下見」、ネットワーク偵察(Nmap)を見ていきます。攻撃の入口になる『開いた扉』をどう見つけ、どう減らすかを学びましょう。

『ネットワーク偵察』って、具体的に何をしているの?

相手のサーバや機器を『一通りノックする』作業だよ。どのポートが開いていて、どんなサービスが動いているかを外から地図にするんだ。
ここからはガラッと景色が変わって、Webの画面の裏——サーバや通信機器そのものが舞台になります。その第一歩が『偵察』。攻撃者は、いきなり攻め込む前に、必ず相手を“下見”します。今日はその代表ツールNmapを通して、「外から自分のサーバがどう見えているか」を知り、見せる情報を減らす——という守りの基本を学びます。攻撃というより“防犯の第一歩”の回です。
ネットワーク偵察は被害そのものではなく、攻撃の前段階です。Nmapに代表されるツールで「開いているポート」「動いているサービスとバージョン」が外から地図化されるため、守る側は不要なポートを閉じ、見える情報を最小化することが基本になります。
この記事で分かること
- Nmapが「何を」見ているのか(ホスト・ポート・バージョン・OS)
- 主要なスキャン方式の違い(SYN・バージョン・スクリプト)
- 攻撃面を減らす守り方(閉鎖・フィルタ・最小化)
📖 はじめてのWebセキュリティ #21|ネットワーク偵察(Nmap)編
攻撃者がまず最初に作る『相手の地図』を題材に、見せない設計を学びます。 シリーズ一覧を見る →
⚠️ 大事なお約束
Nmap等の偵察ツールは、自分の所有環境・CTF・明示的に許可された対象のみで使ってください。他人のIPアドレスへのスキャンは、サービス停止や不正アクセス禁止法違反に該当する可能性があります。
Nmapが見ているもの(ホスト・ポート・バージョン・OS)
Nmapはネットワーク偵察の代表的なツールです。基本動作はシンプルで、「指定したIPアドレスに対して、ポートごとにパケットを送り、応答を見て状態を判定する」という流れです。
その積み重ねで、攻撃者は生きているホスト・開いているポート・動いているサービスとバージョン・推定されるOSといった情報を得ます。これが攻撃計画の地図になります。
ここで大事なのは、偵察そのものは“まだ何も壊していない”ということ。でも、この地図が攻撃の質を決めます。たとえば「古いバージョンのソフトが、このドアの奥で動いている」と分かれば、攻撃者はそのソフト専用の弱点をピンポイントで狙えます。逆に地図が真っ白なら、どこから手をつけていいか分からない。だから守る側にとっては、“地図に何を載せさせないか”が勝負どころになるわけです。
そもそも『ポート』とは何でしょう。ひとつのサーバを“たくさんのドアがついた建物”だと思ってください。Webサイト用のドア(80番・443番)、メール用のドア、リモート操作用のドア……と、用途ごとに番号つきのドアがあります。Nmapがやっているのは、その建物の前に立って、ドアを一つずつノックして回ること。「このドアは開いてる」「これは閉まってる」と、外から一覧表を作っていくんです。
図解:偵察前と偵察後で『見える情報』が変わる

偵察前は単なるIPアドレスでも、偵察後には「どのドアが開いているか」「中で何が動いているか」まで分かります。攻撃者はこの差を使って狙いを絞ります。

知らないビルにいきなり押し入る泥棒はいません。まずは外周を歩いて、ドアの数・どこに鍵がかかっているか・防犯カメラの位置などを確認します。Nmapは、これをネットワーク上で行うツールです。スキャン自体は『見るだけ』ですが、その情報が悪用されると次の攻撃につながります。
ここで覚える用語:ポートスキャン
相手のIPに対して、各ポート番号にパケットを送り、応答を見て『開いている/閉じている/フィルタされている』を判定する処理です。Nmapの中心機能で、TCPの SYN スキャンが最も一般的です。
ノックの結果は、ざっくり3種類に分かれます。『開いている(サービスが応答する)』『閉じている(誰もいないと即答される)』『フィルタされている(ファイアウォールに遮られ、返事すらない)』。攻撃者がいちばん喜ぶのは、当然“開いている”ドア。逆に守る側は、不要なドアを“閉じる”か、いっそ“返事すらしない(フィルタ)”状態にして、ノックの手応えそのものを消していきます。
Nmapの主要スキャン方式
Nmapにはたくさんのスキャン方式があって、コマンドのオプションも豊富です。でも、ぜんぶ暗記する必要はありません。大事なのは『何のために、どこまで深く見るか』という目的のほう。ざっくり“生きてる相手を探す→開いてるドアを探す→中で何が動いてるか調べる→弱点まで確認する”と、だんだん深掘りしていく流れだけ押さえておけば十分です。
よく使われる4種類

- ホスト発見(
-sn):ICMPやARPで『生きているIP』だけを先に絞り込む - SYNスキャン(
-sS):TCPの接続完了前に切ることで素早く・比較的静かにポートの開閉を判定 - バージョン検出(
-sV):応答のバナーやプロトコル挙動から、サービスとバージョンを推定 - スクリプトスキャン(
-sC/--script):NSEスクリプトで脆弱性確認や設定不備を一気にチェック
これらに加えて、UDPスキャン・OS推定(-O)・トレースルート(--traceroute)などもあり、攻撃者は目的に応じて組み合わせます。
守る側として特に意識したいのが、バージョン検出(-sV)です。攻撃者にとって「どのソフトの、どのバージョンか」は宝の情報。なぜなら、公開されている脆弱性情報(CVE)と照らし合わせれば、「このバージョンなら、この弱点が刺さる」とすぐ分かるからです。つまり、ドアを開けておくだけでなく“ドアにバージョンの貼り紙”をしているようなもの。この貼り紙(バナー情報)を減らすだけでも、攻撃者の手間はぐっと増えます。
この回の練習は、ぜひ手を動かしてほしいところ。といっても、向ける先は“自分の持ち物”だけです。自分のIP、自分で建てたVM、CTFの指定環境——ここなら堂々とスキャンできます。逆に、他人のIPや会社のサーバに勝手にNmapをかけるのは絶対にNG。たとえ“見るだけ”でも、不正アクセス禁止法に触れたり、相手のサービスを止めたりしかねません。「自分を外から見てみる」。それが、この練習のすべてです。
CTFでやってみよう:自分のラボをスキャンする
自分の検証環境にNmapをかけ、見える情報を地図化しよう
目的は他人を攻撃することではなく、「自分の環境から、外向きに何が見えているか」を理解することです。
- CTFや自分の検証環境(ローカルのVM等)を起動し、IPアドレスを確認する
- Nmapで
-sS -sVをかけ、開いているポート・サービス・バージョンを記録する -sCでNSEスクリプトの結果を見て、デフォルト情報がどれだけ取れるか確認する- 不要なポートがあれば、ファイアウォール等で閉じてから再スキャンし、地図がどう減るかを比べる
- 結果を地図化し、『どのポートが本当に必要か』を棚卸しする
守りの方針を考える前に、ひとつ大事な前提を共有しておきましょう。

そもそも、スキャンされること自体をブロックすればいいんじゃないの?

気持ちは分かるけど、それは現実には難しいんだ。インターネットに公開している以上、世界中から無数のスキャンが毎日飛んでくる。全部を完全に止めるのは無理だと思ったほうがいい。だから発想を変えるんだ。『スキャンされても、見えるものが少なければ困らない』。防ぐのは“スキャン”じゃなく“見える情報”のほう。不要なドアを閉じて、貼り紙をはがして、地図を真っ白に近づける——これが現実的でいちばん効く守りだよ。
守る側なら、「見える情報を減らす」が基本
偵察を完全に防ぐことは難しいですが、「見える情報そのものを最小化する」ことで攻撃計画を立てにくくできます。
- 不要なサービスは停止し、不要なポートはファイアウォールで閉じる
- 公開が必要なポートも、必要なIP範囲だけに絞る(セキュリティグループ・NACL)
- バナー情報(バージョン文字列など)を最小化、もしくは隠す
- 異常なスキャンは検知・速度制限(IDS/IPS、CloudサービスのWAF)で抑える
- 定期的に外部スキャン(自分自身に対する)を実施し、想定外の公開がないか確認する
- 公開する場合でも、最新パッチ適用と多層防御(認証・MFA・監視)を組み合わせる

『見えるものを減らす』っていう守り方なんだね。

そう。攻撃者の地図が薄くなるほど、選択肢が減って攻撃しにくくなるんだ。
ここまでをひと言で言うと、偵察対策は『地図を薄くする』です。攻撃者の下見をゼロにはできなくても、彼らが手に入れる地図を“ほとんど白紙”にすることはできます。使っていないドアは閉める、開けるドアも相手を絞る、バージョンは隠す。一枚一枚“情報をはがす”地道な作業が、そのまま攻撃のしにくさにつながります。
まとめ:偵察対策は「地図を薄くする」
- Nmapはホスト・ポート・バージョン・OSを地図化するツール
- 守りは不要ポートの閉鎖・公開範囲の絞り込み・バナー最小化
- 自分自身を定期スキャンして「想定外の公開」を見つける
- 偵察自体を防ぐより、見える情報を減らすことが基本姿勢
今日の持ち帰りは『まず、自分を外から見てみる』です。守りの第一歩は、攻撃者と同じ目線で自分のサーバをスキャンし、“見えすぎているもの”に気づくこと。意外と「いつの間にか開いていたドア」が見つかるものです。定期的に自分を偵察して、地図を薄く保つ——これがネットワーク防御のスタート地点になります。
次回は、ネットワークの『電話帳』にあたるDNSを狙うDNS攻撃を扱います。キャッシュポイズニングやサブドメイン乗っ取りの仕組みを見ていきましょう。
