nmap(Network Mapper)は、
ネットワークセキュリティ診断や
トラブルシューティングに欠かせないツールです。
本記事では、
nmapの基本的なオプションの使い方と、
視覚的に操作できるzenmapについて解説します。
初心者でも理解できるように、わかりやすく説明していきます。
nmapの基本
nmap(Network Mapper)は、
ネットワークセキュリティの世界で
非常に広く使われているツールです。
主な目的は、
ネットワーク内のホストやサービスを探索し、
開いているポートや使用中のサービスの種類を確認することです。
このような情報は、
セキュリティテストやネットワーク管理にとって非常に重要です。
ポイント:
- nmapは、
ネットワークに接続されたデバイスの調査や
セキュリティ診断を行うツールです。 - 特にポートスキャンが有名で、
外部からアクセス可能なポートを確認し、
どのサービスが動作しているかを調べます。
具体例:
たとえば、
Webサーバーを運営している場合、
外部からアクセスできるのは通常
ポート80(HTTP)や443(HTTPS)です。
nmapを使うことで、
そのサーバーで他に開いている不要なポートがないか確認できます。
これはセキュリティ対策として非常に重要です。
基本的なnmapのコマンド
nmapの使い方はシンプルで、
基本的には以下の形式でコマンドを実行します。
nmap [オプション] [ターゲット]
最もシンプルな例として、
以下のようなコマンドを実行してみましょう。
nmap 192.168.1.1
このコマンドは、
IPアドレス「192.168.1.1」のホストに対して、
どのポートが開いているかを確認します。
ポイント:
- ターゲット指定
IPアドレスやホスト名を指定します。
範囲指定(例:192.168.1.0/24)も可能です。 - 結果
スキャン結果には、
開いているポートや実行されているサービスが表示されます。
基本的なスキャン例
nmapは複数のスキャン方法を提供していますが、
もっとも一般的なのはTCP SYNスキャンです。
これは最も高速で効率的な方法の一つです。
nmap -sS 192.168.1.1
このコマンドは、
ターゲットホストのポートをスキャンし、
応答のあったポートを表示します。
セキュリティチェックや
ネットワーク構成の確認に非常に役立ちます。
NMAPオプションと使用例
nmapには、多数のオプションがあり、
これを使いこなすことで、
特定の調査を効率的に行うことができます。
ここでは、
よく使われるオプションとその使用例を紹介します。
-v オプション:詳細表示
-v オプションは、
スキャンの進捗や詳細な情報を表示します。
スキャン結果を確認するだけでなく、
進行状況を知りたい場合に便利です。
nmap -v 192.168.1.1
このオプションを使うことで、
スキャンの進行状況をリアルタイムで確認できるため、
大規模なネットワークを調査する際にも役立ちます。
-p オプション:ポート指定
-p オプションを使うことで、
特定のポートを指定してスキャンできます。
すべてのポートをスキャンするのではなく、
特定の範囲に絞ることで効率よく調査ができます。
nmap -p 80,443 192.168.1.1
この例では、
80番(HTTP)と443番(HTTPS)の
ポートだけをスキャンしています。
Webサーバーのセキュリティチェックに非常に便利です。
-A オプション:詳細情報の取得
-A オプションは、
OS検出やサービスバージョンの特定、
スクリプトによる高度なスキャンを行います。
非常に多くの情報が得られるため、
詳細なセキュリティ診断をしたいときに便利です。
nmap -A 192.168.1.1
このコマンドは、
ターゲットホストがどのOSを使用しているか、
そして各サービスのバージョン情報など、
より詳細な情報を提供します。
-sS: TCP SYNスキャン
-sSオプションは、
nmapで最もよく使われるスキャン方法で、
TCP SYNスキャンを実行します。
これにより、
ターゲットホストのポートが開いているかどうかを確認し、
実際に接続を確立することなく迅速なスキャンが可能です。
nmap -sS 192.168.1.1
このコマンドを実行すると、
ターゲットIPアドレスに対して
「ハーフオープン」スキャンが実行され、
開いているポートが表示されます。
-sU: UDPスキャン
nmapでUDPスキャンを実行する際は、-sUオプションを使用します。
これは、UDPポートに対してパケットを送信し、
応答があるかどうかを確認することで、
ポートが開いているか、もしくはフィルタリングされているかを判断します。
nmap -sU 192.168.1.1
このコマンドは、
ターゲットIPアドレスの「192.168.1.1」に
対してUDPポートスキャンを実行します。
TCPスキャンよりも時間がかかることが多いですが、
これにより、UDPで動作するサービスが見つかります。
UDPとは?
UDPは、TCPとは異なり、
接続の確立やエラーチェックが行われない
「接続レス(コネクションレス)」プロトコルです。
これにより、データの転送が非常に高速で、
リアルタイムアプリケーション
(VoIP、DNS、オンラインゲームなど)によく使われます。
- 高速だが信頼性は低い
UDPはエラーチェックや
再送制御を行わないため、
高速で通信できるが、信頼性が低い。 - 用途
VoIPやDNSクエリなど、
リアルタイム性が重要なアプリケーションに使用される。
UDPスキャンの特性
UDPスキャンは、TCPスキャンと異なり、
応答がない場合に「ポートが開いている」可能性を
示すことが多いです。
なぜなら、UDPは応答が不要なため、
何も返ってこない場合でもポートが
開いている可能性があります。
長所:
- UDPベースのサービス
(DNS、SNMP、DHCPなど)を検出することができる。 - TCPスキャンでは
検出できないポートを確認できる。
短所:
- フィルタリングされたポートは
「open|filtered」と表示され、
正確な状態を把握しにくい。 - スキャンが遅い。
応答を待つ時間が長いため、
大規模なスキャンには時間がかかることがある。
UDPスキャンを高速化するオプション
UDPスキャンは時間がかかるため、
nmapにはスキャン速度を改善するための
オプションが用意されています。
以下のオプションを使用すると、
スキャン時間を短縮できます。
-Tオプション(Timing Templates)
-Tオプションを使ってスキャン速度を調整できます。-T4を指定すると、スキャンの速度が速くなりますが、
ターゲットに負荷がかかることがあるため、注意が必要です。
nmap -sU -T4 192.168.1.1-Tオプション詳細
-T オプションには、
0から5までのテンプレートがあり、
それぞれ異なるスキャン速度を意味しています。
具体的には、以下の通りです
-T0(Paranoid)
非常に遅いスキャン。
スキャン対象に検出されないように、
パケットを非常にゆっくりと送信します。
IDS(侵入検知システム)を避けたい場合に使用されます。-T1(Sneaky)
Paranoidより少し早いが、まだ非常にゆっくりとしたスキャン。-T2(Polite)
スキャン対象に負担をかけないように、
パケットを遅めに送信。
安定したスキャンで、スキャン対象に余裕をもたせる場合に使用。-T3(Normal)
デフォルト設定で、
ほとんどの環境で安定して動作するタイミング。-T4(Aggressive)
高速なスキャン。スキャン速度を優先するが、
帯域幅を多く使うため、スキャン対象に負担をかけやすい。-T5(Insane)
非常に高速なスキャン。
ネットワークが高速で、
スキャン対象が少ない場合に使用。
ただし、ネットワーク負荷が非常に高くなる。
- 高負荷を避けたい場合(安定性を重視):
-T2または-T3- 例えば、スキャン対象に負担をかけたくない場合や、リソースに制限のあるネットワークでスキャンを実行する場合は、
-T2が適しています。
- 例えば、スキャン対象に負担をかけたくない場合や、リソースに制限のあるネットワークでスキャンを実行する場合は、
- 通常のスキャン(標準的な速度と負荷):
-T3- 特別な要件がない限り、
-T3が最も安定して使用できます。
- 特別な要件がない限り、
- 速度を優先する場合(負荷が許容される環境):
-T4または-T5- スキャン速度が重要で、ネットワークが高速かつ十分に余裕がある場合は、
-T4や-T5を使用することでスキャンを高速化できますが、スキャン対象のホストに負荷がかかる点に注意が必要です。
- スキャン速度が重要で、ネットワークが高速かつ十分に余裕がある場合は、
–min-rateオプション
--min-rateオプションを使うと、
1秒間に送信するパケットの最低速度を指定できます。
これにより、スキャンをさらに速くすることが可能です。
nmap -sU --min-rate 1000 192.168.1.1-sSU: TCPとUDPの併用スキャン
nmapの便利な機能の一つは、
TCPスキャンとUDPスキャンを
同時に実行できることです。
-sS(TCP SYNスキャン)と-sU(UDPスキャン)を組み合わせることで、
ネットワーク全体を網羅的に調査することができます。
nmap -sSU 192.168.1.1
このコマンドは、
TCPとUDPの両方のスキャンを同時に実行し、
ターゲットホストのセキュリティを包括的にチェックします。
特に、セキュリティ監査や侵入テストを行う際に有効です。
-iL: ファイルからホストリストを読み込んでスキャンを実行
-iLオプションは、
スキャン対象のホストリストを
ファイルから読み込むために使用します。
ファイル内に書かれたIPアドレスやホスト名を、
Nmapがスキャン対象として扱います。
手動で大量のホストを入力する代わりに、
あらかじめホストリストを作成しておくことで
効率的にスキャンが可能です。
nmap -iL host_list.txthost_list.txtには、
各行にホスト名やIPアドレスを記載します。
192.168.1.1
example.com
10.0.0.1-sL: ホストリストを表示するが、スキャンは実行しない
-sLオプションは、
実際のスキャンを行わずに、
指定されたホストやIPアドレスのリストを
表示するためのものです。
ホスト名解決が行われるので、
名前解決の確認やスキャン対象の確認に使用されますが、
ポートスキャンやその他のスキャンは実行されません。
nmap -sL 192.168.1.1-10これを実行すると、192.168.1.1から192.168.1.10までの
ホストリストが表示され、
名前解決結果が表示されますが、
実際のスキャンは行われません。
-oG: グレップしやすい形式でスキャン結果を出力
-oGオプションは、
Nmapのスキャン結果を
グレップ可能な形式で
出力するためのものです。
この形式では、
結果が簡潔に表示されるため、
スクリプトや手動での解析がしやすくなります。
grepコマンドでホストやポートに
関する特定の情報を抽出するのに便利です。
nmap -oG output.txt 192.168.1.1output.txtにスキャン結果が
グレップしやすい形式で保存されます。
これをgrepコマンドで解析できます。
grep "open" output.txt-oX: XML形式でスキャン結果を出力
-oXオプションは、
スキャン結果をXML形式で出力します。
XMLは構造化されたデータフォーマットであり、
他のツールやスクリプトがこのデータを解析したり、
再利用したりするのに適しています。
複雑なスキャン結果を
システム間で共有する際や、
後でデータをプログラムで処理する場合に便利です。
nmap -oX output.xml 192.168.1.1output.xmlにスキャン結果が
XML形式で保存されます。
このファイルは、
WebブラウザやXML解析ツールで
簡単に読み取ることができます。
-Pn: ホストの存否確認(Pingスキャン)を行わない
nmapの-Pnオプションは、
ターゲットホストに対して
「ホストの存否確認(Pingスキャン)を行わない」という設定を指します。
通常、nmapはターゲットが
生きているか(応答があるか)を確認するために、
Ping(ICMPリクエスト)やポートスキャンを使って
ホストの応答を確認します。
しかし、-Pnオプションを指定すると、
この確認をスキップして、
ホストが応答しない場合でもスキャンを続行します。
例えば、
ファイアウォールでPing(ICMPリクエスト)が
ブロックされている場合でも、-Pnを使うことでポートスキャンなどを強制的に実行できます。
nmap -Pn <ターゲットIP>スキャン結果の解釈
- open
ポートが開いており、
応答があったことを意味します。 - open|filtered
ポートが開いているか、
またはフィルタリングされている可能性があるが、
正確に判断できなかった場合に表示されます。 - filtered
ポートがフィルタリングされており、
応答がなかったことを意味します。
ポートとは?
ネットワークに関する話題で
「ポート」という言葉を耳にすることがありますが、
これはネットワーク通信において
非常に重要な役割を果たす要素です。
特にセキュリティやネットワークの管理においては、
ポートの監視や管理が不可欠です。
ポートの基本的な概念
ポートは、
データがネットワーク上で
やり取りされる際に使用される
仮想的なドアのようなものです。
一つのIPアドレスに対して、
複数のポートが存在し、
それぞれが異なる通信を処理します。
たとえば、
WebブラウザでWebページにアクセスする際には、
通常「80番ポート」や「443番ポート」が使われます。
ポイント:
- IPアドレスは建物の住所のようなもので、
ネットワーク上のデバイスを特定するためのもの。 - ポートは、
その住所内の部屋番号に相当し、
異なるサービスや通信を処理するために使われます。
ポート番号の例
- 80番ポート
HTTP(Webページの閲覧) - 443番ポート
HTTPS(暗号化されたWebページの閲覧) - 22番ポート
SSH(リモートでのサーバー操作)
これらのポートが正しく開いていないと、
対応するサービスにアクセスできなくなります。
逆に、
不要なポートが開いていると、
セキュリティリスクにつながることもあるため、
適切な管理が求められます。
自分自身にnmapを使ってみる
nmapを使う際に最も簡単な実験は、
自分のPCやローカルネットワーク上の
デバイスに対してスキャンを実行してみることです。
これにより、開いているポートを確認し、
自分のネットワーク環境がどのような状態かを知ることができます。
nmapの基本コマンド
まず、
自分のPCに対してnmapを使ってみましょう。
以下のようにコマンドを実行します。
nmap 127.0.0.1127.0.0.1は「ローカルホスト」と呼ばれ、
自分のPCを指す特別なIPアドレスです。
このコマンドを実行すると、
現在自分のPC上で開いているポートを確認できます。
結果の解釈
スキャン結果には、
以下のような情報が表示されます。
PORT STATE SERVICE
22/tcp open ssh
80/tcp closed http- PORT
スキャンされたポート番号と
プロトコル(TCP/UDP)。 - STATE
ポートの状態。
「open」はポートが開いており、
「closed」は閉じています。 - SERVICE
ポートで実行されているサービス名。
たとえば、22/tcpならSSH、80/tcpならHTTP(Web)サービスを指します。
応用例
全ポートスキャン
さらに、
以下のようなコマンドを使って、
より詳細なスキャンを行うことができます。
nmap -p- 127.0.0.1
このコマンドでは、
全ポートをスキャンし、
開いているポートを表示します。
自分のネットワークで
余計なポートが開いていないか確認するのに便利です。
-Oオプション
Nmapの-Oオプションを使用すると、
ターゲットデバイスのOSを特定するために、
TCP/IPスタックの特徴的な挙動を分析する
「OSフィンガープリンティング」を実行します。
このプロセスでは、Nmapがターゲットに特定のプローブを送信し、
それに対する応答を基にOSを推定します。
基本的な使い方
OS検出を行うための基本的なコマンドは以下の通りです
nmap -O [ターゲットIPアドレス]これを実行すると、
Nmapはターゲットに対してスキャンを行い、
応答のパターンを分析してOSを特定します。
結果として、例えば以下のような出力が得られることがあります
OS details: Linux 3.10 - 3.13 (likely Ubuntu)
この例では、ターゲットデバイスが
UbuntuのLinuxカーネルバージョン3.10〜3.13を
使用していることが示されています。
OS推定精度を向上させるためのオプション
NmapのOS検出は強力ですが、
特にファイアウォールやフィルタリングが行われているネットワーク環境では、
100%正確にOSを特定できない場合があります。
そのため、OS推定の精度を向上させるために
以下の追加オプションを使うことが推奨されます。
--osscan-limit
反応のないホストに対してOS検出を試みないようにする。
無駄なスキャン時間を省きます。
codenmap -O --osscan-limit [ターゲットIPアドレス]--osscan-guess
Nmapが信頼できるOSを特定できない場合、
最も近い候補を推測します。
推測精度を向上させるために使うことができますが、
必ずしも正確ではない可能性があるため注意が必要です。nmap -O --osscan-guess [ターゲットIPアドレス]
OS検出の結果を活用する
NmapがOS検出を行い結果を得ると、
その情報を以下のような場面で役立てることができます。
- ネットワーク管理
ネットワーク内のすべてのデバイスのOSを把握することで、管理しやすくなります。
特に、OSによっては特定のセキュリティリスクがあるため、早めの対応が可能です。 - セキュリティ監査
特定のOSは、既知の脆弱性や攻撃のターゲットになりやすいため、
どのOSが使用されているかを確認することで、
どのような脆弱性対策を施すべきか判断できます。 - 侵入テスト(ペネトレーションテスト)
OS情報は、ペネトレーションテストを実行する際に重要です。
特定のOSに合わせた攻撃手法やツールを使用することで、
効率的にテストを行うことができます。
OS検出の精度向上のための注意点
NmapのOSフィンガープリンティング機能は非常に便利ですが、
いくつかの要因によって精度が低下する場合があります。
- ファイアウォールやフィルタリング
ターゲットがファイアウォールで保護されている場合、
Nmapが必要な情報を得ることが難しくなり、
OS検出が不正確になることがあります。
この場合、検出結果が曖昧になることが多いです。 - アップデートやカスタムOS
OSが頻繁にアップデートされている場合や、
カスタムOSが使用されている場合、
Nmapのデータベースにその情報がないことがあり、
正確に検出できないことがあります。 - 多層ネットワーク構成
複数のルーターやスイッチを介したネットワーク構成の場合、
ターゲットホストからの応答が変化し、OSの特定が難しくなることがあります。
-sT(TCPコネクトスキャン)
概要
-sTオプションは「TCPコネクトスキャン」を実行するためのオプションです。このスキャンは、オペレーティングシステムの標準機能を利用してターゲットのポートに直接TCP接続を行い、開いているポートを調べます。
特徴
- 実行方法:TCP接続の際にOSが通常のコネクションを確立し、3ウェイハンドシェイク(SYN、SYN-ACK、ACK)を完了して通信します。
- スキャン対象:開いているポートのみを特定するため、ファイアウォールやアクセス制限がかかっている場合にもスキャンが行えます。
- 検出可能性:このスキャンはターゲットのシステムにログが残るため、検出されやすい方法です。
使用例
nmap -sT 192.168.1.1
メリットとデメリット
- メリット:ルート権限が不要で、一般ユーザーとしても実行可能です。
- デメリット:検出されやすく、スキャンの内容がログに残ります。
-sV(サービスのバージョン情報)
-sVオプションは、ターゲットホストのポートで稼働しているサービスを特定し、そのバージョン情報を取得します。- 用途:
- 開いているポートの詳細を知る。
- サービスの種類やバージョンを特定して、脆弱性の可能性を評価する。
- 実行方法
nmap -sV [ターゲットIPまたはホスト名]
動作
- ポートスキャン:
- 最初に、
nmapが開いているポートを特定します。 - デフォルトでは、1000個の一般的なポートをスキャンします。
- 最初に、
- サービスバージョン検出:
- スキャンで開いているポートを見つけた場合、そのポートで動作しているサービスを識別し、バージョンを特定します。
- バナー情報やプロトコル固有の応答を解析して詳細を取得します。
基本的な使用例
nmap -sV 192.168.1.1
出力例:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
443/tcp open https Apache httpd 2.4.29- 22/tcp: OpenSSH が実行されており、バージョンは 7.6p1。
- 80/tcp と 443/tcp: Apache HTTP サーバーの詳細情報が表示されています。
活用例
- 脆弱性スキャンの事前調査:
- 使用中のソフトウェアのバージョンを確認し、脆弱性データベースと突き合わせて評価する。
- ネットワーク管理:
- サービスが正しいバージョンで稼働しているかを確認する。
- 侵入テスト:
- 古いバージョンのソフトウェアを特定し、攻撃対象となる可能性のあるシステムを見つける。
注意点
- サービスのバージョン検出に時間がかかる場合がある:
- 大規模なネットワークでの使用時は時間がかかることがある。
- 必要に応じてポート範囲を絞る(例:
-pオプション)。
- 検出の正確性:
- 一部のサービスはバージョン情報を隠す設定になっている場合があり、完全な情報を取得できないことがあります。
- 利用時の法的注意:
- ターゲットのスキャンは正当な理由や許可が必要です。不正なスキャンは法律違反になる可能性があります。
-sX(Xmasスキャン)
概要
-sXオプションは「Xmasスキャン」と呼ばれるスキャンを行います。これは、TCPパケットの各種フラグ(FIN、URG、PUSH)を同時に立てたパケットを送信して、応答によりポートの状態を判別します。
特徴
- スキャン方法:Xmasスキャンでは「FIN」「URG」「PUSH」のフラグを立てたTCPパケットを送信し、応答がない場合はポートが開いていると判断します。特定の応答が返ってきた場合は、ポートが閉じていると判断されます。
- 対象環境:特にUNIX系システムで有効なスキャンで、Windows系では信頼性が低いため注意が必要です。
- ステルス性:通常の3ウェイハンドシェイクを行わず、パケットだけを送信するため、ステルス性が高く検出されにくいスキャン方法とされています。
使用例
nmap -sX 192.168.1.1
メリットとデメリット
- メリット:検出されにくいスキャン方法で、UNIX系システムに対して有効です。
- デメリット:Windows環境では効果が低く、信頼性が劣ります。
-scriptオプションの基本的な使い方
-scriptオプションは、特定のスクリプトまたはスクリプト群を指定して、nmapスキャンを実行するためのオプションです。指定の方法は以下の通りです。
nmap -script=<script-name> <target>例:HTTPサービスに関する情報を収集するhttp-titleスクリプトを実行する場合
nmap -script=http-title example.com
この例では、ターゲット(ここではexample.com)のHTTPサーバーのタイトルを取得するhttp-titleスクリプトを使用しています。
スクリプトのカテゴリー
NSEスクリプトには、目的に応じてさまざまなカテゴリに分かれており、主なカテゴリは以下の通りです。
- auth:認証に関するスクリプト(例:
ftp-anonで匿名FTPアクセスの確認) - default:通常のスキャンでよく使われる基本スクリプト(例:
http-titleなど) - discovery:ネットワークの追加情報を発見するスクリプト(例:
dns-bruteでDNSブートフォース) - dos:DoS攻撃の脆弱性を確認するスクリプト(例:
sip-methodsでSIPサーバーのDoS確認) - exploit:脆弱性の悪用を試みるスクリプト(例:
http-shellshockでShellshock確認) - external:外部リソースを使用するスクリプト
- fuzzer:入力をファジングして未知の脆弱性を発見するスクリプト
- intrusive:ネットワークに負荷をかける可能性があるスクリプト
- malware:マルウェアの痕跡を調べるスクリプト
- safe:安全に使用できるスクリプト
- version:サービスのバージョン情報を取得するスクリプト
- vuln:脆弱性を調査するスクリプト(例:
ssl-heartbleedでHeartbleed脆弱性確認)
例:vulnカテゴリーのスクリプトで脆弱性を調査
nmap -script=vuln example.com
この例では、example.comの一般的な脆弱性があるかを確認します。
よく使われるスクリプトと使用例
nmapには数百種類のスクリプトが用意されていますが、よく使われるものを以下に紹介します。
1. http-title
Webサーバーのタイトルを取得します。基本的な情報収集に役立ちます。
nmap -script=http-title example.com
2. ftp-anon
FTPサーバーが匿名ログインを許可しているかを確認します。
nmap -script=ftp-anon example.com
3. ssl-heartbleed
Heartbleed脆弱性(OpenSSLの脆弱性)があるかを調べます。
nmap -script=ssl-heartbleed example.com4. smb-os-discovery
ターゲットのSMBサービスのOSバージョンを調査します。特にWindows環境の脆弱性調査に役立ちます。
nmap -script=smb-os-discovery example.com
5. dns-brute
DNSサーバーに対してサブドメインのブルートフォース攻撃を行い、隠れたサブドメインの発見を試みます。
nmap -script=dns-brute example.com
6. http-slowloris-check
ターゲットがSlowloris攻撃(HTTPリクエストを利用したDoS攻撃)に脆弱であるかを確認します。
nmap -script=http-slowloris-check example.com
7. banner
さまざまなサービスのバナー(サービス名やバージョン情報)を取得します。
nmap -script=banner example.com
複数スクリプトの指定
nmapでは、複数のスクリプトを同時に指定して実行することも可能です。スクリプト名をカンマで区切って指定します。
例:http-titleとssl-heartbleedを同時に実行
nmap -script=http-title,ssl-heartbleed example.com
また、スクリプトのカテゴリを組み合わせて指定することも可能です。
例:defaultとvulnカテゴリを組み合わせてスキャン
nmap -script="default,vuln" example.comカスタムスクリプトの作成
NSEスクリプトはLuaで記述されており、独自のカスタムスクリプトを作成して実行することができます。これにより、特定の要件に合わせた診断や監査を自動化することが可能です。
カスタムスクリプトの実行
カスタムスクリプトを作成したら、そのスクリプトが保存されたディレクトリを指定して実行します。
nmap -script /path/to/custom-script.nse <target>この方法により、nmapの基本的な機能に加えて、特定の条件やターゲットに合わせた診断が可能となります。
スクリプトのパラメータ指定
NSEスクリプトには、特定のパラメータを指定して実行するものもあります。例えば、http-slowlorisスクリプトは、最大接続数などのパラメータを指定して実行できます。
例:http-slowlorisの最大接続数を設定して実行
nmap -script=http-slowloris -script-args http-slowloris.max_connections=100 example.com
パラメータの指定は、-script-argsオプションを使用し、key=value形式で指定します。これにより、スクリプトの動作を柔軟に調整できます。
注意点
-scriptオプションを使用する際には、次の点に注意が必要です。
- スクリプトの負荷:特に
intrusiveカテゴリのスクリプトは、ネットワークやターゲットに負荷をかける可能性があるため、使用には注意が必要です。 - 法的な配慮:スクリプトの内容によっては、ターゲットに対する攻撃と見なされる場合があります。必ず許可を得た範囲で実行してください。
- スクリプトの更新:nmapスクリプトは随時更新されています。最新版を使用することで、より精度の高いスキャンが可能になります。
-nオプション
スキャン時に DNS解決を無効化する ためのオプションです。
通常、nmap はスキャン対象のIPアドレスを取得すると、対応するホスト名(リバースDNSルックアップ)を試みますが、-n オプションを使用するとこの動作をスキップします。
-n オプションの詳細
- 動作: DNS解決を無効にすることで、スキャン対象のIPアドレスだけをそのまま扱います。
- 主な効果:
- スキャン速度が向上:
- DNS解決には時間がかかるため、これをスキップするとスキャンが速くなります。
- 正確性の向上:
- 特定のネットワークでDNS設定が不完全または誤っている場合、誤ったホスト名が返されることがあります。これを防ぐことで、正確なスキャンが可能。
- スキャン速度が向上:
使用例
通常のスキャン
以下のコマンドを実行すると、対象のIPアドレスのホスト名を取得しようとします
nmap 192.168.1.1出力例(ホスト名が解決される場合)
Nmap scan report for my-router.local (192.168.1.1)
Host is up (0.0023s latency).-n オプションを使用
DNS解決をスキップする場合:
nmap -n 192.168.1.1出力例(IPアドレスだけが表示される)
Nmap scan report for 192.168.1.1
Host is up (0.0023s latency).-n を使用する場面
- スキャン速度を上げたい場合:
- 大規模なネットワークスキャンを行う際に、DNS解決を行わないことで時間を短縮。
- DNS設定が不明または信頼できない場合:
- 例えば、社内ネットワークの一部でDNS設定が未設定または誤っている場合。
- ターゲットのプライバシーを保護したい場合:
- スキャン中に余分なDNSトラフィックを発生させたくない場合。
- IPアドレスのみを扱う場合:
- ホスト名が不要な場面や、スクリプトで処理を簡潔にしたい場合。
注意点
- ホスト名が必要な場合は使わない:
-nを使用すると、ホスト名が取得されないため、スキャン結果にホスト名を含めたい場合には適しません。
- DNS情報を確認したい場合には無効:
- ホスト名やDNS設定のトラブルシューティングを行う際には、DNS解決を有効にしておく必要があります。
zenmapとは?
zenmapは、
nmapのGUI版であり、
初心者でも簡単にnmapの強力な機能を
利用できるツールです。
コマンドライン操作が苦手な方や
視覚的にスキャン結果を確認したい方にとって、
zenmapは理想的なツールとなります。
zenmapの特徴
- 視覚的なインターフェース
直感的な操作が可能で、
スキャン対象のホストや
ポートの状態を視覚的に確認できます。 - スキャンプロファイルの設定
事前に設定したスキャンプロファイルを使って、
複雑なコマンドを入力せずにスキャンを実行できます。 - 結果のビジュアル化
スキャン結果がグラフィカルに表示され、
ホストやポートの状態を一目で確認できます。
zenmapの基本的な使い方
- ターゲットの指定
ターゲットとなるIPアドレスや
ホスト名を入力します。 - スキャンプロファイルの選択
実行したいスキャンの種類
(ポートスキャン、OS検出など)を選択します。 - スキャン実行と結果確認
スキャンが完了すると、
結果がグラフィカルに表示され、
開いているポートや
実行中のサービスが視覚的に確認できます。
初心者でも簡単に使えるため、
nmapを初めて使う方に特におすすめです。
まとめ
nmapはネットワークセキュリティにおいて
非常に強力なツールで、特定のポートやサービス、
OS情報を効率よく調査することができます。
また、zenmapを使うことで、
コマンドラインが苦手な方でも視覚的に操作しやすくなり、
スキャン結果を直感的に把握できるのが魅力です。
まずは基本的なオプションやスキャン方法を試し、
徐々に高度な機能やオプションを使いこなしていきましょう。
nmapやzenmapを使いこなすことで、
ネットワークの安全性を高め、
セキュリティ対策を強化することができます。






