Nmap におけるターゲット指定テクニックを学ぶ

NmapNmapBeginner
今すぐ練習

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

はじめに

この実験では、セキュリティ専門家に広く使用されている強力なネットワークスキャンツールである Nmap について学びます。この実験では、特に Nmap のターゲット指定技術に焦点を当てています。この技術は、スキャン対象のホストやネットワークを定義するために重要です。

これらの技術を理解することは、効果的なネットワーク調査とセキュリティ評価に不可欠です。この実験の終了時には、Nmap で様々な方法でターゲットを指定し、スキャン結果を効果的に解釈できるようになります。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/installation("Installation and Setup") nmap/NmapGroup -.-> nmap/basic_syntax("Basic Command Syntax") nmap/NmapGroup -.-> nmap/output_formats("Output Formats") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") subgraph Lab Skills nmap/installation -.-> lab-415935{{"Nmap におけるターゲット指定テクニックを学ぶ"}} nmap/basic_syntax -.-> lab-415935{{"Nmap におけるターゲット指定テクニックを学ぶ"}} nmap/output_formats -.-> lab-415935{{"Nmap におけるターゲット指定テクニックを学ぶ"}} nmap/port_scanning -.-> lab-415935{{"Nmap におけるターゲット指定テクニックを学ぶ"}} nmap/target_specification -.-> lab-415935{{"Nmap におけるターゲット指定テクニックを学ぶ"}} end

Nmap のインストールと探索

このステップでは、Nmap がシステムに正しくインストールされていることを確認し、基本的な機能を探索します。Nmap は Network Mapper の略で、オープンソースのツールです。ネットワーク探索やセキュリティ監査に広く使用されています。Nmap を使うと、ネットワークに接続されているデバイスとそれらのデバイスが提供しているサービスを特定できます。これは、ネットワークの状況を理解し、潜在的なセキュリティリスクを特定するのに役立つため、サイバーセキュリティにおいて重要です。

まず、Nmap がシステムに既にインストールされているかを確認する必要があります。これを行うには、ターミナルを使用します。ターミナルは、コマンドを入力してコンピュータと対話できるテキストベースのインターフェイスです。ターミナルを開き、次のコマンドを実行します。

nmap --version

このコマンドは、システムにインストールされている Nmap のバージョンを表示するよう要求します。Nmap が正しくインストールされている場合、次のような出力が表示され、Nmap のバージョンとビルド情報が含まれます。

Nmap version 7.80 ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with: liblua-5.3.3 openssl-1.1.1d 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 -h | grep -A 10 "TARGET SPECIFICATION"

このコマンドは、まず nmap -h を使用して Nmap のヘルプテキストを取得します。次に、その出力を grep -A 10 "TARGET SPECIFICATION" にパイプします。これは、ヘルプテキスト内の "TARGET SPECIFICATION" セクションを検索し、次の 10 行を表示します。Nmap スキャンのターゲットを指定するさまざまな方法の説明が表示されます。

次に、Nmap スキャンの結果を保存する場所が必要です。この目的のためにディレクトリを作成しましょう。ディレクトリは、コンピュータ上のフォルダのようなもので、ファイルを整理することができます。ターミナルで次のコマンドを実行します。

mkdir -p /home/labex/project/nmap_scans
cd /home/labex/project/nmap_scans

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

ローカルマシンで簡単なスキャンを実行して、Nmap の動作を確認しましょう。ローカルマシンは、現在使用しているコンピュータです。次のコマンドを実行します。

nmap localhost > local_scan.txt

このコマンドは、Nmap を使用してローカルマシンをスキャンします。> 記号は、スキャンの出力を local_scan.txt という名前のファイルにリダイレクトします。これにより、後で分析するためにスキャン結果を保存することができます。

最後に、スキャン結果を見てみましょう。次のコマンドを実行します。

cat local_scan.txt

cat コマンドは、local_scan.txt ファイルの内容を表示します。Nmap がローカルマシンでスキャンしたポートのリストが表示されます。ポート番号とともに、どのポートが開いているか、それらの開いているポートで何のサービスが実行されているかに関する情報が表示されます。この情報は、ローカルマシンのセキュリティ状態を理解するのに役立ちます。

サービスのセットアップと特定ポートのスキャン

このステップでは、ローカルのウェブサーバを起動し、その後、Nmap という強力なツールを使って特定のポートをスキャンしてサーバを見つける方法を学びます。このプロセスを理解することは、Nmap がネットワークやマシン上で現在実行されているサービスを特定するためにどのように使用できるかを示すため、非常に重要です。

まず、プロジェクトディレクトリに移動する必要があります。ここで簡単なウェブサーバをセットアップします。適切な場所に移動したら、ポート 8000 で待機する Python HTTP サーバを起動します。ポート 8000 は、ウェブサーバのテストによく使用されるポートです。以下はそのコマンドです。

cd /home/labex/project/nmap_scans
python3 -m http.server 8000 &

コマンドの最後の & は重要です。これにより、サーバがバックグラウンドで実行されます。つまり、サーバが実行中でも、ターミナルを他のタスクに使用できます。コマンドを実行すると、サーバが正常に起動したことを示す出力が表示されるはずです。

Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

サーバが実行中になったので、実際にポート 8000 で待機していることを確認しましょう。「list open files」の略である lsof コマンドを使用できます。このコマンドは、現在特定のポートを使用しているプロセスを確認するのに役立ちます。以下はその使い方です。

lsof -i :8000

サーバが正しく実行されている場合、次のような出力が表示されるはずです。

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
python3 12345 labex   4u  IPv4 123456      0t0  TCP *:8000 (LISTEN)

この出力は、Python がポート 8000 で待機していることを示しており、サーバが期待通りに動作していることを意味します。

次に、Nmap を使ってローカルマシンのポート 8000 をスキャンします。目的は、HTTP サーバを検出することです。以下はそのコマンドです。

nmap -p 8000 localhost > http_server_scan.txt

このコマンドでは、-p フラグを使ってスキャンするポートを指定しています。この場合、自分のマシンである localhost のポート 8000 をスキャンしています。> 記号は、Nmap スキャンの出力を http_server_scan.txt という名前のファイルにリダイレクトします。これにより、後で結果を簡単に確認できます。

スキャン結果を確認しましょう。

cat http_server_scan.txt

スキャンが成功した場合、次のような出力が表示されるはずです。

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-25 12:34 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).

PORT     STATE SERVICE
8000/tcp open  http-alt

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

この出力は、ポート 8000 が開いており、HTTP サービスが実行されていることを示しており、Nmap がサーバを検出できたことを意味します。

最後に、ポート範囲をスキャンして、ローカルマシン上で他に実行されているサービスがないかを確認してみましょう。以下はそのコマンドです。

nmap -p 1-1000 localhost > port_range_scan.txt

このコマンドは、Nmap に localhost の 1 から 1000 までのすべてのポートをスキャンするよう指示します。再び、出力を port_range_scan.txt という名前のファイルにリダイレクトしています。

結果を確認しましょう。

cat port_range_scan.txt

出力には、ローカルマシンで 1 から 1000 の範囲内で開いているポートが表示されます。これは、実行されていることを知らなかったサービスを発見するのに便利な方法です。

高度なターゲット指定

このステップでは、より高度な Nmap のターゲット指定技術について詳しく説明します。Nmap はネットワーク調査において強力なツールであり、1 つのコマンドで複数のターゲットを指定するさまざまな方法を提供しています。一度に複数のホストやネットワークをスキャンする必要がある場合、これは非常に便利で、時間と労力を節約することができます。

まず、スキャンしたい複数の IP アドレスを含むテキストファイルを作成しましょう。ローカルホスト (127.0.0.1) と他のいくつかのローカル IP アドレスを含めます。ローカルホストは、現在のデバイス自体を指す特別な IP アドレスです。これを含めることで、自分のマシンでスキャンプロセスをテストすることができます。

cd /home/labex/project/nmap_scans
echo "127.0.0.1" > targets.txt
echo "127.0.0.2" >> targets.txt
echo "127.0.0.3" >> targets.txt

上記のコードでは、cd コマンドを使用して現在の作業ディレクトリを /home/labex/project/nmap_scans に変更しています。echo コマンドはテキストを出力するために使用されます。> 演算子は新しいファイルを作成し、その中にテキストを書き込みます。一方、>> 演算子は既存のファイルにテキストを追加します。したがって、まず targets.txt という名前のファイルを作成し、その中に 127.0.0.1 を書き込みます。その後、同じファイルに 127.0.0.2127.0.0.3 を追加します。

では、作成したファイルを見て、IP アドレスが正しく追加されていることを確認しましょう。

cat targets.txt

cat コマンドはファイルの内容を表示するために使用されます。このコマンドを実行した後、次のような出力が表示されるはずです。

127.0.0.1
127.0.0.2
127.0.0.3

次に、Nmap の -iL フラグを使用して、targets.txt ファイルにリストされているすべての IP アドレスを一度にスキャンしましょう。-iL フラグは、Nmap にファイルからターゲットを読み取るよう指示します。

nmap -iL targets.txt > multiple_targets_scan.txt

ここで、nmap コマンドはネットワークスキャンを実行するために使用されます。-iL フラグはターゲットを含むファイルを指定します。> 演算子はスキャンの出力を multiple_targets_scan.txt という名前のファイルにリダイレクトします。

スキャン結果を確認しましょう。

cat multiple_targets_scan.txt

このコマンドを実行した後、3 つの IP アドレスすべてのスキャン結果が表示されるはずです。127.0.0.1 は通常、オープンなポートが表示されます。なぜなら、これはローカルホストであり、いくつかのサービスが実行されている可能性があるからです。ただし、127.0.0.2 と 127.0.0.3 は、ほとんどのシステムでは通常構成されていないため、応答しない場合があります。

複数のターゲットを指定する別の方法は、Nmap コマンドで直接スペース表記または CIDR 表記を使用することです。

nmap 127.0.0.1 127.0.0.2 > space_notation_scan.txt

このコマンドでは、スペースを使用して IP アドレスを区切っています。これにより、Nmap は 127.0.0.1 と 127.0.0.2 の両方をスキャンするように指示されます。スキャンの出力は space_notation_scan.txt という名前のファイルにリダイレクトされます。

結果を確認しましょう。

cat space_notation_scan.txt

また、CIDR 表記を使用して IP アドレスの範囲をスキャンすることもできます。CIDR (Classless Inter-Domain Routing) 表記は、IP アドレスの範囲を簡潔な形式で表す方法です。

nmap 127.0.0.0/30 > cidr_notation_scan.txt

CIDR 表記の 127.0.0.0/30 は、127.0.0.0 から 127.0.0.3 までの IP アドレスの範囲を表し、合計 4 つのアドレスです。このスキャンの出力は cidr_notation_scan.txt という名前のファイルにリダイレクトされます。

結果を確認しましょう。

cat cidr_notation_scan.txt

最後に、スキャンから特定のターゲットを除外する方法を調べてみましょう。ネットワークをスキャンしたいが、特定のホストを含めたくない場合に便利です。

nmap 127.0.0.0/30 --exclude 127.0.0.3 > exclude_scan.txt

このコマンドでは、--exclude フラグを使用して、Nmap に 127.0.0.0/30 の範囲をスキャンする際に IP アドレス 127.0.0.3 をスキップするよう指示しています。スキャンの出力は exclude_scan.txt という名前のファイルにリダイレクトされます。

結果を確認しましょう。

cat exclude_scan.txt

127.0.0.0、127.0.0.1、および 127.0.0.2 のスキャン結果が表示されるはずですが、127.0.0.3 の結果は表示されません。

これらの高度なターゲット指定技術により、Nmap がスキャンするホストを正確に制御することができ、ネットワーク調査をより効率的かつ的確に行うことができます。

まとめ

この実験では、ターゲット指定手法に焦点を当てて、Nmap をネットワーク調査に使用する方法を学びました。まず、Nmap をインストールし、ローカルマシンで簡単なスキャンを行うことで、その基本機能を調べました。次に、ローカルの HTTP サーバをセットアップし、特定のポートをスキャンすることで Nmap を使ってそれを見つけました。

これらのスキルは、ネットワーク管理者やセキュリティ専門家がネットワークデバイスを発見し評価するために不可欠です。Nmap のターゲット指定を習得することで、あらゆる規模と複雑さのネットワークを効率的にスキャンでき、タスクに関連する特定のホストやサービスを対象にすることができます。常に責任を持って Nmap を使用し、法的および倫理的な問題を避けるために、承認されたネットワークでのみ使用してください。