【ポートスキャン編】開いてる扉を数える偵察の作法|CTF思考フレームワーク R02

ポートスキャンって、開いてる扉を数えるだけ?📡

それだけでも『どんなサービスが動いているか』『どのバージョンか』『OSは何か』が分かる、攻撃の最初の偵察。Nmap・Masscan・RustScan ――速度と網羅性のバランスで、現代の偵察ツールは進化しています。
ポートスキャンは、攻撃者の最初の偵察ステップ。Nmap がデファクト標準で、Masscan・RustScan・ZMap など高速ツールも普及。SYN scan、Full Connect scan、UDP scan、サービスバージョン検出、OS 検出――目的別に複数のスキャンを組み合わせ、攻撃面を絞り込みます。
広告・PRを含みます。この記事にはアフィリエイトリンクが含まれます。掲載内容は編集方針に基づいて作成していますが、価格・在庫・キャンペーン内容はリンク先で最新情報を確認してください。

ポート開いてるだけで、いろんな情報が漏れるんだね…
この記事は、CTF思考フレームワーク Recon編 R02。ポートスキャンの基本(Nmap・Masscan・RustScan の使い分け、スキャン種別、検知回避)と、自社のポート公開状況の点検方法を整理します。
ポートスキャンは「サーバが外向きにどんな扉を開けてるか」を数える基礎工程。CTFでも実務でも、Nmapが帰ってくるのを待つ間にコーヒーを淹れる…そんな時間の積み重ねで攻撃面が見えてきます🚪
開いているポート=攻撃者の出発点。閉じている方が圧倒的に多いのに、たまにいる「うっかり開いてる」が致命傷になります。
先に意味を押さえておくと読みやすい用語です。
- CTF: セキュリティの練習問題を解く競技。必ず許可された環境だけで試します。
- ポートスキャン: サーバーで開いている入口を調べる作業です。許可された範囲だけで行います。
- 認証: 本人かどうかを確認する仕組み。パスワード、SMS、アプリ承認などがあります。
難易度:★☆☆(初級) / この枝ルートの記事は、必要な回だけ選んで読めます。
👀 観察フェーズ:まず何を見る?
いきなり全ポート全速力でスキャンするのは下策。「目的=何を知りたいか」を先に決めると効率が桁違いです。
🤔 仮説フェーズ:攻撃者は何を考える?
攻撃者の頭にあるのは「Well-knownポート(22, 80, 443)の裏で、本来は外に出すべきでないサービスが必ず1つは生きている」という経験則です。クラウド移行時の暫定設定で残った 6379(Redis)、9200(Elasticsearch)、5601(Kibana)、8080(Jenkins)あたりは典型例。さらにUDPの 161(SNMP)が public コミュニティで開いていれば、コミュニティ名 public だけで機器の構成情報を吸い出せます。攻撃者はまずTCPトップ100を素早く確認し、次に「サービスとバージョンが分かれば既知CVEに直結する」ポートだけを精密にバージョン検出する、というメリハリのある作戦を立てます。
スキャンは「件数を増やす」より「意味のある情報を素早く取る」のが上手い人の動き方です。
🔬 検証フェーズ:どうやって確かめる?
検証はステージを分けて進めます。第1段は masscan か RustScan で広域に開放ポートを掃き出し、第2段で Nmap の -sV -sC(バージョン検出+NSEデフォルトスクリプト)を対象ポートだけにかけて精密化、第3段は testssl.sh で TLS、nmap –script snmp-* で SNMP、といった具合にサービス別の深掘りに進みます。Shodan や Censys の受動ソースも併用すれば、自分でパケットを撃つ前に「相手が外からどう見えているか」を確認可能。検知回避を意識する場合は -T2 や –max-rate でレートを絞り、IDSのしきい値以下に収める判断もあります(もちろん許可された対象に限ります)。
⚔️ 攻撃フェーズ:実際の手口
実戦シナリオでよくあるのは、ポートスキャン結果から認証なしの Redis 6379 を見つけ、CONFIG SET dir で SSH の authorized_keys を書き込んでサーバに乗り込むパターン。あるいは Jenkins 8080 の /script コンソールが匿名アクセス可能で Groovy 経由のRCEに繋がる、Elasticsearch 9200 が公開されていて全インデックスを吸い出される、というケースも定番です。攻撃者はスキャン結果を Nuclei のテンプレートと照合し、見つけたサービスとバージョンに紐づく既知CVEを一気に検証していく――この「ポート→サービス→CVE」の流れを学習者として理解しておくと、防御側の優先順位付けが見えやすくなります。
CTF{open_ports_are_just_the_appetizer}
ポートスキャンはあくまで入り口探し。本番は「見つけたサービスをどう深掘りするか」です。
🛡️ 防御フェーズ:どう守る?
守る側のスタートラインは「外に出ているポートを正確に把握する」ことです。クラウドであればセキュリティグループ・NetworkACL を IaC で管理し、PRレビューで 0.0.0.0/0 への開放を機械的に検知する仕組みを入れます。Prometheus・Grafana・Jenkins といった運用ツールは VPN や IP allowlist の裏に置き、必要ならクラウドネイティブの Identity-Aware Proxy で認証を強制。Shodan・Censys で自社IPレンジを定期検索する「外から見た自分」ビューも、四半期に一度は回したい習慣です。バナー隠しは応急処置に過ぎないので、根本は古いプロトコル無効化と最新パッチの徹底に置きます。
🧪 自分で検証ラボを作る
Reconコマンドを安全に試すには、自分専用の検証ラボが一番。🏗️ ConoHa VPSなら月額数百円からLinux環境を立てられ、nmapやgobusterなどのツールを「自分のサーバ」に打ち込んで安全に試せます。
※ 上記は他社サービスへのリンクです。購入は各自でご判断ください。
⚠️ よくある落とし穴
よくあるミス。
- 「IDSで弾けるから安心」と思って外部からのポート可視性を放置。
- クラウド移行時、オンプレ時代のFWルールをコピペで「とりあえず開放」に。
- UDPポートを「ほとんど使わないから」と監査対象から外す。
- バナー隠しを「Server: nginx」だけ消して、エラーページや404で素のバージョン情報を出す。
- 社内監視ツール(Prometheus、Jenkins、Grafana等)を本番ネットワークに公開のまま放置。
- TLS設定で古いプロトコル・cipherを残し、組織の「セキュリティ姿勢の悪さ」を晒す。
🧰 ツール早見表
使う道具。
| ツール | 用途 | ひと言 |
|---|---|---|
| Nmap | 総合スキャナ | 何はなくともコレ、NSEも強力 |
| masscan | 高速広域スキャン | インターネット規模に対応 |
| Shodan / Censys | 受動的IP検索 | スキャンせず情報取得 |
| testssl.sh / sslyze | TLS診断 | HTTPS品質を一発診断 |
| Naabu | 高速ポート列挙 | ProjectDiscovery製、CI向き |
🎓 本気で学びたい人へ
Recon・OSINTを絵空事だけで終わらせず、セキュリティエンジニアをキャリアとして目指したい方に。🎓 ササエルは現場で使えるスキルを体系的に学べるスクールです。
📚 もっと深く学びたい人へ
体系的に攻撃と防御の両面を学びたいなら『ホワイトハッカー入門 第2版』が分かりやすい入口です📚
📚 次に読みたい
- 【Webサーバ指紋編】技術スタックを当てて攻撃面を絞り込む|CTF思考フレームワーク R03
- 【ディレクトリ列挙編】リンクされてない隠しエンドポイントを掘る|CTF思考フレームワーク R04
- 【ログイン画面の攻撃者目線】何を狙う?どう守る?|CTF思考フレームワーク #01
✍️ 学んだことを発信する
セキュリティブログを自分で始めたい方へ。🌐 ConoHa WINGなら初期費用無料でWordPressを起こせ、学んだことをアウトプットしていけます。



