Nmapは、セキュリティ監査と侵入テストのための強力なネットワークスキャンツールです。これは、ネットワーク管理者がネットワーク接続の問題とポートスキャンのトラブルシューティングに使用する重要なツールの1つです。
Nmapは、Macアドレス、OSタイプ、サービスバージョンなども検出できます。
この記事では、 nmap
の使用方法の基本について説明します。 さまざまなネットワークタスクを実行するコマンド。
Nmapのインストール#
Nmapは、すべての主要なオペレーティングシステムにインストールできるマルチプラットフォームプログラムです。当初はLinux専用ツールとしてリリースされ、その後BSD、Windows、macOSなどの他のシステムに移植されました。
コマンドラインよりもGUIを使用する場合、NmapにはZenmapと呼ばれるグラフィカルユーザーインターフェイスもあります。
公式のバイナリパッケージは、Nmapダウンロードページからダウンロードできます。
インストール手順は簡単で、オペレーティングシステムによって異なります。
UbuntuおよびDebianへのNmapのインストール#
Nmapは、デフォルトのUbuntuおよびDebianリポジトリから利用できます。インストールするには、次のコマンドを実行します:
sudo apt update
sudo apt install nmap
CentOSおよびFedoraへのNmapのインストール#
CentOSおよびその他のRedHat派生ディストリビューションで実行:
sudo dnf install nmap
macOSへのNmapのインストール#
macOSユーザーは、NmapサイトまたはHomebrewから「.dmg」インストールパッケージをダウンロードすることでNmapをインストールできます。
brew install nmap
WindowsへのNmapのインストール#
NmapのWindowsバージョンにはいくつかの制限があり、一般的にUNIXバージョンよりも少し遅くなります。
WindowsにNmapをインストールする最も簡単なオプションは、自己インストールexeファイルをダウンロードして実行することです。
WindowsでNmapを実行するには、コマンドラインから、またはZenmapプログラムを起動します。 WindowsでNmapを使用する方法の詳細については、インストール後の使用手順を確認してください。
Nmapの使用#
Nmapは通常、ネットワークセキュリティの監査、ネットワークマッピング、開いているポートの特定、オンラインデバイスの検索に使用されます。
nmap
の簡略化された構文 コマンドは次のとおりです:
nmap [Options] [Target...]
Nmapを使用する最も基本的な例は、オプションを指定せずに単一のターゲットを標準ユーザーとしてスキャンすることです。
nmap scanme.nmap.org
生のパケット権限を持たない非rootユーザーとして呼び出された場合、 nmap
TCP接続スキャンを実行します。 ( -sT
)非特権モードではデフォルトでオンになっています。
スキャンに関する基本情報や、開いているTCPポートとフィルタリングされたTCPポートのリストなど、出力は次のようになります。
Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-16 20:19 CET
Nmap scan report for cast.lan (192.168.10.121)
Host is up (0.048s latency).
Not shown: 981 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
80/tcp open http
110/tcp open pop3
143/tcp open imap
443/tcp open https
587/tcp open submission
993/tcp open imaps
995/tcp open pop3s
1025/tcp open NFS-or-IIS
1080/tcp open socks
8080/tcp open http-proxy
8081/tcp open blackice-icecap
Nmap done: 1 IP address (1 host up) scanned in 1.78 seconds
最も一般的なスキャンオプションは、TCP SYNスキャン( -sS
)これは接続オプションよりも高速で、準拠しているすべてのTCPスタックに対して機能します。
-sS
nmap
の場合、デフォルトでオンになっています 管理者権限を持つユーザーとして呼び出されます:
sudo nmap 192.168.10.121
より詳細な出力については、 -v
を使用して詳細度を上げるを使用してください または-vv
:
sudo nmap -vv 192.168.10.121
UDPスキャンを実行するには、( -sU
を指定してコマンドを呼び出します。 )rootユーザーとしてのオプション:
sudo nmap -sU 192.168.10.121
ポートスキャン方法の完全なリストについては、Nmapのドキュメントページにアクセスしてください。
NmapはIPv6アドレスもサポートしています。 IPv6ホストを指定するには、 -6
を使用します オプション:
sudo nmap -6 fd12:3456:789a:1::1
ターゲットホストの指定#
Nmapは、オプションではないすべての引数をターゲットホストとして扱います。
引数が一重ダッシュまたは二重ダッシュ(-
)で始まる場合、引数はオプションと見なされます 、-コード> )。
最も簡単なオプションは、1つ以上のターゲットアドレスまたはドメイン名を渡すことです。
nmap 192.168.10.121 host.to.scan
CIDR表記を使用して、ネットワーク範囲を指定できます。
nmap 192.168.10.0/24
オクテット範囲を指定するには、ダッシュ文字を使用します。たとえば、 192.168.10.1
をスキャンするには 、 192.168.11.1
、および 192.168.12.1
:
nmap 192.168.10-12.1
ターゲットを指定するために使用できるもう1つの文字は、コンマです。次のコマンドは、上記と同じホストを対象としています。
nmap 192.168.10,11,12.1
すべてのフォームを組み合わせることができます:
nmap 10.8-10.10,11,12.0/28 192.168.1-2.100,101
スキャンする前に正しいホストを指定したことを確認するには、リストスキャンオプション( -sL
)を使用します )、スキャンを実行せずにターゲットのみを一覧表示します:
nmap -sL 10.8-10.10,11,12.0/28 192.168.1-2.100,101
指定した範囲に含まれるターゲットを除外する場合は、-exclude
を使用します オプション:
nmap 10.8-10.10,11,12.0/28 --exclude 10.10.12.12
ポートの指定とスキャン#
デフォルトでは、Nmapは最も人気のある1000個のポートのクイックスキャンを実行します。これらのポートは、最初の1000個の連続するポートではありませんが、1〜65389の範囲で最も一般的に使用される1000個のポートです。
1〜65535のすべてのポートをスキャンするには、-p-
を使用します オプション:
nmap -p- 192.168.10.121
各ポートは、次のいずれかの状態になります。
- open-ポートで実行されているプログラムが要求に応答します。
- クローズ-ポートでプログラムが実行されておらず、ホストがリクエストに応答します。
- フィルタリング-ホストはリクエストに応答しません。
-
たとえば、ポート443のみをスキャンするには、次のコマンドを使用します。
nmap -p 443 192.168.10.121
複数のポートを指定するには、ターゲットポートをコンマで区切ります:
nmap -p 80,443 192.168.10.121
ポート範囲はダッシュ記号で指定できます。たとえば、1〜1024の範囲のすべてのUDPポートをスキャンするには、次のコマンドを実行します。
sudo nmap -sU -p 1-1024 192.168.10.121
すべて組み合わせ:
nmap -p 1-1024,8080,9000 192.168.10.121
ポートは、ポート名を使用して指定することもできます。たとえば、ポート22、sshをスキャンするには、次を使用できます。
nmap -p ssh 192.168.10.121
pingスキャン#
pingスキャンまたはホスト検出を実行するには、 nmap
を呼び出します。 -sn
を使用したコマンド オプション:
sudo nmap -sn 192.168.10.0/24
-sn
オプションは、Nmapにオンラインホストのみを検出し、ポートスキャンを実行しないように指示します。これは、指定したホストのどれが稼働しているかをすばやく判断する場合に役立ちます。
DNS名解決の無効化#
Nmapのデフォルトの動作は、検出されたホストごとに逆引きDNS解決を実行することです。これにより、スキャン時間が長くなります。
大規模なネットワークをスキャンする場合は、逆引きDNS解決を無効にして、スキャンを高速化することをお勧めします。これを行うには、 -n
を使用してコマンドを呼び出します。 オプション:
sudo nmap -n 192.168.10.0/16
OS、サービス、バージョンの検出#
Nmapは、TCP/IPスタックフィンガープリントを使用してリモートホストオペレーティングシステムを検出できます。 OS検出を実行するには、 -O
を指定してコマンドを呼び出します。 オプション:
sudo nmap -O scanme.nmap.org
NmapがホストOSを検出できる場合、次のように出力されます。
...
Device type: general purpose
Running: Linux 5.X
OS CPE: cpe:/o:linux:linux_kernel:5
OS details: Linux 5.0 - 5.4
Network Distance: 18 hops
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 26.47 seconds
通常、システムサービスは、よく知られていて予約されている標準ポートでリッスンします。たとえば、SSHサービスに対応するポート22が開いている場合、SSHサーバーがホスト上で実行されていると想定します。ただし、ユーザーは必要なポートでサービスを実行できるため、完全に確信することはできません。
サービスとバージョンの検出により、Nmapはポートでリッスンしているプログラムとプログラムのバージョンを表示します。
サービスとバージョンをスキャンするには、 -sV
を使用します オプション:
sudo nmap -sV scanme.nmap.org
...
PORT STATE SERVICE VERSION
19/tcp filtered chargen
22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.7 ((Ubuntu))
135/tcp filtered msrpc
139/tcp filtered netbios-ssn
445/tcp filtered microsoft-ds
9929/tcp open nping-echo Nping echo
31337/tcp open tcpwrapped
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
...
-A
を使用して、OS、バージョンをスキャンし、tracerouteを1つのコマンドで実行することもできます。 オプション:
sudo nmap -A 192.168.10.121
Nmap出力#
デフォルトでは、Nmapは情報を標準出力(stdout)に出力します。
大規模なネットワークをスキャンする場合、または後で使用するために情報が必要な場合は、出力をファイルに保存できます。
Nmapはいくつかの出力タイプを提供します。出力を通常の形式で保存するには、 -oN
を使用します オプションの後にファイル名を続ける:
sudo nmap -sU -p 1-1024 192.168.10.121 -oN output.txt
最も一般的なオプションは、出力をXML形式で保存することです。これを行うには、 -oX
を使用します オプション:
sudo nmap -sU -p 1-1024 192.168.10.121 -oX output.xml
もう1つの便利な形式は、grepable出力です。これは、 grep
などの標準のUnixツールで解析できます。 、 awk
およびcut
。 grepable出力は、 -oG
で指定されます オプション:
sudo nmap -sU -p 1-1024 192.168.10.121 -oG output
Nmapスクリプトエンジン#
Nmapの最も強力な機能の1つは、そのスクリプトエンジンです。 Nmapには何百ものスクリプトが付属しており、Lua言語で独自のスクリプトを作成することもできます。
スクリップを使用して、マルウェアやバックドアを検出したり、ブルートフォース攻撃を実行したりできます。
たとえば、特定のホストが危険にさらされているかどうかを確認するには、次を使用できます。
nmap -sV --script http-malware-host scanme.nmap.org
結論#
Nmapは、主にネットワーク管理者がホストとスキャンポートを検出するために使用するオープンソースツールです。
一部の国では、許可なくネットワークをスキャンすることは違法であることに注意してください。
Linux