Nmap のインストールと基本的な使い方を学ぶ

NmapNmapBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、強力なネットワークスキャンおよびセキュリティ監査ツールである Nmap のインストールと基本的な使い方について学びます。Nmap は Network Mapper とも呼ばれ、システム管理者やセキュリティ専門家がネットワーク上のホスト、サービス、脆弱性を見つけるために広く使用するオープンソースのユーティリティです。

この実験では、Nmap のインストール、スキャン用のローカルサービスのセットアップ、および Nmap の機能を理解するための基本的なスキャンの実行をガイドします。

Nmap のインストール

このステップでは、Ubuntu Linux システムに Nmap をインストールする手順をガイドします。Nmap は強力なネットワークスキャンツールで、ネットワーク探索やセキュリティ監査などのサイバーセキュリティタスクで広く使用されています。Nmap は Ubuntu のデフォルトリポジトリに含まれているため、インストール手順は非常に簡単です。

まず、ターミナルを開く必要があります。ターミナルは、コマンドを入力することでシステムと対話できるテキストベースのインターフェイスです。デフォルトでは、/home/labex/project ディレクトリにいるはずです。このディレクトリにいない場合は、以下のコマンドを使用して移動できます。このコマンドは、現在の作業ディレクトリを /home/labex/project に変更します。

cd /home/labex/project
Nmap インストールのターミナル

正しいディレクトリに移動したら、パッケージリストを更新して Nmap をインストールしましょう。パッケージリストには、Ubuntu リポジトリにあるすべてのソフトウェアに関する情報が含まれています。これを更新することで、最新バージョンの Nmap を取得できます。

sudo apt update
sudo apt install nmap -y

sudo コマンドは、管理者権限でコマンドを実行するために使用されます。ソフトウェアのインストールには管理者アクセスが必要なため、sudo を使用する必要があります。-y フラグは apt install コマンドとともに使用されます。これにより、インストール中のすべてのプロンプトに自動的に「はい」と回答するため、各ステップを手動で確認する必要がありません。

インストールが完了したら、Nmap が正しくインストールされたことを確認することが重要です。これは、バージョンを確認することで行えます。nmap コマンドの --version オプションは、Nmap のバージョン情報を表示します。

nmap --version

以下のような出力が表示されるはずです(バージョンは異なる場合があります)。

Nmap version 7.80 ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with: liblua-5.3.3 openssl-1.1.1f nmap-libssh2-1.8.2 libz-1.2.11 libpcre-8.39 libpcap-1.9.1 nmap-libdnet-1.12 ipv6
Compiled without:
Available nsock engines: epoll poll select

この出力は、Nmap がシステムにインストールされていることを確認します。また、Nmap のバージョンと使用されたコンパイルオプションに関する情報も提供されます。これは、トラブルシューティングやインストールされた Nmap の機能を理解するのに役立ちます。

スキャン用のローカルサービスのセットアップ

Nmap を使ってスキャンを開始する前に、ターゲットとなるサービスを実行しておくことが重要です。これにより、Nmap のスキャン機能を効果的にテストすることができます。このステップでは、Python の組み込みモジュール http.server を使用して、簡単な HTTP サーバーをセットアップします。Python の http.server モジュールは、複雑な設定を必要とせずにすぐに HTTP サーバーを起動できる便利なツールです。

まず、HTTP サーバー用の新しいディレクトリを作成しましょう。ディレクトリは、コンピュータ上のフォルダのようなもので、サーバーに関連するすべてのファイルを格納することができます。

mkdir -p /home/labex/project/http-server
cd /home/labex/project/http-server

mkdir -p コマンドは、指定されたパスに http-server という名前のディレクトリを作成します。-p オプションは、途中のディレクトリが存在しない場合にもそれらを作成することを保証します。cd コマンドは、現在の作業ディレクトリを新しく作成された http-server ディレクトリに変更します。

次に、サーバーが提供する簡単な HTML ファイルを作成しましょう。HTML は、ウェブページを作成するための標準的なマークアップ言語です。

echo "<html><body><h1>Welcome to the Nmap Lab</h1></body></html>" > index.html

このコマンドは、echo コマンドを使用して HTML コードをターミナルに出力し、その出力を index.html という名前のファイルにリダイレクトします。これで、基本的な HTML 構造と歓迎メッセージが記載されたファイルが作成されました。

次に、Python HTTP サーバーを起動します。

python3 -m http.server 8000

このコマンドは、python3 インタープリターを使用して http.server モジュールをスクリプトとして実行します。-m オプションは、Python にモジュールをスクリプトとして実行するよう指示します。ポート 8000 を指定しているので、サーバーはこのポートで着信要求を待ち受けます。

Open a new terminal tab or window to continue

新しいターミナルタブまたはウィンドウを開いて続行してください。

サーバーが正常に動作していることを確認するには、curl コマンドを使用できます。curl は、サーバーとの間でデータを転送するためのコマンドラインツールです。

curl http://localhost:8000

このコマンドを実行すると、curllocalhost(自分のコンピュータを指す)のポート 8000 で動作している HTTP サーバーにリクエストを送信します。サーバーが正常に動作していれば、先ほど作成した HTML コンテンツが表示されるはずです。

127.0.0.1 - - [13/Sep/2024 15:24:21] "GET / HTTP/1.1" 200 -
<html>
  <body>
    <h1>Welcome to the Nmap Lab</h1>
  </body>
</html>

この出力は、サーバーがリクエストを受け取り、正常に処理し(200 のステータスコードで示される)、index.html ファイルの HTML コンテンツを返したことを示しています。

基本的な Nmap スキャン

Nmap のインストールとローカルサービスのセットアップが完了したので、基本的なスキャンを開始しましょう。これにより、Nmap の動作方法と提供できる情報の種類を理解することができます。

まず、ローカルの HTTP サーバーに対して簡単な TCP コネクトスキャンを実行します。TCP コネクトスキャンは、Nmap で最も基本的なスキャンタイプです。このスキャンでは、ターゲットポートに対して完全な TCP 接続を確立しようとします。接続が成功すれば、そのポートが開いていることを意味します。

このスキャンを実行するコマンドは次の通りです。

nmap -sT -p 8000 localhost

このコマンドを分解して説明しましょう。

  • -sT は、TCP コネクトスキャンを指定するオプションです。これにより、Nmap は TCP コネクトメソッドを使用してポートの状態を確認します。
  • -p 8000 は、Nmap にポート 8000 のみをスキャンするよう指示します。必要に応じて、この番号を変更して他のポートをスキャンすることもできます。
  • localhost は、スキャンのターゲットです。これは、サービスが実行されているローカルマシンを指します。

このコマンドを実行すると、以下のような出力が表示されるはずです。

Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-13 15:27 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Other addresses for localhost (not scanned): ::1

PORT     STATE SERVICE
8000/tcp open  http-alt

Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds

この出力は、ポート 8000 が開いており、HTTP サービスが実行されていることを示しています。STATE 列はポートの状態を示しており、この場合は open です。SERVICE 列は、そのポートで実行されているサービスの種類を示しています。

次に、より詳細なスキャンを実行しましょう。時には、ポートが開いていることだけでは不十分な場合があります。そのポートで実行されているサービスのバージョンなど、より詳細な情報が必要になることがあります。

より詳細なスキャンを行うコマンドは次の通りです。

nmap -sV -p 8000 localhost

-sV オプションは、Nmap に開いているポートを調査してサービス/バージョン情報を取得するよう指示するために使用されます。これは、Nmap が開いているポートで実行されている特定のソフトウェアとそのバージョンを特定しようとすることを意味します。

このコマンドを実行すると、以下のような出力が表示されるはずです。

Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-13 15:27 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Other addresses for localhost (not scanned): ::1

PORT     STATE SERVICE VERSION
8000/tcp open  http    SimpleHTTPServer 0.6 (Python 3.10.12)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.48 seconds

この出力は、ポート 8000 で実行されているサービスに関するより詳細な情報を提供しています。これにより、Python の SimpleHTTPServer が実行されており、バージョン番号までわかります。

Python HTTP サーバーを起動したターミナルのログで Nmap のリクエストを確認することができます。これは、デバッグやさらなる分析に役立ちます。

複数ポートのスキャン

実際のシナリオでは、複数のポートやポート範囲全体をスキャンする必要があることがよくあります。ここでは、Nmap を使ってこれを行う方法を見ていきましょう。

ネットワークスキャンでは、一度に複数のポートをチェックしたい場合があります。これは、異なるサービスが異なるポートで動作しており、複数のポートをスキャンすることで、ターゲットで利用可能なサービスの全体像を把握できるため便利です。

まず、localhost の最も一般的な 1000 個のポートをスキャンしましょう。localhost は、現在作業しているデバイスを指し、IP アドレス 127.0.0.1 で表されます。最も一般的な 1000 個のポートをスキャンすることで、ローカルマシンで動作しているサービスの概要をすばやく把握できます。

nmap localhost

このコマンドを実行すると、以下のような出力が表示されます。

Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-13 15:29 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00016s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3001/tcp open  nessus
8000/tcp open  http-alt

Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds

このコマンドは、ポート指定を行わない場合、最も一般的な 1000 個のポートをスキャンします。開いているポート、閉じているポート、フィルタリングされたポートのリストが表示されます。出力には、ポート番号、その状態(開、閉、またはフィルタリング)、および関連するサービスが示されます。

次に、すべての 65535 個のポートをスキャンしましょう。TCP/IP プロトコルでは、合計 65535 個のポートが利用可能です。すべてのポートをスキャンすることで、ターゲットで動作しているサービスの完全な画像を得ることができますが、時間がかかります。

nmap -p- localhost

-p- オプションは、Nmap に 1 から 65535 までのすべてのポートをスキャンするよう指示します。このスキャンは、すべてのポートをチェックする必要があるため、完了までに時間がかかります。

最後に、特定のポート範囲をスキャンしましょう。時には、特定のサービスが動作している可能性のあるポートがわかっている場合があり、それらのポートのみをスキャンしたいことがあります。

nmap -p 1-1000 localhost

このコマンドは、1 から 1000 までのポートをスキャンします。ポート範囲を指定することで、必要に最も関連するポートに焦点を当ててスキャンすることができます。

出力形式と結果の保存

Nmap は様々な出力形式を提供しており、それぞれ異なるニーズに合わせて設計されています。これらの形式を理解し、スキャン結果を保存する方法を知ることは、さらなる分析や調査結果の共有において重要です。このステップでは、これらの形式のいくつかを詳しく見て、スキャン結果を効果的に保存する方法を学びましょう。

まず、スキャンを実行し、通常形式で出力を保存しましょう。通常形式は人間が読みやすいテキスト形式で、スキャン結果を明確かつ簡潔に表示します。この形式で出力を保存するには、次のコマンドを使用します。

nmap -oN normal_output.txt localhost

このコマンドでは、-oN オプションを使用して、Nmap に通常形式で出力を保存するよう指示しています。normal_output.txt は結果が保存されるファイルの名前です。localhost はスキャン対象で、ローカルマシン自体を指します。

次に、出力を XML 形式で保存しましょう。XML (eXtensible Markup Language) は、データの保存と交換に広く使用される形式です。構造化された形式であり、スクリプトによって容易に解析されたり、他のツールにインポートされてさらなる処理が行われたりします。XML 形式で出力を保存するには、次のコマンドを使用します。

nmap -oX xml_output.xml localhost

ここで、-oX オプションは Nmap に XML 形式で出力を保存するよう指示します。xml_output.xml は XML 形式の結果が保存されるファイルです。

最後に、出力を grep 可能な形式で保存しましょう。grep 可能な形式は、grep のようなツールで容易に解析できるように設計されています。grep は、Unix 系システムにおける強力なテキスト検索ユーティリティです。この形式は、スキャン結果から特定の情報をすばやく検索したい場合に便利です。grep 可能な形式で出力を保存するには、次のコマンドを使用します。

nmap -oG grepable_output.txt localhost

-oG オプションは grep 可能な形式で出力を保存するために使用され、grepable_output.txt は結果が保存されるファイルです。

異なる形式で結果を保存した後、これらのファイルの内容を表示したい場合があります。cat コマンドを使用して、テキストファイルの内容を表示することができます。たとえば、通常形式の出力ファイルを表示するには、次のコマンドを使用します。

cat normal_output.txt

これにより、normal_output.txt ファイルの内容がターミナルに表示され、スキャン結果を確認することができます。

まとめ

この実験では、強力なネットワークスキャンおよびセキュリティ監査ツールである Nmap の基本を学びました。まず、Ubuntu Linux システムに Nmap をインストールし、そのインストールを確認しました。次に、スキャンのターゲットとしてローカル HTTP サーバーをセットアップし、テスト用の簡単なサービスを作成する方法を示しました。

また、基本的なポートスキャンから詳細なサービスバージョン検出まで、様々なスキャン技術を探索しました。システム上の特定のポート、ポート範囲、およびすべての 65535 個のポートをスキャンする方法を学びました。これは、ネットワークを理解し、潜在的な脆弱性を見つけるために重要です。最後に、通常のテキスト、XML、および grep 可能な形式で結果を保存するなど、Nmap のオプションについて学びました。これらは、文書化やさらなる分析に不可欠です。

この実験では、Nmap を使用する実践的な経験を提供し、より高度なネットワークスキャンとセキュリティ監査の基礎を築きました。Nmap を責任を持って、適切な許可を得て使用することを忘れないでください。