node.jsのいろいろなモジュール39 – evilscanでポートスキャンを行う

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ポートスキャンをするモジュール

evilscanは、任意のip/ポートに対してスキャンを行うツールです。
Javascriptから使用することもできますし、グローバルインストールしてコマンドから使用することもできます。
範囲を指定してip/ポートをスキャンすることもでき、結果をJSONで出力したりもできます。

環境構築方法

今回使用した動作環境は以下のとおりです。

  • OS : MacOS X 10.7.5
  • Node.js : v0.10.8
  • npm : 1.2.23

npmを使用してモジュールをグローバルインストールしましょう。

% npm install -g evilscan

evilscanを試す

evilscanモジュールをrequireしてプログラムから使用することもできますが、今回はコマンドラインから使用してみましょう。
evilscanコマンドに続いて、ポートスキャンするip/ドメイン、チェックするポートを指定します。
下記コマンドでは、samplescan.comの0番から1000番のポートに対してスキャンを実行しています。

%evilscan samplescan.com --port=0-1000 
xxx.xxx.xxx.xxx|80||open
xxx.xxx.xxx.xxx|22|SSH-2.0-OpenSSH_6.1\r\n|open

80番と22番ポートが開いているのがわかりますね。ポートは,区切りで複数指定したり、-で範囲指定が可能です。
また、evilscanのオプションで、結果をxmlやjsonで出力したりタイムアウトを設定したりできます。

evilscan実行時にエラーが出た場合

evilscan実行時に下記のようなエラーがでることがあります。

・
・
(libuv) Failed to create kqueue (24)

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: write EBADF
・
・

そのような場合、次のようにulimitで起動プロセス数の上限を上げてから再度実行してみてください。

% ulimit -n 1024                                                                                

まとめ

まだ開発初期で、未実装の機能もたくさんありますが、ポートの開閉は簡単にチェックできるので、使用してみてください。

参考サイトなど