NmapはNetworkMapperの略で、ホストの検出とホストに関する詳細情報の収集に使用される無料のオープンソースネットワーク検出および偵察ツールです。 C、C ++、Pythonで記述され、1997年9月に最初にリリースされた、nmapは、ターゲットホストに関する詳細情報を明らかにし、潜在的な脆弱性を発掘するためにnmapに依存するサイバーセキュリティおよびデジタルフォレンジックの専門家にとって不可欠なツールになりました。 Nmapは、ネットワーク上のアクティブなホスト、開いているポート、OSとサービスの検出、ステルススキャンの実行などの情報を明らかにします。
このガイドでは、ホストシステムからできるだけ多くの情報を取得するために使用できる便利なNmapコマンドのいくつかに焦点を当てています。
nmapのインストール方法
nmapコマンドを使用するさまざまな方法を検討する前に、この便利なコマンドラインツールをインストールする方法を確認しましょう。 nmapをインストールするための普遍的で最も簡単な方法は、スナップパッケージを使用することです。スナップは、ライブラリと依存関係とともに出荷されるビルド済みのソフトウェアパッケージです。これらは、すべての主要なLinuxディストリビューションですぐに利用できます。スナップストアにはたくさんのスナップがあります。ただし、snapパッケージからNmapをインストールする前に、まずsnapdデーモンを有効にする必要があります。これにより、スナップパッケージをダウンロードしてインストールできるようになります。
スナップを使用してNmapをインストールするには、以下のコマンドを実行します。
$ sudo snap install nmap
または、Linuxディストリビューションの各ファミリに固有のパッケージマネージャーを使用してNmapをインストールすることもできます。
UbuntuとDebianの場合
Ubuntu / Debian / Mintベースのディストリビューションの場合、示されているようにAPTパッケージマネージャーを使用します。
$ sudo apt -y install nmap
CentOS 8 / RHEL 8 /Fedora22以降のバージョンの場合
CentOS 8 / RHEL8およびFedora22以降の場合は、dnfパッケージマネージャーを使用します。
$ sudo dnf -y install nmap
CentOS7およびRHEL7の場合
CentOS 7 / RHEL 7以前のバージョンでは、yumパッケージマネージャーを使用します。
$ sudo yum -y install nmap
Arch Linux/Manjaroの場合
Archベースのシステムの場合、図のようにpacmanパッケージマネージャーを使用します。
$ sudo pacman -S nmap
nmapのインストールについて見てきたので、次に進んでLinuxでの20のすばらしいnmapコマンドの例を見てみましょう
1)単一のホストをスキャンするためのNmapコマンド
基本的な形式では、nmapコマンドを使用して、引数を渡さずに単一のホストをスキャンできます。構文は次のとおりです。
$ nmap target-ip
例;
$ nmap 192.168.2.102
または、IPアドレスを指定する代わりに、次のようにドメイン名を指定することもできます。
$ nmap scanme.nmap.org
2)複数のホストをスキャンします
外出先で複数のホストをスキャンすることは、一度に複数のホストをスキャンする必要がある大規模なネットワークで特に便利です。これは、各ホストを個別にスキャンするのではなく、1つのコマンドでホストをスキャンする便利な方法です。たとえば、他の作業をしているときに、10個以上のホストまたはサブネット全体をスキャンできます。これにはさまざまな方法があります。
まず、図のようにスペースで区切った行に複数のIPアドレスまたはドメインを指定できます。
$ nmap 192.168.2.1 192.168.2.103
IPアドレスを完全に入力するのではなく、図のように末尾をコンマで区切ることができます。
$ nmap 192.168.2.1,102,103
また、ハイフンを使用してIPアドレスの範囲を指定できます。たとえば、次のコマンドは192.168.2.1から192.168.2.100までのホストをスキャンします
$ nmap 192.168.2.1-100
3)nmapを使用してサブネットをスキャンします
さらに、ワイルドカードを使用して、次のようにサブネット全体をスキャンできます。
$ nmap 192.168.2.* OR $ nmap 192.168.2.0/24
スキャンを絞り込み、サブネット内のライブホストのみを検出するには、図のように-sPオプションを使用します。
$ nmap -sP 192.168.2.*
4)詳細オプションを使用して詳細情報を取得する
nmapスキャン中により堅牢な出力を取得するには、-vオプションを使用します。このオプションは、スキャンの性質や検出された開いているポートなど、スキャンの詳細を出力します。
$ nmap -v 192.168.2.1
5)Nmapスキャンからホストを除外します
ある範囲のホストをスキャンする場合、スキャンから1つのホストを除外することを決定できます。これを実現するには、–excludeオプションを使用します。以下の例では、ホスト192.168.2.20をスキャンから除外しています。
$ nmap 192.168.2.0/24 --exclude 192.168.2.20
Nmapスキャンから複数のホストを除外するには、ファイルで除外するホストを指定し、次のようにコマンドをファイルにリンクします。
$ nmap 192.168.2.* --excludefile exclude.txt
上記のコマンドは、exclude.txtファイルに含まれるすべてのホストを除外します。
6)高速スキャンを実行します
名前が示すように、次のように-Fフラグを渡すことで、nmapを使用してはるかに高速なスキャンを実行できます。
$ nmap -F 173.82.202.201
ただし、免責事項–このスキャンでは、通常のスキャンよりも少ないポートが生成されます。
7)ネットワーク内のアクティブなホストをスキャンします
これは、pingスキャンのようなものです。サブネット内のアクティブなホストを検出します。アクティブなホストをスキャンするには、-snオプションに続けて、IPアドレスとサブネットを渡します。例:
$ nmap -sn 192.168.2.0/24
8)ファイルに含まれるホストをスキャンします
セグメント化されたネットワーク、特にVLANを使用しているネットワークの場合、異なるサブネットにホストがある可能性があります。それらをスキャンする簡単な方法は、テキストファイルでIPアドレスを定義し、-iLオプションを使用してファイルを引数として渡すことです。
$ nmap iL hosts.txt
これがホストファイルのサンプルです
$ cat hosts.txt 192.168.2.100 192.168.2.102 192.168.20.5-50
9)スキャンを実行してファイアウォールを検出します
ファイアウォールの検出は、脆弱性テストや倫理的なハッキングを実行するときに特に役立ちます。これにより、システム管理者は、ターゲットホストのファイアウォールが有効になっているかどうかを知ることができます。ファイアウォールのステータスを知るには、次のように-sAフラグを使用します。
$ nmap -sA 192.168.2.1
これにより、ACKスキャンが開始され、パケットがフィルタリングされずに通過できるかどうかが調べられます。 -nフラグを使用して、ターゲットホストでのDNS逆引き解決を防止します。
10)nmapを使用してOS検出を実行します
Nmapは、ターゲットシステムのOSまたはオペレーティングシステムに関する洞察、およびバージョン検出も提供できます。 OS検出の場合、図のように-Oオプションを渡します。 LinuxシステムでホストされているクラウドVPSをスキャンして、nmapが提供するものを確認します。
注: 通常のユーザーの場合、OSの検出にはsudo権限が必要なため、sudoコマンドを呼び出す必要があります。
$ sudo nmap -O 173.82.202.201
Nmapは、OSとそのバージョンを識別するために最善を尽くしますが、結果が常に正確な結果を表すとは限りません。
11)ポートスキャンを実行します
nmapツールの重要なタスクの1つは、ホストシステムのポートをスキャンすることです。次のように、-pフラグに続けてポート番号を使用して、追跡に切り込み、スキャンするポートを指定できます。
$ nmap -p 80 173.82.202.201
さらに、次のようにコンマを使用して複数のポートを区切ることにより、複数のポートをスキャンできます。
$ nmap -p 80,443 192.168.2.1
スキャンするポートの範囲をハイフンで区切って定義することもできます。
$ nmap -p 80-443 192.168.2.1
12)TCP/UDPポートをスキャンします
TCPまたはUDPのいずれかであるスキャンポートに絞り込むことができます。 TCPポートをスキャンするには、図のように-sTオプションを使用します。
$ nmap -sT 173.82.202.201
ポート80などの特定のTCPポートについては、次のコマンドを実行します。
$ nmap -p T:80 173.82.202.201
UDPポートの場合は、-sUオプションを使用します。
$ nmap -sU 173.82.202.201
ポート69などの特定のUDPポートについては、次を実行します。
$ nmap -p U:69 173.82.202.201
13)サービスバージョンの検出
考えられる脆弱性をスキャンするときは、実行中のサービスとそのバージョン、およびそれらがリッスンしているポートを検出することが重要です。これにより、攻撃者がシステムを危険にさらすためにどのサービスを利用できるかを知ることができます。サービスとポートのバージョンに関する知識により、サービスを最新バージョンに更新するか、完全にアンインストールするかを決定できます。
サービスとポート情報を収集するには、-sVフラグを使用します。
$ nmap -sV 173.82.202.201
14)ステルススキャンを実行します
nmapスキャンは通常「ノイズが多く」、フットプリントを残します。これは、堅牢なIDS(侵入検知システム)によってフラグが付けられ、最終的には追跡されます。匿名を維持するには、-sSオプションを使用してステルススキャンを実行できます。
$ nmap -sS 173.82.202.201
15)サポートされているIPプロトコルを決定する
-sOフラグを使用して、ターゲットシステム(ICMP、TCP、UDPなど)でサポートされているプロトコルに関する情報を取得できます。
$ sudo nmap -sO 173.82.202.201
16)積極的なスキャンを実行します
-Aオプションを使用すると、nmapは、開いているポートや実行中のサービスのバージョン、OS検出、さらにはターゲットホストのtracerouteを実行するなど、非常に詳細なスキャン結果を提供します。
$ nmap -A 173.82.202.201
17)nmap出力をファイルに保存します
デフォルトでは、nmapはスキャン結果を端末に出力します。ただし、都合の良いときにさらに分析するために結果をテキストファイルに保存する必要がある場合は、図のようにリダイレクト演算子を使用できます。
$ nmap 173.82.202.201 > scanme.txt
スキャン結果が保存されたことを確認するには、図のようにcatコマンドを使用します。
$ cat scanme.txt
さらに、-oNオプションを渡してから、出力ファイルとホストを渡すことができます。
$ nmap -oN scanme.txt scanme.nmap.org
18)ホストのインターフェースとルートを印刷します
場合によっては、デバッグのためにホストシステムのインターフェースとルートを見つける必要があるかもしれません。これは、–iflistオプションを渡すことで簡単に実現できます。
$ nmap --iflist
19)nmapのヘルプを取得する
追加のnmapオプションに対する好奇心を満足させるには、-hフラグを使用します。これは、nmapコマンドのヘルプを取得することと同義です。
$ nmap -h
20)nmapのバージョンを確認する
使用しているnmapのバージョンを確認するには、次のコマンドを実行します。
$ nmap -v
これらは、さまざまなホストシステムを列挙するために使用できる基本的なNmapコマンドのほんの20個です。ターゲットシステムに関する詳細を取得するために使用できるnmapオプションはまだたくさんありますが、ここにリストした例は、開始するのに適した場所です。このガイドが、nmapツールとさまざまなコマンドの例を理解するのに役立つことを願っています。
また読む :Linuxでの9つのteeコマンドの例