ポートスキャンとは?ハッカーがネットワークの隙間を見つける仕組み
夜中に自宅で静かに過ごしているとき、外の通りから「ガチャ、ガチャ」と、誰かが一軒一軒のドアノブを回して鍵がかかっていないか確かめる音が聞こえてきたらどうしますか?
インターネットの世界において、これとまったく同じ行為を「ポートスキャン(Port Scanning)」と呼びます。これは、サイバー攻撃者が本格的な攻撃を仕掛ける前に行う極めて基本的な調査活動(偵察)であり、同時にネットワーク管理者が自社のシステムを守るための重要な診断手段でもあります。インターネットに接続されたすべてのデバイスには、数万もの仮想的な「入り口」が存在します。
これらの入り口がどのように探索されるのか、そのメカニズムを知ることがセキュリティ対策の第一歩です。
ポートとは何か?マンションの部屋番号に例える
お使いのコンピューターやスマートフォンがインターネットに接続されると、IPアドレスが割り当てられます。これは、巨大なオフィスビルやマンションの「住所」のようなものです。しかし、配達員(データパケット)がその住所に到着しただけでは、どの部屋(アプリケーション)に荷物を届ければいいのか分かりません。
そこで登場するのが「ポート(Port、接続ポート)」です。
1981年9月に公開されたインターネットの基本設計書(RFC 793)などで定義されている通り、1つのIPアドレスには 0 から 65,535 までの合計 65,536 個のポート番号が用意されています。これらは主に以下のように分類されます。
- ウェルノウンポート(0 ~ 1023):主要なインターネットサービス用に予約されています。例えば、Webブラウジング(HTTP)はポート 80、暗号化されたWeb通信(HTTPS)はポート 443、遠隔操作用のセキュアシェル(SSH)はポート 22 を使用します。
- 登録済みポート(1024 ~ 49151):特定のソフトウェアやデータベース(例:MySQLは 3306 など)が使用するために登録されています。
- 動的・プライベートポート(49152 ~ 65535):Webブラウザなどが外部と通信する際、一時的な帰り道としてOSがランダムに割り当てるポートです。
ポートスキャンとは、ターゲットのIPアドレスに向けてこれらのポート番号にテスト用のパケットを送信し、返ってくる応答を分析する行為のことです。
ポートスキャンの仕組み:静かなるノック
最も一般的に使われるスキャン手法は、TCP/IPプロトコル の接続プロセスを応用したものです。通常の通信では、2台のコンピューター間で「3ウェイ・ハンドシェイク(3-Way Handshake)」と呼ばれる接続確立の手順を踏みます。
しかし、ポートスキャンでは、接続を最後まで完了させないのが一般的です。接続を完了させると、対象のシステムに接続ログ(履歴)が残ってしまうためです。その代表例が、**SYNスキャン(ハーフオープンスキャン)**と呼ばれる手法です。
上の図に示すように、スキャナーはターゲットの特定のポートに対して接続要求を意味する「SYNパケット」を送信します。もしそのポートが開いていれば、ターゲットは接続許可を意味する「SYN-ACKパケット」を返します。この時点でスキャナーは「ポートが開いている」と判断し、最後の「ACKパケット」を送って接続を完了させる代わりに、「RST(リセット)パケット」を送り、通信を強制終了させます。
もしポートが閉じている場合、ターゲットは最初から「RSTパケット」を返し、そこには誰もいないことをスキャナーに伝えます。
攻撃者は開いたポートから何を知るのか?
ポートが開いていることを知るだけでは、攻撃者にとって大した収穫ではないと思うかもしれません。しかし、熟練したハッカーにとって、開いたポートはシステムの脆弱な箇所を示す詳細な地図になります。
1997年9月1日、セキュリティ研究者の Gordon Lyon(筆名 Fyodor)は、ネットワーク探索ツール「Nmap(エヌマップ)」をハッカーマガジン『Phrack』第51号で発表しました。現在でもNmapは世界中の管理者やハッカーに愛用されています。こうしたツールを使うことで、ポートが開いているかどうかだけでなく、その奥で動いている「OSのバージョン」や「サービスの種類(バナー)」まで特定できます。
例えば、ポート 22 が開いているのを見つけたスキャナーは、さらに特定のデータを送信して応答を促します。すると、以下のようなシステム情報(バナー)が返ってくることがあります。
SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5
この1行から、攻撃者は以下の貴重な情報を得ます。
- このサーバーは Linux(Ubuntu)で動作している。
- 使用している OpenSSH のバージョンは 8.2p1 である。
- このバージョンに未修正の脆弱性(バグ)がないか、公開されているデータベース(CVEなど)で即座に検索できる。
もしそのバージョンに古い脆弱性が残っていれば、攻撃者はピンポイントで攻撃を仕掛けることができます。
自宅やオフィスの「隙」を調べる方法
セキュリティ対策の基本は、自分自身がどのようなリスクを抱えているかを知ることです。特別な専門知識がなくても、安全に自己診断(セルフスキャン)を行うことができます。
1. Webベースの簡易外部スキャン
ルーターが外部インターネットに対してどのように見えているかを調べるには、Gibson Research Corporationが提供する ShieldsUP! などの無料Webサービスを利用するのが簡単です。外部のサーバーからあなたのパブリックIPに対してテストパケットを送信し、主要なポートが露出しているかどうかを診断してくれます。
2. Nmapを使ったローカルスキャン
自宅内のWi-Fiに接続されているスマート家電、NAS(ネットワークHDD)、プリンターなどの状態を調べるには、自身のパソコンに Nmap をインストールしてスキャンを実行できます。コマンドラインから以下のように入力します。