使用例

以下に、Nmapの使用例を、単純なものからやや複雑で難解なものまでいくつか示した。例で使用したIPアドレスやドメイン名は、あくまでも具体性を持たせることが目的であるため、実際のスキャンでは、それらを自分のネットワークのアドレスまたはホスト名で置き換えることに注意する。筆者は個人的に、他人のネットワークに対してポートスキャンを実行することは違法行為には当たらないと見ているが、ネットワーク管理者のなかには、自分のネットワークを勝手にスキャンされるのを快く思わずに苦情を訴える者もいるかもしれない。最初に許可を得たほうが得策である。

ユーザには、テスト目的で、ホストscanme.nmap.orgをスキャンする許可が与えられている。この許可の対象は、Nmapによるスキャンに限定されるものであり、エクスプロイトやサービス妨害攻撃のテストは含まれない。帯域幅を節約するために、このホストに対するスキャンは、一日につき十数回以上は行わないようにすること。このフリーのスキャン対象提供サービスが悪用された場合、サービスは停止され、NmapはFailed to resolve given hostname/IP: scanme.nmap.org(指定したホスト名/IP:scanme.nmap.orgの解決に失敗しました)という報告を出す。これらの許可は、scanme2.nmap.orgscanme3.nmap.org等の各ホストにも適用されるが、これらのホストは、現在は存在しない。

nmap -v scanme.nmap.org

このオプションを利用すると、scanme.nmap.orgというマシン上の予約済みTCPポートすべてに対してスキャンを実行する。また、-vが指定されているため、冗長モードが有効になる。

nmap -sS -O scanme.nmap.org/24

scanme.nmap.orgが属しているクラスCネットワーク上のマシン255台のうちで稼動している各マシンに対して、SYNスキャン(ステルススキャン)を実行する。また、稼動中の各ホスト上で動作しているOSの特定も同時に試行する。SYNスキャンとOSの検出を行うため、root権限が必要となる。

nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127

198.116のクラスBアドレス空間で、8ビットで表せる255のサブネットに属するホストのうち、前半(1-127)のIPアドレスを持つホストに対して、ホストの列挙とTCPスキャンを行う。このスキャンを行う目的は、対象システムでsshd、DNS、POP3d、IMAPd、4564番ポートが動作しているかどうかを調査することだ。これらのポートのなかで開いている(open)ことが判明したポートすべてに対してバージョン検出を使用して、何のアプリケーションが動作しているかを特定する。

nmap -v -iR 100000 -Pn -p 80

Nmapは100,000台のホストを無作為に選び、Webサーバ(80番ポート)のスキャンを行う。ホストの列挙は-Pn で無効にしてある。各ターゲットホスト上で1つのポートしか調査しないのに、どのホストが稼動中であるかを特定するためにプローブを送るのは無駄だからだ。

nmap -Pn -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20

4096個のIPをスキャンしてWebサーバを見つけ出し(pingなしで)、結果出力をgrep可能およびXMLフォーマットで保存する。

host -l company.com | cut -d -f 4 | nmap -v -iL -

company.comに存在するホストを発見するためにDNSのゾーン転送を実行し、発見したIPアドレスをnmapに渡す。このコマンドは、筆者のGNU/Linuxマシンで使用しているものだ。他のシステムには、ゾーン転送を実行するための別のコマンドがある。