【ポートスキャン編】開いてる扉を数える偵察の作法|CTF思考フレームワーク R02
こんにちは、アンペンです!
偵察ルートR02はポートスキャン。R01で全サブドメインを掴んだ後、次は『各ホストでどのポートが開いていて、何のサービスが動いているか』を素早く・静かに数える作法を扱います。攻撃面の入口=ポート、それを正確に把握できないとexploitは外します。
nmapが定番ですが、現代はmasscan(数百万pps)やrustscan/naabuの高速スキャナと組み合わせるのが主流。インターネット全体のスキャンもZMapを使えば45分で完了する時代です。
ポートというのは、いわば建物に並んだ“出入口”です。22番は管理人用の通用口(SSH)、80番と443番は正面玄関(Web)、3389番はリモート操作の窓口(RDP)…という具合に、番号ごとに役割が決まっています。攻撃者がまずやるのは、この“どの扉が開いているか”を数えること。開いている扉が分かれば、そこから先の攻め方が絞れるからです。今日は、その扉を『速く・正確に・できれば静かに』数える作法を見ていきましょう。

nmap以外にもポートスキャンツールあるの?

大量IPならmasscan(数百万pps)、現代ではnaabu/rustscanも人気。検知回避には-Pn -T2 + フラグメント+デコイが定石。nmap(精度)+masscan(速度)の組み合わせが現代の王道。
ポートスキャンは(1)masscan/rustscan/naabu で広域・高速一次掃き、(2)nmap -sV -sC で詳細確認(サービス・バージョン特定+デフォルトNSE)、(3)NSEスクリプトやMetasploit補助モジュールで脆弱性特定の3段階。速度と精度はトレードオフのため役割分担します。検知回避には-T0/-T1(低速)+-f(フラグメント)+-D(デコイ)。守る側は『不要ポート遮断+管理ポートはVPN/Bastion経由+IDS/IPS(Suricata)で検知+Shodan/Censysで自社可視化』で攻撃面を縮小・監視します。
この記事で分かること
- ポートスキャンの3段階(高速→詳細→特定)とツール役割分担
- SYN Scan(-sS)とConnect Scan(-sT)の違い
- masscan/rustscan/naabu/nmapの使い分け
- 検知されにくいスキャン技法(タイミング・フラグメント・デコイ)
- 守り側のポート最小化・監視・自社可視化
📖 はじめてのWebセキュリティ R02|ポートスキャン編
開いてる扉を数える偵察の作法。 シリーズ一覧を見る →
⚠️ 大事なお約束
他者ネットワークへのスキャンは違法(日本では不正アクセス禁止法・電気通信事業法違反になりえます)。CTFや自宅NW・許可済み対象(バウンティプログラム明記)のみで。
3段階のスキャン戦略:速度と精度の役割分担
- ①広域・高速:
masscan(数百万pps可能、全65535ポートを数分)、rustscan(Rust製、masscan後にnmapを自動起動)、naabu(ProjectDiscovery製、シンプル高速)。役割は『開いてるかどうか』だけを高速確認 - ②詳細:
nmap -sV -sC -p <openports>でサービス特定・バージョン特定・デフォルトNSE実行。『何のソフトのどのバージョンか』を確定 - ③特定:NSEスクリプト(
--script vuln)、nucleiテンプレート、Metasploit補助モジュールで既知CVE/脆弱性の存在確認・PoC実行
なぜわざわざ3段階に分けるのか。それは“速さ”と“詳しさ”が両立しないからです。全ポートをいきなり精密スキャンすれば、時間もログも膨大になり、すぐ気づかれてしまう。だから、まず軽く全体を叩いて『開いてる扉』だけを拾い(高速)、その扉に絞って中を覗き(詳細)、気になる部屋だけ精査する(特定)。料理の“下ゆで→本調理→味付け”と同じで、順番に絞り込むのが、結局いちばん早いんです。
図解:スキャンの3段階フロー
1段階目で広く速く、2段階目で詳しく、3段階目で精密に。役割が明確になると無駄が減り、検知リスクも最小化されます。『開いてもいないポートに対して精密スキャンを掛ける』のは時間とログの無駄なので、必ず段階を踏みます。

巨大ビル(/16のネットワーク = 65536台)を1人で隈なく見るのは無理。まず『どのフロアの何号室のドアが開いているか』を超高速で巡回(masscan)、次に『開いてた部屋の中で何をしているか』を確認(nmap -sV)、最後に『気になる部屋の家具配置(脆弱性)を細かく観察』(NSE / nuclei)。役割分担で効率化し、警備員(IDS)に気付かれにくくなります。
ここで覚える用語:SYN Scan(-sS) vs Connect Scan(-sT) / TCPフラグスキャン
SYN ScanはTCP 3-way handshakeの途中(SYN → SYN/ACKを受けたらすぐRSTを返して終了)で接続を確立しない『ステルス』スキャン。アプリケーションログには残りません。一方Connect ScanはOSのconnect()でフル接続するのでアプリケーションログに残る。検知回避したいなら-sS(root権限必須)。さらに高度なFIN/Xmas/Nullスキャン(RFCの曖昧さを突き、ステートフルでないFWを越える)も状況によって使い分けます。UDPスキャン(-sU)は応答が任意で遅いですが、SNMP/NTP/DNS等は必ずチェック対象。
ここから“検知されにくくする技法”に触れますが、その前に一線を引いておきます。これらは『許可されたペンテストやCTFで、相手に過剰な負荷をかけずに調べる』ための作法であって、無断で他人のネットワークに使えば、日本では不正アクセス禁止法等に触れる立派な犯罪です。技を知ることと、振るっていい場所をわきまえること——この両方がセットで“作法”なんです。
検知されにくいスキャン技法
- -T0/-T1/-T2:超低速(各プローブ間隔5分/15秒/0.4秒)でIDSの『連続スキャン』検知を回避。実用は
-T2がギリギリ - -f / –mtu:パケットフラグメント化、シグネチャベースIDS回避
- –decoy / -D RND:10:偽IPで攻撃元を分散。10個のランダム偽IPと自IPを混在させる
- –data-length 25:パケット長を変えてOS指紋・スキャナ指紋を撹乱
- –source-port 53:応答パケットの送信元を53(DNS)/80(HTTP)にしてFW通過率を上げる
- –randomize-hosts:ターゲットIPの順序をランダム化、連続性を低減
- 分散スキャン:VPS/プロキシ複数経由で並列スキャン(本格的なRedTeamで使用)
これらの“静かに調べる”技は、裏返せば守る側の教科書でもあります。攻撃者が低速・分散・偽装で忍び込もうとするなら、守る側は『やけにゆっくりした連続アクセス』や『妙な送信元ポート』といった“静けさの不自然さ”を見張ればいい。完全に隠れるスキャンは存在しないので、防御側は『何かがおかしい』という兆候を拾う方向で勝負します。攻めの手口を知ることが、そのまま検知ルールの設計図になるわけです。


CTFでやってみよう:自宅で3段階体験
自分のVM/ホームLABで3段スキャン
目的は『各ツールの役割分担と検知ログがどう残るか』を実機で体感することです。同時にIDS側からはどう見えるかも観察すると、攻防両面の理解が深まります。
- vulnerable-by-design VM(DVWA / Metasploitable3 / VulnHub VM)を用意
rustscan -a target -- -sVで全ポート高速スキャン+nmap詳細(自動連携)nmap -sV -sC -p <openports> targetで詳細確認- 気になるサービスに
nmap --script vuln -p <port> targetでNSE vuln scripts nuclei -u http://target -t cves/で既知CVEのテンプレート全件チェック- 同じLABでSuricata / OSSECを動かし、スキャンログがどう残るか観察
- 検知回避オプション(
-T1 -f -D RND:10)を有効化してログ差を比較 - 結果を
nmap -oA scan_resultでXML/Grepable/Normal形式で保存、レポート化
では守る側の具体策へ。結論はとてもシンプルで、『開いている扉を、必要な数まで減らす』。攻撃者は開いた扉しか狙えないので、扉そのものが少なければ、攻撃面は自動的に小さくなります。次のリストは、その“扉を減らして・見張って・自分で確認する”を仕組みにしたものです。
守る側:ポート最小化と監視・自社可視化
- SG/FWで必要ポートのみ開放、デフォルト拒否のホワイトリスト方式
- 管理ポート(22/3389/5985/5986)は送信元IP制限かVPN/Bastion経由(直接インターネット公開禁止)
- IDS/IPS(Suricata/Snort/Zeek)で SYNスキャン/連続接続/異常UA を検知。SOCにアラート
- Shodan/Censysに自社IP・自社ドメインで定期検索し、意図しない公開を発見
- CIS Benchmark / DISA STIG準拠でOS既定ポート最小化(不要サービス停止)
- クラウドではSecurity Group/NSG/FW Ruleを IaC(Terraform/CloudFormation)で管理、ドリフト検知
- 大規模組織はAttack Surface Management製品(Microsoft Defender EASM / Censys ASM / Tenable Surface)で継続的に外部可視化
- 四半期に1回、外部委託のExternal Network Pentestでスキャン耐性を点検

『何のために開いてるか分からないポート』は閉じればOKだね。

次はR03、Webサーバ指紋編。技術スタックを当てて攻撃面を絞り込むよ。
まとめ:『3段階+検知回避+自社可視化』
- スキャンは高速→詳細→特定の3段、ツール役割分担
- masscan(速度)+nmap(精度)が王道、rustscan/naabuも併用
- 検知回避:SYN Scan + 低速 + フラグメント + デコイ
- 守りは最小ポート+VPN/Bastion+IDS+Shodan自社監視+ASM
今日の持ち帰りは『開いている扉は、必要な分だけ』。攻撃者はまずポートを数えるところから始める——だから守る側の最初の一手も、自社のポートを数えることです。攻撃者と同じ目線でShodanに自社を打ち込んでみる。そこで『え、これ開けっ放しだったの?』と気づけたら、その瞬間に攻撃面が1つ閉じます。
次はR03、Webサーバ指紋編。HTTPヘッダ・JSライブラリ・404ページから技術スタックを当てる作法を扱います。
