Masscan と ZMap によるスキャンの違い

図1 SYN パケットに占めるスキャナーの割合

インターネット上の全アドレス空間を高速にスキャンするツールとして、Masscan と ZMap の2つが有名です。これらは研究者にも攻撃者にも幅広く利用されています。ですが、IIJ のマルウェア活動観測プロジェクト MITF のハニーポットによる観測において、両者の使われ方にはかなり違いがあることがわかりました。本記事でその内容について紹介します。

調査目的と見られるスキャンの増加

NICT サイバーセキュリティ研究所が2019年2月6日に公開した「NICTER観測レポート2018」では、2017年と比較して海外組織からの調査目的と見られるスキャンが大幅に増加したことが報告されました。このレポートでは、1日に30以上の宛先ポートに対して30万パケット以上のスキャンパケット (TCP SYN と UDP のみ) を送信するアドレスを調査目的のスキャンと判別しています。そして2018年の総パケット数の約35%が調査目的のスキャンだったということです。この報告を見て、IIJ のハニーポットにおける観測でも同様の傾向が見られるか検証したいと考えました。しかし NICTER のダークネット観測と比べると、IP アドレスの数が違いすぎるため、同じ判定条件をそのまま適用することはできません。そこで、パケット数ではなくスキャンに利用されているツールに着目し、別の視点から調査を行うことにしました。

Masscan と ZMap

MasscanZMap は、IPv4 の全アドレス空間を高速にスキャンするという目的に特化したネットワークスキャナーです。どちらもソースコードが公開されており、誰でもさまざまなプラットフォームで利用することができます[1]Masscan は GNU General Public License Version 3、ZMap は Apache License Version 2.0 のライセンスでそれぞれ公開されている。。そのため研究者だけでなく、攻撃者にとっても有用なツールとして利用されています。以前からこの2つのツールが幅広く利用されていることは観測データからわかっていましたが、今回その内訳についても詳しく調べました。調査対象としたのは2019年1月の1ヶ月間に IIJ のハニーポットで観測したデータです。

先に観測結果のサマリを示しておきます。

  • Masscan によるスキャンは ZMap によるスキャンと比較し、送信元アドレス数では2倍、SYN パケット数では6倍
  • 宛先ポート別に見ると、Masscan によるスキャンは多数のポートに分散しているのに対して、ZMap によるスキャンは特定のポートに大きく偏っている
  • ZMap によるスキャンの宛先ポートは、52869/tcp など IoT 機器の脆弱性を探索する目的と考えられるポートが多数を占める
図1 SYN パケットに占めるスキャナーの割合
図1 SYN パケットに占めるスキャナーの割合

上のグラフはハニーポットに到達する SYN パケットのうち、Masscan と ZMap によるスキャンが占める割合を示したものです。日によって多少の変動はありますが、平均すると Masscan は16%、ZMap は3%程度であり、両者をあわせると全体の約2割を占めています[2]1/29から1/31にかけて、単一の IP … Continue reading。ユニークな送信元アドレス数では、Masscan が ZMap の約2倍となっており、相対的に Masscan によるスキャンの方が送出するパケット数が多いという結果になっています。なおハニーポットに到達する SYN パケットには送信元アドレスを偽装した SYN/ACK リフレクション攻撃のパケットもかなり含まれています。そのため、可能な限りこのような DoS 攻撃のパケットを集計データから除外しました[3]TCP の SYN/ACK リフレクション攻撃については、次の記事を参照のこと。IIJ では 2019年1月後半から 23/tcp や 2323/tcp などを宛先ポートとした SYN/ACK … Continue reading。また参考までに、IoT ボットの Mirai およびその亜種による SYN スキャンのパケットは3%程度で、ZMap によるスキャンとほぼ同数です。

図2 MASSCAN による SYN パケット数の宛先ポート別推移
図2 MASSCAN による SYN パケット数の宛先ポート別推移
図3 ZMap による SYN パケット数の宛先ポート別推移
図3 ZMap による SYN パケット数の宛先ポート別推移

上の積み上げグラフは Masscan と ZMap それぞれの SYN パケットについて、宛先ポート別の推移を示したものです。パケット数の多い上位10ポートのみ内訳を示しています。ダークネットにおける観測とは異なり、ハニーポットは複数のポートにおいて SYN パケットに応答を返します。そのためオープンしていると判断されたポートに対しては繰り返しスキャンされる傾向がある点に注意してください。

グラフからは両者にはっきりとした違いが見てとれます。まず Masscan ですが、SQL Server に利用される 1433/tcp、SMB プロトコルに利用される 445/tcp がやや多いものの、幅広く多数のポートに分散しているため、上位10ポートの割合が小さくなっています。また送信元アドレス別にデータを調べると、65535すべてのポートをフルスキャンしているアドレスがあるほか、1000ポート以上スキャンしているアドレスも多数存在しています。スキャンパケット数の上位10アドレスについては、おそらくどれも調査目的のスキャンではないかと推測しています。以下の2つの国内プロジェクトは IoT 機器の調査を目的としたスキャンを実施していますが、どちらも Masscan を利用しているようです。

一方 ZMap のほうは、宛先ポートが 52869/tcp に大きく偏っているほか、パケット数上位10ポートには IoT 機器でよく利用されるポートが並んでいます。このことから、ZMap によるこれらのスキャンは脆弱な IoT 機器を探索する目的ではないかと考えられますが、これだけでは調査研究によるものか攻撃者によるものかは判別できません。そこで送信元アドレス別にその内訳を見てみると、スキャンパケット数の上位5アドレスについては、ZMap によるスキャン後に Mirai や qBot などの感染を試みる攻撃を行っていました。この5アドレスで ZMap によるスキャン全体の約2割を占めており、少数の攻撃者によるスキャンの影響が大きいことがわかりました[4]ただし上位10アドレス中の4アドレスについては、おそらく調査目的のスキャンと考えられる。。また Masscan とは違って、1000ポート以上スキャンしているアドレスは ZMap では1つもありませんでした。

下のグラフは ZMap でパケット数上位の5ポートについて、2019年1月の ZMap と Masscan の SYN パケット総数を比較したものです。80/tcp はほぼ同数ですが、それ以外は上位のポートほど Masscan よりも ZMap を利用したスキャンに大きく偏っていることがわかります。

図4 宛先ポート別の ZMap と Masscan の SYN パケット数比較
図4 宛先ポート別の ZMap と Masscan の SYN パケット数比較

考察

Masscan と ZMap によるスキャンには大きな違いがあることがハニーポットの観測からわかりましたが、なぜそのような違いが生まれるのか、実はよくわかりません。たとえば IoT ボットの感染を試行する攻撃者がなぜ Masscan より ZMap を好んで使うのか、理由ははっきりしません。ただこれまでに公開されている IoT 機器の攻撃用スクリプトやチュートリアルを調べると、ZMap を利用してスキャンを行い、その後にエクスプロイトを実行するものが多数存在しています。一方 Masscan についてはこういったものはあまり見当たりません。

52869/tcp ポートに対して ZMap による大量のスキャンを観測している理由の一つは、こうした攻撃ツールの存在にあると考えます。日本国内には Realtek の脆弱性 (CVE-2014-8361) を持つ機器が多数存在していることはすでに広く知られています。そのため Realtek の脆弱性を攻撃するツールのパッケージには日本の IP アドレスリスト[5]このリストには日本に割り当てられている4,000以上の IPv4 アドレスレンジが含まれている。が含まれており、ZMap を利用してこのリストに対して 52869/tcp ポートをスキャンするように設定されています。攻撃者の多くがこうしたツールを利用しているか、参考にしているのではないかと推測しています。以下は攻撃ツールに含まれているシェルスクリプトの例です。

zmap -p52869 -wjp.lst -o jp; python realtek.py jp; killall python -9;Code language: Bash (bash)

こうしたツールを改変して利用することは比較的容易であり、新たな攻撃者が参入しやすい要因の一つになっているのではないかと考えます。またこのような攻撃ツールの利用が多いのだとすると、観測場所 (IP アドレス) によって観測結果がかなり変わることが予想されます。IIJ のハニーポットは国内に設置されているため、52869/tcp へのスキャンが多く観測されていますが、国外の観測地点ではおそらく違うでしょう。攻撃者による活動状況など今後も継続して調査、分析をしていきます。

脚注

脚注
1 Masscan は GNU General Public License Version 3、ZMap は Apache License Version 2.0 のライセンスでそれぞれ公開されている。
2 1/29から1/31にかけて、単一の IP アドレスから通常のスキャントラフィックの数倍にあたる大量のスキャンを観測したため、このデータは異常値として集計データからは除外している。なおこのスキャンは Masscan を利用したフルポートのスキャンだった。
3 TCP の SYN/ACK リフレクション攻撃については、次の記事を参照のこと。IIJ では 2019年1月後半から 23/tcp や 2323/tcp などを宛先ポートとした SYN/ACK リフレクション攻撃を観測している。
「IIJ Security Diary: IoT 機器を踏み台として利用する SYN/ACK リフレクション攻撃」 https://sect.iij.ad.jp/d/2019/02/128021.html
4 ただし上位10アドレス中の4アドレスについては、おそらく調査目的のスキャンと考えられる。
5 このリストには日本に割り当てられている4,000以上の IPv4 アドレスレンジが含まれている。

シェアする