Nmap スクリプトエンジン (NSE) の使用
Nmap スクリプトエンジン (NSE) は、Lua スクリプトを使用して Nmap の機能を拡張することができる強力なツールです。Lua は軽量なプログラミング言語で、これらのスクリプトは様々なタスクを実行することができます。たとえば、高度なサービス検出に役立ち、ネットワークデバイス上で動作しているサービスをより正確に特定することができます。また、システムのセキュリティ上の弱点を見つけるために重要な脆弱性スキャンにも使用できます。
では、NSE を使って HTTP サーバーに関するより詳細な情報を収集しましょう。NSE スクリプトは様々なカテゴリに分類されています。これらのカテゴリには、一般的に使用される安全なスクリプトが含まれる「default」、ネットワークサービスを見つけるための「discovery」、ターゲットシステムに何らかの損害を与えない「safe」、脆弱性スキャンに使用される「vuln」などがあります。
まず、HTTP に関連するスクリプトがどれだけあるかを確認しましょう。これを行うには、以下のコマンドを使用します。
ls /usr/share/nmap/scripts/http*
このコマンドは、/usr/share/nmap/scripts/
ディレクトリ内の http
で始まるすべての NSE スクリプトをリスト表示します。このコマンドを実行すると、HTTP サービスとやり取りするように設計されたスクリプトのリストが表示されます。これらのスクリプトは、ウェブページのタイトルを取得するなどの単純な情報収集から、HTTP サービスの脆弱性スキャンなどのより複雑なタスクまで、様々な機能を実行することができます。
では、http-title
スクリプトを使用してウェブページのタイトルを抽出しましょう。http-title
スクリプトは、HTTP サービスを調べて、それが提供するウェブページのタイトルを見つけるように設計されています。このスクリプトを実行するコマンドは次のとおりです。
sudo nmap --script=http-title -p 8000 localhost > /home/labex/project/nmap_script_output.txt
このコマンドでは、一部の Nmap 操作に必要な場合があるため、sudo
を使用して管理者権限でコマンドを実行します。nmap
はメインコマンドで、--script=http-title
は Nmap に http-title
スクリプトを使用するよう指示します。-p 8000
は、HTTP サーバーが動作しているポート 8000 をターゲットにすることを指定します。localhost
はターゲットで、つまり自分自身のマシンでスキャンを実行しています。>
記号は、コマンドの出力を /home/labex/project/nmap_script_output.txt
ファイルにリダイレクトします。
コマンドの出力を確認しましょう。これは以下のコマンドを使用して行うことができます。
cat /home/labex/project/nmap_script_output.txt
cat
コマンドは、ファイルの内容を表示するために使用されます。このコマンドを実行すると、ウェブページのタイトルに関する情報を含む出力が表示されるはずです。出力は次のようになるかもしれません。
Starting Nmap 7.80 ( https://nmap.org ) at 2023-XX-XX XX:XX XXX
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000040s latency).
PORT STATE SERVICE
8000/tcp open http-alt
|_http-title: Directory listing for /
Nmap done: 1 IP address (1 host up) scanned in X.XX seconds
では、複数のスクリプトを使用してより包括的なスキャンを試してみましょう。「default」カテゴリには、ターゲットに関する有用な情報を提供する安全なスクリプトが含まれています。ポート 8000 の HTTP サーバーに対して「default」カテゴリのすべてのスクリプトを実行するには、以下のコマンドを使用します。
sudo nmap --script=default -p 8000 localhost > /home/labex/project/nmap_default_scripts.txt
このコマンドは前のコマンドと似ていますが、単一のスクリプトを指定する代わりに、Nmap に「default」カテゴリのすべてのスクリプトを実行するよう指示しています。
このスキャンの結果を調べましょう。これは再び cat
コマンドを使用して行うことができます。
cat /home/labex/project/nmap_default_scripts.txt
出力には、デフォルトで実行される様々な NSE スクリプトによって収集された、HTTP サーバーに関するより詳細な情報が含まれています。
最後に、特定のスクリプトについて詳しく学ぶために、スクリプトのヘルプ機能を探索しましょう。http-title
スクリプトについてもっと知りたい場合は、以下のコマンドを使用できます。
nmap --script-help=http-title
このコマンドは、http-title
スクリプトのドキュメントを表示します。ドキュメントには、スクリプトの目的、使用方法、および出力の形式が含まれています。特定のタスクで NSE を使用する際に、スクリプトのドキュメントを理解することは、スクリプトが何をするのか、そして正しく使用する方法を知るために不可欠です。