基本的な使い方
まず基本的な使い方として、デフォルトのオプションのままポートスキャンしてみましょう。
ショートカットをダブルクリックするなりしてNmapWinを起動します。するとNMapWinが起動して図のような画面が出ると思います。
ポートスキャンしたいIPアドレス、もしくはホスト名を「スキャン対象ホスト」欄に入力し、「スキャン」をクリックします。
するとポートスキャンが始まり、「スキャン結果」のテキストエリアにスキャン結果が出力されていきます。
スキャン実行中には、下のステータスバーの右側のボックスが赤色になっています。ボックスが緑色に変わると、スキャンは終了です。
ショートカットをダブルクリックするなりしてNmapWinを起動します。するとNMapWinが起動して図のような画面が出ると思います。
ポートスキャンしたいIPアドレス、もしくはホスト名を「スキャン対象ホスト」欄に入力し、「スキャン」をクリックします。
するとポートスキャンが始まり、「スキャン結果」のテキストエリアにスキャン結果が出力されていきます。
スキャン実行中には、下のステータスバーの右側のボックスが赤色になっています。ボックスが緑色に変わると、スキャンは終了です。
たくさんのホストに向けてスキャンする
今は1つのホストに向けてスキャンしましたが、範囲を指定することで大量のホストに向けてスキャンすることも可能です。そのためには「スキャン対象ホスト」欄に以下のように記述します。表記はいろいろありますが、用途とお好みに応じて使い分けてください。
・対象ホストをすべて列挙(スペース区切り)
例:192.168.0.1 192.168.0.2 192.168.1.3
・対象ホストをすべて列挙(カンマ区切り)
例:192.168.0.1,2,4,6,100
・範囲を指定
例:192.168.0.1-100
・ネットマスクで指定
例:192.168.0.1/29
・*で指定
例:192.168.0.*
スキャン方法の設定
NMapWinの一番魅力的なところはさまざまな方法のポートスキャンを試してみることができることではないでしょうか。スキャン方式を変更することはラジオボタンで簡単にできます。以下、選べるスキャン方法を左上から順に解説していきます。
・フルコネクトスキャン
「TCPフルコネクトスキャン」と呼ばれる、一般的なポートスキャナで使われるTCPのサービスを検出する方式です。
このスキャンでは、対象サーバーにSYNパケットを送信し、対象サーバーからSYN/ACKパケットが送られてきた場合に、ACKパケットを送り、実際にコネクションを確立する、いわゆる3WayHandShake出来た場合にポートが開いていることを判断します。RST(拒否)パケットの場合にはサービスが提供されていない(ポートが閉じている)と判断します。
このスキャンでは、対象サーバーにSYNパケットを送信し、対象サーバーからSYN/ACKパケットが送られてきた場合に、ACKパケットを送り、実際にコネクションを確立する、いわゆる3WayHandShake出来た場合にポートが開いていることを判断します。RST(拒否)パケットの場合にはサービスが提供されていない(ポートが閉じている)と判断します。
・SYNステルススキャン
「TCPハーフコネクトスキャン」とも呼ばれるTCPのサービスを検出する方式です。
対象サーバーにSYNパケットを送信し、SYNパケットを送った際に戻ってきたフラグが、SYN/ACKかRSTかによってポートが開いているか閉じているかを判断します。SYN/ACKを受け取ったとき、RSTパケットを返信するということで、コネクションを確立せずにスキャンすることができます。
NmapWinのデフォルトではこの方式が使われています。
対象サーバーにSYNパケットを送信し、SYNパケットを送った際に戻ってきたフラグが、SYN/ACKかRSTかによってポートが開いているか閉じているかを判断します。SYN/ACKを受け取ったとき、RSTパケットを返信するということで、コネクションを確立せずにスキャンすることができます。
NmapWinのデフォルトではこの方式が使われています。
・FINステルススキャン
「FINスキャン」と呼ばれるTCPのサービスを検出する方式です。
FINスキャンでは、対象サーバーに対してFINパケットをいきなり送り、何も返信されない場合にはポートが開いている、RSTパケットが返信されてきた場合にポートが閉じていると判断します。
しかし、何も返信されない場合もポートが開いていると判断するので、対象サーバーにたどり着くまでにパケットがロストした場合など、誤った判断を下す場合もあります。また、対象サーバーがWindowsマシンの場合では反応しません。
FINスキャンでは、対象サーバーに対してFINパケットをいきなり送り、何も返信されない場合にはポートが開いている、RSTパケットが返信されてきた場合にポートが閉じていると判断します。
しかし、何も返信されない場合もポートが開いていると判断するので、対象サーバーにたどり着くまでにパケットがロストした場合など、誤った判断を下す場合もあります。また、対象サーバーがWindowsマシンの場合では反応しません。
・Pingスイープ
「Pingスイープ」は、pingを実行することで対象サーバーの稼動状況を調べます。基本的にpingの自動化と考えてもらえればいいでしょう。
スキャン対象のIPアドレスにサーバーが存在するかどうかを素早く調べたいときなどに使うとよいでしょう。
スキャン対象のIPアドレスにサーバーが存在するかどうかを素早く調べたいときなどに使うとよいでしょう。
・UDPスキャン
「UDPスキャン」はUDPのサービスを検出します。
0バイトのUDPパケットを各ポートに送信し、何も応答がなければポートが開いている、ICMP Port Unreachableパケットが返信された場合にはポートが閉じていると判断します。時間をかけないと返信されるICMPパケットをロストする場合がありますので、注意した方が良いでしょう。
0バイトのUDPパケットを各ポートに送信し、何も応答がなければポートが開いている、ICMP Port Unreachableパケットが返信された場合にはポートが閉じていると判断します。時間をかけないと返信されるICMPパケットをロストする場合がありますので、注意した方が良いでしょう。
・Nullスキャン
「Nullスキャン」はTCPのサービスを検出します。
この方法ではTCPの6つのフラグすべてをOFFにしたパケットを送信し、FINスキャンなどと同じく何も返ってこない場合にはポートが開いている、RSTパケットが返って来た場合にはポートが閉じていると判断します。FINスキャンと同様に対象サーバーがWindowsマシンの場合では反応しません。
この方法ではTCPの6つのフラグすべてをOFFにしたパケットを送信し、FINスキャンなどと同じく何も返ってこない場合にはポートが開いている、RSTパケットが返って来た場合にはポートが閉じていると判断します。FINスキャンと同様に対象サーバーがWindowsマシンの場合では反応しません。
・Xmasツリースキャン
「Xmasツリースキャン」はTCPのサービスを検出します。
XmasツリースキャンはTCPのFIN/PUSH/URGフラグをONにしたパケットを送りつけ、何も返ってこない場合にはポートが開いている、RSTパケットが返信されてきた場合にはポートが閉じていると判断します。
XmasツリースキャンはTCPのFIN/PUSH/URGフラグをONにしたパケットを送りつけ、何も返ってこない場合にはポートが開いている、RSTパケットが返信されてきた場合にはポートが閉じていると判断します。
・アイドルスキャン
「アイドルスキャン」はアイドルスキャンを行います。
この手法を利用すると,あなたの実IPアドレスから対象ホストへ1つもパケットを送信せず、対象ホストから全く見えないTCPポートスキャンを行うことができます。
これについての非公式な資料は
http://www.insecure.org/nmap/idlescan.html
にありますのでこれを参照してください。
この手法を利用すると,あなたの実IPアドレスから対象ホストへ1つもパケットを送信せず、対象ホストから全く見えないTCPポートスキャンを行うことができます。
これについての非公式な資料は
http://www.insecure.org/nmap/idlescan.html
にありますのでこれを参照してください。
・IPスキャン
「IPプロトコルスキャン」はIPプロトコルを検出するスキャンタイプです。
IPプロトコルスキャンは各プロトコルに対してraw IPパケットを送りつけ、ICMP port unreachable を受信した場合、そのプロトコルはサポートされていないと判断します。ICMP パケットを送信しないOSやファイアウォールの場合、すべてのプロトコルがサポートされているとされてしまいます。
IPプロトコルスキャンは各プロトコルに対してraw IPパケットを送りつけ、ICMP port unreachable を受信した場合、そのプロトコルはサポートされていないと判断します。ICMP パケットを送信しないOSやファイアウォールの場合、すべてのプロトコルがサポートされているとされてしまいます。
・ACKスキャン
「ACKスキャン」はTCPのサービスを検出するスキャンタイプです。
ACKスキャンはACKフラグをONにしたパケットを送信します。FINスキャンなどと同じく何も返ってこない場合にはポートが開いている、RSTパケットが返信されてきた場合にはポートが閉じていると判断します。
ファイアウォールのルールが複雑なものかどうか判断するのに役立ちます。
ACKスキャンはACKフラグをONにしたパケットを送信します。FINスキャンなどと同じく何も返ってこない場合にはポートが開いている、RSTパケットが返信されてきた場合にはポートが閉じていると判断します。
ファイアウォールのルールが複雑なものかどうか判断するのに役立ちます。
・Windowスキャン
「Windowスキャン」はACKスキャンに似たスキャンタイプです。いくつかのOSではTCPのウィンドウサイズを見ればポートが開いているか閉じているか判別できますので、Windowスキャンはウィンドウサイズを調査することで開いているポートを判断します。
・RPCスキャン
「RPCスキャン」はrpcinfoと同じようなものです。
すべてのTCP/UDPポートをスキャンし、その後RPCに空のコマンドを送信します。RPCのポートが開いていた場合、対象サーバーはバージョンナンバーを返してきます。
すべてのTCP/UDPポートをスキャンし、その後RPCに空のコマンドを送信します。RPCのポートが開いていた場合、対象サーバーはバージョンナンバーを返してきます。
・List Scan
「Listスキャン」はスキャン対象ホストのIPアドレスとホスト名の一覧を表示します。
その他のスキャンオプション
・スキャンポート範囲
スキャン対象となるポート番号の範囲を指定します。対象ポートをカンマ区切りですべて列挙するやり方(例:21,22,23,80,139)と範囲を指定する(例:21-139)書き方が可能です。この2つを組み合わせたやり方もできます(例:-100,200-1024,3000-4000,60000-)。
・デバイス
いくつかNICが存在する際にスキャンさせたいNIC(Network Interface Card)を指定します。これはIntel(R) PRO/100 VE Network Connection: \Device\NPF_{ACE82734-1D9D-4E57-89B6-957455EE99D3}のようないわゆるWindowsのアダプタ番号とは違いUNIXライクなeth0、eth1のように指定する必要がありますので、これを指定する際には後述のWin32→インターフェイスリストでインターフェイスリストを取得して、知っておく必要があります。
・アイドルスキャンホスト
アイドルスキャンのために使うホストを指定します。
生存を確認しているホストを指定してください。
生存を確認しているホストを指定してください。
・囮を使う
囮(おとり)を使ったスキャン方法で、囮となるIPアドレスを指定します。
ほとんどの場合、スキャンを行うと相手にIPアドレスが知られてしまいます。そこで複数の偽のIPアドレスを生成してスキャンを実施し、IDSなどに少しでも見つかりにくくします。
ほとんどの場合、スキャンを行うと相手にIPアドレスが知られてしまいます。そこで複数の偽のIPアドレスを生成してスキャンを実施し、IDSなどに少しでも見つかりにくくします。
・発信元IPアドレス
NmapWinを実行するホストのIPアドレスを指定します。
自分のIPアドレスを隠して他のノードのふりをしてスキャンすることができます。
自分のIPアドレスを隠して他のノードのふりをしてスキャンすることができます。
・バウンススキャン
FTPサーバーを指定することでFTPサーバーを踏み台にしたスキャンを行います。
ファイアウォールを通してFTPサーバに接続できるとき、そこからブロックされていそうなポートをスキャンできます。
ファイアウォールを通してFTPサーバに接続できるとき、そこからブロックされていそうなポートをスキャンできます。
・発信元ポート番号
NmapWinが使うポート番号を指定します。
単純なファイアウォールなど特定ポートからのアクセス(53など)は通過させる設定になっている場合に使うとスキャンできるかもしれません。
単純なファイアウォールなど特定ポートからのアクセス(53など)は通過させる設定になっている場合に使うとスキャンできるかもしれません。
Discoverタブは相手ホストの生死確認のための設定
ここからはそれぞれのタブを選んだときにどのような設定ができるかについて書いていきます。左から順に解説していきます。
左から2番目にあたるDiscoverタブでは対象ホストが動作しているかどうかを確認する(動いてないホストにスキャンするのは間抜けなので)ための方法を設定します。
・TCP Ping
TCP80番ポートに対してTCPのACKフラグを立てたパケットを送り、サーバーの生死確認を行います(NMapWinではポート番号の変更はできないようです)。
・TCP+ICMP
上のTCP Pingと下のICMP Pingの両方のパケットを送ります。
・ICMP Ping
Pingを使ってサーバーの生死確認を行います。
・Don't Ping
サーバーの生死確認を行いません。ステルス機能を使ったブロードバンドルーターのようにPingに応答しないように設定されているホストなどに有効な設定です。
意外と重要な設定があるOptionsタブ
Optionsタブではスキャンのためのオプションと情報の表示に関する設定をします。
オプション
・フラグメンテーション
送信するパケットをフラグメント化(断片化)して送ります。IDSなどの侵入検知システムを欺くときに使用すると有効です。プログラムによっては小さく分割されたパケットでトラブルを起こすので注意してください。
・Identd情報取得
リバースidentスキャンを行います。
フルコネクトで対象サーバのポートに接続し、ターゲットのidentサーバにクエリーをかけて、identdが稼動しているサーバーに対してサービスを実行しているユーザーを確認します。
フルコネクトで対象サーバのポートに接続し、ターゲットのidentサーバにクエリーをかけて、identdが稼動しているサーバーに対してサービスを実行しているユーザーを確認します。
・ホスト名解決
デフォルトではネットワークにマシンが繋がっているのを見つけたときだけですが、 つながっていない場合でも名前解決をするようにします。
・名前解決しない
DNSの名前解決を行わないようにします。
・高速スキャン
/etc/servicesにオープンポートのリストアップのみを行います。
・OSを判別する
対象サーバーのOSやバージョンを特定します。
これはスタックフィンガープリンティングという手法を用いて行います。何百種類ものOSやバージョンを特定することができます。ただし、オープンしたポートが少ないと特定できないこともあります。
これはスタックフィンガープリンティングという手法を用いて行います。何百種類ものOSやバージョンを特定することができます。ただし、オープンしたポートが少ないと特定できないこともあります。
・ランダムホスト
ランダムに生成したIPアドレスに対してスキャンを行います。
ウイルスのようにスキャンポート範囲を1つ設定して、そのサーバーをランダムに探すなどの用途で使用できます。停止しない限り永遠に動作し続けます。
ウイルスのようにスキャンポート範囲を1つ設定して、そのサーバーをランダムに探すなどの用途で使用できます。停止しない限り永遠に動作し続けます。
・レジュームする
スキャン途中に「停止」ボタンで中断した後に再開したいときに使います。
デバッグ
・デバッグ
NmapWinの実行途中のデバッグ情報を表示します。
・詳細に
冗長モードです。シーケンス番号の変化やホストの連続起動時間などより詳細な情報を表示してくれます。
開いているポートを見つけるとリアルタイムに表示してくれるので便利です。
開いているポートを見つけるとリアルタイムに表示してくれるので便利です。
・とても詳細に
冗長モードよりもさらに多くの情報を出力します。
冗長モードで表示される情報に加え、OS判別の元になった情報や、Warningなどが表示されるようになります。
冗長モードで表示される情報に加え、OS判別の元になった情報や、Warningなどが表示されるようになります。
Timingタブはスキャンの時間に関する設定
Timingタブではスキャン速度の設定とスキャン実行時のタイムアウトなどを設定します。
スキャン間隔
・じっくり
5分間隔でパケットを送信します。
これは主に同じホストから連続でパケットが飛んでくると遮断するIDSなどの対策に有効です。
これは主に同じホストから連続でパケットが飛んでくると遮断するIDSなどの対策に有効です。
・静かに
15秒間隔でパケットを送信します。
ネットワークの負荷を軽減することとIDSに対して使います。
ネットワークの負荷を軽減することとIDSに対して使います。
・丁寧に
0.4秒間隔でパケットを送信します。
ネットワークの負荷軽減に有効です。
ネットワークの負荷軽減に有効です。
・普通に
パケットの送信間隔をエラーが起こらない程度にできるだけ早く行います。
デフォルトではこれを使用することになります。
デフォルトではこれを使用することになります。
・急いで
1ホストにつき5分でタイムアウトします。応答は1.25秒以上待ちません。
せっかちな人や応答速度が速い同一LAN内のマシンに対してスキャンを行う場合などに有効でしょう。
せっかちな人や応答速度が速い同一LAN内のマシンに対してスキャンを行う場合などに有効でしょう。
・ハイスパート
1ホストにつき75秒でタイムアウトします。応答は0.3秒以上待ちません。
早く終わらせてラックリしたい人向けです。
早く終わらせてラックリしたい人向けです。
タイムアウト
・タイムアウト時間(ms)
ホスト1台に対してのタイムアウト時間を設定します。
・最小RTT(ms)
目標ホストが非常に速くESTABLISHEDのパターンを応答するとき、 NmapWinは1つの調査にかかる時間の量を自動的に縮めます。これはスキャンが早くなりますが、レスポンスが通常より長くかかったパケットは、失敗してしまいます。このパラメーターで最低限与えられた時間だけ待つことを保証することができます。
・最大RTT(ms)
個々の通信のタイムアウトを指定します。
・初期RTT(ms)
初期のスキャンタイムアウトを指定します。
「Don't Ping」オプションを指定してファイアウォールのあるホストを調査するのに有効です。
「Don't Ping」オプションを指定してファイアウォールのあるホストを調査するのに有効です。
・同時スキャン数
同時にスキャンする最大値を指定します。
・スキャン間隔(ms)
スキャンの最小間隔を指定します。
ファイル関連はFilesタブ
「Files」タブではファイルリストの読み込みとスキャン結果の書き出しについての設定を行います。
NmapWinのスキャン結果は「スキャン結果」欄に出力されますが、それ以外にもファイルに保存することができます。
NmapWinのスキャン結果は「スキャン結果」欄に出力されますが、それ以外にもファイルに保存することができます。
・スキャンリストファイルを読み込む
スキャンするホストのリストをファイル読み込ませたい場合には、「入力ファイル」にチェックを入れます。「ファイル」をクリックしてファイルを保存する場所を指定します。
・ログをファイルに出力する
ファイルに保存する場合には、「Files」タブの「出力ファイル」にチェックを入れます。「ファイル」をクリックしてファイルを保存する場所を指定します。
保存できるファイルの種類には「ノーマル」、「XML」、「Grep」の3種類があります。「All」を指定すると全種類を別々のファイルで保存します。「追加」にチェックを入れると既存ファイルに出力結果を追加していくことになります。
保存できるファイルの種類には「ノーマル」、「XML」、「Grep」の3種類があります。「All」を指定すると全種類を別々のファイルで保存します。「追加」にチェックを入れると既存ファイルに出力結果を追加していくことになります。
ServiceタブはWindowsサービスの設定
Windowsのサービスに追加してあれば、スケジュールを決めて定期的に実行させることが可能です。使ったことないんであまりよくわかりませんが、定期的な監査などに役立つのではないでしょうか。
Win32タブはオプション設定
Win32タブではドライバやRawソケットなどのオプションを設定します。
オプション
・WinPcapを使わない
WinPcapライブラリを使わずにパケットキャプチャを行います。
・No IP HLP Api
パケット送信間隔を15秒にします。
・Rawソケットをサポートしない
Rawソケットをサポートしません。
・強制的にRawソケットを使用する
Rawソケットを使います。
・NT4 Route
NT4のrouteをテストします。
・Win Trace
Win32システムのデバッグを行います。
Commands
・インターフェイスリスト
ネットワークカードのの一覧を表示します。eth0のようにUNIXライクに表示されます。
終わりに
急いで書いたこともあり、記憶に頼って確認をちゃんと取っていないところがあります。そんなこともあって、わかりにくいところや間違っているところ、誤字脱字などがあると思います。そんなときは何も考えず指摘してください、素早く直しますので。