※本記事は学習用途・自己所有環境のみを対象とし、他者環境への無断スキャンは不正アクセス禁止法に該当します。
ネットワーク診断や脆弱性調査を行う上で、最も基礎となるのが「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の開発およびユーザサポートコミュニティが活発であることを意味している。
VIDEO
基本コマンド ターゲット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 type Command Discovery - ARP Scan sudo nmap -PR -sn Target_IP/24Discovery - ICMP Echo Scan sudo nmap -PE -sn Target_IP/24Discovery - ICMP Timestamp Scan sudo nmap -PP -sn Target_IP/24Discovery - ICMP Address Mask Scan sudo nmap -PM -sn Target_IP/24Discovery -TCP SYN Ping Scan sudo nmap -PS22,80,443 -sn Target_IP/30Discovery - TCP ACK Ping Scan sudo nmap -PA22,80,443 -sn Target_IP/30Discovery - UDP Ping Scan sudo nmap -PU53,161,162 -sn Target_IP/30Port Scan - TCP Connect Scan nmap -sT Target_IPPort Scan - TCP SYN Scan sudo nmap -sS Target_IPPort Scan - UDP Scan sudo nmap -sU Target_IPPort Scan - TCP Null Scan sudo nmap -sN Target_IPPort Scan - TCP FIN Scan sudo nmap -sF Target_IPPort Scan - TCP Xmas Scan sudo nmap -sX Target_IPPort Scan - TCP Maimon Scan sudo nmap -sM Target_IPPort Scan - TCP ACK Scan sudo nmap -sA Target_IPPort Scan - TCP Window Scan sudo nmap -sW Target_IPPort Scan - Custom TCP Scan sudo nmap --scanflags URGACKPSHRSTSYNFIN Target_IPPort Scan - Spoofed Source IP sudo nmap -S SPOOFED_IP Target_IPPort Scan - Spoofed MAC Address sudo nmap -sT --spoof-mac SPOOFED_MAC Target_IPPort Scan - Decoy Scan sudo nmap -D DECOY_IP,Target_IPPort Scan - Idle (Zombie) Scan sudo nmap -sI ZOMBIE_IP Target_IPPort Scan - Fragment IP data into 8 bytes -fPort Scan - Fragment IP data into 16 bytes -ffPort Scan - Service Detection sudo nmap -sV --version-light Target_IPPort Scan - OS Detection sudo nmap -sS -O Target_IPPort Scan - Traceroute sudo nmap -sS --traceroute Target_IPPort Scan - Default scripts sudo nmap -sS -sC Target_IPPort Scan - FTP Brute force scripts sudo nmap -sS -n --script "ftp-brute" Target_IP
すべての有用なパラメータの概要、パラメータを含む表。
Option Meaning -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追記ー