thumbnail

Nmap (Network Mapper)

Nmap(Network Mapper)は、ネットワークの探索とセキュリティ監査のために設計された、非常に強力で広く使用されているオープンソースのユーティリティです。システム管理者、ネットワークエンジニア、セキュリティ専門家(ホワイトハットハッカー)によって、ネットワーク上のどのホストがアクティブであるか、それらのホストがどのようなサービス(アプリケーション名とバージョン)を提供しているか、どのオペレーティングシステム(OS)を実行しているか、どのようなパケットフィルタ/ファイアウォールが使用されているかなどを判断するために使用されます。

Nmapの主な機能

Nmapは多機能ですが、その中核となるのは以下の機能です。

ポートスキャン

最も基本的な機能です。対象のホスト(サーバーなど)に対してTCPやUDPのポートが「開いている (Open)」「閉じている (Closed)」、または「フィルタリングされている (Filtered)」状態かを調査します。ポートが開いていれば、何らかのサービスがそのポートで待機していることを意味します。

サービスとバージョンの検出

開いているポートで実行されているサービス(例: Webサーバー、FTPサーバー、SSHサーバー)の具体的な名前とそのバージョン情報を特定しようと試みます。例えば、単に「ポート80が開いている」だけでなく、「Apache httpd 2.4.58 が実行されている」といった詳細情報を取得できます。これは脆弱性診断において極めて重要です。

OS検出

対象ホストのTCP/IPスタックの実装の違いを分析し、実行されているオペレーティングシステム(例: Linux (特定のカーネルバージョン)、Windows 11、macOS)を推測します。

NSE (Nmap Scripting Engine)

Lua言語で書かれたスクリプト(NSEスクリプト)を使用して、Nmapの機能を大幅に拡張できます。これにより、より高度なサービス検出、脆弱性のスキャン、情報の収集、さらには特定の脆弱性の悪用(実験)まで自動化することが可能です。

基本的なスキャンコマンドの例

Nmapはコマンドライン(CUI)ツールとして使用するのが一般的です。(`example.com` の部分はスキャン対象のドメインやIPアドレスに置き換えます)

TCP SYNスキャン(ステルススキャン)

デフォルトで最もよく使われる高速なスキャン方法です。TCP接続を完全に確立せずにポートの状態を判断しようと試みます。

# -sS はSYNスキャンを指定 (ルート権限/管理者権限が必要)
nmap -sS example.com

TCP Connectスキャン

ルート権限がない場合に使用される、より単純なスキャン方法です。対象ポートに完全に接続(3ウェイハンドシェイク)を試みます。ログに残りやすい特徴があります。

# -sT はConnectスキャンを指定
nmap -sT example.com

サービスとバージョンの検出

ポートが開いている場合、そこで稼働しているサービスのバージョン情報を特定します。

# -sV はバージョン検出を有効にする
nmap -sV example.com

OS検出

対象ホストのOSを特定します(ルート権限が必要です)。

# -O はOS検出を有効にする
nmap -O example.com

アグレッシブスキャン

よく使われるオプション(OS検出 `-O`、バージョン検出 `-sV`、スクリプトスキャン `-sC`、トレースルート `--traceroute`)を一度に実行する便利なオプションです。ただし、非常に「目立つ」スキャンです。

# -A はアグレッシブスキャン
nmap -A example.com

使用上の注意

Nmapは強力なツールである一方、その使用には注意が必要です。管理権限を持たないネットワークや、許可を得ていない第三者のサーバーに対してポートスキャンを実行する行為は、**不正アクセス行為またはその準備行為(攻撃)**とみなされる可能性があります。

Nmapの使用は、自身が管理するネットワークの診断、または事前に明確な許可(書面による同意など)を得たセキュリティ監査(ペネトレーションテスト)の範囲内に限定する必要があります。