Kali Tools #012|Nmap:ネットワーク探索とポートスキャンの基本ツール

※本記事は学習用途・自己所有環境のみを対象とし、他者環境への無断スキャンは不正アクセス禁止法に該当します。

ネットワーク診断や脆弱性調査を行う上で、最も基礎となるのが「Nmap(Network Mapper)」です。

ポートスキャン、サービス検出、OS推定など、攻撃者も防御者も必ず使う定番ツールで、Kali Linuxに標準搭載されています。

この記事では、Nmapの基本的な使い方と代表的なスキャン手法を、初学者にも分かりやすく解説します。

Nmapとは何か

歴史

Nmap(Network Mapper)は、1997年に Gordon Lyon(通称 Fyodor)氏によって公開されたネットワークスキャナです。登場当初から UNIX 系システム管理者やセキュリティ専門家に支持され、のちに Windows や macOS 版も整備されることで一気に普及しました。Nmap はオープンソースとして活発に開発が続けられ、現在では世界中の企業・研究機関・教育機関で日常的に使われる“事実上の標準ツール”となっています。


Kali Linuxでの位置づけ

Kali Linux は情報セキュリティ向けディストリビューションとして、多数の調査・攻撃ツールを標準搭載しています。その中で Nmap は 情報収集フェーズを支える基盤ツールとして扱われています。

ポートスキャン、サービス検出、OS推定といった機能は、多くの高度ツール(Metasploit、OpenVAS、Nessus など)の前段階として不可欠であり、Kali Linux の利用者はほぼ例外なく Nmap を使用します。

その意味で Nmap は「Kali の基本操作を習得する上で最初に理解すべき重要ツール」と言ってよい存在となっています。


防御/攻撃どちらにも使われる理由

Nmap が攻撃者にも防御者にも利用されるのは、「ネットワークの実態を正確に把握できる」という中立的な機能を持つためです。


防御側(ブルーチーム)

 ・不要なサービスや危険なポートの洗い出し

 ・構成情報の棚卸し

 ・脆弱なバージョンの発見


攻撃側(レッドチーム/ペンテスター)

 ・侵入可能な入口(attack surface)の特定

 ・公開サービスの種類とバージョン確認

 ・後続の攻撃に使える情報の収集


どちらも「対象ネットワークの地図を描き、弱点を把握する」という目的であり、Nmap はそのための 事前偵察の中心ツールとして活用されています。


Nmapの特徴

  • フレキシブル:IPフィルタ、ファイアウォール、ルータなどの障害物で満たされたネットワークをマッピングするための何十もの高度な技術をサポートします。これには、多くのポートスキャンメカニズム(TCPとUDPの両方)、OS検出、バージョン検出、Pingスイープなどが含まれます。ドキュメントのページをご覧ください。

  • パワフル:Nmapは、文字通り何十万台ものマシンからなる巨大なネットワークのスキャンに使われてきた。

  • ポータブル:Linux、Microsoft Windows、FreeBSD、OpenBSD、Solaris、IRIX、Mac OS X、HP-UX、NetBSD、Sun OS、Amigaなど、ほとんどのOSに対応している。

  • 簡単:Nmapはパワーユーザ向けの高度な機能を豊富に備えているが、最初は「nmap -v -A targethost」程度の簡単な操作で始められる。従来のコマンドライン版とグラフィカル(GUI)版の両方が用意されているので、好みに応じて使い分けることができる。Nmapをソースからコンパイルしたくない人のために、バイナリも用意されている。

  • フリー:Nmapプロジェクトの主な目標は、インターネットの安全性を少しでも高めること、および管理者/監査人/ハッカーにネットワークを調査するための高度なツールを提供することである。Nmapは無料でダウンロードでき、完全なソースコードも付属しているので、ライセンスの条件に従って変更したり再配布したりすることができる。

  • ドキュメントが充実:包括的で最新のマニュアルページ、ホワイトペーパー、チュートリアル、さらには書籍に至るまで、多大な努力が払われている。複数の言語で提供されていますので、ぜひご覧ください。

  • サポート:Nmapには保証がついていないが、開発者とユーザの活気あるコミュニティによって十分にサポートされている。サポートのほとんどは、Nmapのメーリングリストで行われている。ほとんどのバグレポートや質問は、nmap-devメーリングリストに送るべきですが、ガイドラインを読んだ後にしてください。すべてのユーザーには、トラフィックの少ないnmap-hackersアナウンスメントリストを購読することをお勧めします。また、NmapはFacebookやTwitterでもご覧いただけます。リアルタイムのチャットは、FreenodeまたはEFNetの#nmapチャンネルに参加してください。

  • 賞を受賞:Nmapは、Linux Journal、Info World、Codetalker Digestの「Information Security Product of the Year」など、数多くの賞を受賞している。また、何百もの雑誌記事、いくつかの映画、何十冊もの書籍、1つのコミックシリーズでも紹介されている。詳細はプレスページをご覧ください。

  • 人気がある:毎日、何千人もの人々がNmapをダウンロードしており、多くのオペレーティングシステム(Redhat Linux、Debian Linux、Gentoo、FreeBSD、OpenBSDなど)に搭載されている。また、Freshmeat.Netのリポジトリでは、(30,000個のうちの)上位10個のプログラムに入っている。このことは、Nmapの開発およびユーザサポートコミュニティが活発であることを意味している。



基本コマンド

 ターゲットIP(59.152.32.35)の解放ポート検索例

# nmap 59.152.32.35
Starting Nmap 7.91 ( https://nmap.org ) at 2021-04-07 20:02 JST
Nmap scan report for 59.152.32.35
Host is up (0.052s latency).
Not shown: 993 closed ports
PORT    STATE    SERVICE
22/tcp  open     ssh
80/tcp  open     http
135/tcp filtered msrpc
139/tcp filtered netbios-ssn
179/tcp open     bgp
443/tcp open     https
445/tcp filtered microsoft-ds

Nmap done: 1 IP address (1 host up) scanned in 2.71 seconds


ターゲットIP(59.152.32.35)の検索例 ※バージョン情報も取得するパターン

# nmap -sV 59.152.32.35
Starting Nmap 7.91 ( https://nmap.org ) at 2021-04-07 20:03 JST
Nmap scan report for 59.152.32.35
Host is up (0.050s latency).
Not shown: 993 closed ports
PORT    STATE    SERVICE      VERSION
22/tcp  open     ssh          OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
80/tcp  open     http         nginx
135/tcp filtered msrpc
139/tcp filtered netbios-ssn
179/tcp open     tcpwrapped
443/tcp open     ssl/http     nginx
445/tcp filtered microsoft-ds
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 15.81 seconds


ー2021/12/29追記ー

A little bit about Nmap

Nmapコマンドを簡単にまとめます。

Scan typeCommand
Discovery - ARP Scansudo nmap -PR -sn Target_IP/24
Discovery - ICMP Echo Scansudo nmap -PE -sn Target_IP/24
Discovery - ICMP Timestamp Scansudo nmap -PP -sn Target_IP/24
Discovery - ICMP Address Mask Scansudo nmap -PM -sn Target_IP/24
Discovery -TCP SYN Ping Scansudo nmap -PS22,80,443 -sn Target_IP/30
Discovery - TCP ACK Ping Scansudo nmap -PA22,80,443 -sn Target_IP/30
Discovery - UDP Ping Scansudo nmap -PU53,161,162 -sn Target_IP/30
Port Scan - TCP Connect Scannmap -sT Target_IP
Port Scan - TCP SYN Scansudo nmap -sS Target_IP
Port Scan - UDP Scansudo nmap -sU Target_IP
Port Scan - TCP Null Scansudo nmap -sN Target_IP
Port Scan - TCP FIN Scansudo nmap -sF Target_IP
Port Scan - TCP Xmas Scansudo nmap -sX Target_IP
Port Scan - TCP Maimon Scansudo nmap -sM Target_IP
Port Scan - TCP ACK Scansudo nmap -sA Target_IP
Port Scan - TCP Window Scansudo nmap -sW Target_IP
Port Scan - Custom TCP Scansudo nmap --scanflags URGACKPSHRSTSYNFIN Target_IP
Port Scan - Spoofed Source IPsudo nmap -S SPOOFED_IP Target_IP
Port Scan - Spoofed MAC Addresssudo nmap -sT --spoof-mac SPOOFED_MAC Target_IP
Port Scan - Decoy Scansudo nmap -D DECOY_IP,Target_IP
Port Scan - Idle (Zombie) Scansudo nmap -sI ZOMBIE_IP Target_IP
Port Scan - Fragment IP data into 8 bytes-f
Port Scan - Fragment IP data into 16 bytes-ff
Port Scan - Service Detectionsudo nmap -sV --version-light Target_IP
Port Scan - OS Detectionsudo nmap -sS -O Target_IP
Port Scan - Traceroutesudo nmap -sS --traceroute Target_IP
Port Scan - Default scriptssudo nmap -sS -sC Target_IP
Port Scan - FTP Brute force scriptssudo nmap -sS -n --script "ftp-brute" Target_IP

すべての有用なパラメータの概要、パラメータを含む表。

OptionMeaning
-snhost discovery only
-nno DNS lookup
-RDNS lookup for all hosts
-p-scan all ports
-p1-1023port range, from 1 to 1023
-Ftop 100 most common ports
-rscan ports in consecutive order
-T<0-5>scan timing, T0 - slowest, T5 fastest
--max-rate 20rate <= 20 packets/sec
--min-rate 10rate >= 15 packets/sec
-vverbose mode
-vvvery verbose mode
-ddebugging
-dddetailed debugging
--reasonadd more info from Nmap about decision it takes
-sVversion of service detected on open port
-sV --version-lightamount of version probes (2)
-sV --version-allall available probes (9)
-Odetect OS
--tracerouterun traceroute to target
--script=SCRIPTSNmap scripts to run
-sC or --script=defaultrun default scripts
-Aequivalent to -sV -O -sC --traceroute
-oNsave output in normal format
-oGsave output in grepable format
-oXsave output in XML format
-oAsave output in normal, XML and Grepable formats

使用例

# sudo nmap -O -sV --version-intensity 5 --traceroute -oA /tmp/scan_output 192.168.1.1

ー2024/3/18追記ー

Nmapチートシート