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.txt
host_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.1
output.txt
にスキャン結果が
グレップしやすい形式で保存されます。
これをgrep
コマンドで解析できます。
grep "open" output.txt
-oX: XML形式でスキャン結果を出力
-oX
オプションは、
スキャン結果をXML形式で出力します。
XMLは構造化されたデータフォーマットであり、
他のツールやスクリプトがこのデータを解析したり、
再利用したりするのに適しています。
複雑なスキャン結果を
システム間で共有する際や、
後でデータをプログラムで処理する場合に便利です。
nmap -oX output.xml 192.168.1.1
output.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.1
127.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.com
4. 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を使いこなすことで、
ネットワークの安全性を高め、
セキュリティ対策を強化することができます。