Nmap による基本的な脆弱性スキャン

CompTIABeginner
オンラインで実践に進む

はじめに

Nmap を用いた基本的な脆弱性スキャンに関するこの実験へようこそ。Nmap (Network Mapper) は、ネットワーク管理者やセキュリティ専門家がネットワークの発見やセキュリティ監査に使用する強力なオープンソースツールです。ネットワーク上で利用可能なホスト、それらのホストが提供しているサービス、実行しているオペレーティングシステムなどを特定できます。

この実験では、Nmap を実際に使用する経験を積みます。まず Ubuntu システムに Nmap をインストールし、次に自身のマシン (localhost) をスキャンして開いているポートを見つけます。最後に、スキャン結果を解釈して実行中のサービスとそのバージョンを特定する方法を学びます。これは、潜在的な脆弱性を評価する最初の一歩となります。

Ubuntu 22.04 への Nmap のインストール

このステップでは、Ubuntu 22.04 システムに Nmap ツールをインストールします。ソフトウェアを使用する前に、まずそれがインストールされていることを確認する必要があります。ここでは、Ubuntu のような Debian ベースの Linux ディストリビューションの標準である apt パッケージマネージャーを使用します。

まず、システムのパッケージリストを更新するのが良い習慣です。これにより、ソフトウェアの最新バージョンを取得できます。ターミナルを開き、次のコマンドを実行します。

sudo apt update

apt がリポジトリから最新のパッケージ情報を取得する際の出力が表示されます。

次に、apt install コマンドを使用して Nmap をインストールします。-y フラグは、プロンプトに対して自動的に「yes」と応答するため、インストールを非対話的にします。

sudo apt install -y nmap

インストールが完了したら、バージョンを確認することで 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 libz-1.2.11 libpcre-8.39 nmap-libpcap-1.9.1 nmap-libdnet-1.12 ipv6
Compiled without:
Available nsock engines: epoll poll select

Nmap がインストールされたので、最初のスキャンを実行する準備ができました。

ローカルホストのポートスキャンを実行して開いているサービスを特定する

このステップでは、ローカルマシンで基本的なポートスキャンを実行し、開いているポートとその関連サービスを特定します。localhost(IP アドレス 127.0.0.1)をスキャンすることは、Nmap の使用法を練習するための安全な方法です。なぜなら、自身のシステムのみをスキャンしているからです。

ポートスキャンは、サービスがネットワーク上で通信するために使用する、コンピュータ上の開いている「ドア」を探します。デフォルトでは、Nmap は最も一般的な 1000 個の TCP ポートをスキャンします。

ローカルマシンで基本的なスキャンを実行するには、ターミナルで次のコマンドを実行します。

nmap localhost

Nmap はマシンをスキャンし、その結果を報告します。出力は以下のようになります。この実験環境では、ポート 8000 でサービスが実行されるように事前に設定されていることに注意してください。

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000087s latency).
Not shown: 998 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3001/tcp open  nessus
8000/tcp open  http-alt       SimpleHTTPServer 0.6 (Python 3.10.12)

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

この出力を分析しましょう。

  • PORT: ポート番号とプロトコル(例:8000/tcp)。
  • STATE: ポートの状態。open は、サービスがこのポートで積極的に接続を受け入れていることを意味します。
  • SERVICE: そのポートで一般的に見られるサービスの一般的な名前(例:ポート 22 の ssh)。

このスキャンから、マシンでポート 22 と 8000 が開いていることが特定できました。

潜在的な脆弱性のために Nmap スキャン結果を解釈する

このステップでは、潜在的な脆弱性の特定に不可欠な、より詳細な情報を収集するために Nmap スキャン結果を解釈する方法を学びます。ポートが開いていることを知ることは有用ですが、そのポートで実行されている正確なソフトウェアとバージョンを知ることは、はるかに強力です。

開いているポート自体は脆弱性ではありません。リスクは、そのポートで実行されているサービスに由来します。サービスが古い、または設定ミスがある場合、悪用される可能性があります。

サービスの詳細を知るために、-sV フラグを使用して Nmap のバージョン検出機能を使用できます。これにより、開いているポートがプローブされ、サービスとバージョン情報が決定されます。

localhost でバージョン スキャンを実行するには、次のコマンドを実行します。

nmap -sV localhost

出力はより詳細になります。「VERSION」列に注意してください。

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 998 closed ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh         OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0)
3001/tcp open  ssl/nessus?
8000/tcp open  http        SimpleHTTPServer 0.6 (Python 3.10.12)

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

ご覧のとおり、Nmap は実行されているサービスの特定のバージョンを特定しました。たとえば、ポート 8000 では、一般的な Web サービス (http-alt) ではなく、具体的には SimpleHTTPServer 0.6 (Python 3.10.12) です。

このバージョン情報があれば、セキュリティアナリスト(または攻撃者)は、オンラインの脆弱性データベース(CVE など)で「SimpleHTTPServer 0.6 (Python 3.10.12)」に影響を与える既知のエクスプロイトを検索できます。これは、基本的な脆弱性スキャンの基本的なプロセスです。

まとめ

この実験を完了された皆さん、おめでとうございます!Nmap を使用したネットワークスキャンの世界への最初のステップを成功裏に踏み出しました。

この実験では、以下のことを学びました。

  • apt を使用して Ubuntu システムに Nmap ツールをインストールする方法。
  • localhost で基本的なポートスキャンを実行して、開いているポートを発見する方法。
  • バージョン検出スキャン (-sV) を使用して、それらのポートで実行されている特定のソフトウェアとバージョンを特定する方法。
  • スキャン結果を解釈して、潜在的な弱点領域を特定するための基本的な原則を理解する方法。

これらは、サイバーセキュリティ、システム管理、またはネットワークエンジニアリングの分野で働くすべての人にとって、基礎となるスキルです。Nmap の強力なスクリプトエンジン (NSE) など、他の多くの機能についても引き続き探求することをお勧めします。