※本記事は学習用途・自己所有環境のみを対象とし、他者環境への無断スキャンは不正アクセス禁止法に該当します。
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追記ー
Nmapコマンドを簡単にまとめます。
| Scan type | Command |
|---|---|
| Discovery - ARP Scan | sudo nmap -PR -sn Target_IP/24 |
| Discovery - ICMP Echo Scan | sudo nmap -PE -sn Target_IP/24 |
| Discovery - ICMP Timestamp Scan | sudo nmap -PP -sn Target_IP/24 |
| Discovery - ICMP Address Mask Scan | sudo nmap -PM -sn Target_IP/24 |
| Discovery -TCP SYN Ping Scan | sudo nmap -PS22,80,443 -sn Target_IP/30 |
| Discovery - TCP ACK Ping Scan | sudo nmap -PA22,80,443 -sn Target_IP/30 |
| Discovery - UDP Ping Scan | sudo nmap -PU53,161,162 -sn Target_IP/30 |
| Port Scan - TCP Connect Scan | nmap -sT Target_IP |
| Port Scan - TCP SYN Scan | sudo nmap -sS Target_IP |
| Port Scan - UDP Scan | sudo nmap -sU Target_IP |
| Port Scan - TCP Null Scan | sudo nmap -sN Target_IP |
| Port Scan - TCP FIN Scan | sudo nmap -sF Target_IP |
| Port Scan - TCP Xmas Scan | sudo nmap -sX Target_IP |
| Port Scan - TCP Maimon Scan | sudo nmap -sM Target_IP |
| Port Scan - TCP ACK Scan | sudo nmap -sA Target_IP |
| Port Scan - TCP Window Scan | sudo nmap -sW Target_IP |
| Port Scan - Custom TCP Scan | sudo nmap --scanflags URGACKPSHRSTSYNFIN Target_IP |
| Port Scan - Spoofed Source IP | sudo nmap -S SPOOFED_IP Target_IP |
| Port Scan - Spoofed MAC Address | sudo nmap -sT --spoof-mac SPOOFED_MAC Target_IP |
| Port Scan - Decoy Scan | sudo nmap -D DECOY_IP,Target_IP |
| Port Scan - Idle (Zombie) Scan | sudo 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 Detection | sudo nmap -sV --version-light Target_IP |
| Port Scan - OS Detection | sudo nmap -sS -O Target_IP |
| Port Scan - Traceroute | sudo nmap -sS --traceroute Target_IP |
| Port Scan - Default scripts | sudo nmap -sS -sC Target_IP |
| Port Scan - FTP Brute force scripts | sudo nmap -sS -n --script "ftp-brute" Target_IP |
すべての有用なパラメータの概要、パラメータを含む表。
| Option | Meaning |
|---|---|
-sn | host discovery only |
-n | no DNS lookup |
-R | DNS lookup for all hosts |
-p- | scan all ports |
-p1-1023 | port range, from 1 to 1023 |
-F | top 100 most common ports |
-r | scan ports in consecutive order |
-T<0-5> | scan timing, T0 - slowest, T5 fastest |
--max-rate 20 | rate <= 20 packets/sec |
--min-rate 10 | rate >= 15 packets/sec |
-v | verbose mode |
-vv | very verbose mode |
-d | debugging |
-dd | detailed debugging |
--reason | add more info from Nmap about decision it takes |
-sV | version of service detected on open port |
-sV --version-light | amount of version probes (2) |
-sV --version-all | all available probes (9) |
-O | detect OS |
--traceroute | run traceroute to target |
--script=SCRIPTS | Nmap scripts to run |
-sC or --script=default | run default scripts |
-A | equivalent to -sV -O -sC --traceroute |
-oN | save output in normal format |
-oG | save output in grepable format |
-oX | save output in XML format |
-oA | save output in normal, XML and Grepable formats |
使用例
# sudo nmap -O -sV --version-intensity 5 --traceroute -oA /tmp/scan_output 192.168.1.1

