Nmap の基本的なコマンド構文を学ぶ

NmapNmapBeginner
今すぐ練習

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

はじめに

この実験では、強力なネットワーク探索およびセキュリティ監査ツールである Nmap の基本的なコマンド構文を学びます。システム管理者やセキュリティ専門家に広く使用されている Nmap は、ネットワークをスキャンし、開いているポートを検出し、潜在的な脆弱性を特定するのに役立ちます。

私たちのシナリオは 2145 年のルナゲートウェイ宇宙港を舞台に展開されます。この宇宙港は月最大かつ最も重要な宇宙港です。サイバーセキュリティチームのリーダーとして、あなたの使命は、宇宙港のネットワークインフラストラクチャを脅威から守ることです。最近、不審な活動が増加しているとの報告があり、ハッカーがシステムに侵入しようとしていると疑われます。この実験の終わりまでに、あらゆるネットワーク、未来的な宇宙港であってもセキュリティを確保するために重要なスキルである、Nmap を使用した基本的なネットワーク偵察の実践経験を得ることができます。

Nmap の理解とインストールの確認

Nmap は Network Mapper の略で、オープンソースのツールです。ネットワークセキュリティの分野では、コンピュータネットワーク上のホストやサービスを発見する上で重要な役割を果たします。これを、ネットワーク内で何が起こっているかを調べる探偵のようなものと考えてください。ルナゲートウェイ宇宙港という架空のシナリオでは、Nmap はその複雑なネットワークインフラストラクチャのセキュリティを守るために非常に重要です。

Nmap を使用する前に、システムにインストールされていることを確認する必要があります。以下はインストールを確認する方法です。

  1. まず、ターミナルウィンドウを開く必要があります。LabEx 環境では、ターミナルは通常すでに開かれており、/home/labex/project ディレクトリに設定されています。ターミナルは、システムと対話するためのコマンドを入力できるコントロールセンターのようなものです。

  2. 次に、インストールされている Nmap のバージョンを確認するコマンドを実行します。以下のコマンドをターミナルに入力し、Enter キーを押してください。

    nmap --version

    このコマンドは、システムにインストールされている Nmap のバージョンに関する情報を表示するよう要求しています。--version オプションは、多くのプログラムでバージョン関連の詳細を取得する一般的な方法です。

  3. コマンドを実行した後、出力を見てみましょう。Nmap の具体的なバージョン、コンパイル方法、その他の関連情報が表示されます。これにより、Nmap が正しくインストールされていることを確認でき、バージョンに基づいてどのような機能が利用可能かを把握することもできます。

テストサービスのセットアップ

Nmap の練習を始める前に、スキャンするターゲットが必要です。Nmap をサイバーセキュリティの世界における探偵ツールだと考えると、調査する容疑者(ターゲット)が必要です。この場合、netcat (nc) というツールを使用してローカルマシン上に簡単なネットワークサービスをセットアップします。Netcat は、ネットワーク接続を介してデータを読み書きできる汎用的なネットワーキングユーティリティです。

  1. まず、システムに netcat がインストールされていることを確認しましょう。ターミナルで以下のコマンドを実行することで確認できます。

    nc -h

    このコマンドは、netcat にヘルプ情報を表示するよう要求します。netcat がインストールされている場合、利用可能なオプションのリストとその使い方が表示されます。エラーが表示された場合は、netcat がインストールされていないことを意味し、続行する前にインストールする必要があります。

  2. 次に、新しいターミナルウィンドウを開きます。これは、後で元のターミナルを他のコマンドに使用し、netcat サービスを別のウィンドウで実行し続ける必要があるため重要です。ターミナルエリアを右クリックして「New Terminal」を選択するか、キーボードショートカット(通常は Ctrl+Shift+T)を使用して新しいターミナルウィンドウを開くことができます。

  3. この新しいターミナルウィンドウで、開いたままになる簡単なネットワークサービスを起動します。以下のコマンドを実行します。

    while true; do nc -n -lvp 7777; done

    このコマンドは無限ループを作成します。netcat サービスへの接続が閉じるたびに、ループが netcat を再起動し、サービスが常にスキャンできる状態になるようにします。netcat がポート 7777 で待機していることを示す出力が表示されるはずです。

    • -n: このフラグは、netcat にホスト名を解決しようとせずに直接 IP アドレスを使用するよう指示します。これにより処理が高速化され、潜在的な DNS 関連の問題が回避されます。
    • -l: このフラグは、netcat にリスニングモードに入るよう指示します。接続を開始しようとせずに、着信接続を待ちます。
    • -v: このフラグは、詳細な出力を有効にします。netcat は、その動作に関するより詳細な情報を提供し、デバッグや状況の理解に役立ちます。
    • -p 7777: このフラグは、netcat が待機するポート番号を指定します。この場合、ポート 7777 を選択しました。
  4. このターミナルウィンドウを開いたままにしておきます。次の手順で Nmap を使用してスキャンする際に、着信接続を観察するために使用します。このウィンドウで実行されている netcat サービスは、Nmap スキャンのターゲットとして機能し、Nmap が実際のネットワークサービスとどのように相互作用するかを確認できます。

基本的な Nmap スキャンの実行

サービスのセットアップが成功したので、これを Nmap で発見する時が来ました。Nmap は強力なネットワークスキャンツールで、ターゲットマシン上の開いているポートとサービスを見つけるのに役立ちます。このステップでは、ローカルホストを基本的にスキャンして、先ほどセットアップしたサービスを見つけます。

  1. まず、元のターミナルウィンドウに戻ります。netcat を実行しているウィンドウではないことを確認してください。このターミナルを使って Nmap コマンドを実行する必要があります。

  2. 次に、以下の Nmap コマンドを実行します。

    nmap -v -p 7777 localhost

    このコマンドを分解して、各部分の機能を理解しましょう。

    • nmap: これは Nmap を実行する基本コマンドです。システムにネットワークスキャンに Nmap ツールを使用することを指示します。
    • -v: このオプションは詳細出力を有効にします。-v を使用すると、Nmap はスキャンに関するより詳細な情報、たとえば進捗状況やターゲットに関する追加の詳細を提供します。
    • -p 7777: このオプションは、Nmap にポート 7777 のみをスキャンするよう指示します。ポートはコンピュータのドアのようなもので、異なるサービスが異なるポートを使用します。-p 7777 を指定することで、ターゲットマシンでポート 7777 が開いているかどうかを Nmap に確認させています。
    • localhost: これはスキャンするターゲットです。この場合、localhost は自分自身のマシンを指します。ローカル環境でネットワークスキャンをテストする方法です。
  3. コマンドを実行した後、出力を観察します。次のような内容が表示されるはずです。

    Starting Nmap ( http://nmap.org )
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.000040s latency).
    PORT     STATE SERVICE
    7777/tcp open  cbt

    この出力は重要な情報を提供しています。Nmap がスキャンを開始し、ターゲット(ローカルホスト)が稼働していることを示しています。7777/tcp open cbt という行は、ローカルホストでポート 7777 が開いており、このポートで動作しているサービスが cbt と識別されていることを示しています。

  4. このスキャンの記録を将来的な参照のために残すために、出力をファイルに保存しましょう。出力のリダイレクトを使用してコマンドを再度実行します。

    nmap -v -p 7777 localhost > /home/labex/project/nmap_scan_output.txt

    このコマンドは前と同じスキャンを実行しますが、> 記号が出力を /home/labex/project ディレクトリ内の nmap_scan_output.txt という名前のファイルにリダイレクトします。これにより、後で簡単にスキャン結果にアクセスできます。

  5. cat コマンドを使用してこのファイルの内容を表示できます。以下のコマンドを実行します。

    cat /home/labex/project/nmap_scan_output.txt

    cat コマンドは、ファイルの内容をターミナルに表示するために使用されます。このコマンドを実行することで、保存されたスキャン出力を見ることができます。

  6. 最後に、netcat のターミナルを確認します。Nmap がサービスに接続しようとしたことに気づくはずです。netcat で設定したループのため、接続は閉じて再び開き、サービスがさらなるスキャンに利用可能な状態を維持します。これは、Nmap を使ってネットワークのテストと探索を続けることができるため重要です。

Nmap 出力の詳細調査

Nmap を使って基本的なスキャンを成功させたので、次は Nmap が生成する出力を詳しく見てみましょう。この出力を理解することは、ターゲットシステムに関する重要な情報(開いているポートや稼働中のサービスなど)を提供するため、非常に重要です。

  1. まず、Nmap スキャンの出力ファイルを開く必要があります。このファイルには、先ほど行ったスキャンのすべての詳細が含まれています。ファイルを開くには、nano テキストエディタを使用します。nano はシンプルで使いやすいテキストエディタで、テキストファイルを簡単に閲覧および編集できます。ターミナルで以下のコマンドを実行します。

    nano /home/labex/project/nmap_scan_output.txt

    このコマンドを実行すると、指定されたファイルが nano テキストエディタで開きます。

  2. ファイルが開いたら、その内容を調べます。ファイルはいくつかのセクションに分かれており、それぞれ異なる種類の情報を提供していることに気づくでしょう。

    • Nmap スキャンレポート:このセクションでは、スキャンのターゲットが表示されます。今回の場合、ターゲットは localhost で、現在作業しているローカルマシンを指します。
    • ホストの状態:この部分では、ホスト(ターゲットシステム)が稼働しているかどうかが示されます。また、ホストのレイテンシ(信号が自分のマシンからターゲットまで往復するのにかかる時間)に関する情報も提供されます。
    • ポートテーブル:このテーブルでは、スキャンしたポートの状態が示されます。ポートが開いているか、閉じているか、またはフィルタリングされているかを教えてくれます。さらに、そのポートで稼働していると Nmap が考えるサービスも表示されます。
  3. Nmap がポート 7777 のサービスを "cbt" と識別していることに気づくかもしれません。ただし、これは一般的なポート割り当てに基づいた Nmap の推測に過ぎないことに注意する必要があります。7777 のような非標準ポートの場合、この識別が常に正確であるとは限りません。

  4. ファイルの調査が終わったら、Ctrl+X を押して nano テキストエディタを終了できます。

  5. 次に、もう少し包括的なスキャンを試してみましょう。追加のオプションを含む新しいコマンドを使用して、ターゲットに関するより多くの情報を収集します。ターミナルで以下のコマンドを実行します。

    nmap -v -p 7777 -sV localhost > /home/labex/project/nmap_service_scan.txt

    このコマンドの各部分の意味は次の通りです。

    • -v: このオプションは詳細モードを有効にします。つまり、Nmap はスキャンプロセスに関するより詳細な情報を提供します。
    • -p 7777: これは、ポート 7777 のみをスキャンすることを指定します。
    • -sV: このフラグは、Nmap に開いているポートを調査させ、それらのポートで稼働しているサービスとそのバージョンを判断させます。
    • localhost: これはスキャンのターゲットで、ローカルマシンです。
    • > /home/labex/project/nmap_service_scan.txt: これは、スキャンの出力を指定されたファイルにリダイレクトします。
  6. スキャンを実行した後、この新しいファイルの内容を表示します。これには cat コマンドを使用します。cat コマンドは、ファイルの内容をターミナルに表示するために使用されます。以下のコマンドを実行します。

    cat /home/labex/project/nmap_service_scan.txt

    出力には、ポート 7777 に関する追加情報が表示されるはずです。Nmap がポートで稼働している正確なサービスを判断できない場合でも、基本的なスキャンと比較してより詳細な出力が提供されます。

  7. 出力を見るときは、次のような行を探してください。

    PORT     STATE SERVICE VERSION
    7777/tcp open  cbt?

    この行は、Nmap が開いているポート 7777 を検出したことを示しています。ただし、"cbt" の後の疑問符は、Nmap がサービスの分類に不確かさを感じていることを示しています。つまり、Nmap はこのポートで稼働しているサービスを明確に識別できなかったということです。

ネットワーク全体のスキャンを実行する

ルナゲートウェイ宇宙港の実際のシナリオでは、ネットワーク上の複数のホストをスキャンする必要があります。これは、ネットワークに接続されているデバイスとその開放されているポートを把握するのに役立ち、ネットワークセキュリティにとって重要です。ここでは、IP アドレスの範囲をスキャンすることでこれをシミュレートしましょう。

  1. まず、自分の IP アドレスを調べましょう。あなたの IP アドレスは、ネットワーク上でデバイスを一意に識別する「自宅の住所」のようなものです。これを調べるには、次のコマンドを実行します。

    ip addr show | grep inet

    このコマンドの ip addr show 部分は、デバイス上のすべてのネットワークインターフェイスとそれに関連付けられた IP アドレスを一覧表示します。| はパイプで、ip addr show コマンドの出力を grep inet コマンドに渡します。grep inet コマンドは、出力をフィルタリングして、「inet」という単語を含む行、つまり IP アドレスが含まれる行のみを表示します。

    サンプル出力:

    inet 127.0.0.1/8 scope host lo
    inet 172.18.0.3/16 brd 172.18.255.255 scope global eth1

    127.0.0.1/8 はループバックアドレスで、今回の目的には役に立たないので無視できます。172.18.0.3/16 はネットワークインターフェイスの IP アドレスで、今回の目的に役立つので、以降の手順でこの IP アドレスを使用できます。

  2. 次に、自分の IP アドレス周辺の IP アドレス範囲をスキャンしましょう。IP アドレスの範囲をスキャンすることで、同じネットワーク上の他のデバイスを発見することができます。あなたの IP が 172.18.0.3 の場合、172.18.0.1 - 10 をスキャンするかもしれません。次のコマンドの IP 範囲を、あなたの IP を含むものに置き換えてください。

    sudo nmap -v -p 7777 172.18.0.1-10 > /home/labex/project/network_scan.txt

    sudo コマンドは、次のコマンドを管理者権限で実行するために使用されます。これは、ネットワークスキャンに必要な場合が多いです。nmap は強力なネットワークスキャンツールです。-v オプションは「verbose」(詳細)を意味し、スキャンに関するより詳細な情報を提供します。-p 7777 オプションは、ターゲット IP アドレスのポート 7777 をスキャンすることを指定します。172.18.0.1 - 10 はスキャンしたい IP アドレスの範囲です。> 記号は、nmap コマンドの出力を /home/labex/project/network_scan.txt ファイルにリダイレクトします。

    このコマンドは、172.18.0.0 ネットワークの最初の 10 個の IP アドレスのポート 7777 をスキャンします。

  3. スキャン結果を表示しましょう。

    cat /home/labex/project/network_scan.txt

    cat コマンドは、ファイルの内容を表示するために使用されます。この場合、network_scan.txt ファイルに保存したネットワークスキャンの結果が表示されます。各 IP アドレスに関するポート 7777 の情報が一覧表示されるはずです。

  4. 実際のシナリオでは、この種のスキャンにより、特定のポートが開放されているネットワーク上のすべてのデバイスを特定することができ、ルナゲートウェイ宇宙港のネットワークのセキュリティを維持する上で重要です。どのデバイスが特定のポートを開放しているかを知ることで、ネットワーク上に潜在的なセキュリティリスクや不正アクセスポイントがあるかどうかを判断することができます。

まとめ

この実験では、ルナゲートウェイ宇宙港のネットワークインフラストラクチャのセキュリティを確保する文脈で、Nmap の基本的なコマンド構文を学びました。まず、Nmap のインストールを確認し、netcat を使ってテストサービスをセットアップしました。次に、localhost で基本的なスキャンを行い、Nmap の出力を解釈する方法を学び、さらなる分析のためにその出力を保存しました。

また、開いているポート上のサービスに関する詳細を明らかにするサービスバージョン検出など、より複雑な技術にも挑戦しました。最後に、ネットワーク全体のスキャンをシミュレートし、Nmap が複数のホストを調査できる方法を示しました。これらのスキルは、ネットワーク調査とセキュリティ監査の基礎であり、宇宙港の運用におけるリスクを特定するために不可欠です。

Nmap は、許可されたネットワークでのみ、責任を持って使用することを忘れないでください。許可なくスキャンすることは攻撃と見なされ、法的な問題を引き起こす可能性があります。学習を続けるにつれて、これらの基本的な Nmap 技術を拡張し、ルナゲートウェイ宇宙港のような複雑な環境で包括的なセキュリティ戦略を構築するために他のツールと組み合わせることを考えてみてください。