【超高速スキャナ:Masscanとは】Nmapとの違いや使用方法を徹底解説!

超高速ポートスキャナ
- Masscan -

脆弱性診断やペネトレーションテストでスキャン速度を求めるなら、Masscanは欠かせないツールです。

本記事では、Masscanの使用方法を中心に、基本的な特徴からNmapとの違い具体的なコマンド例まで、丁寧に解説しています。

「Nmapとの違い」を押さえることで、目的に応じたツール選定ができるようになります。

目次

Masscanとは

Masscan(Mass IP port scanner)とは、インターネット空間や大規模ネットワーク上のホストを超高速でスキャンすることができるオープンソースのポートスキャナです。開発者はRobert Graham氏で、初版は2013年に公開されました。

C言語で実装されており、Linuxでの利用を想定していますが、WindowsやmacOSでも動作します。システムリソースを効率的に活用することで、他のスキャナと比較して圧倒的なスキャン速度を実現しています。

具体的には、インターネット全体を5分以内にスキャンできるという驚異的な性能を持ちます(1秒あたり1,000万パケット送信が可能とされる)。そのため、セキュリティリサーチャや研究者が、脆弱な公開ポートやサービスを短時間で把握する際に利用されることが多いです。

Masscanは、TCP SYNパケットを送信してターゲットのポートが開いているかどうかを確認するSYNスキャンを採用しています。TCPハンドシェイクを完了させずにポートの開閉を判定できるため、通信負荷を軽減しつつ高速にスキャンを実行することができます。

主な特徴

超高速スキャン

Masscanの最大の特徴は、圧倒的なスキャン速度です。独自のTCP/IPスタックを実装しており、理論上、1秒間に約1,000万パケットを送信できる設計となっています。

公式ドキュメントによれば、インターネット全体を5分以内でスキャン可能とされています。

非同期通信

Masscanは超高速スキャンを実現するため、非同期モデルを採用しています。これは送信スレッドと受信スレッドを分離し、それぞれが独立して動作することで、大規模なネットワーク環境でも効率的かつ迅速にスキャンを実行できます。

この非同期モデルにより、スキャン性能はネットワークレイテンシーよりも帯域幅やNICの処理能力に依存します。

SYNスキャンに特化

Masscanは、TCPのSYNパケットのみを送信して応答を確認するSYNスキャンに特化したツールです。

SYNスキャンとは
  • 3ウェイハンドシェイクの最初のステップ(SYN→SYN/ACK)だけを用いる手法。
  • 通信を確立する前にポートの開閉状態を判断できる。

SYNスキャンは3ウェイハンドシェイクを完了させないため、通信負荷が軽く、ポートの開閉状態を迅速に確認できます。

シンプルなコマンドライン・インタフェース

MasscanのCLI(コマンドライン・インタフェース)は非常にシンプルで、masscan <IPアドレス> -p<ポート番号>と入力するだけで超高速スキャンを実行できます。

実行結果はファイル出力にも対応しており、スクリプト連携やログ解析にも適しています。

バナー情報の取得

Masscanは単なるポートスキャナにとどまらず、バナー情報の取得機能を備えています。--bannersオプションを付与すると、HTTPやSSHなどのプロトコルに対して簡易的なハンドシェイクを行い、サービス識別に有用なバナー文字列を収集します。これにより、開放ポートの特定だけでなく、稼働中のアプリケーション種別やバージョン情報の推定が可能になります。

例えば、HTTPサーバであればApache/2.2.14 (Ubuntu) mod_mono/2.4.3 PHP/5.3.2-1ubuntu4.30のようなレスポンスヘッダを取得し、脆弱性管理ツールやセキュリティ診断の前処理として活用できます。

IPv6に対応

2021年リリースのバージョン1.3.0から、IPv6スキャンに対応しています。

オープンソース・無料

Masscanは、AGPLv3ライセンスのもとで公開されているオープンソースソフトウェアです。商用・非商用を問わず無償で利用でき、GitHub上でソースコードが公開されています。

注意事項

Masscanを含むポートスキャナを使用する際は、対象システムの許可を必ず取得してください。無許可でスキャンを行った場合、たとえ善意の調査であっても、不正アクセス禁止法違反などの法的責任を問われる可能性があります。

学習・検証目的の場合は、本番環境に対して行わず、代わりにやられアプリ(脆弱性を意図的に含んだ環境)を使用してください。

MasscanとNmapの違い

MasscanとNmapは、いずれもポートスキャナとして広く利用されているツールですが、設計思想や目的が異なります。Masscanはスキャン速度を、Nmapは多機能性を重視しており、目的に応じた使い分けが重要です。

スキャン速度

Masscanの最大の特徴は、圧倒的なスキャン速度です。Masscanは非同期通信を採用し、TCP SYNパケットを極めて効率的に送信します。(1秒あたり1,000万パケットを送信可能)

一方、Nmapは同期通信をベースとしており、スキャンの精度や詳細情報の取得を優先しています。そのため、大規模なIPレンジを対象とした場合、Masscanよりも時間がかかる傾向にあります。ただし、Nmapはスキャン速度を上げるオプション(例:-T4, -T5)を備えており、中・小規模ネットワークでは十分な実用性を持っています。

多機能性

Masscanは、SYNスキャンに特化したポートスキャナです。TCP 3ウェイハンドシェイクを完了させず、SYNパケットの応答(SYN/ACKまたはRST)だけでポートの開閉を判断します。このモードは軽量かつ高速ですが、ステートレス(接続状態を保持しない)であるため、OS識別やサービス検出などの調査には向きません。

NmapはSYNスキャンのほか、TCP Connectスキャン、UDPスキャン、スクリプトスキャン(NSE)など、多様なスキャンモードをサポートしています。これにより、ポートの開閉状態に加え、OS識別、サービス・バージョン検出、脆弱性調査まで可能です。

Nmapが備えている機能
  • OS識別(OS fingerprinting)
  • サービスおよびバージョン検出
  • スクリプトによる脆弱性診断(NSE: Nmap Scripting Engine)
  • TracerouteやPingなどのネットワーク診断機能 など

使用目的

Masscanは「ポートが開いているか」を大規模・高速に確認する用途に適しており、一方、Nmapはポートスキャンに加えてOS識別、サービス検出、脆弱性スクリプト実行など、多様な機能を搭載している万能型スキャナです。

項目MasscanNmap
主な用途大規模ネットワークの高速ポートスキャン中・小規模ネットワークのポートスキャン
詳細なネットワーク診断・脆弱性診断
スキャン速度非常に高速中〜低速
検出精度低い(誤検出の可能性がある)高い
通信方式非同期非同期・同期
スキャンモードTCP SYNスキャンのみ複数のスキャンモードに対応(TCP SYN、Connect、UDPなど)
主な機能・ポートスキャン
・バナー取得(限定的)
・ポートスキャン
・バナー取得
・OS識別
・サービス・バージョン検出
・NSEスクリプトによる脆弱性検査
・Ping、Traceroute、DNS名前解決 など
スクリプト機能非対応対応(NSEスクリプト)

MasscanとNmapは目的や設計思想が異なり、どちらが優れているというよりも用途に応じて適切に選定・併用することが重要です。

Masscanの使用方法

Masscanは、世界中のセキュリティエンジニアが利用する超高速ポートスキャナです。ここでは、Masscanの起動方法から基本コマンド、ヘルプ表示、バージョン確認まで、基本的な使い方を解説します。

Masscanをインストール

Kali Linuxには200種類以上のセキュリティツールがプリインストール済みで、Masscanも標準搭載されています。(インストール不要)

以降の操作説明は、Kali Linuxを前提に解説しています。

Ubuntuの場合、Masscanはプリインストールされていませんが、公式リポジトリでパッケージ管理されているため、aptコマンドでインストール可能です。

Ubuntu 24.04.3 LTSの場合

$ apt info masscan
Package: masscan
Version: 2:1.3.2+ds1-1
Priority: optional
Section: universe/net
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Security Tools <team+pkg-security@tracker.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 566 kB
Depends: libc6 (>= 2.33)
Homepage: https://github.com/robertdavidgraham/masscan
Download-Size: 237 kB
APT-Sources: http://archive.ubuntu.com/ubuntu noble/universe amd64 Packages
Description: TCP port scanner
 MASSCAN is TCP port scanner which transmits SYN packets
 asynchronously and produces results similar to nmap,
 the most famous port scanner. Internally, it operates
 more like scanrand, unicornscan, and ZMap, using
 asynchronous transmission.
 It's a flexible utility that allows arbitrary address and
 port ranges.

Masscanを起動

Terminalから起動する場合

MasscanはGUIを持たないCLI(コマンドライン・インターフェース)のツールであり、基本的にはターミナルから起動します。

$ sudo masscan <IPアドレス> -p<ポート番号>

masscanコマンドは通常、管理者権限で実行する必要があります。これは、SYNスキャンでRAWソケットを使用するため、ネットワークレベルの制御権限が必要になるからです。

sudoを付けずにmasscanコマンドを実行すると、権限不足でエラーになります。

$ masscan 192.168.10.101 -p22
[-] FAIL: permission denied
    [hint] need to sudo or run as root or something
[-] if:eth0:init: failed

アプリケーションメニューから起動する場合

Kali Linux 2025.3の場合、09.Discovery(探索)>Network Service Discovery(ネットワークサービス検出)>masscanを選択します。

アプリケーションメニューからmasscanを起動

しばらくすると、ターミナルが立ち上がり、ヘルプコマンドmasscan --helpが実行されます。

masscanのヘルプコマンド「masscan --help」が実行される

基本的なコマンド

コマンド構文

$ sudo masscan <IPアドレス> -p<ポート番号>

例えば、ローカルネットワーク内の全ホスト(例:192.168.10.0/24)のポート80(HTTP)をスキャンする場合、以下のコマンドを使用します。

$ sudo masscan 192.168.10.0/24 -p80

複数ポートを指定することも可能です。

$ sudo masscan 192.168.10.0/24 -p22,80,443

ヘルプ

$ masscan --help

Masscanでは、他のセキュリティツールと異なり、ヘルプオプションを指定しても利用可能なオプションや使用例は表示されません。そのため、オプションの確認にはマニュアル表示コマンドを使用します。

マニュアル表示

$ man masscan

マニュアルページには、ツールの概要や利用可能なオプション、設定ファイルの書式、使用例などが記載されています。

バージョン確認

$ masscan --version

# 実行例
Masscan version 1.3.2 ( https://github.com/robertdavidgraham/masscan )
Compiled on: Jul 25 2024 16:44:22
Compiler: gcc 14.1.0
OS: Linux
CPU: unknown (64 bits)
GIT version: unknown

よく使うオプション

ここでは実務で頻繁に使うMasscanの機能に絞り、具体的なオプションの使い方を解説します。

スキャン速度

# 例.1秒間に10,000パケットの送信速度でスキャン
$ sudo masscan 192.168.10.0/24 -p80 --rate 10000

Masscan最大の特徴の一つが、非常に高速なスキャン性能です。その速度はデフォルトでは1秒あたり100パケットですが、--rateオプションを使うことで、希望するパケットレートに調整可能です。

バナー情報の取得

$ sudo masscan 192.168.10.0/24 -p22,80 --banners

Masscanは非常に高速なSYNスキャンに特化していますが、開いているポートからバナー情報を取得する機能も備えています。(--bannersオプション)

バナーとは、サービスが応答時に返す文字列情報(例:Webサーバのソフトウェア名やバージョン)であり、脆弱性診断の初期フェーズにおいて重要な手がかりとなります。

Masscanがバナー取得をサポートしているプロトコル

FTP、HTTP、IMAP4、memcached、POP3、SMTP、SSH、SSL、SMBv1、SMBv2、Telnet、RDP、VNC

スキャン結果をファイルに出力

Masscanは、スキャン結果の出力形式として標準出力だけでなく、ファイル出力にも対応しています。

出力可能なファイル形式
  • XML形式
  • grepable形式(Grepでの解析に適した形式)
  • JSON形式
  • リスト形式(ホストとポートのペアを1行ずつ出力)
  • バイナリ形式

ファイル出力の実行例

# XML形式
$ sudo masscan 192.168.10.101 -p22 -oX output.xml

# grepable形式
$ sudo masscan 192.168.10.101 -p22 -oG output.grepable

# JSON形式
$ sudo masscan 192.168.10.101 -p22 -oJ output.json

# リスト形式
$ sudo masscan 192.168.10.101 -p22 -oL output.list

# バイナリ形式
$ sudo masscan 192.168.10.101 -p22 -oB output.bin

--output-formatオプションと--output-filenameオプションを組み合わせて指定することもできます。

$ sudo masscan 192.168.10.101 -p22 --output-format <ファイル形式> --output-filename <ファイル名>
  • --output-format:ファイル形式を指定(xml、grepable、json、list、binary)
  • --output-filename:ファイル名を指定

オプションのデフォルト値を確認

$ masscan --echo

主要なオプションについては、あらかじめデフォルト値が設定されており、--echoオプションで確認できます。

オプション指定をファイルから入力

Masscanでは、複数のオプションを繰り返し使用する場合、コマンドラインで毎回指定するのではなく、設定ファイル(テキストファイル)から一括で読み込むことができます。

STEP

設定ファイルを作成

$ sudo masscan 192.168.10.0/24 -p22,23,88 --rate 1000 -oG output.txt --echo > scan.conf

--echoオプションはオプション内容を標準出力へ表示するため、リダイレクトでファイルに保存すれば、設定ファイルを一から作成する手間を省けます。

STEP

設定ファイル(オプション設定値)を確認

$ cat scan.conf
seed = 10820872418491083725
rate = 1000
shard = 1/1
#nocapture = servername

output-filename = output.txt
output-format = grepable

# TARGET SELECTION (IP, PORTS, EXCLUDES)
ports = 22-23,88
range = 192.168.10.0/24
  • 設定ファイルに記述する際は、オプション名と値の間に=を使います。
  • コメントを記述する場合は、行頭に#を付けます。

nocapture = servernameをオプション指定しているとエラーになるので、コメントアウトしています。

$ sudo masscan -c scan.conf
CONF: unknown config option: nocapture=servername

この課題について、GitHubのIssuesでスレッドが立ち上がっています。

STEP

ポートスキャンを実行

$ sudo masscan -c scan.conf
  • -c:設定ファイルを指定

設定ファイルを利用することで、定期スキャンやCI/CDの一環としての脆弱性検査にも組み込みやすくなります。

【使用例】実際にMasscanを使ってみる

今回の検証では、Windows上に構築した仮想環境内でMasscanを実行します。

  • Masscan実行マシン
    • Kali Linux 2025.3(Masscan version 1.3.2)
  • スキャン対象マシン

仮想環境はVirtualBoxで構築し、ネットワークアダプターはホストオンリーアダプター(192.168.10.0/24)を使用しています。

STEP

Masscanを実行

以下のコマンドをKali Linux上で実行します。

$ sudo masscan 192.168.10.101-192.168.10.105 -p1-65535 --rate 1000
  • 192.168.10.101-192.168.10.105:ターゲットマシン
  • -p1-65535:ポート番号
  • --rate 1000:スキャン速度
STEP

実行結果を確認

$ sudo masscan 192.168.10.101-192.168.10.105 -p1-65535 --rate 1000
Starting masscan 1.3.2 (http://bit.ly/14GZzcT) at 2025-10-14 09:06:54 GMT
Initiating SYN Stealth Scan
Scanning 5 hosts [65535 ports/host]
Discovered open port 80/tcp on 192.168.10.105
Discovered open port 139/tcp on 192.168.10.105
Discovered open port 5432/tcp on 192.168.10.101
Discovered open port 445/tcp on 192.168.10.101
Discovered open port 22/tcp on 192.168.10.102
Discovered open port 3632/tcp on 192.168.10.101
Discovered open port 1524/tcp on 192.168.10.101
Discovered open port 513/tcp on 192.168.10.101
Discovered open port 2121/tcp on 192.168.10.101
Discovered open port 8787/tcp on 192.168.10.101
Discovered open port 445/tcp on 192.168.10.105
Discovered open port 8080/tcp on 192.168.10.105
Discovered open port 6000/tcp on 192.168.10.101
Discovered open port 41831/tcp on 192.168.10.101
Discovered open port 23/tcp on 192.168.10.101
Discovered open port 2049/tcp on 192.168.10.101
Discovered open port 60788/tcp on 192.168.10.101
Discovered open port 6667/tcp on 192.168.10.101
Discovered open port 8081/tcp on 192.168.10.105
Discovered open port 80/tcp on 192.168.10.101
Discovered open port 6697/tcp on 192.168.10.101
Discovered open port 25/tcp on 192.168.10.101
Discovered open port 53/tcp on 192.168.10.101
Discovered open port 3306/tcp on 192.168.10.101
Discovered open port 512/tcp on 192.168.10.101
Discovered open port 111/tcp on 192.168.10.101
Discovered open port 22/tcp on 192.168.10.105
Discovered open port 8009/tcp on 192.168.10.101
Discovered open port 514/tcp on 192.168.10.101
Discovered open port 1099/tcp on 192.168.10.101
Discovered open port 443/tcp on 192.168.10.105
Discovered open port 21/tcp on 192.168.10.101
Discovered open port 8180/tcp on 192.168.10.101
Discovered open port 5900/tcp on 192.168.10.101
Discovered open port 5001/tcp on 192.168.10.105
Discovered open port 49708/tcp on 192.168.10.101
Discovered open port 34476/tcp on 192.168.10.101
Discovered open port 143/tcp on 192.168.10.105
Discovered open port 22/tcp on 192.168.10.101
Discovered open port 139/tcp on 192.168.10.101

この結果から、192.168.10.101において以下のサービスが稼働していることが推測されます。

  • 21/tcp: FTP
  • 22/tcp: SSH
  • 23/tcp: Telnet
  • 25/tcp: SMTP
  • 80/tcp: HTTP など
STEP

オープンポートの詳細な情報を収集

Masscanのスキャン結果(オープンポート)について、Nmapでさらに詳細な情報を取得します。

例)192.168.10.101の22番ポートの詳細情報を確認

$ nmap -p 22 -sV 192.168.10.101
Starting Nmap 7.95 ( https://nmap.org ) at 2025-10-14 19:02 JST
Nmap scan report for 192.168.10.101
Host is up (0.00048s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
MAC Address: 08:00:27:A2:7C:82 (PCS Systemtechnik/Oracle VirtualBox virtual NIC)
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 0.69 seconds

例えば、192.168.10.101で稼働しているSSHサーバは、OpenSSH 4.7p1であることが確認できます。このバージョンは非常に古く、既知の脆弱性が含まれているため、アップデートが推奨されます。

該当サービスを使用していない場合は、該当ポートを閉じることで、外部からの不正アクセスを防止できます。

デフォラボ

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
目次