Nmapの使い方

 ここでは、ポートスキャンの代表的なツールであるnmapの原理・使い方・対策についてまとめてみました。ポートスキャンはセキュリティの基本ですが、とても奥が深いです。

nmapの書式は以下の通りです。

nmap [Scan Type...] [Options] {target specification}

スキャンタイプおよびオプションは任意、ターゲットは必須になります。

TCPのステルススキャン

ステルススキャン(TCPセッションを確立しないことで対象となるサーバにログが残りにくい形で行うポートスキャン)としてnmapでは以下のものが利用できます。

例 ACKスキャン 3ウェイハンドシェイクを経ずしてACKパケットを送信していることに注目!

オプション名 実行時の動作
-sS SYNスキャン(SYNパケットを送信する、特権ユーザでのデフォルトのスキャン。別名ハーフオープンスキャン) 大量に送信した場合は、そのままSYNフラッド攻撃になる。
-sA ACPスキャン(最初からACPパケットを送信する)
-sF FINスキャン(最初からFINパケットを送信する)
-sX Xmasスキャン(すべてのビットを有効になったパケットを送信する)
-sN Nullスキャン(全てのビットを無効にしたパケットを有効にする)

その他のスキャンオプション

オプション名 実行時の動作
-p 指定したポートに対してのみスキャンを実行する。 -p 0-65535で全ポートのスキャンが可能だが、2時間程度はかかる。
-sC コネクトスキャン(正常に3ウェイハンドシェイクを完了する、非特権ユーザでのデフォルトのスキャン。別名バニラスキャン)
-sU UDPスキャン(UDPのポートを対象とする)

実行結果

実行時には以下のように出力されます。

Open,Closed,filtered,nofiltered

ToDo

ポートがListenか否か、FWがACCEPTかDROPREJECTか、ステート状態はどうなのか?
で場合分けして実行結果を載せる。

下書き

オプション名 実行結果 wireshark上での動作
-sL ターゲットのホスト名を表示 DNSサーバにターゲットの名前解決のみを行いスキャンは実行しない
-sP ホストが存在するかどうかのみを確認する DNSに名前解決を行う
-P0 DNS解決を行わずにポートスキャンを行う DNSに名前解決を省略してポートスキャンを行う
-n DNS解決を行わずにポートスキャンを行う DNSに名前解決を省略してポートスキャンを行う

iptablesの設定
ホスト名がバレた時点で負け
iptablesDROPしたポートに対しては、filteredという結果が返ってくる
他と違ってクリスマスツリースキャンのみ、open|filteredという結果になった。

REJECTの場合は、unreachableエラーメッセージが送信される。

スキャンまでの流れは以下のようになります。

1.ARP解決 → 2. DNS解決(正引き・逆引き) 3. → 4.スキャン実行

試験環境

192.168.1.0/24内のホストのnmapのインストールされたホストから同一サブネットに対してスキャンしました。