これから始めるポートスキャン

シェアする

  • このエントリーをはてなブックマークに追加

今回、スキャン対象とするIPアドレスは億単位を想定しています。/24とか/16というレベルでなくて、国単位です。日本のIPアドレスであれば2億弱です。

ポートスキャナの選び方

ポートスキャナで最も有名なのはNmapです。Gordon Lyon(Fyodor)がNmapの原型をPhrackで発表して以来、様々な機能が盛り込まれていきました。アングラ発だったNmapが今では一般的なインフラエンジニアでも日常的に利用するツールとなっています。

さて、Nmapは高機能で素晴らしいツールなのですが、億単位のIPアドレスをスキャンする場合はもうちょっとシンプルで高速なスキャナが必要です。

ぼくは広範囲なIPアドレス帯にスキャンをかける場合はmasscanを使っています。

TCP port scanner, spews SYN packets asynchronously, scanning entire Internet in under 5 minutes. - robertdavidgraham/masscan

NmapとMasscanの比較

Nmap

NmapでSYNスキャンを行う場合、次のようなコマンドを実行します。
例として、google.comのポート21(ftp)をスキャンする場合です:

nmap -sS -p 21 google.com

このコマンドを実行すると、Nmapは次のような動作をします。

  1. ICMP Echo Requestをgoogle.comへ送信
  2. 443/tcp SYNをgoogle.comへ送信
  3. 80/tcp SYNをgoogle.comへ送信
  4. ICMP Timestamp Requestをgoogle.comへ送信
  5. 21/tcp SYNをgoogle.comへ送信

1~4はgoogle.comの生存確認を行っています。生存確認を省略したい場合は「-P0」か「-Pn」オプションを付けます。

masscan

masscanはデフォルトでSYNスキャンを実行します。Nmapのときと同じようにgoogle.comのポート21をスキャンするためには次のようにします:

masscan -p 21 216.58.197.206

masscanはターゲットをIPアドレス(アドレスレンジ)で指定する必要があります。また、オプションで指定しなくても生存確認をせずにSYNスキャンを実行します。

広範囲をスキャンするときはmasscanを使う

NmapはSYNを送って応答がない場合は再度SYNを送り、それでも応答がなければfilteredと判定します。それに対してmasscanは1度しかSYNを送りません。

実行速度の違いを体感する良い例として、ホストが1台も存在しない/24のネットワークへmasscanとNmapでスキャンした場合、masscanは18秒ほどで完了しますがNmapは-P0(-Pn)オプションを指定しても60秒ほど要します。

/24でこの差ですから、この数千~数万倍のネットワークをスキャンした場合はとんでもない時間の差になります。

Nmapはある特定のホストやネットワークを詳細に調査する場合に適しており、masscanは広大なアドレス範囲から特定のポートが開いているIPアドレスを列挙する目的に適しています。

ポートスキャン時の注意点

スキャンに要する時間をあらかじめ調べておく

闇雲にポートスキャンを実行しても時間の無駄ですから、ポートスキャンの所要時間をあらかじめ把握しておきましょう。

masscanは–offlineオプションを付けるとスキャンをせずにテストできます。たとえばインターネット全IP:

# masscan -p80 0.0.0.0/0 --exclude 255.255.255.255 --offline

Starting masscan 1.0.4 (http://bit.ly/14GZzcT) at 2018-12-30 04:44:14 GMT
-- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
Initiating SYN Stealth Scan
Scanning 4294967295 hosts [1 port/host]
rate: 0.10-kpps, 0.00% done,11791:04:19 remaining, found=0

どえらい時間がかかりますね。それでは送信レートを100倍にして再度実行します:

# masscan -p80 0.0.0.0/0 --exclude 255.255.255.255 --offline --rate=10000

Starting masscan 1.0.4 (http://bit.ly/14GZzcT) at 2018-12-30 04:44:55 GMT
-- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
Initiating SYN Stealth Scan
Scanning 4294967295 hosts [1 port/host]
rate: 9.91-kpps, 0.00% done, 117:27:51 remaining, found=0

だいぶ現実的な時間になってきました。こんな感じで所用時間を見ながら送信レートを調整したり、スキャンするポート番号の数を決めていきます。

送信レートに注意する

masscanのデフォルト送信レートは秒間100パケットです。やろうと思えば秒間10,000,000パケットを送信できますが、こんな数のパケットを送ったらスキャンする前にネットワークが輻輳を起こします。

スキャンを実行するマシンの性能やネットワーク帯域にもよりますが、送信レートは5,000~10,000位に留めておくと無難です。送信レートを10,000に設定すると、上りで4Mbpsくらい消費します。なんだ大したことないじゃん、と思うかも知れませんが大量のショートパケットを高速で送ると使用帯域が小さくても経路上の機器に負荷がかかります。

自宅マシンからのスキャンは控える

自宅のマシンからポートスキャンを実行するのは控えた方がいいです。というのも、ポートスキャン中はネットが使えなくなる可能性が極めて高いからです。家庭用のブロードバンドルーターはショートパケットを高速に転送する能力が高くないので、かなりの遅延が発生します。ほぼ使い物にならないレベルまで遅延するので特に同居人がいる場合は注意してください。

VPS+VPNを活用せよ

自宅でダメならばどこでやるのかと言うと、解決策のひとつとしてVPSがあります。ただし、VPSからポートスキャンを実行するのは良いのですが稀にスキャンした対象ネットワークの管理者から連絡が入る事があります。

某VPS宛てに連絡が入った事がありまして、それ以来VPNを併用しています。

NordVPNとは? NordVPNは有料VPNサービスのひとつで、ONION NEWZでも利用しているかなり優秀なVPNサービスです。メリットとしては次のよ...

VPNも負荷をかけると迷惑になりますから、送信レートは抑え目にして実行した方が無難です。

VPSの選び方

さて、VPSの選び方ですがどこでも良いわけではありません。ここではVPNを併用する場合のVPS選択について書きます。

コンソールを提供している

最低限、コンソール画面へログインできる必要があります。

コンソール画面が必要なのは、VPN接続をすると自宅から直接リモートログインできなくなるためです。裏から入ればログインできるのですが、他にマシンが必要となりますし、コンソールの方が利便性が高いのでコンソールを提供しているVPSサービスが良いでしょう。

時間単位で課金される

これは必須ではないのですが、お金を節約したければ検討した方が良いです。定額制で安いところだと月に600円前後ですが、時間で課金される場合は1時間に0.004ドル程度です。

億単位のIPアドレスをポートスキャンする場合は12時間以上要する場合がほとんどです。仮に12時間使っても時間単位の課金であれば0.05ドル、うまい棒を買ってもお釣りがくる金額です。

事前にポートスキャンに要する時間を見積もっておけば課金額もわかるので安心ですね。

Vultrがおすすめ

時間単位で課金されるVPSでおすすめなのはVultrです。

We are simplifying the cloud. One Login, 9 Countries, 16 Cities, Infinite Possibilities.

注意点として、OSをシャットダウンしても課金が継続される点と転送量が一定数を超えると追加課金される点です。

課金を停止するためには、インスタンスを削除する必要があります。毎回ツールをインストールしたり設定するのは面倒に感じそうですが、Startup Scriptが使えるので自動的に初期設定をおこなうことができます。

問題は転送量です。サーバーサイズによって転送量が決められています。一番安いサイズのサーバーの転送量は500GBとなっています。

500GBの場合、課金されない1時間あたりの転送量は744MB、概ね1.65Mbpsとなります。この転送量を超えると日本リージョンのサーバを使った場合は1GB あたり0.025ドル課金されます。

サーバーサイズによって転送量は500GB~10000GBまで提供されているので、より転送量の大きいサーバーを使うか、masscanの送信レートを操作して転送量を下げるか、あるいは多少の課金を許容するか、いずれかを選択する必要があります。

このあたりが面倒であれば、さくらのVPSあたりが使いやすくて良いかも知れません。

さくらのVPS(仮想専用サーバー)のご案内です。全プランSSD対応・root権限付き!2週間の無料お試しも実施しています。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする