-sL(リストスキャン)

リストスキャンはホスト発見の発展型で、指定したネットワークの各ホストをリストアップするだけで、対象のホストには一切パケットを送信しない。 デフォルトでは、Nmapはホストの名前を知るためにDNSの逆解析を行う。 単純なホスト名から得られる有用な情報には、しばしば驚かされる。 たとえば、fw.chiはある会社のシカゴファイアウォールの名前である。 Nmapは、最後にIPアドレスの総数も報告している。 リストスキャンは、ターゲットに適切なIPアドレスがあるかどうかを確認するための、良いサニティチェックになる。 ホストが見覚えのないドメイン名をスポーツする場合、間違った会社のネットワークをスキャンしないように、さらに調査する価値がある。

このアイデアは、単にターゲットホストのリストを印刷することなので、ポートスキャン、OS検出、またはホスト検出などのより高いレベルの機能性のオプションは、これと組み合わせることができない。

-sn(ポートスキャンなし)

このオプションは、ホスト発見後にポートスキャンを行わず、ホスト発見プローブに応答した利用可能なホストのみを出力するよう、Nmapに指示する。 これは、しばしば「pingスキャン」として知られているが、tracerouteとNSEホストスクリプトの実行を要求することも可能である。 これは、デフォルトではリストスキャンより一段と侵入的であるが、同じ目的で使用できることが多い。 あまり注意を引くことなく、ターゲットネットワークの軽い偵察を行うことができる。 攻撃者にとっては、IPやホスト名を1つ1つスキャンするリストスキャンよりも、稼働中のホストが何台あるかを知ることの方が価値があるのだ。 ネットワーク上の利用可能なマシンを数えたり、サーバーの可用性を監視したりするのに簡単に使用できる。 これはしばしば ping sweep と呼ばれ、多くのホストがブロードキャストクエリに応答しないため、ブロードキャストアドレスへの ping よりも信頼性が高い。

-sn で行われるデフォルトのホスト発見は、ICMP echo 要求、ポート443への TCP SYN、ポート80への TCP ACK およびデフォルトの ICMP timestamp 要求から構成されている。 非特権ユーザーによって実行された場合、ターゲット上のポート 80 および 443 に対してのみ SYN パケットが送信されます (connect 呼び出しを使用します)。 特権ユーザがローカルイーサネットネットワーク上のターゲットをスキャンしようとした場合、--send-ip が指定されていなければ ARP リクエストが使用される。 -sn オプションは、より柔軟性を持たせるために、任意の検出プローブタイプ (-P* オプション) と組み合わせることができる。 これらのプローブタイプとポート番号オプションのいずれかが使用された場合、デフォルトのプローブが上書きされる。 Nmapを実行するソースホストとターゲットネットワークの間に厳格なファイアウォールが存在する場合、これらの高度な技術を使用することが推奨される。

Nmap の以前のリリースでは、-sn-sP として知られていた。

-Pn(No ping)

このオプションは、ホスト検出段階を完全にスキップするものである。 通常、Nmap は、この段階を、より重いスキャニングのためのアクティブなマシンを決定し、ネットワークの速度を測定するために使用する。 デフォルトでは、Nmapは、稼働していることが判明したホストに対して、ポートスキャン、バージョン検出、またはOS検出などの重いプロービングのみを実行する。 -Pnでホスト検出を無効にすると、Nmapは指定されたすべてのターゲットIPアドレスに対して、要求されたスキャン機能を実行するようになる。 したがって、コマンドラインで/16サイズのネットワークが指定された場合、65,536個のすべてのIPアドレスがスキャンされる。 適切なホスト検出はリストスキャンと同様にスキップされるが、停止してターゲットリストを表示する代わりに、Nmapは各ターゲットIPがアクティブであるかのように、要求された機能の実行を続ける。 デフォルトのタイミングパラメータが使用されるため、スキャンが遅くなることがあります。

ローカルイーサネットネットワーク上のマシンでは、ARPスキャンはまだ実行されます (--disable-arp-ping または --send-ip が指定されていない場合)。 Nmap の以前のバージョンでは、-Pn-P0-PN であった。

-PS <port list>(TCP SYN Ping)

このオプションは、SYNフラグを設定した空のTCPパケットを送信します。 デフォルトの送信先ポートは 80 である(コンパイル時に nmap.hDEFAULT_TCP_PROBE_PORT_SPEC を変更することで設定可能)。 パラメータで代替ポートを指定することもできる。 構文は-pと同じだが、T:のようなポートタイプ指定子は使用できない。 例としては、-PS22-PS22-25,80,113,1050,35000があります。 なお、-PSとポートリストの間にはスペースを入れてはいけない。

SYN フラグは、リモートシステムに対して、接続を確立しようとしていることを示唆するものである。 通常、宛先ポートは閉じられ、RST (リセット) パケットが送り返されます。 ポートがたまたま開いていた場合、ターゲットはSYN/ACK TCPパケットで応答することにより、TCPスリーウェイハンドシェイクの第2段階を行う。 Nmapを実行しているマシンは、ACKパケットを送信する代わりにRSTで応答することで、3ウェイハンドシェイクを完了させ、完全な接続を確立して、その初期接続を切断する。 RSTパケットは、Nmap自身ではなく、Nmapを実行しているマシンのカーネルが、予期せぬSYN/ACKに応答して送信するものです。

Unixでは、一般に特権ユーザrootだけが、生のTCPパケットを送受信することが可能である。 非特権ユーザの場合、各ターゲットポートに対して connect システムコールが開始されるという回避策が自動的に採用されます。 これは、ターゲットホストにSYNパケットを送信し、接続を確立しようとする効果がある。 connect が迅速な成功または ECONNREFUSED の失敗を返した場合、基盤となる TCP スタックは SYN/ACK または RST を受信し、ホストは利用可能とマークされているはずである。 接続の試みがタイムアウトになるまで放置された場合、そのホストは down としてマークされる。

-PA <port list>(TCP ACK Ping)

TCP ACK Ping は、先ほど議論した SYN Ping と非常によく似ています。 違いは、推測できるように、SYNフラグの代わりにTCP ACKフラグが設定されていることです。 このようなACKパケットは、確立されたTCP接続上のデータを承認しているように見せかけますが、そのような接続は存在しません。

-PA オプションは、SYN プローブと同じデフォルトポート (80) を使用し、また同じフォーマットで宛先ポートのリストを取ることができる。 非特権ユーザがこれを試した場合、先に述べた connect 回避策が使われる。

SYNとACKの両方のPingプローブを提供する理由は、ファイアウォールを迂回する可能性を最大限にするためであるため、この回避策は不完全なものである。 多くの管理者は、会社のWebサイトやメールサーバなどの公共サービス向けのものを除き、受信SYNパケットをブロックするようにルータやその他の簡易ファイアウォールを設定します。 これにより、組織への他の着信接続は阻止され、ユーザーはインターネットへの接続を阻止されずに発信できるようになります。 この非ステートフルなアプローチは、ファイアウォール/ルーターのリソースをほとんど消費せず、ハードウェアおよびソフトウェアフィルターによって広くサポートされています。 Linux Netfilter/iptablesファイアウォールソフトウェアは、このステートレス方式を実装するための--syn便利オプションを提供しています。 このようなステートレス・ファイアウォールルールを導入した場合、SYN Pingプローブ(-PS)を閉じたターゲットポートに送信すると、ブロックされる可能性が高くなります。 このような場合、ACK プローブは、これらのルールを見事に突破して輝くのです。

もうひとつの一般的なファイアウォールは、予期しないパケットをドロップするステートフルルールを使用しています。 この機能は、当初はハイエンドのファイアウォールに多く見受けられましたが、ここ数年で、より一般的になってきています。 Linux Netfilter/iptables システムは、--state オプションを通じてこれをサポートしており、接続状態に基づいてパケットを分類しています。 予期せぬACKパケットは一般に偽物と認識され、ドロップされるため、SYNプローブはこのようなシステムに対してより効果的に作用する可能性が高い。

-PU <port list>(UDP Ping)

もう一つのホスト発見オプションは、与えられたポートにUDPパケットを送るUDP Pingである。 ほとんどのポートでは、パケットは空であるが、応答を引き出す可能性の高いプロトコル固有のペイロードを使用するものもある。 –data, --data-string, --data-length オプションでも変更可能である。

ポートリストは、先に述べた -PS, -PA オプションと同じ形式である。 ポートを指定しない場合、デフォルトは 40125 である。 このデフォルトは、コンパイル時に nmap.hDEFAULT_UDP_PROBE_PORT_SPEC を変更することで設定することができる。

ターゲットマシーン上の閉じたポートに当たった場合、UDPプローブはICMP port unreachableパケットを返送するよう要求する。 これは、Nmapに対して、マシンが稼働して利用可能であることを示すものである。 ホスト/ネットワーク到達不能やTTL超過など、他の多くのタイプのICMPエラーは、ダウンしているか到達不能なホストを示している。 応答がない場合も、このように解釈されます。 オープンポートに到達した場合、ほとんどのサービスは単に空のパケットを無視し、何の応答も返さない。 このため、デフォルトのプローブポートは、使用されている可能性が極めて低い40125となっている。 Character Generator (chargen)プロトコルのような少数のサービスは、空のUDPパケットに応答するので、マシンが利用可能であることをNmapに開示する。

このスキャンタイプの最大の利点は、TCPのみをスクリーニングするファイアウォールやフィルタをバイパスすることである。 たとえば、私はかつてLinksys BEFW11S4無線ブロードバンドルータを所有していました。

-PY <port list>(SCTP INIT Ping)

このオプションは、最小のINITチャンクを含むSCTPパケットを送信します。 デフォルトの宛先ポートは 80 です (コンパイル時に nmap.hDEFAULT_SCTP_PROBE_PORT_SPEC を変更することにより設定可能)。 代替ポートをパラメータとして指定することができる。 構文は -p と同じだが、S: のようなポートタイプ指定子は許されない。 例としては,-PY22-PY22,80,179,5060があります。 なお、-PYとポートリストの間にはスペースを入れてはいけない。

INIT チャンクは、リモートシステムに対して、アソシエーションを確立しようとしていることを示唆する。 通常、宛先ポートは閉じられており、ABORT チャンクが送り返されます。 ポートがたまたま開いている場合、ターゲットはINIT-ACKチャンクで応答することで、SCTP 4ウェイハンドシェイクの第2段階を実行する。 Nmapを実行しているマシンに機能的なSCTPスタックがある場合、4ウェイハンドシェイクの次のステップであるCOOKIE-ECHOチャンクを送るのではなく、ABORTチャンクで応答して、新生アソシエーションを破壊する。 ABORTパケットは、Nmap自身ではなく、予期しないINIT-ACKに応答して、Nmapを実行しているマシンのカーネルによって送信されます。

Unixでは、一般に特権ユーザrootのみが生のSCTPパケットを送受信することが可能である。 SCTP INIT Pings の使用は、現在、非特権ユーザーでは不可能です。

-PE;-PP;-PM(ICMP Ping タイプ)

先に述べた変わった TCP、UDP、SCTP ホスト発見タイプに加えて、Nmap はどこにでもある ping プログラムが送る標準パケットを送ることができます。 Nmapは、ICMPタイプ8(エコー要求)パケットをターゲットIPアドレスに送信し、利用可能なホストからのタイプ0(エコー応答)の返送を期待する。 ネットワーク探索者にとっては残念なことだが、現在、多くのホストやファイアウォールが、RFC1122で要求されているような応答はせず、これらのパケットをブロックしている。 このため、ICMPのみのスキャンでは、インターネット上の未知のターゲットに対して十分な信頼性を確保できることはほとんどありません。 しかし、内部ネットワークを監視するシステム管理者にとっては、実用的かつ効率的なアプローチとなり得ます。

echo requestは標準的なICMP pingクエリであるが、Nmapはそれだけにとどまらない。 ICMP標準(RFC792とRFC950 )は、タイムスタンプ要求、情報要求、アドレスマスク要求パケットをそれぞれコード13、15、17として規定しています。 これらの問い合わせの表向きの目的は,アドレスマスクや現在の時刻などの情報を知ることですが,ホストの発見にも簡単に利用することができます. 応答するシステムは稼働しており、利用可能である。 Nmapは、情報要求パケットが広くサポートされていないため、現在、情報要求パケットを実装していない。 RFC1122では、「ホストはこれらのメッセージを実装すべきではない(SHOULD NOT)」と主張されている。 タイムスタンプとアドレスマスククエリは、それぞれ-PPオプションと-PMオプションで送信することができる。 タイムスタンプ応答(ICMPコード14)またはアドレスマスク応答(コード18)により、そのホストが利用可能であることが開示される。

-PO <protocol list>(IP Protocol Ping)

新しいホスト発見オプションのひとつに、IPヘッダに指定されたプロトコル番号を設定したIPパケットを送信するIP protocol ping がある。 プロトコルリストは、先に説明したTCP、UDP、SCTPのホスト発見オプションのポートリストと同じ形式をとる。 プロトコルを指定しない場合、デフォルトではICMP(プロトコル1)、IGMP(プロトコル2)、IP-in-IP(プロトコル4)用の複数のIPパケットを送信するようになっています。 デフォルトのプロトコルは,コンパイル時に nmap.hDEFAULT_PROTO_PROBE_PORT_SPEC を変更することで設定可能です。 ICMP, IGMP, TCP (protocol 6), UDP (protocol 17), SCTP (protocol 132) では、パケットは適切なプロトコルヘッダとともに送信され、その他のプロトコルでは IP ヘッダ以上の追加データはない (--data, --data-string, --data-length オプションのいずれかが指定されていなければ)。

このホスト発見方法は、探索と同じプロトコルによる応答か、与えられたプロトコルは目的地のホストに対応しないという ICMP protocol unreachable メッセージかを探し当てるものです。

--disable-arp-ping(ARP または ND Ping なし)

Nmap は、たとえ -Pn-PE などの他のホスト発見オプションが使用されていても、通常ローカルに接続したイーサネットホストの ARP または IPv6 Neighbor Discovery (ND) 発見を行っています。 この暗黙の動作を無効にするには、--disable-arp-ping オプションを使用してください。

デフォルトの動作は通常高速ですが、このオプションは、ルータがすべてのARP要求に推測で応答し、ARPスキャンに従ってすべてのターゲットをアップしているように見せる、プロキシARPを使用するネットワークで有用です。

--discovery-ignore-rst

いくつかのケースでは、ファイアウォールは、占有されていないか許可されていないアドレスへのプローブに対するTCPリセット (RST) 応答を偽装する場合があります。 Nmapは通常、RST応答をターゲットが稼働している証拠と見なすので、これは、存在しないターゲットをスキャンする無駄な時間につながる可能性がある。 --discovery-ignore-rst を使用すると、Nmap はホスト検出時にこれらの応答を考慮しないようにすることができる。

--traceroute(Trace Path to Host)

トレーサールートは、スキャン結果の情報を使用して、ターゲットに到達する可能性が最も高いポートおよびプロトコルを決定するために、スキャン後に実行されるものである。 接続スキャン(-sT)とアイドルスキャン(-sI)を除くすべてのスキャンタイプで動作する。

トレースルートは、スキャナとターゲットホスト間の中間ホップから ICMP Time Exceeded メッセージを引き出すために、低い TTL (time-to-live) を持つパケットを送信することで動作します。 標準的なtracerouteの実装は、1のTTLから始まり、宛先ホストに到達するまでTTLを増加させる。 Nmapのtracerouteは、高いTTLで開始し、ゼロになるまでTTLを減少させます。 これを逆に行うことで、Nmapは賢いキャッシュアルゴリズムを採用し、複数のホストに対するトレースを高速化することができる。 ネットワークの状態にもよるが、Nmapがホストごとに送信するパケット数は、平均して5~10個少ない。

-n(DNS解決なし)

Nmapが、見つけたアクティブなIPアドレスのDNS逆解析を行わないように指定する。 DNSは、Nmap内蔵の並列スタブリゾルバでも遅いことがあるため、このオプションはスキャン時間を短縮できる。

-R(DNS resolution for all targets)

Nmapに、ターゲットIPアドレスに対して常にDNSの逆解析を行うように指示する。 通常、逆DNSは応答する(オンラインの)ホストに対してのみ実行されます。

--resolve-all(Scan each resolved address)

ホスト名ターゲットが複数のアドレスに解決する場合、それらすべてをスキャンします。 デフォルトの動作は,最初に解決されたアドレスだけをスキャンします。 それにもかかわらず,適切なアドレスファミリーのアドレスだけがスキャンされます。 デフォルトではIPv4、IPv6では-6となります。

--system-dns(システムDNSリゾルバを使用)

デフォルトでは、Nmapはホストで構成されたネームサーバに直接クエリを送信し、応答を待つことによってIPアドレスを逆解析します。 多くの要求 (多くの場合、数十) は、パフォーマンスを向上させるために並行して実行されます。 このオプションを指定すると、代わりにシステムのリゾルバが使用されます (getnameinfo 呼び出しにより一度に 1 つの IP が使用されます)。 これは、Nmapの並列リゾルバにバグを発見しない限り、速度が遅く、ほとんど役に立たない(発見した場合は、私たちに知らせてほしい)。 システムリゾルバは常に前方探索(ホスト名からIPアドレスを取得する)に使われる。

--dns-servers <server1>] (逆引きDNSクエリに使用するサーバ)

デフォルトでは、Nmapはresolv.confファイル(Unix)またはレジストリ(Win32)からDNSサーバを決定します(rDNS解決用)。 また、このオプションを使用して、代替サーバーを指定することもできます。 このオプションは、--system-dnsを使用している場合は使用されません。 複数のDNSサーバーを使用した方が、特にターゲットIPスペースの権威あるサーバーを選択した場合、高速になることがよくあります。

このオプションは、プライベートネットワークをスキャンするときにも便利です。 適切な rDNS 情報を提供するネーム サーバーがわずかしかなく、それらがどこにあるのかさえわからないことがあります。 53番ポートのネットワークをスキャンし (おそらくバージョン検出を使用)、次にNmapリストスキャン (-sL) を試して、動作するものが見つかるまで各ネームサーバを--dns-serversで一度に指定します。 このような状況では、DNS リゾルバは切り詰められたパケットから応答を引き出すために最善の努力をし、うまくいかない場合にはシステムリゾルバの使用に戻る。 また、CNAMEエイリアスを含む応答は、システムリゾルバにフォールバックします

コメントを残す

メールアドレスが公開されることはありません。