これは、Ubuntu Online、Fedora Online、Windowsオンラインエミュレーター、MACOSオンラインエミュレーターなどの複数の無料オンラインワークステーションのXNUMXつを使用してOnWorks無料ホスティングプロバイダーで実行できるコマンドnmapです。
プログラム:
NAME
nmap-ネットワーク探索ツールとセキュリティ/ポートスキャナー
SYNOPSIS
nmap [スキャン 種類...] [オプション]{ターゲット 仕様}
DESCRIPTION
Nmap(「ネットワークマッパー」)は、ネットワークの探索とセキュリティのためのオープンソースツールです。
監査。 大規模なネットワークを迅速にスキャンするように設計されていますが、
単一のホスト。 Nmapは、生のIPパケットを新しい方法で使用して、使用可能なホストを判別します
ネットワーク上で、それらのホストが提供しているサービス(アプリケーション名とバージョン)、
実行しているオペレーティングシステム(およびOSバージョン)、パケットの種類
フィルタ/ファイアウォールが使用されており、他にも数十の特性があります。 Nmapは一般的に
多くのシステムおよびネットワーク管理者は、セキュリティ監査に使用され、
ネットワークインベントリ、サービスアップグレードスケジュールの管理、
ホストまたはサービスの稼働時間を監視します。
Nmapからの出力は、スキャンされたターゲットのリストであり、それぞれの補足情報が含まれています
使用するオプションによって異なります。 その情報の中で重要なのは「興味深いポート
テーブル」..そのテーブルには、ポート番号とプロトコル、サービス名、および状態が一覧表示されます。 The
状態は、開いている、フィルタリングされている、閉じている、またはフィルタリングされていないかのいずれかです。 開ける。 アプリケーションを意味します
ターゲットマシン上のは、そのポートで接続/パケットをリッスンしています。 フィルタリング。 意味
ファイアウォール、フィルター、またはその他のネットワーク障害物がポートをブロックしているため、Nmap
開いているか閉じているかわかりません。 閉まっている。 ポートにはリッスンしているアプリケーションがありません
それらはいつでも開くことができますが。 ポートはフィルタリングされていないものとして分類されます。 いつ
それらはNmapのプローブに応答しますが、Nmapはそれらが開いているかどうかを判断できません。
閉まっている。 Nmapは、open | filteredの状態の組み合わせを報告します。 閉じた|フィルタリングされた。 それが
XNUMXつの状態のどちらがポートを記述しているかを判別できません。 ポートテーブルには、
バージョン検出が要求されたときのソフトウェアバージョンの詳細。 IPプロトコルの場合
スキャンが要求されます(-それで)、Nmapは、サポートされているIPプロトコルに関する情報を提供します。
リスニングポート。
興味深いポートテーブルに加えて、Nmapは
逆引きDNS名、オペレーティングシステムの推測、デバイスタイプ、MACなどのターゲット
アドレス。
典型的なNmapスキャンを例1に示します。この例で使用される唯一のNmap引数
-A、OSとバージョンの検出、スクリプトスキャン、およびtracerouteを有効にします。 -T4、XNUMX for
より高速な実行; 次にホスト名。
例 1. A 代表者 Nmapの スキャン
# nmap -A -T4、XNUMX scanme.nmap.org
scanme.nmap.orgのNmapスキャンレポート(74.207.244.221)
ホストは稼働しています(0.029秒の遅延)。
74.207.244.221のrDNSレコード:li86-221.members.linode.com
表示されていません:995個の閉じたポート
ポートステートサービスバージョン
22 / tcp open ssh OpenSSH 5.3p1 Debian 3ubuntu7(プロトコル2.0)
| ssh-hostkey: 1024 8d:60:f1:7c:ca:b7:3d:0a:d6:67:54:9d:69:d9:b9:dd (DSA)
|_2048 79:f8:09:ac:d4:e2:32:42:10:49:d3:bd:20:82:85:ec (RSA)
80 / tcp open http Apache httpd 2.2.14((Ubuntu))
| _http-title:どうぞ、ScanMe!
646 / tcpフィルター処理されたldp
1720 / tcpフィルター処理されたH.323 / Q.931
9929 / tcp open nping-echo Nping echo
デバイスタイプ:汎用
実行中:Linux 2.6.X
OS CPE:cpe:/ o:linux:linux_kernel:2.6.39
OSの詳細:Linux 2.6.39
ネットワーク距離:11ホップ
サービス情報:OS:Linux; CPE:cpe:/ o:linux:kernel
TRACEROUTE(ポート53 / tcpを使用)
HOPRTTアドレス
[簡潔にするために最初の10ホップをカット]
11 17.65 ms li86-221.members.linode.com(74.207.244.221)
Nmap完了:1秒でスキャンされた1つのIPアドレス(14.40つのホストがアップ)
Nmapの最新バージョンは、次のサイトから入手できます。 https://nmap.org。 の最新バージョン
このマニュアルページは次のURLで入手できます。 https://nmap.org/book/man.html。 それはまたとして含まれています
Nmapネットワークスキャンの章:ネットワーク検出およびネットワーク検出の公式Nmapプロジェクトガイド
セキュリティスキャン(を参照) https://nmap.org/book/).
OPTIONS 概要
このオプションの概要は、Nmapが引数なしで実行され、最新バージョンの場合に出力されます。
で常に利用可能です https://svn.nmap.org/nmap/docs/nmap.usage.txt。 それは人々を助けます
最も一般的なオプションを覚えておいてください。ただし、の詳細なドキュメントに代わるものではありません。
このマニュアルの残りの部分。 いくつかのあいまいなオプションはここにも含まれていません。
Nmap 7.01(https://nmap.org)
使用法:nmap [スキャンタイプ] [オプション] {ターゲット仕様}
ターゲット仕様:
ホスト名、IPアドレス、ネットワークなどを渡すことができます。
例:scanme.nmap.org、microsoft.com / 24、192.168.0.1; 10.0.0-255.1-254
-iL :ホスト/ネットワークのリストからの入力
-iR :ランダムなターゲットを選択
-除外する:ホスト/ネットワークを除外する
--excludefile :ファイルからリストを除外する
ホストの発見:
-sL:リストスキャン-スキャンするターゲットをリストするだけです
-sn:Pingスキャン-ポートスキャンを無効にします
-Pn:すべてのホストをオンラインとして扱います-ホストの検出をスキップします
-PS / PA / PU / PY [ポートリスト]:指定されたポートへのTCP SYN / ACK、UDPまたはSCTP検出
-PE / PP / PM:ICMPエコー、タイムスタンプ、およびネットマスク要求検出プローブ
-PO [プロトコルリスト]:IPプロトコルPing
-n / -R:DNS解決を行わない/常に解決する[デフォルト:時々]
--dns-servers :カスタムDNSサーバーを指定する
--system-dns:OSのDNSリゾルバーを使用します
--traceroute:各ホストへのトレースホップパス
スキャン技術:
-sS / sT / sA / sW / sM:TCP SYN / Connect()/ ACK / Window / Maimonスキャン
-sU:UDPスキャン
-sN / sF / sX:TCP Null、FIN、およびXmasスキャン
--scanflags :TCPスキャンフラグをカスタマイズする
-sI :アイドルスキャン
-sY / sZ:SCTP INIT / COOKIE-ECHOスキャン
-sO:IPプロトコルスキャン
-b :FTPバウンススキャン
ポートの仕様とスキャンの順序:
-p :指定したポートのみをスキャンする
例:-p22; -p1-65535; -p U:53,111,137、T:21-25,80,139,8080、S:9
-除外-ポート:指定したポートをスキャンから除外します
-F:高速モード-デフォルトのスキャンよりも少ないポートをスキャンします
-r:ポートを連続してスキャンします-ランダム化しないでください
-トップポート:スキャン最も一般的なポート
--port-ratio :より一般的なスキャンポート
サービス/バージョンの検出:
-sV:開いているポートをプローブして、サービス/バージョン情報を判別します
-バージョン強度:0(明るい)から9(すべてのプローブを試す)に設定
--version-light:最も可能性の高いプローブに制限します(強度2)
--version-all:すべてのプローブを試してください(強度9)
--version-trace:詳細なバージョンスキャンアクティビティを表示します(デバッグ用)
スクリプトスキャン:
-sC:-script = defaultと同等
--script = : のコンマ区切りリストです
ディレクトリ、スクリプトファイルまたはスクリプトカテゴリ
--script-args = :スクリプトに引数を提供する
--script-args-file = filename:ファイルにNSEスクリプト引数を指定します
--script-trace:送受信されたすべてのデータを表示します
--script-updatedb:スクリプトデータベースを更新します。
--script-help = :スクリプトに関するヘルプを表示します。
スクリプトファイルのコンマ区切りリスト、または
スクリプトカテゴリ。
OSの検出:
-O:OS検出を有効にします
--osscan-limit:OSの検出を有望なターゲットに制限します
--osscan-guess:OSをより積極的に推測します
タイミングとパフォーマンス:
取るオプション秒単位であるか、「ms」(ミリ秒)を追加します。
's'(秒)、 'm'(分)、または 'h'(時間)の値(例:30m)。
-T <0-5>:タイミングテンプレートを設定します(高いほど速い)
--min-hostgroup / max-hostgroup :並列ホストスキャングループのサイズ
--min-parallelism / max-parallelism :プローブの並列化
--min-rtt-timeout / max-rtt-timeout / initial-rtt-timeout :指定
プローブの往復時間。
--max-再試行:ポートスキャンプローブの再送信回数を制限します。
--host-timeout :この長い後、ターゲットをあきらめる
--scan-delay /-max-scan-delay :プローブ間の遅延を調整します
-最小レート:遅くないパケットを送信します毎秒
-最大レート:パケットの送信速度は毎秒
ファイアウォール/ IDの回避となりすまし:
-f; --mtu :フラグメントパケット(オプションでMTUを指定)
-D :おとりでスキャンをクロークする
-S :なりすましの送信元アドレス
-e :指定されたインターフェースを使用
-g /-ソースポート:指定されたポート番号を使用
-プロキシ:HTTP / SOCKS1プロキシを介したリレー接続
- データ:送信されたパケットにカスタムペイロードを追加します
-データ文字列:送信されたパケットにカスタムASCII文字列を追加します
--data-length :送信されたパケットにランダムデータを追加する
--ip-options :指定されたIPオプションでパケットを送信する
--ttl :IP存続時間フィールドを設定します
--spoof-mac :MACアドレスのなりすまし
--badsum:偽のTCP / UDP / SCTPチェックサムを使用してパケットを送信します
OUTPUT:
-oN / -oX / -oS / -oG :通常の出力スキャン、XML、s |
指定されたファイル名に対するGrepable形式。
-oA :XNUMXつの主要なフォーマットで一度に出力
-v:詳細レベルを上げます(効果を高めるには-vv以上を使用します)
-d:デバッグレベルを上げます(効果を高めるには-dd以上を使用します)
--reason:ポートが特定の状態にある理由を表示します
--open:開いている(または開いている可能性のある)ポートのみを表示する
--packet-trace:送受信されたすべてのパケットを表示します
--iflist:ホストインターフェイスとルートを出力します(デバッグ用)
--append-output:指定された出力ファイルをクローバーするのではなく追加する
- 履歴書:中止されたスキャンを再開します
-スタイルシート:XML出力をHTMLに変換するXSLスタイルシート
--webxml:より移植性の高いXMLについては、Nmap.Orgの参照スタイルシート
--no-stylesheet:XML出力を使用したXSLスタイルシートの関連付けを防止します
MISC:
-6:IPv6スキャンを有効にする
-A:OS検出、バージョン検出、スクリプトスキャン、およびtracerouteを有効にします
--datadir :カスタムNmapデータファイルの場所を指定します
--send-eth / -send-ip:生のイーサネットフレームまたはIPパケットを使用して送信します
-特権:ユーザーが完全に特権を持っていると想定します
--unprivileged:ユーザーにrawソケット特権がないと想定します
-V:バージョン番号を印刷します
-h:このヘルプの概要ページを印刷します。
例:
nmap -v -A scanme.nmap.org
nmap -v -sn 192.168.0.0/16 10.0.0.0/8
nmap -v -iR 10000 -Pn -p 80
その他のオプションと例については、MANページ(https://nmap.org/book/man.html)を参照してください。
TARGET 仕様
オプション(またはオプション引数)ではないNmapコマンドライン上のすべてが処理されます
ターゲットホスト仕様として。 最も単純なケースは、ターゲットIPアドレスを指定することです。
スキャン用のホスト名。
隣接するホストのネットワーク全体をスキャンしたい場合があります。 このために、Nmapはサポートします
CIDRスタイル。 アドレッシング。 /を追加できます数ビット IPv4アドレスまたはホスト名とNmapに
最初のIPアドレスをスキャンします 数ビット 参考と同じです
指定されたIPまたはホスト名。 たとえば、192.168.10.0 / 24は、
192.168.10.0(バイナリ:11000000 10101000 00001010 00000000)および192.168.10.255(バイナリ:
11000000 10101000 00001010 11111111)、包括的。 192.168.10.40/24は正確にスキャンします
同じターゲット。 ホストscanme.nmap.orgがあるとします。 IPアドレス64.13.134.52にあり、
仕様scanme.nmap.org/16は、65,536との間の64.13.0.0個のIPアドレスをスキャンします。
64.13.255.255。 許可される最小値は/ 0で、インターネット全体を対象としています。 The
最大値は/ 32です。これは、すべてのアドレスが指定されているため、指定されたホストまたはIPアドレスのみをスキャンします。
ビットは固定されています。
CIDR表記は短いですが、必ずしも十分な柔軟性があるとは限りません。 たとえば、スキャンしたい場合があります
192.168.0.0/16ただし、サブネットとして使用される可能性があるため、.0または.255で終わるIPはスキップしてください
ネットワークおよびブロードキャストアドレス。 Nmapは、オクテット範囲アドレス指定を通じてこれをサポートします。 それよりも
通常のIPアドレスを指定するよりも、カンマ区切りの数字のリストを指定するか、
各オクテットの範囲。 たとえば、192.168.0-255.1-254は、
.0または.255で終わる範囲、および192.168.3-5,7.1はXNUMXつのアドレスをスキャンします
192.168.3.1、192.168.4.1、192.168.5.1、および192.168.7.1。 範囲のどちらの側も
省略; デフォルト値は、左側が0、右側が255です。 -を使用すること自体は
0-255と同じですが、最初のオクテットで0-を使用することを忘れないでください。これにより、ターゲットの仕様が決まります。
コマンドラインオプションのようには見えません。 範囲は最後のオクテットに限定する必要はありません。
指定子0-255.0-255.13.37は、すべてのIPアドレスに対してインターネット全体のスキャンを実行します
13.37で終わります。 この種の広範なサンプリングは、インターネット調査や
研究。
IPv6アドレスは、完全修飾IPv6アドレスまたはホスト名でのみ指定できます。
CIDRとオクテットの範囲はIPv6ではまだサポートされていません。
非グローバルスコープのIPv6アドレスには、ゾーンIDサフィックスが必要です。 Unixシステムでは、これは
パーセント記号の後にインターフェイス名が続きます。 完全なアドレスは
fe80 :: a8bb:ccff:fedd:eeff%eth0。 Windowsでは、の代わりにインターフェイスインデックス番号を使用します
インターフェイス名:fe80 :: a8bb:ccff:fedd:eeff%1。 インターフェイスインデックスのリストは、次のように表示できます。
コマンドの実行 netsh.exe インタフェース ipv6 表示する インタフェース.
Nmapは、コマンドラインで複数のホスト仕様を受け入れます。それらはである必要はありません。
同じタイプ。 コマンド nmap scanme.nmap.org 192.168.0.0/8 10.0.0,1,3-7.- あなたがすることをします
期待するだろう。
ターゲットは通常コマンドラインで指定されますが、次のオプションもあります
ターゲットの選択を制御するために利用可能:
-iL 入力ファイル名 (リストからの入力)。
からターゲット仕様を読み取ります 入力ファイル名。 ホストの膨大なリストを渡すことはしばしばです
コマンドラインでは扱いにくいですが、それでも一般的な要望です。 たとえば、DHCPサーバー
スキャンしたい現在の10,000件のリースのリストをエクスポートする場合があります。 または多分あなたがしたい
すべてのIPアドレスをスキャンします 以下は除く 許可されていない静的IPを使用してホストを見つけるため
アドレス。 スキャンするホストのリストを生成し、そのファイル名を次のようにNmapに渡すだけです。
への議論 -iL オプション。 エントリは、Nmapで受け入れられる任意の形式にすることができます
コマンドライン(IPアドレス、ホスト名、CIDR、IPv6、またはオクテット範囲)。 各エントリ
XNUMXつ以上のスペース、タブ、または改行で区切る必要があります。 ハイフンを指定できます
(-)Nmapがホストを標準入力からではなく標準入力から読み取るようにする場合はファイル名として
実際のファイル。
入力ファイルには、#で始まり、
ライン。
-iR NUM ホスト (ランダムなターゲットを選択してください)。
インターネット全体の調査やその他の調査については、次のURLでターゲットを選択することをお勧めします。
ランダム。 The NUM ホスト 引数は、生成するIPの数をNmapに指示します。 望ましくないIP
特定のプライベート、マルチキャスト、または未割り当てのアドレス範囲にあるものなどは、
自動的にスキップされます。 引数0は、終了しないスキャンに指定できます。 保つ
一部のネットワーク管理者は、不正なスキャンに苦しんでいることに注意してください
ネットワークと文句を言うかもしれません。 このオプションは自己責任で使用してください。 あなたが自分自身を見つけた場合
ある雨の午後は本当に退屈です、コマンドを試してください nmap -Pn -NS -p 80 -iR 0 - 開いた。 に
閲覧するランダムなWebサーバーを見つけます。
-除外する host1[,host2[、...]](ホスト/ネットワークを除外)。
ターゲットがスキャンから除外される場合でも、ターゲットのコンマ区切りリストを指定します
指定するネットワーク範囲全体の一部です。 渡すリストは通常を使用します
Nmap構文。ホスト名、CIDRネットブロック、オクテット範囲などを含めることができます。これにより、
スキャンするネットワークにタッチできないミッションクリティカルが含まれている場合に役立ちます
サーバー、ポートスキャンに悪影響を与えることが知られているシステム、またはサブネット
他の人によって管理されます。
--excludefile extract_file (ファイルからリストを除外します)。
これは、 -除外する 除外されたものを除いて、オプション
ターゲットは、改行、スペース、またはタブで区切られて提供されます extract_file ではなく
コマンドラインで。
除外ファイルには、#で始まり、
ライン。
主催者 発見
ネットワーク偵察任務の最初のステップのXNUMXつは、
(時には巨大な)IP範囲のセットをアクティブまたは興味深いホストのリストに入れます。 走査
すべてのIPアドレスのすべてのポートは低速で、通常は不要です。 もちろん何
ホストを面白くするかどうかは、スキャンの目的に大きく依存します。 ネットワーク管理者は
特定のサービスを実行しているホストにのみ関心があり、セキュリティ監査人は気にするかもしれません
IPアドレスを持つほぼすべてのデバイス。 管理者は快適に使用できます
外部からの侵入中に、内部ネットワーク上のホストを見つけるためのICMPpingのみ
テスターは、ファイアウォールを回避するために、数十のプローブの多様なセットを使用する場合があります
制限。
ホスト検出のニーズは非常に多様であるため、Nmapはさまざまなオプションを提供します。
使用する技術をカスタマイズする。 ホスト検出はpingスキャンと呼ばれることもありますが、
ユビキタスpingツールに関連付けられている単純なICMPエコー要求パケットをはるかに超えています。
ユーザーはリストスキャンでpingステップを完全にスキップできます(-sL)またはpingを無効にする(-Pn),
または、マルチポートTCP SYN / ACK、UDP、SCTPの任意の組み合わせでネットワークを利用します
INITおよびICMPプローブ。 これらのプローブの目的は、実証する応答を求めることです。
IPアドレスが実際にアクティブである(ホストまたはネットワークデバイスによって使用されている)こと。 多くの場合
ネットワークでは、IPアドレスのごく一部のみが常にアクティブになります。 これは
10.0.0.0/8などのプライベートアドレススペースで特に一般的です。 そのネットワークには16があります
百万のIPですが、XNUMX台未満のマシンを使用している企業で使用されているのを見てきました。 ホスト
ディスカバリーは、まばらに割り当てられたIPアドレスの海でそれらのマシンを見つけることができます。
ホスト検出オプションが指定されていない場合、NmapはICMPエコー要求(TCP SYNパケット)を送信します
ポート443へのTCPACKパケット、ポート80へのTCP ACKパケット、およびICMPタイムスタンプ要求。 (IPv6の場合、
ICMPタイムスタンプ要求は、ICMPv6の一部ではないため、省略されています。)これらのデフォルトは次のとおりです。
と同等 -足 -PS443 -PA80 -PP オプション。 これの例外はARPです(
IPv4)および近隣探索。 (IPv6の場合)ローカル上の任意のターゲットに使用されるスキャン
イーサネットネットワーク。 特権のないUnixシェルユーザーの場合、デフォルトのプローブはSYNパケットです。
ポート80および443に 接続する システムコール..このホスト検出は多くの場合
ローカルネットワークをスキャンする場合は十分ですが、より包括的な検出プローブのセット
セキュリティ監査に推奨されます。
この -P * オプション(pingタイプを選択する)を組み合わせることができます。 あなたはあなたのオッズを増やすことができます
さまざまなTCPポート/フラグを使用して多くのプローブタイプを送信することにより、厳格なファイアウォールを貫通します
およびICMPコード。 また、ARP /近隣探索(-PR)。 デフォルトで
他を指定した場合でも、ローカルイーサネットネットワーク上のターゲット -P * オプション、それは
ほとんどの場合、より速く、より効果的です。
デフォルトでは、Nmapはホスト検出を実行してから、各ホストに対してポートスキャンを実行します。
オンラインであると判断します。 これは、デフォルト以外のホスト検出タイプを指定した場合でも当てはまります。
UDPプローブなど(-PU)。 について読む -sn ホストのみを実行する方法を学ぶためのオプション
発見、または使用 -Pn ホストの検出をスキップし、すべてのターゲットホストをポートスキャンします。 以下
オプションはホスト検出を制御します:
-sL (リストスキャン)。
リストスキャンは、ホスト検出の縮退形式であり、
ターゲットホストにパケットを送信せずに、指定されたネットワーク。 デフォルトでは、
Nmapは、ホストの名前を学習するために、ホストで逆引きDNS解決を実行します。 それはしばしばある
単純なホスト名がどれだけ有用な情報を提供するかは驚くべきことです。 たとえば、fw.chi
ある会社のシカゴファイアウォールの名前です。 Nmapは、
最後にIPアドレス。 リストスキャンは、あなたが持っていることを確認するための良い健全性チェックです
ターゲットに適切なIPアドレス。 ホストがドメイン名をスポーツしている場合は、
認識してください、間違った会社のスキャンを防ぐためにさらに調査する価値があります
ネットワーク。
アイデアは単にターゲットホストのリストを印刷することなので、より高いレベルのオプション
ポートスキャン、OS検出、pingスキャンなどの機能を組み合わせることはできません
これとともに。 そのような高いパフォーマンスを維持しながらpingスキャンを無効にしたい場合
レベルの機能、 -Pn (pingをスキップ)オプション。
-sn (ポートスキャンなし)。
このオプションは、ホスト検出後にポートスキャンを実行せず、印刷するだけにするようにNmapに指示します。
ホスト検出プローブに応答した使用可能なホスト。 これはよく知られています
「pingスキャン」として使用できますが、tracerouteおよびNSEホストスクリプトを要求することもできます。
走る。 これは、デフォルトではリストスキャンよりもXNUMXステップ煩わしく、多くの場合、
同じ目的で使用されます。 それはなしでターゲットネットワークの軽い偵察を可能にします
注目を集めています。 稼働中のホストの数を知ることは、攻撃者にとってより価値があります
すべてのIPとホスト名のリストスキャンによって提供されるリストよりも。
システム管理者は、このオプションも価値があると感じることがよくあります。 簡単に使用できます
ネットワーク上で利用可能なマシンをカウントしたり、サーバーの可用性を監視したりします。 これはしばしばです
pingスイープと呼ばれ、ブロードキャストアドレスにpingを実行するよりも信頼性が高くなります。
多くのホストはブロードキャストクエリに応答しません。
で行われるデフォルトのホスト検出 -sn ICMPエコー要求、TCPSYNから
ポート443、ポート80へのTCP ACK、およびデフォルトのICMPタイムスタンプ要求。 実行時
特権のないユーザーによって、SYNパケットのみが送信されます( 接続する 呼び出し)ポート80へ
ターゲット上の443。 特権ユーザーがローカルでターゲットをスキャンしようとしたとき
イーサネットネットワーク、ARP要求は、 --send-ip 指定されました。 The -sn オプション
任意の検出プローブタイプと組み合わせることができます( -P * オプションを除く -Pn)
柔軟性を高めるため。 これらのプローブタイプとポート番号オプションのいずれかが使用されている場合、
デフォルトのプローブはオーバーライドされます。 の間に厳格なファイアウォールが設置されている場合
これらの高度な技術を使用して、Nmapとターゲットネットワークを実行しているソースホストは
おすすめされた。 そうしないと、ファイアウォールがプローブまたはその
反応。
Nmapの以前のリリースでは、 -sn として知られていました -sP..
-Pn (pingなし)。
このオプションは、Nmap検出段階を完全にスキップします。 通常、Nmapはこのステージを使用します
より重いスキャンのためにアクティブなマシンを決定します。 デフォルトでは、Nmapは実行するだけです
ポートスキャン、バージョン検出、ホストに対するOS検出などの詳細な調査
稼働していることがわかります。 でホスト検出を無効にする -Pn Nmapに
に対して要求されたスキャン機能 あらゆる 指定されたターゲットIPアドレス。 だからクラスなら
Bターゲットアドレススペース(/ 16)がコマンドラインで指定され、すべての65,536IPアドレス
スキャンされます。 リストスキャンの場合と同様に、適切なホスト検出はスキップされますが、代わりに
ターゲットリストを停止して印刷すると、Nmapは要求された機能を実行し続けます
各ターゲットIPがアクティブであるかのように。 pingスキャンをスキップするには と ポートスキャン、許可しながら
NSEを実行するには、XNUMXつのオプションを使用します -Pn -sn 一緒に。
ローカルイーサネットネットワーク上のマシンの場合、ARPスキャンは引き続き実行されます(ただし、
--arp-ping を無効にする or --send-ip Nmapは次のMACアドレスを必要とするため)
ターゲットホストをさらにスキャンします。 Nmapの以前のバージョンでは、 -Pn ました - P0。 と -PN..
-PS ポート リスト (TCP SYN Ping)。
このオプションは、SYNフラグが設定された空のTCPパケットを送信します。 デフォルトの宛先
ポートは80です(コンパイル時に変更することで構成可能 DEFAULT_TCP_PROBE_PORT_SPEC。 で
nmap.h)..代替ポートをパラメーターとして指定できます。 構文はと同じです
-p ただし、T:などのポートタイプ指定子は許可されていません。 例は次のとおりです
-PS22 と -PS22-25,80,113,1050,35000、XNUMX、XNUMX、XNUMX、XNUMX。 間にスペースを入れることはできないことに注意してください -PS と
ポートリスト。 複数のプローブが指定されている場合、それらは並行して送信されます。
SYNフラグは、リモートシステムに確立しようとしていることを示唆します。
繋がり。 通常、宛先ポートは閉じられ、RST(リセット)パケットが閉じられます
返送されました。 ポートが開いている場合、ターゲットは次のXNUMX番目のステップを実行します。
TCPスリーウェイハンドシェイク。 SYN / ACKTCPパケットで応答する。 実行中のマシン
次に、Nmapは、ではなくRSTで応答することにより、初期の接続を切断します。
スリーウェイハンドシェイクを完了して確立するACKパケットを送信する
フル接続。 RSTパケットは、Nmapを実行しているマシンのカーネルによって送信されます。
Nmap自体ではなく、予期しないSYN / ACKへの応答。
Nmapは、ポートが開いているか閉じているかを気にしません。 RSTまたはSYN / ACKのいずれか
前に説明した応答は、ホストが使用可能で応答していることをNmapに通知します。
Unixボックスでは、特権ユーザーrootのみ。 一般的に送受信することができます
生のTCPパケット..特権のないユーザーの場合、回避策が自動的に採用されます。
それによって 接続する システムコールは、各ターゲットポートに対して開始されます。 これは
確立しようとして、SYNパケットをターゲットホストに送信する効果
接続。 場合 接続する 迅速な成功またはECONNREFUSEDの失敗で戻り、
基盤となるTCPスタックはSYN / ACKまたはRSTを受信している必要があり、ホストはマークされています
利用可能。 タイムアウトに達するまで接続試行がハングしたままの場合、
ホストはダウンとしてマークされます。
-シャベル ポート リスト (TCP ACK Ping)。
TCP ACK pingは、先ほど説明したSYNpingと非常によく似ています。 違いは、
ご想像のとおり、SYNフラグの代わりにTCPACKフラグが設定されています。 そのような
ACKパケットは、確立されたTCP接続を介してデータを確認することを目的としています。
しかし、そのような接続は存在しません。 したがって、リモートホストは常にRSTで応答する必要があります
パケット、プロセスでの存在を開示します。
この -シャベル オプションは、SYNプローブ(80)と同じデフォルトのポートを使用し、
同じ形式の宛先ポートのリスト。 特権のないユーザーがこれを試みると、
接続する 前に説明した回避策が使用されます。 この回避策は不完全です。
接続する 実際には、ACKではなくSYNパケットを送信しています。
SYNとACKの両方のpingプローブを提供する理由は、
ファイアウォールをバイパスします。 多くの管理者は、ルーターやその他の単純なファイアウォールを構成します
のような公共サービス向けのものを除いて、着信SYNパケットをブロックする
会社のWebサイトまたはメールサーバー。 これにより、他の着信接続が防止されます
組織、ユーザーが障害物のない発信接続を行うことを許可しながら
インターネット。 このステートフルではないアプローチは、ファイアウォール/ルーターと
ハードウェアおよびソフトウェアフィルターによって広くサポートされています。 Linux Netfilter / iptables。
ファイアウォールソフトウェアは --syn このステートレスを実装するための便利なオプション
アプローチ。 このようなステートレスファイアウォールルールが適用されている場合、SYNpingプローブ
(-PS)閉じたターゲットポートに送信されると、ブロックされる可能性があります。 そのような場合、
ACKプローブは、これらのルールを正しく通過するときに輝きます。
別の一般的なタイプのファイアウォールは、予期しないパケットをドロップするステートフルルールを使用します。 この
この機能は当初、ほとんどがハイエンドファイアウォールで見つかりましたが、現在では多くなっています。
何年にもわたってより一般的です。 Linux Netfilter / iptablesシステムは、これをサポートします。
- 州 オプション。接続状態に基づいてパケットを分類します。 SYNプローブ
予期しないACKパケットは一般的に発生するため、このようなシステムに対して機能する可能性が高くなります。
偽物として認識され、ドロップされました。 この問題の解決策は、SYNとSYNの両方を送信することです。
指定することによりACKプローブ -PS と -シャベル.
-PU ポート リスト (UDP Ping)。
別のホスト検出オプションはUDPpingです。これは、指定されたアドレスにUDPパケットを送信します。
ポート。 ほとんどのポートでは、パケットは空になりますが、プロトコル固有のポートを使用するポートもあります。
応答を引き出す可能性が高いペイロード。 ペイロードデータベースについて説明します
at https://nmap.org/book/nmap-payloads.html.. - データ, -データ文字列,
-- データ長 オプション。
ポートリストは、前に説明したものと同じ形式を取ります -PS と -シャベル
オプション。 ポートが指定されていない場合、デフォルトは40125です。このデフォルトは次のようになります。
コンパイル時に変更して構成する DEFAULT_UDP_PROBE_PORT_SPEC。 nmap.hで..A
開いているポートへの送信が頻繁に行われるため、デフォルトでは非常にまれなポートが使用されます
この特定のスキャンタイプには望ましくありません。
ターゲットマシンの閉じたポートに到達すると、UDPプローブはICMPを引き出す必要があります
代わりに到達不能なパケットをポートします。 これは、マシンが稼働中であり、
利用可能。 ホスト/ネットワークに到達できない、TTLなど、他の多くの種類のICMPエラー
超過は、ホストがダウンしているか到達不能であることを示します。 応答の欠如も
このように解釈しました。 開いているポートに到達した場合、ほとんどのサービスは単に無視します
空のパケットであり、応答を返すことができません。 これが、デフォルトのプローブポートが
40125は、使用される可能性が非常に低いです。 キャラクターなどのいくつかのサービス
ジェネレータ(課金)プロトコルは、空のUDPパケットに応答するため、開示します
マシンが使用可能であることをNmapに送信します。
このスキャンタイプの主な利点は、ファイアウォールとフィルターをバイパスすることです。
画面TCPのみ。 たとえば、私はかつてLinksysBEFW11S4ワイヤレスブロードバンドを所有していました
ルーター。 このデバイスの外部インターフェイスは、デフォルトですべてのTCPポートをフィルタリングしましたが、
UDPプローブは依然としてポート到達不能メッセージを引き出し、デバイスを提供します。
-PY ポート リスト (SCTP INIT Ping)。
このオプションは、最小限のINITチャンクを含むSCTPパケットを送信します。 デフォルト
宛先ポートは80です(コンパイル時に変更することで構成可能)
DEFAULT_SCTP_PROBE_PORT_SPEC。 nmap.hで)。 代替ポートは、
パラメータ。 構文は、 -p ただし、次のようなポートタイプ指定子
S:許可されていません。 例は次のとおりです -22年度 と -22,80,179,5060年度。 ある可能性があることに注意してください
間にスペースがありません -PY およびポートリスト。 複数のプローブが指定されている場合、それらは
並行して送信されます。
INITチャンクは、確立しようとしていることをリモートシステムに提案します。
協会。 通常、宛先ポートは閉じられ、ABORTチャンクは
返送されました。 ポートが開いている場合、ターゲットは次のXNUMX番目のステップを実行します。
SCTPXNUMXウェイハンドシェイク。 INIT-ACKチャンクで応答する。 マシンが実行されている場合
Nmapには機能的なSCTPスタックがあり、次の方法で初期の関連付けを破棄します。
COOKIE-ECHOチャンクを送信するのではなく、ABORTチャンクで応答する
XNUMXウェイハンドシェイクの次のステップ。 ABORTパケットは、
Nmap自体ではなく、予期しないINIT-ACKに応答してNmapを実行しているマシン。
Nmapは、ポートが開いているか閉じているかを気にしません。 ABORTまたはINIT-ACKのいずれか
前に説明した応答は、ホストが使用可能で応答していることをNmapに通知します。
Unixボックスでは、特権ユーザーrootのみ。 一般的に送受信することができます
生のSCTPパケット..現在、非特権の場合、SCTPINITのPingを使用することはできません。
ユーザー..
-足; -PP; -午後 (ICMP pingタイプ)。
異常なTCP、UDP、およびSCTPホスト検出タイプに加えて、
以前は、Nmapはユビキタスpingプログラムによって送信される標準パケットを送信できました。
Nmapは、ICMPタイプ8(エコー要求)パケットをターゲットIPアドレスに送信します。
利用可能なホストからの見返りにタイプ0(エコー応答)..ネットワークにとって残念なことに
エクスプローラー、多くのホストおよびファイアウォールは、次のように応答するのではなく、これらのパケットをブロックするようになりました
によって要求された RFC 1122[2] ..このため、ICMPのみのスキャンが十分に信頼できることはめったにありません
インターネット上の未知のターゲットに対して。 ただし、システム管理者が監視している場合
内部ネットワークでは、実用的で効率的なアプローチになります。 使用 -足 オプション
このエコー要求の動作を有効にします。
エコー要求は標準のICMPpingクエリですが、Nmapはそこで停止しません。 ICMP
標準(RFC 792[3]。 と RFC 950[4]。 )タイムスタンプ要求、情報も指定します
要求、およびアドレスマスク要求パケットをそれぞれコード13、15、および17として。 その間
これらのクエリの表向きの目的は、アドレスマスクなどの情報を学習することです。
そして現在、それらはホストの発見に簡単に使用できます。 返信するシステム
稼働中です。 Nmapは現在、情報要求パケットを実装していません。
それらは広くサポートされていません。 RFC 1122は、「ホストは実装すべきではない」と主張しています。
これらのメッセージ」。 タイムスタンプとアドレスマスクのクエリは、 -PP と -午後
それぞれオプション。 タイムスタンプ応答(ICMPコード14)またはアドレスマスク応答(コード
18)ホストが利用可能であることを開示します。 これらのXNUMXつのクエリは、次の場合に役立ちます。
管理者は、他のパケットを忘れながら、エコー要求パケットを具体的にブロックします
ICMPクエリは同じ目的で使用できます。
-PO リスト (IPプロトコルping)。
新しいホスト検出オプションのXNUMXつは、IPを送信するIPプロトコルpingです。
IPヘッダーに指定されたプロトコル番号が設定されているパケット。 プロトコルリスト
前述のTCP、UDP、およびSCTPのポートリストと同じ形式を取ります
ホスト検出オプション。 プロトコルが指定されていない場合、デフォルトでは複数を送信します
ICMP(プロトコル1)、IGMP(プロトコル2)、およびIP-in-IP(プロトコル4)のIPパケット。 The
デフォルトのプロトコルは、変更することでコンパイル時に構成できます
DEFAULT_PROTO_PROBE_PORT_SPEC。 nmap.hで。 ICMP、IGMP、TCP(プロトコル)の場合は注意してください
6)、UDP(プロトコル17)およびSCTP(プロトコル132)、パケットは適切なもので送信されます
プロトコルヘッダー。 他のプロトコルは、追加データなしで送信されます。
IPヘッダー( - データ, -データ文字列または -- データ長 オプションは
指定)。
このホスト検出方法は、と同じプロトコルを使用していずれかの応答を検索します。
プローブ、または指定されたプロトコルを示すICMPプロトコル到達不能メッセージ
宛先ホストではサポートされていません。 どちらのタイプの応答も、
ターゲットホストは生きています。
-PR (ARP Ping)。
最も一般的なNmapの使用シナリオのXNUMXつは、イーサネットLANをスキャンすることです。 ほとんどのLANでは、
特に、によって指定されたプライベートアドレス範囲を使用するもの RFC 1918[5]、広大な
IPアドレスの大部分は常に使用されていません。 Nmapがrawを送信しようとしたとき
ICMPエコー要求などのIPパケットの場合、オペレーティングシステムは
ターゲットIPに対応する宛先ハードウェア(ARP)アドレス。
イーサネットフレームを適切にアドレス指定します。 なぜなら、これはしばしば遅くて問題があるからです。
オペレーティングシステムは、実行する必要があるという期待を持って作成されていませんでした
利用できないホストに対する数百万のARP要求が短期間で発生します。
ARPスキャンにより、Nmapとその最適化されたアルゴリズムがARP要求を担当します。 そしてそれなら
応答が返されるので、NmapはIPベースのpingパケットについて心配する必要さえありません。
ホストが稼働していることをすでに認識しているためです。 これにより、ARPスキャンがはるかに高速になります
IPベースのスキャンよりも信頼性があります。 したがって、イーサネットホストをスキャンするときにデフォルトで実行されます
Nmapが検出するのはローカルイーサネットネットワーク上です。 pingの種類が異なっていても(
as -足 or -PS)が指定されている場合、Nmapはターゲットの代わりにARPを使用します。
同じLAN上。 どうしてもARPスキャンを実行したくない場合は、
--arp-ping を無効にする.
IPv6(-6オプション)の場合、 -PR ARPの代わりにICMPv6近隣探索を使用します。 近所の人
RFC 4861で定義されているディスカバリは、ARPと同等のIPv6と見なすことができます。
--arp-ping を無効にする (ARPまたはND Pingなし)。
Nmapは通常、ローカルに接続されたARPまたはIPv6近隣探索(ND)探索を実行します
イーサネットホスト(次のような他のホスト検出オプションがある場合でも) -Pn or -足 使用されています。 に
この暗黙の動作を無効にし、 --arp-ping を無効にする オプションを選択します。
デフォルトの動作は通常より高速ですが、このオプションはを使用するネットワークで役立ちます
プロキシARP。ルーターがすべてのARP要求に投機的に応答し、
ARPスキャンによるとターゲットはアップしているように見えます。
--traceroute (ホストへのトレースパス)。
tracerouteは、スキャン結果からの情報を使用してスキャン後に実行されます。
ターゲットに到達する可能性が最も高いポートとプロトコルを決定します。 それはすべてで動作します
接続スキャン以外のスキャンタイプ(-sT)およびアイドルスキャン(-sI)。 すべてのトレースはNmapを使用します
動的タイミングモデルであり、並行して実行されます。
Tracerouteは、TTL(存続時間)の低いパケットを送信して、
スキャナーと
ターゲットホスト。 標準のtracerouteの実装は、TTLが1で始まり、増分します。
宛先ホストに到達するまでのTTL。 Nmapのtracerouteは高い値で始まります
TTLを実行してから、ゼロに達するまでTTLをデクリメントします。 逆方向に実行すると、Nmapが可能になります
巧妙なキャッシュアルゴリズムを使用して、複数のホストでトレースを高速化します。 平均して
Nmapは、ネットワークの状態に応じて、ホストごとに5〜10少ないパケットを送信します。 シングルの場合
サブネットがスキャンされています(つまり、192.168.0.0 / 24)NmapはXNUMXつのパケットを送信するだけでよい場合があります
ほとんどのホストに。
-n (DNS解決なし)。
Nmapに 決して 検出したアクティブなIPアドレスでDNS解決を逆引きします。
Nmapに組み込まれている並列スタブリゾルバーを使用してもDNSが遅くなる可能性があるため、このオプション
スキャン時間を短縮できます。
-R (すべてのターゲットのDNS解決)。
Nmapに 常に ターゲットIPアドレスで逆引きDNS解決を行います。 通常は
逆引きDNSは、応答性のある(オンライン)ホストに対してのみ実行されます。
--システムDNS (システムDNSリゾルバーを使用)。
デフォルトでは、Nmapはクエリをネームサーバーに直接送信することでIPアドレスを解決します
ホストで構成し、応答をリッスンします。 多くのリクエスト(多くの場合、数十)
パフォーマンスを向上させるために並行して実行されます。 このオプションを指定して、
代わりにシステムリゾルバ(一度にXNUMXつのIPを介して 名前情報を取得する 電話)。 これは遅いです
Nmapパラレルリゾルバにバグが見つからない限り、ほとんど役に立ちません(
あなたがそうするかどうか知っています)。 システムリゾルバーは、IPv6スキャンに常に使用されます。
--dns-servers server1[,server2[、...]](逆引きDNSクエリに使用するサーバー)。
デフォルトでは、NmapはDNSサーバー(rDNS解決用)を
resolv.confファイル(Unix)またはレジストリ(Win32)。 または、これを使用することもできます
代替サーバーを指定するオプション。 使用している場合、このオプションは適用されません
--システムDNS またはIPv6スキャン。 多くの場合、複数のDNSサーバーを使用すると、特に高速になります。
ターゲットIPスペースに権限のあるサーバーを選択した場合。 このオプションは、
ほぼすべての再帰DNSでリクエストをバウンスできるため、ステルスを改善します
インターネット上のサーバー。
このオプションは、プライベートネットワークをスキャンするときにも役立ちます。 時々ほんの数人
ネームサーバーは適切なrDNS情報を提供し、どこにあるのかさえわからない場合があります
それは。 ネットワークをスキャンしてポート53を探し(おそらくバージョン検出を使用して)、試してみてください
Nmapリストスキャン(-sL)各ネームサーバーを一度にXNUMXつずつ指定する --dns-servers
うまくいくものが見つかるまで。
PORT 走査 基本
Nmapの機能は何年にもわたって成長してきましたが、効率的な移植版として始まりました。
スキャナー、そしてそれはそのコア機能のままです。 簡単なコマンド nmap ターゲット 1,000回スキャン
ホストのTCPポート ターゲット。 多くのポートスキャナーは伝統的にすべてのポートをひとまとめにしてきましたが
開いた状態または閉じた状態にすると、Nmapははるかにきめ細かくなります。 ポートをXNUMXつに分割します
状態:open、closed、filtered、unfiltered、open | filtered、またはclosed | filtered。
これらの状態は、ポート自体の固有のプロパティではありませんが、Nmapがどのように認識するかを説明します
彼ら。 たとえば、ターゲットと同じネットワークからのNmapスキャンでは、ポート135 / tcpが表示される場合があります。
インターネット全体から同じオプションを使用して同時にスキャンしながら、オープンとして
そのポートがフィルタリングされたものとして表示される場合があります。
この 6 ポート アメリカ合衆国 認識 by Nmapの
アプリケーションは、TCP接続、UDPデータグラム、またはSCTPをアクティブに受け入れています
このポートの関連付け。 これらを見つけることは、多くの場合、ポートスキャンの主な目標です。
セキュリティ志向の人々は、開いている各ポートが攻撃の手段であることを知っています。 攻撃者と
ペンテスターは開いているポートを悪用したいのに対し、管理者は閉じようとします。
正当なユーザーを妨害することなく、ファイアウォールでそれらを保護します。 開いているポートも
セキュリティ以外のスキャンでは、で使用できるサービスが表示されるため、興味深いものです。
ネットワーク。
閉じたポートにはアクセスできますが(Nmapプローブパケットを受信して応答します)、
それをリッスンしているアプリケーションはありません。 それらは、ホストが
IPアドレス(ホスト検出、またはpingスキャン)で、OS検出の一部としてアップします。
閉じたポートは到達可能であるため、一部が開いている場合に備えて、後でスキャンする価値がある場合があります
上。 管理者は、ファイアウォールでそのようなポートをブロックすることを検討することをお勧めします。 それから彼らは
次に説明するように、フィルタリングされた状態で表示されます。
パケットフィルタリングによりポートが開いているかどうかをNmapが判断できない
プローブがポートに到達しないようにします。 フィルタリングは専用ファイアウォールから行うことができます
デバイス、ルータールール、またはホストベースのファイアウォールソフトウェア。 これらのポートは攻撃者を苛立たせます
情報がほとんどないからです。 時々彼らはICMPエラーで応答します
タイプ3コード13などのメッセージ(宛先に到達できません:通信
管理上禁止されています)が、応答せずにプローブをドロップするだけのフィルター
はるかに一般的です。 これにより、プローブが万が一の場合に備えて、Nmapは数回再試行します。
フィルタリングではなくネットワークの輻輳が原因でドロップされました。 これによりスキャンが遅くなります
劇的に。
フィルタリングされていない状態は、ポートにアクセスできるが、Nmapが判別できないことを意味します
開いているか閉じているか。 ファイアウォールのマッピングに使用されるACKスキャンのみ
ルールセットは、ポートをこの状態に分類します。 フィルタリングされていないポートを他のスキャンでスキャンする
ウィンドウスキャン、SYNスキャン、FINスキャンなどのタイプは、ポートが
オープン。
Nmapは、ポートが開いているかどうかを判断できない場合、ポートをこの状態にします
またはフィルタリング。 これは、開いているポートが応答しないスキャンタイプで発生します。 不足
応答の結果は、パケットフィルタがプローブまたはプローブをドロップしたことを意味する場合もあります。
誘発された。 そのため、Nmapは、ポートが開いているのか、フィルタリングされているのかを確実に認識していません。
UDP、IPプロトコル、FIN、NULL、およびXmasスキャンは、この方法でポートを分類します。
この状態は、Nmapがポートが閉じているかどうかを判断できない場合に使用されます。
フィルタリング。 IPIDアイドルスキャンにのみ使用されます。
PORT 走査 テクニック
自動車修理を行う初心者として、私は自分に合うように何時間も苦労することができます
手元のタスクに基本的なツール(ハンマー、ダクトテープ、レンチなど)。 私が失敗したとき
惨めにそして私のジャロピーを本物のメカニックに曳航し、彼は常に巨大な道具で釣りをします
完璧なギズモを引き出すまで胸を張って、仕事が楽に見えるようにします。 の芸術
ポートスキャンも同様です。 専門家は数十のスキャン技術を理解し、
特定のタスクに適切なもの(または組み合わせ)。 経験の浅いユーザーとスクリプト
キディ、。 一方、デフォルトのSYNスキャンですべての問題を解決してみてください。 以来
Nmapは無料で、ポートスキャンの習得に対する唯一の障壁は知識です。 それは確かに勝ちます
ストラットが必要かどうかを判断するには、優れたスキルが必要になる可能性がある自動車の世界
スプリングコンプレッサー、それでもあなたはそれのために何千ドルも払わなければなりません。
ほとんどのスキャンタイプは、特権ユーザーのみが使用できます。これは、
生のパケットを受信します。 Unixシステムではrootアクセスが必要です。 を使用して
Windowsの管理者アカウントをお勧めしますが、Nmapは
WinPcapがすでにOSにロードされている場合の、そのプラットフォーム上の非特権ユーザー。
Nmapが1997年にリリースされたとき、root権限を要求することは深刻な制限でした。
ユーザーは共有シェルアカウントにしかアクセスできませんでした。 今、世界は違います。 コンピューターは
より安く、はるかに多くの人々が常時インターネットに直接アクセスでき、デスクトップUnixシステム
(LinuxおよびMac OS Xを含む)が普及しています。 NmapのWindowsバージョンが利用可能になりました。
さらに多くのデスクトップで実行できるようにします。 これらすべての理由により、ユーザーは
制限された共有シェルアカウントからNmapを実行します。 特権オプションとして、これは幸運です
Nmapをはるかに強力で柔軟にします。
Nmapは正確な結果を生成しようとしますが、その洞察はすべて
ターゲットマシン(またはその前のファイアウォール)から返されたパケットに基づきます。 そのような
ホストは信頼できない可能性があり、Nmapを混乱または誤解させることを目的とした応答を送信します。 多くの
より一般的なのは、RFCに準拠していないホストで、Nmapプローブに応答する必要があります。
FIN、NULL、およびXmasスキャンは、この問題の影響を特に受けやすくなっています。 そのような問題は
特定のスキャンタイプに固有であるため、個々のスキャンタイプのエントリで説明されています。
このセクションでは、Nmapでサポートされている数十のポートスキャン手法について説明します。 唯一
UDPスキャン(UDPスキャン(-彼の)およびSCTPスキャンのいずれか
種類 (-sY, -sZ)は、TCPスキャンタイプのいずれかと組み合わせることができます。 記憶補助として、ポート
スキャンタイプのオプションは次の形式です -sCここで、 C スキャン名の目立つ文字であり、
通常は最初です。 これに対するXNUMXつの例外は、非推奨のFTPバウンススキャンです(-b)。 に
デフォルトでは、NmapはSYNスキャンを実行しますが、ユーザーが実行する場合は接続スキャンを代用します
生のパケットを送信するための適切な権限がありません(Unixではrootアクセスが必要です)。 の
このセクションにリストされているスキャンでは、特権のないユーザーは接続とFTPバウンスのみを実行できます
スキャン。
-NS (TCP SYNスキャン)。
SYNスキャンは、正当な理由から、デフォルトで最も一般的なスキャンオプションです。 かもね
迅速に実行され、高速ネットワークでは毎秒数千のポートをスキャンします。
制限のあるファイアウォールによって妨げられています。 また、比較的目立たず、ステルスです
TCP接続を完了しないためです。 SYNスキャンは準拠するTCPに対して機能します
Nmapのように特定のプラットフォームの特異性に依存するのではなくスタック
FIN / NULL / Xmas、Maimonおよびアイドルスキャンは行います。 また、明確で信頼性の高いものになります
開いた状態、閉じた状態、およびフィルタリングされた状態の区別。
この手法は、ハーフオープンスキャンと呼ばれることがよくあります。これは、
完全なTCP接続。 まるで本物を開くかのように、SYNパケットを送信します
接続してから応答を待ちます。 SYN / ACKは、ポートがリッスンしていることを示します
(オープン)、RST(リセット)は非リスナーを示します。 応答がない場合
数回の再送信後に受信されると、ポートはフィルタリング済みとしてマークされます。 ポートは
また、ICMP到達不能エラー(タイプ3、コード0、1、2、3、9、10、または
13)を受け取ります。 SYNパケット(ACKなし)の場合も、ポートは開いていると見なされます
フラグ)が応答として受信されます。 これは、既知の非常にまれなTCP機能が原因である可能性があります
同時オープンまたはスプリットハンドシェイク接続として(を参照)
https://nmap.org/misc/split-handshake.pdf).
-sT (TCP接続スキャン)。
SYNスキャンがオプションでない場合、TCP接続スキャンはデフォルトのTCPスキャンタイプです。 これは
ユーザーが生のパケット特権を持っていない場合。 生で書く代わりに
他のほとんどのスキャンタイプと同様に、Nmapは基盤となるオペレーティングシステムに次のように要求します。
を発行して、ターゲットマシンおよびポートとの接続を確立します 接続する
電話。 これは、Webブラウザ、P2Pクライアント、およびほとんどのシステムコールと同じ高レベルのシステムコールです。
他のネットワーク対応アプリケーションは、接続を確立するために使用します。 それはの一部です
Berkeley SocketsAPIとして知られるプログラミングインターフェース。 生のパケットを読み取るのではなく
Nmapは、このAPIを使用して、それぞれのステータス情報を取得します。
接続を試みます。
SYNスキャンが利用可能な場合、通常はそれがより良い選択です。 Nmapは制御が少ない
高レベル 接続する 生のパケットよりも呼び出し、効率が低下します。 The
システムコールは、実行するのではなく、ターゲットポートを開くための接続を完了します
SYNスキャンが行うハーフオープンリセット。 これには時間がかかり、より多くの時間が必要になるだけではありません
同じ情報を取得するためのパケットですが、ターゲットマシンはログに記録する可能性が高くなります
繋がり。 まともなIDSもキャッチしますが、ほとんどのマシンにはそのようなアラームはありません
システム。 平均的なUnixシステムの多くのサービスは、syslogにメモを追加します。
Nmapが接続してから接続を閉じると、不可解なエラーメッセージが表示されることがあります
データを送信せずに。 これが発生すると、本当に哀れなサービスがクラッシュしますが、
珍しい。 からのログに多数の接続試行を確認した管理者
単一のシステムは、彼女が接続スキャンされたことを認識している必要があります。
-彼の (UDPスキャン)。
インターネット上で最も人気のあるサービスはTCPプロトコルを介して実行されますが、 UDP[6]サービス
広く展開されています。 DNS、SNMP、およびDHCP(登録済みポート53、161 / 162、および67/68)は
最も一般的なXNUMXつ。 UDPスキャンは一般的に遅く、より困難であるため
TCPよりも、一部のセキュリティ監査人はこれらのポートを無視します。 悪用可能であるため、これは間違いです
UDPサービスは非常に一般的であり、攻撃者は確かにプロトコル全体を無視しません。
幸い、NmapはUDPポートのインベントリを作成するのに役立ちます。
UDPスキャンはでアクティブ化されます -彼の オプション。 TCPスキャンタイプと組み合わせることができます
SYNスキャンなど(-NS)同じ実行中に両方のプロトコルをチェックします。
UDPスキャンは、UDPパケットをすべてのターゲットポートに送信することで機能します。 一部の一般的なポートの場合
53や161など、応答率を上げるためにプロトコル固有のペイロードが送信されますが、
ほとんどのポートでは、パケットが空でない限り、 - データ, -データ文字列または -- データ長
オプションが指定されています。 ICMPポート到達不能エラー(タイプ3、コード3)が返された場合、
ポートは閉じています。 その他のICMP到達不能エラー(タイプ3、コード0、1、2、9、10、または
13)ポートをフィルター済みとしてマークします。 時折、サービスはUDPパケットで応答します。
それが開いていることを証明します。 再送信後に応答が受信されない場合、ポートは
open | filteredとして分類されます。 これは、ポートが開いているか、パケットである可能性があることを意味します
フィルタが通信をブロックしています。 バージョン検出(-sV)を助けるために使用することができます
真に開いているポートとフィルタリングされたポートを区別します。
UDPスキャンの大きな課題は、それを迅速に行うことです。 開いてフィルタリングされたポートはめったにありません
応答を送信し、Nmapをタイムアウトにしてから、すぐに再送信を実行します
プローブまたは応答が失われた場合。 多くの場合、閉じたポートはさらに大きな問題です。
通常、ICMPポート到達不能エラーを送り返します。 ただし、送信されるRSTパケットとは異なり
SYNまたは接続スキャンに応答してTCPポートを閉じると、多くのホストのレート制限が発生します。 ICMP
デフォルトでは、到達不能メッセージをポートします。 LinuxとSolarisは特に厳格です
これ。 たとえば、Linux 2.4.20カーネルは、宛先の到達不能メッセージを次のように制限します。
4秒にXNUMXつ(net / ipvXNUMX / icmp.c内)。
Nmapはレート制限を検出し、それに応じて速度を落とし、ネットワークのフラッディングを回避します
ターゲットマシンがドロップする無駄なパケットを使用します。 残念ながら、Linuxスタイル
65,536秒あたり18パケットの制限により、XNUMXポートスキャンにXNUMX時間以上かかります。 アイデア
UDPスキャンを高速化するには、より多くのホストを並行してスキャンし、すばやく実行することが含まれます
最初に人気のあるポートだけをスキャンし、ファイアウォールの背後からスキャンして、
--ホストタイムアウト 遅いホストをスキップします。
-sY (SCTP INITスキャン)。
SCTP[7]は、TCPおよびUDPプロトコルの比較的新しい代替手段であり、ほとんどを組み合わせています
TCPとUDPの特性、およびマルチホーミングやマルチホーミングなどの新機能の追加
マルチストリーミング。 これは主にSS7 / SIGTRAN関連のサービスに使用されていますが、
他のアプリケーションにも使用される可能性があります。 SCTPINITスキャンはSCTPです
TCPSYNスキャンに相当します。 何千ものポートをスキャンして、すばやく実行できます
制限のあるファイアウォールによって妨げられていない高速ネットワークでのXNUMX秒あたり。 SYNスキャンのように、
INITスキャンは、SCTPを完了しないため、比較的目立たず、ステルスです。
協会。 また、オープン、クローズ、
フィルタリングされた状態。
この手法は、ハーフオープンスキャンと呼ばれることがよくあります。これは、
完全なSCTPアソシエーション。 まるで本物を開くかのように、INITチャンクを送信します
アソシエーションしてから応答を待ちます。 INIT-ACKチャンクは、ポートが
リスニング(オープン)、ABORTチャンクは非リスナーを示します。 応答がない場合
数回の再送信後に受信されると、ポートはフィルタリング済みとしてマークされます。 ポートは
また、ICMP到達不能エラー(タイプ3、コード0、1、2、3、9、10、または
13)を受け取ります。
-sN; -sF; -sX (TCP NULL、FIN、およびXmasスキャン)。
これらのXNUMXつのスキャンタイプ( --スキャンフラグ 説明されているオプション
次のセクションで)の微妙な抜け穴を悪用します TCP RFC[8]区別する
開いているポートと閉じているポートの間。 RFC 65の793ページには、「[宛先]ポートの場合
状態はCLOSEDです.... RSTを含まない着信セグメントにより、RSTが送信されます
に応じて。" 次に、次のページでは、開いているポートに送信されるパケットについて説明します。
SYN、RST、またはACKビットが設定され、次のように述べられています。
セグメントを削除して、戻ります。」
このRFCテキストに準拠したシステムをスキャンする場合、SYNを含まないパケットは
ポートが閉じていて応答がない場合、RSTまたはACKビットはRSTを返します。
ポートが開いている場合はまったく。 これらのXNUMXビットのいずれも含まれていない限り、
他のXNUMXつ(FIN、PSH、およびURG)の組み合わせはOKです。 Nmapはこれを悪用します
XNUMXつのスキャンタイプ:
ヌルスキャン(-sN)
ビットを設定しません(TCPフラグヘッダーは0です)
FINスキャン(-sF)
TCPFINビットのみを設定します。
クリスマススキャン(-sX)
FIN、PSH、およびURGフラグを設定し、クリスマスツリーのようにパケットを照らします。
これらのXNUMXつのスキャンタイプは、TCPフラグが設定されていることを除いて、動作がまったく同じです。
プローブパケットで。 RSTパケットが受信された場合、ポートは閉じていると見なされますが、
応答は、それが開いている|フィルタリングされていることを意味します。 ICMPに到達できない場合、ポートはフィルタリング済みとしてマークされます
エラー(タイプ3、コード0、1、2、3、9、10、または13)を受け取ります。
これらのスキャンタイプの主な利点は、特定のスキャンタイプをこっそり通過できることです。
非ステートフルファイアウォールとパケットフィルタリングルーター。 別の利点は、これらが
スキャンタイプは、SYNスキャンよりも少しステルスです。 これを当てにしないでください
ただし、最新のIDS製品のほとんどは、それらを検出するように構成できます。 大きな欠点は
すべてのシステムがRFC793に準拠しているわけではありません。 多くのシステムがRSTを送信します
ポートが開いているかどうかに関係なく、プローブへの応答。 これはすべてを引き起こします
閉じているとラベル付けされるポートのこれを行う主なオペレーティングシステムはMicrosoftです
Windows、多くのCiscoデバイス、BSDI、およびIBM OS / 400。 このスキャンはほとんどの場合に機能します
ただし、Unixベースのシステム。 これらのスキャンのもうXNUMXつの欠点は、スキャンできないことです。
開いているポートを特定のフィルタリングされたポートと区別して、応答を残します
open | filtered。
-sA (TCP ACKスキャン)。
このスキャンは、これまでに説明した他のスキャンとは異なり、決定されることはありません。
開いている(または開いている|フィルタリングされている)ポート。 ファイアウォールルールセットをマップするために使用されます。
それらがステートフルであるかどうか、およびどのポートがフィルタリングされるかを決定します。
ACKスキャンプローブパケットには、ACKフラグのみが設定されています(使用しない場合) --スキャンフラグ)。 いつ
フィルタリングされていないシステムをスキャンすると、開いているポートと閉じているポートの両方がRSTパケットを返します。 Nmap
次に、それらをフィルタリングされていないものとしてラベル付けします。つまり、ACKパケットで到達可能ですが、
それらが開いているか閉じているかは未定です。 応答しない、または送信しないポート
特定のICMPエラーメッセージ(タイプ3、コード0、1、2、3、9、10、または13)には、ラベルが付けられています
フィルタリング。
-sw (TCPウィンドウスキャン)。
ウィンドウスキャンは、実装を利用することを除いて、ACKスキャンとまったく同じです。
開いているポートと閉じているポートを区別するための特定のシステムの詳細
RSTが返されるときは、常にフィルターなしで印刷します。 TCPを調べることによってこれを行います
返されたRSTパケットのウィンドウフィールド。 一部のシステムでは、開いているポートはポジティブを使用します
ウィンドウサイズ(RSTパケットの場合でも)が閉じている場合、ウィンドウはゼロになります。 だから代わりに
RSTを受信すると、ポートは常にフィルタリングされていないものとしてリストされます。ウィンドウスキャンでは、ポートがリストされます。
そのリセットのTCPウィンドウ値が正またはゼロの場合、ポートは開いているか閉じているか、
。
このスキャンは、少数のシステムの実装の詳細に依存しています。
インターネットなので、常に信頼できるとは限りません。 それをサポートしないシステムは通常
閉じたすべてのポートを返します。 もちろん、マシンが実際に開いていない可能性があります
ポート。 スキャンされたほとんどのポートが閉じているが、いくつかの一般的なポート番号(22、25、
53)フィルタリングされている場合、システムは影響を受けやすい可能性があります。 時折、システムは
正反対の振る舞いさえ示します。 スキャンで1,000個の開いているポートとXNUMX個のポートが表示された場合
閉じたポートまたはフィルタリングされたポートの場合、これらXNUMXつは本当に開いているポートである可能性があります。
-sM (TCPマイモンスキャン)。
Maimonスキャンは、その発見者であるUrielMaimonにちなんで名付けられました。
Phrack Magazine第49号(1996年XNUMX月)のテクニック。これを含むNmap
テクニックは、XNUMXつの問題の後にリリースされました。 この手法はNULLとまったく同じです。
プローブがFIN / ACKであることを除いて、FINおよびXmasスキャン。 によると RFC 793[8](TCP)、
ポートが開いているかどうかに関係なく、このようなプローブに応答してRSTパケットを生成する必要があります
または閉じています。 しかし、Urielは、多くのBSD派生システムが単にパケットをドロップすることに気づきました。
ポートが開いている場合。
--スキャンフラグ (カスタムTCPスキャン)。
真に高度なNmapユーザーは、提供されるスキャンの種類に制限する必要はありません。
この --スキャンフラグ オプションを使用すると、任意のTCPを指定して独自のスキャンを設計できます
フラグ..侵入検知システムを回避しながら、創造力を発揮させましょう。
そのベンダーは、特定のルールを追加してNmapのマニュアルページをページングするだけです。
この --スキャンフラグ 引数は9(PSHおよびFIN)などの数値フラグ値にすることができますが、
シンボリック名を使用する方が簡単です。 URG、ACK、PSH、
RST、SYN、およびFIN。 例えば、 --スキャンフラグ アーガックPSHRSTSYNFIN しかし、すべてを設定します
スキャンにはあまり役立ちません。 これらが指定されている順序は関係ありません。
必要なフラグを指定することに加えて、TCPスキャンタイプ(など)を指定できます。
-sA or -sF)。 その基本型は、Nmapに応答の解釈方法を指示します。 たとえば、SYN
スキャンは無応答と見なしてフィルタリングされたポートを示しますが、FINスキャンは
open | filteredと同じです。 Nmapは、ベーススキャンタイプの場合と同じように動作します。
ただし、代わりに指定したTCPフラグを使用します。 ベースを指定しない場合
タイプ、SYNスキャンが使用されます。
-sZ (SCTP COOKIE ECHOスキャン)。
SCTP COOKIE ECHOスキャンは、より高度なSCTPスキャンです。 それは事実を利用しています
SCTP実装は、COOKIEECHOチャンクを含むパケットをサイレントにドロップする必要があります
開いているポートでは、ポートが閉じている場合はABORTを送信します。 このスキャンの利点
タイプは、ポートスキャンがINITスキャンほど明白ではないということです。 また、あるかもしれません
INITチャンクをブロックするが、COOKIEECHOチャンクはブロックしない非ステートフルファイアウォールルールセット。 しないでください
これによりポートスキャンが見えなくなると思い込んでしまいます。 良いIDSは
SCTP COOKIEECHOスキャンも検出できます。 欠点は、SCTP COOKIEECHOがスキャンすることです
開いているポートとフィルタリングされたポートを区別できないため、状態が残ります
どちらの場合もopen | filtered。
-sI ゾンビ host[:プローブポート](アイドルスキャン)。
この高度なスキャン方法により、ターゲットの真にブラインドなTCPポートスキャンが可能になります
(実際のIPアドレスからターゲットにパケットが送信されないことを意味します)。 代わりに、
独自のサイドチャネル攻撃は、予測可能なIPフラグメンテーションIDシーケンスを悪用します
ターゲットで開いているポートに関する情報を収集するためのゾンビホストでの生成。
IDSシステムは、指定したゾンビマシンからのスキャンとしてスキャンを表示します(
稼働していて、特定の基準を満たしている必要があります)。 この魅力的なスキャンタイプは複雑すぎて
このリファレンスガイドで詳しく説明しているので、私は非公式の論文を書き、投稿しました。
完全な詳細 https://nmap.org/book/idlescan.html.
(その盲目の性質のために)非常にステルスであることに加えて、このスキャンタイプは
マシン間のIPベースの信頼関係のマッピングを許可します。 ポートリスト
開いているポートを表示します from 視点 of ゾンビ ホスト。 だからあなたはスキャンしてみることができます
信頼できると思われるさまざまなゾンビを使用してターゲットを設定します。 (ルーター/パケット経由
フィルタルール)。
プローブする場合は、コロンの後にポート番号をゾンビホストに追加できます
IPIDを変更するためのゾンビの特定のポート。 それ以外の場合、Nmapはポートを使用します
デフォルトでTCPping(80)に使用します。
-それで (IPプロトコルスキャン)。
IPプロトコルスキャンを使用すると、どのIPプロトコル(TCP、ICMP、IGMPなど)を判別できます。
ターゲットマシンでサポートされています。 循環するため、これは技術的にはポートスキャンではありません
TCPまたはUDPポート番号ではなく、IPプロトコル番号を使用します。 それでも、それはまだ使用しています
-p スキャンされたプロトコル番号を選択するオプションは、通常の範囲内でその結果を報告します
ポートテーブル形式であり、実際のポートと同じ基盤となるスキャンエンジンを使用します
スキャン方法。 したがって、ここに属するポートスキャンに十分に近いです。
プロトコルスキャンは、それ自体が有用であるだけでなく、
オープンソースソフトウェア。 基本的な考え方はとてもシンプルですが、私は考えていませんでした
それを追加することも、そのような機能の要求を受け取ることもありません。 それから夏に
2000年、GerhardRieger。 アイデアを思いつき、それを実装する優れたパッチを作成し、
アナウンスメーリングリストに送信しました。 (当時はnmap-hackersと呼ばれていました)。
そのパッチをNmapツリーに組み込み、翌日新しいバージョンをリリースしました。
商用ソフトウェアの中には、設計や設計に熱心なユーザーがいるものはほとんどありません。
自分の改善に貢献してください!
プロトコルスキャンは、UDPスキャンと同じように機能します。 を繰り返す代わりに
UDPパケットのポート番号フィールド。IPパケットヘッダーを送信し、
XNUMXビットIPプロトコルフィールド。 ヘッダーは通常空であり、データは含まれていません。
主張されたプロトコルの適切なヘッダーでさえ。 例外は、TCP、UDP、ICMP、
SCTP、およびIGMP。 一部のシステムでは、これらの適切なプロトコルヘッダーが含まれています
それ以外の場合は送信しません。Nmapにはすでにそれらを作成する関数があるためです。
ICMPポートに到達できないメッセージを監視する代わりに、プロトコルスキャンがオンになります。
ICMPに注意してください 到達不能なメッセージ。 Nmapがいずれかの応答を受信した場合
ターゲットホストからのプロトコルであるNmapは、そのプロトコルをオープンとしてマークします。 ICMPプロトコル
到達不能エラー(タイプ3、コード2)により、プロトコルが閉じているとマークされます。
ポート到達不能(タイプ3、コード3)は、プロトコルが開いていることを示します。 その他のICMPに到達できません
エラー(タイプ3、コード0、1、9、10、または13)により、プロトコルはフィルタリング済みとしてマークされます
(ただし、ICMPが同時に開いていることを証明しています)。 応答がない場合
再送信後、プロトコルはopen | filteredとマークされます
-b FTP リレー host (FTPバウンススキャン)。
FTPプロトコルの興味深い機能(RFC 959[9])はいわゆるプロキシのサポートです
FTP接続。 これにより、ユーザーはXNUMXつのFTPサーバーに接続し、そのファイルを要求できます
サードパーティのサーバーに送信されます。 このような機能は、多くのレベルで悪用される可能性があります。
ほとんどのサーバーはそれをサポートしなくなりました。 この機能で許可される悪用のXNUMXつは、
FTPサーバーに他のホストのポートスキャンを引き起こします。 FTPサーバーに送信を依頼するだけです
ターゲットホストの各対象ポートに順番にファイルします。 エラーメッセージは
ポートが開いているかどうかを説明します。 これはファイアウォールをバイパスするための良い方法です
組織のFTPサーバーは、アクセスしやすい場所に配置されることが多いためです。
古いインターネットホストよりも他の内部ホスト。 NmapはFTPバウンススキャンをサポートしています
-b オプション。 それは形式の引数を取ります ユーザ名:password@ :ポート.
サーバー 脆弱なFTPサーバーの名前またはIPアドレスです。 通常のURLと同様に、
省略できます ユーザ名:password、この場合、匿名のログイン資格情報(ユーザー:匿名
パスワード:-wwwuser @)が使用されます。 ポート番号(および前のコロン)は、次のように省略できます。
その場合、デフォルトのFTPポート(21)は 使用されている。
この脆弱性は、Nmapがリリースされた1997年に広まりましたが、主に
修繕。 脆弱なサーバーはまだ存在しているので、他のすべてが失敗したときに試す価値があります。
ファイアウォールをバイパスすることが目標である場合は、ターゲットネットワークをスキャンしてポート21を探します(または
バージョン検出を使用してすべてのポートをスキャンする場合は、FTPサービス)およびftp-bounceを使用します。
NSEスクリプト。 Nmapは、ホストが脆弱かどうかを通知します。 あなたがただなら
トラックをカバーしようとしても、制限する必要はありません(実際、制限するべきではありません)。
ターゲットネットワーク上のホストに自分自身。 ランダムなインターネットをスキャンする前に
脆弱なFTPサーバーのアドレスについては、システム管理者があなたに感謝しない可能性があることを考慮してください
このようにサーバーを悪用します。
PORT 仕様 そして スキャン 注文
前に説明したすべてのスキャン方法に加えて、Nmapは次のオプションを提供します
スキャンするポートと、スキャン順序をランダムにするかシーケンシャルにするかを指定します。
デフォルトでは、Nmapはプロトコルごとに最も一般的な1,000ポートをスキャンします。
-p ポート 範囲 (指定されたポートのみをスキャンします)。
このオプションは、スキャンするポートを指定し、デフォルトを上書きします。
ハイフンで区切られた範囲(1-1023など)と同様に、個々のポート番号は問題ありません。
範囲の開始値および/または終了値を省略して、Nmapが1および/またはを使用するようにすることができます。
それぞれ65535。 だからあなたは指定することができます -NS- 1から65535までのポートをスキャンします。
スキャンポートゼロ。 明示的に指定すれば許可されます。 IPプロトコルスキャン用
(-それで)、このオプションは、スキャンするプロトコル番号(0〜255)を指定します。
プロトコルの組み合わせ(TCPとUDPなど)をスキャンする場合、次のように指定できます。
ポート番号の前にT:TCPの場合、U:UDPの場合、S:の場合の特定のプロトコル
SCTP、またはP:IPプロトコルの場合。 修飾子は、別の修飾子を指定するまで続きます。
たとえば、引数 -p U:53,111,137、T:21-25,80,139,8080 UDPポート53をスキャンします。
111、137、およびリストされているTCPポート。 UDPとTCPの両方をスキャンするには、
指定する必要があります -彼の および少なくともXNUMXつのTCPスキャンタイプ( -NS, -sFまたは -sT)。 いいえの場合
プロトコル修飾子が指定されると、ポート番号がすべてのプロトコルリストに追加されます。 ポート
ポートが参照されている内容に応じて、名前で指定することもできます。
nmap-services。 ワイルドカード*および?を使用することもできます。 名前で。 たとえば、
FTPおよび名前が「http」で始まるすべてのポートをスキャンし、 -p ftp、http *。気をつけて
シェル拡張について、次の引数を引用します -p わからない場合。
ポートの範囲は、その中のポートを示すために角かっこで囲むことができます
nmap-servicesに表示される範囲。 たとえば、以下はのすべてのポートをスキャンします
nmap-1024以下のサービス: -p [-1024]。 シェルの拡張に注意してください
の議論を引用する -p わからない場合。
-除外-ポート ポート 範囲 (指定したポートをスキャンから除外します)。
このオプションは、Nmapがスキャンから除外するポートを指定します。 The ポート
範囲 次のように指定されます -p。 IPプロトコルスキャン用(-それで)、このオプション
除外するプロトコル番号を指定します(0〜255)。
ポートを除外するように求められた場合、それらはすべてのタイプのスキャンから除外されます(つまり、
いかなる状況でもスキャンされません)。 これには発見も含まれます
段階。
-F (高速(制限付きポート)スキャン)。
デフォルトよりも少ないポートをスキャンすることを指定します。 通常、Nmapは
スキャンされたプロトコルごとに最も一般的な1,000ポート。 と -F、これは100に削減されます。
Nmapは、どれを知るために頻度情報を含むnmap-servicesファイルを必要とします
ポートが最も一般的です。 ポート周波数情報が利用できない場合は、おそらく
カスタムnmap-servicesファイルを使用しているため、Nmapはすべての名前付きポートに加えてスキャンします
ポート1〜1024。 その場合、 -F サービスで指定されているポートのみをスキャンすることを意味します
ファイルにソフトウェアを指定する必要があります。
-r (ポートをランダム化しないでください)。
デフォルトでは、Nmapはスキャンされたポートの順序をランダム化します(特定の一般的なものを除く)
アクセス可能なポートは、効率上の理由から最初の方に移動されます)。 この
通常はランダム化が望ましいですが、指定することもできます -r シーケンシャル(ソート済み)
代わりに、最低から最高へ)ポートスキャン。
--ポート比率 比<XNUMX 進数 数 の間に 0 と 1>
指定された比率よりも大きい比率でnmap-servicesファイル内のすべてのポートをスキャンします。 比
0.0から1.1の間でなければなりません。
-トップポート n
スキャンします n すべてのポートを除外した後、nmap-servicesファイルで見つかった最高比率のポート
によって指定された -除外-ポート. n 1以上である必要があります。
サービス そして VERSION 検出
Nmapをリモートマシンに向けると、ポート25 / tcp、80 / tcp、および53 / udpが表示される場合があります
開いています。 そのnmapサービスを使用します。 約2,200の有名なサービスのデータベース。 Nmap
これらのポートはおそらくメールサーバー(SMTP)、Webサーバーに対応していると報告されます
(HTTP)、およびネームサーバー(DNS)。 このルックアップは通常正確です—広大です
TCPポート25でリッスンしているデーモンの大部分は、実際にはメールサーバーです。 しかし、あなたは
これにあなたのセキュリティを賭けるべきではありません! 人々は奇妙なポートでサービスを実行することができ、実行します。
Nmapが正しく、上記の架空のサーバーがSMTP、HTTP、およびDNSを実行している場合でも
サーバー、それは多くの情報ではありません。 脆弱性評価を行うとき(または
あなたの会社やクライアントの単純なネットワークインベントリ)、あなたは本当にどれを知りたいですか
メールとDNSサーバーおよびバージョンが実行されています。 正確なバージョン番号があると役立ちます
どのエクスプロイトがサーバーに対して脆弱であるかを劇的に判断します。 バージョン検出
この情報を取得するのに役立ちます。
他のスキャン方法のいずれかを使用してTCPおよび/またはUDPポートが検出された後、バージョン
検出はこれらのポートに問い合わせて、実際に実行されているものについて詳しく判断します。 The
nmap-service-probes。 データベースには、さまざまなサービスと一致を照会するためのプローブが含まれています
応答を認識して解析するための式。 Nmapはサービスプロトコルを決定しようとします
(FTP、SSH、Telnet、HTTPなど)、アプリケーション名(ISC BIND、Apache httpd、Solarisなど)
telnetd)、バージョン番号、ホスト名、デバイスタイプ(プリンタ、ルーターなど)、OSファミリ
(例:Windows、Linux)。 可能な場合、Nmapは共通プラットフォーム列挙も取得します
(CPE)。 この情報の表現。 時々、かどうかのような雑多な詳細
Xサーバーは接続に対してオープンであり、SSHプロトコルバージョン、またはKaZaAユーザー名は次のとおりです。
利用可能。 もちろん、ほとんどのサービスがこの情報のすべてを提供するわけではありません。 Nmapが
OpenSSLサポートでコンパイルされ、SSLサーバーに接続してサービスを推測します
その暗号化レイヤーの背後でリッスンしています。一部のUDPポートはオープン|フィルター済みのままです。
UDPポートスキャン後の状態は、ポートが開いているかフィルタリングされているかを判断できません。
バージョン検出は、これらのポートからの応答を引き出しようとします(
ポートを開く)、成功した場合は状態を開くように変更します。 開いている|フィルタリングされたTCPポートは
同じように扱われました。 Nmapに注意してください -A オプションは、とりわけバージョン検出を有効にします
もの。 バージョン検出の動作、使用法、およびカスタマイズを文書化したペーパー
で利用可能です https://nmap.org/book/vscan.html.
RPCサービスが検出されると、NmapRPCグラインダー。 自動的に使用されます
RPCプログラムとバージョン番号を決定します。 として検出されたすべてのTCP / UDPポートを取得します
RPCを実行し、SunRPCプログラムのNULLコマンドでそれらをフラッディングして、
それらはRPCポートであり、もしそうなら、それらが提供するプログラムとバージョン番号。 したがって、あなたはすることができます
効果的に同じ情報を取得します rpcinfo -p ターゲットのポートマッパーが背後にある場合でも
ファイアウォール(またはTCPラッパーで保護されている)。 デコイは現在、RPCスキャンでは機能しません。
Nmapがサービスから応答を受信したが、それらをデータベースと照合できない場合、
確かに知っている場合は、送信するための特別な指紋とURLを印刷します
ポートで実行されているもの。 提出するのに数分かかります。
あなたの発見はすべての人に利益をもたらすことができます。 これらの提出のおかげで、Nmapには約6,500のパターンがあります
SMTP、FTP、HTTPなどの650を超えるプロトコルに一致します。
バージョン検出は、次のオプションで有効化および制御されます。
-sV (バージョン検出)。
上記のように、バージョン検出を有効にします。 または、 -A、その
とりわけバージョン検出を有効にします。
-氏。 のエイリアスです -sV。 2011年XNUMX月以前は、RPCグラインダーをアクティブにするために使用されていました
バージョン検出とは別に、ただし現在、これらのオプションは常に組み合わされています。
--オールポート (バージョン検出からポートを除外しないでください)。
デフォルトでは、一部のプリンタは単にTCPポート9100をスキップするため、Nmapバージョン検出はTCPポートXNUMXをスキップします。
そのポートに送信されたものをすべて印刷すると、数十ページのHTTPGETリクエストが発生します。
バイナリSSLセッション要求など。この動作は、またはを変更することで変更できます。
nmap-service-probesのExcludeディレクティブを削除するか、指定することができます --オールポート
Excludeディレクティブに関係なく、すべてのポートをスキャンします。
-バージョン強度 (バージョンスキャン強度を設定)。
バージョンスキャンを実行する場合(-sV)、Nmapは一連のプローブを送信します。各プローブは
XNUMXからXNUMXの間のレアリティ値を割り当てました。 番号の小さいプローブが効果的です
多種多様な一般的なサービスに対して、番号の大きいサービスはめったにありません
使える。 強度レベルは、どのプローブを適用するかを指定します。 高いほど
番号が大きいほど、サービスが正しく識別される可能性が高くなります。 しかし、高い
強度スキャンには時間がかかります。 強度は0から9の間でなければなりません。デフォルトは
7 ..プローブがnmap-service-probesportsを介してターゲットポートに登録されている場合
ディレクティブ、そのプローブは強度レベルに関係なく試行されます。 これにより、
DNSプローブは常に開いているポート53に対して試行され、SSLプローブは
443などに対して行われます。
-バージョンライト (ライトモードを有効にする)。
これはの便利なエイリアスです -バージョン強度 2。 このライトモードはバージョンを作成します
スキャンははるかに高速ですが、サービスを識別する可能性はわずかに低くなります。
-バージョン-すべて (すべてのプローブを試してください)。
のエイリアス -バージョン強度 9、すべてのプローブが試行されるようにする
各ポートに対して。
-バージョン-トレース (トレースバージョンのスキャンアクティビティ)。
これにより、Nmapはバージョンスキャンとは何かに関する広範なデバッグ情報を出力します。
やっています。 それはあなたが得るもののサブセットです --パケットトレース.
OS 検出
Nmapの最もよく知られている機能のXNUMXつは、TCP / IPスタックを使用したリモートOS検出です。
フィンガープリント。 Nmapは一連のTCPおよびUDPパケットをリモートホストに送信し、検査します
応答の実質的にすべてのビット。 TCPISNなどの数十のテストを実行した後
サンプリング、TCPオプションのサポートと順序付け、IP IDサンプリング、および初期ウィンドウサイズ
チェックすると、Nmapは結果をそのnmap-os-dbと比較します。 2,600以上の既知のOSのデータベース
一致する場合は、指紋を付けてOSの詳細を印刷します。 各指紋には次のものが含まれます
OSの自由形式のテキストによる説明、およびベンダーに提供する分類
名前(Sunなど)、基盤となるOS(Solarisなど)、OS世代(10など)、およびデバイスタイプ
(汎用、ルーター、スイッチ、ゲーム機など)。 ほとんどの指紋には共通点もあります
プラットフォーム列挙(CPE)。 cpe:/ o:linux:linux_kernel:2.6のような表現。
NmapがマシンのOSを推測できず、状態が良好な場合(たとえば、少なくともXNUMXつ
開いているポートと閉じているポートがXNUMXつ見つかりました)、Nmapは送信に使用できるURLを提供します
マシンで実行されているOSを(確かに)知っている場合は指紋。 これを行うことによってあなたは
Nmapに知られているオペレーティングシステムのプールに貢献するため、
誰にとっても正確です。
OS検出により、収集された情報を利用する他のいくつかのテストが可能になります
とにかくプロセス中に。 これらのXNUMXつは、TCPシーケンス予測可能性分類です。
これは、偽造されたTCP接続を確立するのがどれだけ難しいかを測定します
リモートホスト。 これは、ソースIPベースの信頼関係(rlogin、
ファイアウォールフィルターなど)または攻撃のソースを隠すため。 この種のなりすましは
これ以上実行されることはめったにありませんが、多くのマシンは依然としてそれに対して脆弱です。 実際の
難易度の数値は統計的サンプリングに基づいており、変動する可能性があります。 それは一般的にです
「やりがいのある挑戦」や「些細な冗談」などの英語の分類を使用することをお勧めします。
これは、冗長な通常の出力でのみ報告されます(-v)モード。 詳細モードが有効になっている場合
と一緒に -O、IPIDシーケンスの生成も報告されます。 ほとんどのマシンは
「インクリメンタル」クラス。これは、IPヘッダーのIDフィールドを次のようにインクリメントすることを意味します。
送信する各パケット。 これにより、いくつかの高度な情報に対して脆弱になります
攻撃の収集となりすまし。
OS検出によって可能になるもうXNUMXつの追加情報は、ターゲットの稼働時間の推測です。
これはTCPタイムスタンプオプションを使用します(RFC 1323[10])マシンが最後だったのはいつかを推測する
再起動しました。 タイムスタンプカウンタが初期化されていないため、推測が不正確になる可能性があります
ゼロにするか、カウンターがオーバーフローしてラップアラウンドするため、冗長でのみ印刷されます
モード。
OS検出の動作、使用法、およびカスタマイズを文書化したペーパーは、次のURLで入手できます。
https://nmap.org/book/osdetect.html.
OS検出は、次のオプションで有効化および制御されます。
-O (OS検出を有効にする)。
上記のように、OS検出を有効にします。 または、 -A OSを有効にするには
他のものと一緒に検出。
--osscan-limit (OSの検出を有望なターゲットに限定します)。
少なくともXNUMXつの開いているTCPポートとXNUMXつの閉じているTCPポートがあれば、OSの検出ははるかに効果的です。
見つかった。 このオプションを設定すると、Nmapは実行するホストに対してOS検出を試行しません。
この基準を満たしていない。 これにより、特に時間を大幅に節約できます。 -Pn スキャン
多くのホストに対して。 OS検出がで要求された場合にのみ重要です -O or -A.
--osscan-推測; - ファジー (OSの検出結果を推測します)。
Nmapが完全なOS一致を検出できない場合、Nmapはほぼ一致を提供することがあります
可能性として。 Nmapがデフォルトでこれを行うには、一致が非常に近い必要があります。
これらの(同等の)オプションのいずれかにより、Nmapはより積極的に推測します。 Nmapは
不完全な一致が印刷されたときにそれでも通知し、その信頼水準を表示します
(パーセンテージ)各推測。
--max-os-試行 (ターゲットに対するOS検出の最大試行回数を設定します)。
Nmapがターゲットに対してOS検出を実行し、完全に一致するものを見つけられなかった場合、
通常、試行を繰り返します。 デフォルトでは、条件が次の場合、NmapはXNUMX回試行します
OSフィンガープリントの送信に適しています。条件があまり良くない場合はXNUMX回です。
下限を指定する --max-os-試行 値(1など)はNmapを高速化しますが、見逃します
OSを特定できる可能性のある再試行について。 または、高い値
条件が良好な場合は、さらに多くの再試行を許可するように設定できます。 これはめったにありません
送信および統合のためのより良いフィンガープリントを生成することを除いて、完了しました
NmapOSデータベース。
NMAP スクリプティング エンジン (NSE)
Nmapスクリプティングエンジン(NSE)は、Nmapの最も強力で柔軟な機能のXNUMXつです。 これ
ユーザーが簡単なスクリプトを作成(および共有)できるようにします( Luaの プログラミング 言語[11]。
)さまざまなネットワークタスクを自動化する。 これらのスクリプトは並行して実行されます
Nmapに期待する速度と効率で。 ユーザーは成長と
Nmapで配布されるさまざまなスクリプトのセット、またはカスタムのニーズを満たすために独自のスクリプトを作成します。
システムを作成するときに念頭に置いていたタスクには、ネットワーク検出などがあります。
高度なバージョン検出、脆弱性検出。 NSEは
脆弱性の悪用。
これらのさまざまな使用法を反映し、実行するスクリプトの選択を簡素化するために、それぞれ
スクリプトには、スクリプトをXNUMXつ以上のカテゴリに関連付けるフィールドが含まれています。 現在定義されている
カテゴリは、認証、ブロードキャスト、デフォルトです。 発見、dos、エクスプロイト、外部、ファザー、
侵入型、マルウェア、セーフ、バージョン、および脆弱性。 これらはすべてで説明されています
https://nmap.org/book/nse-usage.html#nse-categories.
スクリプトはサンドボックスで実行されないため、誤ってまたは悪意を持って
システムまたはあなたのプライバシーを侵害します。 信頼できる場合を除いて、サードパーティからのスクリプトを実行しないでください
作成者またはスクリプトを自分で注意深く監査しました。
Nmapスクリプティングエンジンの詳細については、次のURLを参照してください。 https://nmap.org/book/nse.html とです。
次のオプションによって制御されます。
-sC .
デフォルトのスクリプトセットを使用してスクリプトスキャンを実行します。 と同等です
--script = default。 このカテゴリのスクリプトの一部は、煩わしいと見なされ、
許可なくターゲットネットワークに対して実行しないでください。
- 脚本 ファイル名|カテゴリ|ディレクトリにジョブを開始します。|表現[、...] .
ファイル名、スクリプトカテゴリ、およびのコンマ区切りリストを使用してスクリプトスキャンを実行します。
ディレクトリ。 リスト内の各要素は、
より複雑なスクリプトのセット。 各要素は最初に式として解釈され、次に
カテゴリとして、そして最後にファイルまたはディレクトリ名として。
上級ユーザー専用のXNUMXつの特別な機能があります。 XNUMXつは、スクリプト名のプレフィックスを付けることです
+を使用した式は、通常は実行されない場合でも実行を強制します(たとえば、
関連するサービスがターゲットポートで検出されませんでした)。 もう一つは、その議論は
allは、Nmapのデータベース内のすべてのスクリプトを指定するために使用できます。 これに注意してください
NSEにはエクスプロイト、ブルートフォース認証などの危険なスクリプトが含まれているため
クラッカー、およびサービス拒否攻撃。
ファイル名とディレクトリ名は、相対名でも絶対名でもかまいません。 絶対名が使用されます
直接。 次の各場所のスクリプトで相対パスが検索されます
見つかるまで: --datadir
$ NMAPDIR.
〜/ .nmap (Windowsでは検索されません)。
ホーム\ AppData \ Roaming \ nmap(Windowsのみ)。
nmap実行可能ファイルを含むディレクトリ
nmap実行可能ファイルを含むディレクトリとそれに続く../share/nmap
NMAPDATADIR.
現在のディレクトリ。
ディレクトリ名が指定されると、Nmapは名前が終了するディレクトリ内のすべてのファイルをロードします
.nseで。 他のすべてのファイルは無視され、ディレクトリは再帰的に検索されません。 いつ
ファイル名が指定されている場合、拡張子は.nseである必要はありません。 追加されます
必要に応じて自動的に。 Nmapスクリプトは、Nmapのscriptsサブディレクトリに保存されます
デフォルトのデータディレクトリ(を参照) https://nmap.org/book/data-files.html)。 効率のために、
スクリプトは、scripts /script.dbに保存されているデータベースにインデックスが付けられます。 カテゴリを一覧表示します
または、各スクリプトが属するカテゴリ。 script.dbからスクリプトを参照する場合
名前には、シェルスタイルの「*」ワイルドカードを使用できます。
nmap - 脚本 「http- *」
http-authやhttp-open-proxyなど、名前がhttp-で始まるすべてのスクリプトをロードします。
への議論 - 脚本 ワイルドカードをシェルから保護するには、引用符で囲む必要がありました。
より複雑なスクリプトの選択は、and、or、not演算子を使用して行うことができます。
ブール式を作成します。 演算子は同じです 優先順位[12] Luaのように:そうではありません
最も高く、次にand、次にor。 括弧を使用して優先順位を変更できます。
式にはスペース文字が含まれているため、引用符で囲む必要があります。
nmap - 脚本 "いいえ 押し付けがましい」
侵入型カテゴリのスクリプトを除くすべてのスクリプトをロードします。
nmap - 脚本 "ディフォルト or 安全な"
これは機能的に同等です nmap - 脚本 「デフォルト、安全」。 すべてのスクリプトをロードします
デフォルトのカテゴリまたは安全なカテゴリ、あるいはその両方にあります。
nmap - 脚本 "ディフォルト と 安全な"
にあるスクリプトをロードします 両言語で デフォルトの安全なカテゴリ。
nmap - 脚本 "(ディフォルト or 安全な or 押し付けがましい) と http- * "
スクリプトをデフォルト、安全、または煩わしいカテゴリにロードします。
名前はhttp-で始まります。
--script-args n1=v1,n2={n3=v3},n4={v4,v5} .
NSEスクリプトに引数を指定できます。 引数は、コンマで区切られたリストです。
名前=値のペア。 名前と値は、空白または空白を含まない文字列である可能性があります
文字 '{'、 '}'、 '='、または '、'。 これらの文字のXNUMXつを文字列に含めるには、
文字列を一重引用符または二重引用符で囲みます。 引用符で囲まれた文字列内で、「\」はエスケープします
見積もり。 バックスラッシュは、この特殊なケースで引用符をエスケープするためにのみ使用されます。 全部で
その他の場合、円記号は文字通りに解釈されます。 値は、囲まれたテーブルの場合もあります
Luaと同じように{}で。 テーブルには、単純な文字列値またはそれ以上の名前値が含まれる場合があります
ネストされたテーブルを含むペア。 多くのスクリプトは、引数をスクリプトで修飾します
xmpp-info.server_nameのような名前。 あなたは影響を与えるためにその完全に修飾されたバージョンを使用することができます
指定されたスクリプトのみ、または非修飾バージョン(server_name in
この場合)その引数名を使用するすべてのスクリプトに影響します。 スクリプトは最初にチェックします
以前の完全修飾引数名(ドキュメントで指定されている名前)
修飾されていない引数名を受け入れます。 スクリプト引数の複雑な例は次のとおりです。
--script-args
'user = foo、pass = "、{} = bar"、whois = {whodb = nofollow + ripe}、xmpp-info.server_name = localhost'.
オンラインNSEドキュメンテーションポータル https://nmap.org/nsedoc/ 引数を一覧表示します
各スクリプトが受け入れること。
--スクリプト引数ファイル ファイル名 .
ファイルからNSEスクリプトへの引数をロードできます。 コマンドラインの引数
ファイル内のものに取って代わります。 ファイルは、絶対パス、または相対パスにすることができます
Nmapの通常の検索パス(NMAPDIRなど)引数はコンマ区切りまたはコンマで区切ることができます
改行で区切られていますが、それ以外はと同じルールに従います --script-argsなし
シェルによって解析されないため、特別な引用符とエスケープが必要です。
--スクリプトヘルプ ファイル名|カテゴリ|ディレクトリにジョブを開始します。|表現|すべて[、...] .
スクリプトに関するヘルプを表示します。 指定された仕様に一致するスクリプトごとに、Nmap
スクリプト名、そのカテゴリ、およびその説明を出力します。 仕様は
によって受け入れられたものと同じ - 脚本; たとえば、
ftp-anonスクリプト、実行します nmap --スクリプトヘルプ ftpアノン。 取得することに加えて
個々のスクリプトのヘルプ、これを実行されるスクリプトのプレビューとして使用できます
仕様の場合、たとえば nmap --スクリプトヘルプ デフォルト.
--スクリプトトレース .
このオプションは何をしますか --パケットトレース たったXNUMXつ上のISOレイヤーです。 このオプションの場合
スクリプトによって実行されるすべての着信および発信通信が出力されるように指定されます。
表示される情報には、通信プロトコル、ソース、ターゲットが含まれます
と送信されたデータ。 送信されたすべてのデータの5%以上が印刷できない場合、
その場合、トレース出力はXNUMX進ダンプ形式になります。 指定する --パケットトレース 可能
スクリプトトレースも。
--script-updatedb .
このオプションは、scripts /script.dbにあるスクリプトデータベースを更新します。
使用可能なデフォルトのスクリプトとカテゴリを決定するためのNmap。 必要なのは
NSEスクリプトをデフォルトから追加または削除した場合は、データベースを更新します
スクリプトディレクトリ、またはスクリプトのカテゴリを変更した場合。 このオプションは
一般的に単独で使用されます: nmap --script-updatedb.
タイミング そして パフォーマンスとは
私のNmap開発の最優先事項のXNUMXつは、常にパフォーマンスです。 デフォルトのスキャン
(nmap hostname)ローカルネットワーク上のホストのXNUMX分のXNUMX秒かかります。 それはかろうじて
点滅するのに十分な時間ですが、数百または数千のホストをスキャンしている場合は合計されます。
さらに、UDPスキャンやバージョン検出などの特定のスキャンオプションが増える可能性があります
実質的にスキャン時間。 したがって、特定のファイアウォール構成、特に応答が可能です。
レート制限。 Nmapは並列処理と多くの高度なアルゴリズムを利用して高速化します
これらのスキャンでは、ユーザーはNmapの実行方法を最終的に制御できます。 エキスパートユーザーは慎重に
Nmapコマンドを作成して、会議中に関心のある情報のみを取得します。
時間の制約。
スキャン時間を改善するための手法には、重要ではないテストの省略、およびへのアップグレードが含まれます。
Nmapの最新バージョン(パフォーマンスの強化が頻繁に行われます)。 最適化
タイミングパラメータも大きな違いを生む可能性があります。 これらのオプションを以下に示します。
一部のオプションは時間パラメータを受け入れます。 これはデフォルトで秒単位で指定されますが、
値に「ms」、「s」、「m」、または「h」を追加して、ミリ秒、秒、分、
または時間。 だから --ホストタイムアウト 引数900000ms、900、900s、および15mはすべて同じです
もの。
--最小ホストグループ ホスト数; --max-ホストグループ ホスト数 (並列スキャングループのサイズを調整します)。
Nmapには、複数のホストを並行してポートスキャンまたはバージョンスキャンする機能があります。 Nmap
これを行うには、ターゲットIPスペースをグループに分割し、XNUMXつのグループをスキャンします。
時間。 一般に、グループが大きいほど効率的です。 欠点は、ホストの結果です
グループ全体が終了するまで提供できません。 したがって、Nmapが
グループサイズが50の場合、ユーザーはレポートを受信しません(更新を除く)
最初の50台のホストが完了するまで、冗長モードで提供されます。
デフォルトでは、Nmapはこの競合に対して妥協的なアプローチを取ります。 それは
グループサイズがXNUMXと小さいため、最初の結果がすぐに表示され、その後、
groupsizeは1024までです。正確なデフォルトの数値は、指定されたオプションによって異なります。
効率上の理由から、NmapはUDPまたは少数ポートTCPスキャンに大きなグループサイズを使用します。
最大グループサイズがで指定されている場合 --max-ホストグループ、Nmapは決して超えません
そのサイズ。 で最小サイズを指定します --最小ホストグループ そしてNmapはグループを維持しようとします
そのレベルより上のサイズ。 Nmapは、指定した場合よりも小さいグループを使用する必要がある場合があります
指定されたインターフェイスに残っているターゲットホストが、指定されたものを満たすのに十分ではありません
最小。 どちらもグループサイズを特定の範囲内に保つように設定できますが、
めったに望まれません。
これらのオプションは、スキャンのホスト検出フェーズでは効果がありません。 この
プレーンpingスキャンが含まれます(-sn)。 ホスト検出は、常にホストの大規模なグループで機能します
速度と精度を向上させるため。
これらのオプションの主な用途は、大きな最小グループサイズを指定して、
フルスキャンはより高速に実行されます。 一般的な選択は、クラスCサイズのネットワークをスキャンするための256です。
チャンク。 多くのポートがあるスキャンの場合、その数を超えてもあまり役に立たない可能性があります。
ほんの数個のポート番号のスキャンの場合、2048以上のホストグループサイズが役立つ場合があります。
-分-並列処理 ナンバープローブ; --max-並列処理 ナンバープローブ (プローブの並列化を調整します)。
これらのオプションは、ホストに対して未処理である可能性のあるプローブの総数を制御します
グループ。 これらは、ポートスキャンとホスト検出に使用されます。 デフォルトでは、Nmapは計算します
ネットワークパフォーマンスに基づいて絶えず変化する理想的な並列処理。 パケットが
ドロップすると、Nmapの速度が低下し、未処理のプローブが少なくなります。 理想的なプローブ番号
ネットワークがそれ自体に価値があることが証明されるにつれて、ゆっくりと上昇します。 これらのオプションは最小または
その変数の最大境界。 デフォルトでは、理想的な並列処理は次の場合にXNUMXに低下する可能性があります。
ネットワークは信頼性が低く、完璧な状態では数百に達します。
最も一般的な使用法は設定することです -分-並列処理 速度を上げるためにXNUMXより大きい数に
パフォーマンスの低いホストまたはネットワークのアップスキャン。 これは危険なオプションですが、
設定が高すぎると精度に影響する場合があります。 これを設定すると、Nmapの能力も低下します
ネットワークの状態に基づいて並列処理を動的に制御します。 10の値は
私は最後の手段としてこの値を調整するだけですが、合理的です。
この --max-並列処理 Nmapがそれ以上送信しないように、オプションがXNUMXに設定されることがあります
ホストに対して一度に複数のプローブ。 The -スキャン遅延 後で説明するオプションは
これを行う別の方法。
--min-rtt-タイムアウト 時間, --max-rtt-タイムアウト 時間, --initial-rtt-タイムアウト 時間 (プローブを調整する
タイムアウト)。
Nmapは、実行タイムアウト値を維持して、待機する時間を決定します。
プローブをあきらめるか再送信する前に、プローブの応答。 これはに基づいて計算されます
以前のプローブの応答時間について。
ネットワーク遅延が重要で変動しやすいことがわかった場合、このタイムアウトは
数秒に成長します。 それはまた保守的な(高い)レベルで始まり、とどまるかもしれません
Nmapが応答しないホストをスキャンするとき、しばらくの間そのようにします。
下限を指定する --max-rtt-タイムアウト と --initial-rtt-タイムアウト デフォルトよりも
スキャン時間を大幅に短縮します。 これは特にpinglessに当てはまります(-Pn)スキャン、および
厳しくフィルタリングされたネットワークに対するもの。 ただし、攻撃的になりすぎないでください。 スキャンはできます
多くのプローブがタイムアウトするほど低い値を指定すると、時間がかかることになります
応答の転送中に再送信します。
すべてのホストがローカルネットワーク上にある場合、100ミリ秒(--max-rtt-タイムアウト 100ms)であり、
合理的な攻撃的な値。 ルーティングが含まれる場合は、ネットワーク上のホストにpingを実行します
最初にICMPpingユーティリティを使用するか、Npingなどのカスタムパケットクラフターを使用します。 それ
ファイアウォールを通過する可能性が高くなります。 の最大往復時間を見てください
XNUMXパケットかそこら。 あなたはそれをXNUMX倍にしたいかもしれません --initial-rtt-タイムアウト と
のためにそれをXNUMX倍またはXNUMX倍にする --max-rtt-タイムアウト。 私は一般的に最大値を設定しません
ping時間が何であっても、RTTが100ミリ秒未満。 また、1000ミリ秒を超えることもありません。
--min-rtt-タイムアウト はめったに使用されないオプションであり、ネットワークがそうである場合に役立つ可能性があります
Nmapのデフォルトでさえ攻撃的すぎるという信頼性はありません。 Nmapは減少するだけなので
ネットワークが信頼できると思われる場合は、タイムアウトを最小限に抑えます。この必要性は次のとおりです。
異常であり、nmap-devメーリングリストにバグとして報告する必要があります。
--max-再試行 ナンバーズ (ポートスキャンプローブの再送信の最大数を指定します)。
Nmapがポートスキャンプローブへの応答を受信しない場合、それはポートが
フィルタリング。 または、プローブまたは応答がネットワーク上で単に失われた可能性があります。 それも
ターゲットホストでレート制限が有効になっていて、一時的にブロックされている可能性があります
応答。 そのため、Nmapは最初のプローブを再送信して再試行します。 Nmapが検出した場合
ネットワークの信頼性が低いため、ポートをあきらめる前に何度も試行する可能性があります。 その間
これは精度にメリットがあり、スキャン時間も長くなります。 パフォーマンスが重要な場合、
許可される再送信の数を制限することにより、スキャンを高速化できます。 あなたもできます
指定する --max-再試行 0 再送信を防ぐためですが、それは
非公式の調査など、時折ポートを見逃したり、
ホストは受け入れられます。
デフォルト(なし -T テンプレート)は、XNUMX回の再送信を許可することです。 ネットワークが思われる場合
信頼性が高く、ターゲットホストはレート制限されていません。通常、NmapはXNUMXつだけを実行します。
再送信。 したがって、ほとんどのターゲットスキャンはドロップの影響も受けません --max-再試行 〜へ
XNUMXなどの低い値。 このような値は、低速のスキャンを大幅に高速化できます(レート
限定)ホスト。 Nmapが早期にポートをあきらめると、通常、一部の情報が失われます。
それは許可するよりも好ましいかもしれませんが --ホストタイムアウト 期限切れになり、すべてを失う
ターゲットに関する情報。
--ホストタイムアウト 時間 (遅いターゲットホストをあきらめる)。
一部のホストは単に 長い スキャンする時間。 これは、パフォーマンスの低下または
信頼性の低いネットワークハードウェアまたはソフトウェア、パケットレート制限、または制限
ファイアウォール。 スキャンされたホストの最も遅い数パーセントは、
スキャン時間。 損失を減らし、最初はそれらのホストをスキップするのが最善の場合もあります。
指定 --ホストタイムアウト あなたが待つことをいとわない最大の時間で。 にとって
たとえば、30mを指定して、NmapがXNUMX分以上無駄にしないようにします。
単一のホスト。 その間、Nmapが他のホストを同時にスキャンしている可能性があることに注意してください
XNUMX分なので、完全な損失ではありません。 タイムアウトしたホストはスキップされます。 ポートなし
そのホストのテーブル、OS検出、またはバージョン検出の結果が出力されます。
-スキャン遅延 時間; --最大スキャン遅延 時間 (プローブ間の遅延を調整します)。
このオプションにより、Nmapは各プローブ間で少なくとも指定された時間待機します
特定のホストに送信します。 これは、レート制限の場合に特に役立ちます。
Solarisマシン(他の多くのマシンの中でも)は通常、UDPスキャンプローブパケットに応答します
XNUMX秒あたりXNUMXつのICMPメッセージのみ。 Nmapによって送信されたもの以上のものは
無駄。 A -スキャン遅延 1の場合、Nmapはその遅い速度に保たれます。 Nmapは検出を試みます
レート制限を行い、それに応じてスキャン遅延を調整しますが、指定しても問題ありません
どのレートが最も効果的かをすでに知っている場合は、明示的に。
Nmapがレート制限に対処するためにスキャン遅延を上方に調整すると、スキャンが遅くなります
劇的にダウン。 The --最大スキャン遅延 オプションは、Nmapが最大の遅延を指定します
できるようになります。 低 --最大スキャン遅延 Nmapを高速化できますが、危険です。 これを設定する
値が低すぎると、パケットの再送信が無駄になり、ポートが失われる可能性があります
ターゲットが厳密なレート制限を実装している場合。
別の用途 -スキャン遅延 しきい値ベースの侵入検知を回避し、
防止システム(IDS / IPS)。
-最小レート 数; -最大レート 数 (スキャン速度を直接制御します)。
Nmapの動的タイミングは、適切な速度を見つけるのに適しています。
スキャン。 ただし、場合によっては、適切なスキャン速度を知っていることがあります。
ネットワーク、またはスキャンが特定の時間までに終了することを保証する必要があるかもしれません。
または、Nmapのスキャンが速すぎないようにする必要があります。 The -最小レート と -最大レート
オプションは、これらの状況向けに設計されています。
時 -最小レート オプションが与えられた場合、Nmapはパケットをできるだけ速く送信するために最善を尽くします
または指定されたレートよりも高速です。 引数は、
XNUMX秒あたりのパケット数で表したパケットレート。 たとえば、 -最小レート 300 という意味です
Nmapは、送信速度を300秒あたりXNUMXパケット以上に維持しようとします。 指定する
条件が許せば、最小レートはNmapの高速化を妨げません。
同様に、 -最大レート スキャンの送信速度を指定された最大値に制限します。 つかいます -最大レート
100たとえば、高速ネットワークでの送信を100秒あたりXNUMXパケットに制限します。 つかいます
-最大レート 0.1 XNUMX秒ごとにXNUMXつのパケットを低速スキャンします。 つかいます -最小レート と
-最大レート レートを特定の範囲内に保つために一緒に。
これらのXNUMXつのオプションはグローバルであり、個々のホストではなく、スキャン全体に影響します。 彼ら
ポートスキャンとホスト検出スキャンにのみ影響します。 OS検出などの他の機能
独自のタイミングを実装します。
実際のスキャン速度が要求された値を下回る可能性がある場合、XNUMXつの条件があります
最小。 XNUMXつ目は、最小値がNmapが実行できる最速の速度よりも速いかどうかです。
送信します。これはハードウェアに依存します。 この場合、Nmapは単にパケットを次のように送信します。
可能な限り高速ですが、そのような高いレートは損失を引き起こす可能性があることに注意してください
正確さ。 XNUMX番目のケースは、Nmapに送信するものがない場合です。たとえば、
最後のプローブが送信され、Nmapがそれらのタイムアウトを待機しているときのスキャンまたは
応答されます。 スキャンの終了時またはスキャン中にスキャンレートが低下するのは正常です。
ホストグループ間。 送信レートが一時的に最大値を超えて補う場合があります
予測できない遅延が発生しますが、平均してレートは最大値以下にとどまります。
最低レートの指定は注意して行う必要があります。 ネットワークよりも高速にスキャンする
サポートは精度の低下につながる可能性があります。 場合によっては、より速いレートを使用すると、
スキャンテイク より長いです 遅いレートよりも。 これは、Nmapのアダプティブが
再送信アルゴリズムは、過度のネットワーク輻輳を検出します
スキャン速度を上げ、再送信回数を増やして精度を向上させます。
したがって、パケットはより高いレートで送信されますが、全体としてより多くのパケットが送信されます。 キャップ
での再送信の数 --max-再試行 設定する必要がある場合のオプション
合計スキャン時間の上限。
--敗北-最初のレートリミット .
多くのホストは長い間レート制限を使用してきました。 ICMPエラーメッセージの数を減らすため
(ポート到達不能エラーなど)送信します。 一部のシステムは現在、同様のレートを適用しています
それらが生成するRST(リセット)パケットへの制限。 これにより、Nmapの速度が大幅に低下する可能性があります
それらのレート制限を反映するようにタイミングを調整します。 Nmapに無視するように指示できます
それらのレート制限(SYNスキャンなどのポートスキャンの場合 しない 無反応を扱う
開いているポート)を指定して --敗北-最初のレートリミット.
このオプションを使用すると、一部のポートが応答しないように見えるため、精度が低下する可能性があります
Nmapは、レート制限されたRST応答を十分に長く待機しなかったためです。 SYNスキャンでは、
応答がない場合、ポートは閉じられているのではなく、フィルタリングされているとラベル付けされます
RSTパケットが受信されたときに表示される状態。 このオプションは、気にするだけの場合に便利です
開いているポートについて、閉じているポートとフィルタリングされたポートを区別する価値はありません
延長時間。
--nsock-エンジン epoll | kqueue | poll | select .
特定のnsockIO多重化エンジンの使用を強制します。 のみ select(2)ベースのフォールバック
エンジンはシステムで使用可能であることが保証されています。 エンジンは名前にちなんで名付けられています
彼らが活用するIO管理機能の現在実装されているエンジンはepoll、
kqueue、poll、およびselectですが、すべてがどのプラットフォームにも存在するわけではありません。 つかいます nmap -V 〜へ
サポートされているエンジンを確認してください。
-T パラノイド|卑劣|礼儀正しい|普通|攻撃的|非常識 (タイミングテンプレートを設定します)。
前のセクションで説明したきめ細かいタイミング制御は強力ですが
効果的で、混乱を招く人もいます。 さらに、適切なものを選択する
値は、最適化しようとしているスキャンよりも時間がかかる場合があります。 だからNmap
XNUMXつのタイミングテンプレートを使用した、よりシンプルなアプローチを提供します。 あなたはそれらを指定することができます -T
オプションとその番号(0〜5)または名前。 テンプレート名は 妄想 (0),
卑劣な (1), 丁寧 (2), 通常の (3), 積極的な (4)、及び 非常識な (5)。 最初のXNUMXつは
IDS回避のため。 ポライトモードでは、スキャンの速度が低下し、使用する帯域幅とターゲットが少なくなります
マシンリソース。 通常モードがデフォルトであるため -T3、XNUMX 何もしません。 アグレッシブモード
速度は、あなたが適度に速いと仮定することによってスキャンアップします
信頼できるネットワーク。 最後に非常識なモード。 あなたが異常にいることを前提としています
高速ネットワークまたは速度のためにある程度の精度を犠牲にすることをいとわない。
これらのテンプレートを使用すると、ユーザーはどの程度積極的になりたいかを指定できます。
正確なタイミング値を選択するためにNmapを離れます。 テンプレートはまた、いくつかのマイナーな速度を作ります
きめ細かい制御オプションが現在存在しない調整。 にとって
例、 -T4、XNUMX。 TCPポートの動的スキャン遅延が10ミリ秒を超えることを禁止します。
-T5、XNUMX その値を5ミリ秒で制限します。 テンプレートは、きめの細かいものと組み合わせて使用できます
コントロール、および指定するきめ細かいコントロールが優先されます
そのパラメータのデフォルトのタイミングテンプレート。 使用をお勧めします -T4、XNUMX スキャンするとき
適度に近代的で信頼性の高いネットワーク。 追加する場合でもそのオプションを保持します
きめ細かい制御により、これらの追加のマイナーな最適化の恩恵を受けることができます。
を有効にします。
あなたがまともなブロードバンドまたはイーサネット接続を使用している場合、私は常にお勧めします
-T4、XNUMX。 一部の人々は大好きです -T5、XNUMX それは私の好みにはあまりにも攻撃的ですが。 人
時々指定する -T2、XNUMX ホストがクラッシュする可能性が低いと考えているため、または
彼らは一般的に自分たちを礼儀正しいと考えています。 彼らはしばしばどのように理解していません
遅く -T 丁寧。 本当にそうです。 それらのスキャンは、デフォルトのスキャンよりもXNUMX倍長くかかる場合があります。
デフォルトのタイミングオプションでは、マシンのクラッシュや帯域幅の問題はまれです(-T3、XNUMX)
ですから、私は通常、用心深いスキャナーにはそれをお勧めします。 バージョン検出を省略しているのは
これらの問題を減らすには、タイミング値で遊ぶよりもはるかに効果的です。
一方、 -T0、XNUMX。 と -T1、XNUMX。 IDSアラートを回避するのに役立つ場合があります。
何千ものマシンやポートをスキャンするのに非常に長い時間がかかります。 こんなに長い間
スキャンする場合は、に依存するのではなく、必要な正確なタイミング値を設定することをお勧めします。
缶詰 -T0、XNUMX と -T1、XNUMX 値。
の主な効果 T0 スキャンをシリアル化するため、一度にXNUMXつのポートのみがスキャンされます。
各プローブを送信するまでXNUMX分間待機します。 T1 と T2 似ていますが、
プローブ間でそれぞれ15秒と0.4秒だけ待機します。 T3。 Nmapの
並列化を含むデフォルトの動作。 -T4、XNUMX と同等のことをします
--max-rtt-タイムアウト 1250ms --min-rtt-タイムアウト 100ms --initial-rtt-タイムアウト 500ms
--max-再試行 6 最大TCPスキャン遅延を10ミリ秒に設定します。 T5 は
同等の --max-rtt-タイムアウト 300ms --min-rtt-タイムアウト 50ms --initial-rtt-タイムアウト
250ms --max-再試行 2 --ホストタイムアウト 15m 最大TCPスキャン遅延を設定するだけでなく
5ミリ秒まで。
ファイアウォール/ IDS 回避 そして なりすまし
多くのインターネットパイオニアは、ユニバーサルIPアドレススペースを備えたグローバルなオープンネットワークを構想していました。
任意のXNUMXつのノード間の仮想接続を許可します。 これにより、ホストは真として機能することができます
ピア、相互に情報を提供および取得します。 人々はすべてにアクセスできました
彼らの家のシステムは仕事から、気候制御設定を変更するか、ドアのロックを解除します
初期のゲストのために。 ユニバーサル接続のこのビジョンは、アドレス空間によって抑制されています
不足とセキュリティの懸念。 1990年代初頭、組織は展開を開始しました
接続を減らすという明確な目的のためのファイアウォール。 巨大なネットワークが封鎖された
アプリケーションプロキシ、ネットワークアドレス変換、および
パケットフィルター。 情報の無制限の流れは、
承認された通信チャネルとそれらを通過するコンテンツ。
ファイアウォールなどのネットワーク障害物は、ネットワークのマッピングを非常に困難にする可能性があります。
カジュアルな偵察を抑えることが多くの場合の主要な目標であるため、これは簡単にはなりません。
デバイスの実装。 それにもかかわらず、Nmapはこれらを理解するのに役立つ多くの機能を提供します
複雑なネットワーク、およびフィルターが意図したとおりに機能していることを確認します。 それもサポートします
不十分に実装された防御をバイパスするためのメカニズム。 の最良の方法のXNUMXつ
ネットワークセキュリティの姿勢を理解することは、それを打ち負かそうとすることです。 に身を置く
攻撃者の考え方を理解し、このセクションの手法をネットワークに対して展開します。
FTPバウンススキャン、アイドルスキャン、フラグメンテーション攻撃を開始するか、いずれかをトンネリングしてみてください
あなた自身のプロキシの。
ネットワークアクティビティを制限することに加えて、企業はますますトラフィックを監視しています
侵入検知システム(IDS)を使用します。 すべての主要なIDSには、次のように設計されたルールが付属しています。
スキャンは攻撃の前兆となることがあるため、Nmapスキャンを検出します。 これらの多くは
製品は最近侵入に変身しました 予防 システム(IPS)。 積極的に
悪意があると見なされるトラフィックをブロックします。 ネットワーク管理者とIDSベンダーにとって残念なことに、
パケットデータを分析して悪意を確実に検出することは難しい問題です。 攻撃者
忍耐力、スキル、および特定のNmapオプションの助けを借りて、通常はIDSを通過できます
検出されません。 一方、管理者は多数の誤検知に対処する必要があります
罪のない活動が誤診され、警告またはブロックされた結果。
時折、Nmapはファイアウォールルールを回避するための機能を提供すべきではないと人々は提案します
または過去のIDSをこっそり通過します。 彼らは、これらの機能が悪用される可能性が高いと主張しています
管理者がセキュリティを強化するために使用する攻撃者。 このロジックの問題は
これらのメソッドは、他のツールや
機能をNmapにパッチします。 その間、管理者はそれをそんなに見つけるでしょう
彼らの仕事をするのは難しい。 最新のパッチを適用したFTPサーバーのみを展開する方がはるかに強力です
FTPバウンスを実装するツールの配布を阻止しようとするよりも防御
攻撃。
ファイアウォールとIDSを検出して破壊するための特効薬(またはNmapオプション)はありません
システム。 スキルと経験が必要です。 チュートリアルはこのリファレンスの範囲を超えています
ガイド。関連するオプションのみをリストし、それらが何をするかを説明します。
-f (フラグメントパケット); --mtu (指定されたMTUを使用)。
この -f オプションを指定すると、要求されたスキャン(pingスキャンを含む)で小さな断片化されたものが使用されます
IPパケット。 アイデアは、TCPヘッダーをいくつかのパケットに分割して作成することです
パケットフィルター、侵入検知システム、およびその他の煩わしさを検出するのが難しい
何をしているの。 これに注意してください! 一部のプログラムでは、これらの処理に問題があります
小さなパケット。 Sniffitセグメンテーションという名前の古い学校のスニファーはすぐに失敗しました
最初のフラグメントを受け取ったとき。 このオプションをXNUMX回指定すると、Nmapは
IPヘッダーの後に20バイト以下にパケットします。 したがって、XNUMXバイトのTCPヘッダーは次のようになります。
XNUMXつのパケットに分割します。 XNUMXつはXNUMXバイトのTCPヘッダーで、もうXNUMXつは
ファイナルフォー。 もちろん、各フラグメントにはIPヘッダーもあります。 特定 -f 再び16を使用する
フラグメントあたりのバイト数(フラグメントの数を減らす)。または、独自のバイトを指定することもできます。
オフセットサイズ --mtu オプション。 また指定しないでください -f あなたが使うなら --mtu。 オフセット
XNUMXの倍数である必要があります。 断片化されたパケットはパケットフィルターを通過しませんが、
次のようなすべてのIPフラグメントをキューに入れるファイアウォール CONFIG_IP_ALWAYS_DEFRAG 内のオプション
Linuxカーネルの場合、一部のネットワークでは、この原因によるパフォーマンスの低下を許容できません。
無効のままにします。 フラグメントが異なる可能性があるため、他の人はこれを有効にできません
ネットワークにルーティングします。 一部のソースシステムは、送信パケットをデフラグします。
カーネル。 Linuxとiptables。 接続追跡モジュールはそのような例のXNUMXつです。 行う
Wiresharkなどのスニファでスキャンします。 送信されたパケットが
断片化。 ホストOSが問題を引き起こしている場合は、 --送信-eth。 バイパスするオプション
IP層と生のイーサネットフレームを送信します。
フラグメンテーションは、TCPおよび
UDPポートスキャン(接続スキャンとFTPバウンススキャンを除く)とOS検出。 特徴
バージョン検出やNmapスクリプティングエンジンなどは通常、サポートしていません
ターゲットとの通信をホストのTCPスタックに依存しているため、断片化
サービスを提供しています。
-D おとり1[,おとり2][、自分][、...] (スキャンをおとりでクロークします)。
おとりスキャンを実行します。これにより、リモートホストに
おとりとして指定したホストもターゲットネットワークをスキャンしています。 したがって、彼らのIDS
一意のIPアドレスから5〜10個のポートスキャンを報告する場合がありますが、どのIPかはわかりません。
それらをスキャンしていて、それは無実のおとりでした。 これは打ち負かすことができますが
ルーターのパストレーシング、応答のドロップ、およびその他のアクティブなメカニズム。
IPアドレスを隠すための効果的なテクニック。
各おとりホストをコンマで区切ります。オプションでMEを使用できます。 のXNUMXつとして
おとりは、実際のIPアドレスの位置を表します。 私をXNUMX番目に入れたら
位置以降、いくつかの一般的なポートスキャン検出器(Solar Designerなど)。
優れたScanlogd)。 IPアドレスがまったく表示されない可能性があります。 使用しない場合
ME、Nmapはあなたをランダムな位置に置きます。 RNDを使用することもできます。 を生成するには
ランダムな、予約されていないIPアドレス、またはRND:数 引き起こす 数 アドレス。
おとりとして使用するホストが稼働している必要があることに注意してください。稼働していないと、誤ってSYNフラッドが発生する可能性があります。
あなたのターゲット。 また、スキャンしているホストを特定するのは非常に簡単です。
XNUMXつは実際にネットワーク上にあります。 名前の代わりにIPアドレスを使用することをお勧めします
(したがって、おとりネットワークはネームサーバーログにあなたを表示しません)。
デコイは、最初のpingスキャン(ICMP、SYN、ACKなどを使用)と
実際のポートスキャンフェーズ中。 おとりは、リモートOSの検出中にも使用されます
(-O)。 おとりはバージョン検出またはTCP接続スキャンでは機能しません。 スキャン遅延時
が有効である場合、遅延はスプーフィングされたプローブの各バッチ間で強制されます。
個々のプローブ。 おとりは一度にまとめて送られるので、
一時的に輻輳制御制限に違反します。
あまりにも多くのおとりを使用すると、スキャンが遅くなり、場合によってはさらに遅くなる可能性があることに注意してください。
精度を下げます。 また、一部のISPはスプーフィングされたパケットを除外しますが、多くのISPは
スプーフィングされたIPパケットをまったく制限しないでください。
-S IPアドレス (なりすましの送信元アドレス)。
状況によっては、Nmapが送信元アドレスを判別できない場合があります(Nmap
これが当てはまるかどうかを教えてくれます)。 この状況では、 -S のIPアドレス
パケットを送信するインターフェイス。
このフラグの別の可能な使用法は、スキャンをスプーフィングして、ターゲットに次のように思わせることです。
誰か ほかに それらをスキャンしています。 会社が繰り返しポートスキャンされていると想像してみてください
競合他社選手! The -e オプション -Pn この種の使用には一般的に必要です。 ノート
通常、応答パケットは受信されません(IPにアドレス指定されます)
なりすまし)であるため、Nmapは有用なレポートを生成しません。
-e インタフェース (指定されたインターフェースを使用)。
パケットを送受信するインターフェイスをNmapに指示します。 Nmapはできるはずです
これは自動的に検出されますが、検出できない場合は通知されます。
-ソースポート ポート番号; -g ポート番号 (なりすまし送信元ポート番号)。
驚くほど一般的な設定ミスのXNUMXつは、ソースのみに基づいてトラフィックを信頼することです。
ポート番号。 これがどのように発生するかを理解するのは簡単です。 管理者が設定します
光沢のある新しいファイアウォールをアップしますが、恩知らずのユーザーからの苦情が殺到するだけです
そのアプリケーションは動作を停止しました。 特に、UDPが原因でDNSが壊れている可能性があります
外部サーバーからのDNS応答は、ネットワークに入ることができなくなります。 FTPは別のものです
一般的な例。 アクティブなFTP転送では、リモートサーバーは確立しようとします
要求されたファイルを転送するためにクライアントに接続し直します。
これらの問題に対する安全な解決策は、多くの場合、アプリケーションレベルの形で存在します
プロキシまたはプロトコル解析ファイアウォールモジュール。 残念ながら、もっと簡単なものもあります。
安全でないソリューション。 DNS応答はポート53から送信され、アクティブFTPはポートから送信されることに注意してください
20、多くの管理者は単に着信トラフィックを許可するという罠に陥っています
それらのポートから。 彼らはしばしば、攻撃者がそのようなものに気づいて悪用することはないと想定しています
ファイアウォールの穴。 その他の場合、管理者はこれを短期間の一時的なギャップと見なします
より安全なソリューションを実装できるようになるまで測定します。 それから彼らはセキュリティを忘れます
アップグレード。
この罠に陥るのは、過労のネットワーク管理者だけではありません。
多くの製品がこれらの安全でないルールとともに出荷されています。 マイクロソフトでさえ
有罪。 Windows2000およびWindowsXPに付属のIPsecフィルタには、
ポート88(Kerberos)からのすべてのTCPまたはUDPトラフィックを許可する暗黙のルール。 別の
よく知られているケースですが、2.1.25までのZoneAlarmパーソナルファイアウォールのバージョンでは、
送信元ポート53(DNS)または67(DHCP)の着信UDPパケット。
Nmapは -g と -ソースポート これらを悪用するためのオプション(これらは同等です)
弱点。 ポート番号を入力するだけで、Nmapはそのポートからパケットを送信します
可能であれば。 SYNやUDPなど、rawソケットを使用するほとんどのスキャン操作
スキャンし、オプションを完全にサポートします。 このオプションは特に効果がありません
DNS要求、TCPなど、通常のオペレーティングシステムソケットを使用するすべての操作
接続する スキャン、。 バージョン検出、およびスクリプトスキャン。 送信元ポートの設定も
Nmapは異なるポート番号を使用する必要があるため、OSの検出には機能しません
正しく動作する特定のOS検出テスト。
- データ 16進法 string (送信されたパケットにカスタムバイナリデータを追加します)。
このオプションを使用すると、送信されたパケットのペイロードとしてバイナリデータを含めることができます。 16進法 string かもしれません
次のいずれかの形式で指定してください:0xAABBCCDDEEFF...、AABBCCDDEEFF... or
\ xAA \ xBB \ xCC \ xDD \ xEE \ xFF...。 使用例は次のとおりです。 - データ 0xデッドビーフ と - データ
\ xCA \ xFE \ x09。 0x00ffのような数値を指定した場合、バイトオーダー変換は行われないことに注意してください
は発表された。 情報が期待されるバイトオーダーで指定されていることを確認してください。
レシーバ。
-データ文字列 string (送信されたパケットにカスタム文字列を追加します)。
このオプションを使用すると、送信されたパケットのペイロードとして通常の文字列を含めることができます。 string できる
任意の文字列が含まれます。 ただし、一部の文字はシステムに依存する場合があることに注意してください
ロケールと受信者が同じ情報を表示しない場合があります。 また、必ず同封してください
文字列を二重引用符で囲み、シェルから特殊文字をエスケープします。
例: -データ文字列 "スキャン 実施 by セキュリティ Ops、 7192 " or
-データ文字列 「Ph34r my l33t スキル」。 誰も実際にそうする可能性がないことを覚えておいてください
ネットワークを注意深く監視していない限り、このオプションによって残されたコメントを参照してください
スニファまたはカスタムIDSルールを使用します。
-- データ長 数 (送信されたパケットにランダムデータを追加します)。
通常、Nmapはヘッダーのみを含む最小限のパケットを送信します。 したがって、そのTCPパケット
通常は40バイトで、ICMPエコー要求はわずか28バイトです。一部のUDPポート。 およびIP
プロトコル。 デフォルトでカスタムペイロードを取得します。 このオプションは、Nmapに追加するように指示します
送信するほとんどのパケットにランダムなバイト数を指定し、何も使用しない
プロトコル固有のペイロード。 (つかいます -- データ長 0 ランダムまたはプロトコル固有ではありません
ペイロード..OS検出(-O)パケットは影響を受けません。 そこの精度のため
プローブの整合性が必要ですが、ほとんどのpingおよびポートスキャンパケットはこれをサポートしています。 これ
速度は少し遅くなりますが、スキャンが少し目立たなくなる可能性があります。
--ip オプション S | R [ルート] | L [ルート] | T | U ... ; --ip オプション 16進法 string (でパケットを送信します
指定されたIPオプション)。
この IP [13]は、パケットヘッダーに配置できるいくつかのオプションを提供します。
ユビキタスなTCPオプションとは異なり、IPオプションは、実用性と
セキュリティ上の懸念。 実際、多くのインターネットルーターは最も危険なオプションをブロックしています
ソースルーティングなど。 それでも、オプションは、決定するためにいくつかのケースでまだ役立つことがあります
ターゲットマシンへのネットワークルートを操作します。 たとえば、次のことができる場合があります
従来の場合でも、ルートの記録オプションを使用してターゲットへのパスを決定します
tracerouteスタイルのアプローチは失敗します。 または、パケットが特定の人によってドロップされている場合
ファイアウォールの場合、厳密なソースまたは緩いソースで別のルートを指定できる場合があります
ルーティングオプション。
IPオプションを指定する最も強力な方法は、値を次のように渡すことです。
への議論 --ip オプション。 各XNUMX進数の前に\ xを付け、次にXNUMX桁の数字を付けます。 してもいいです
アスタリスクとその後の数を続けて特定の文字を繰り返します
あなたが彼らに繰り返すことを望む回数。 たとえば、\ x01 \ x07 \ x04 \ x00 * 36 \ x01はXNUMX進文字列です
36NULバイトを含みます。
Nmapは、オプションを指定するためのショートカットメカニズムも提供します。 手紙を渡すだけ
レコードルートを要求するR、T、またはU、。 レコードタイムスタンプ、。 または両方のオプションを一緒に、
それぞれ。 緩いまたは厳密なソースルーティング。 LまたはSで指定できます
その後にスペースが続き、次にスペースで区切られたIPアドレスのリストが続きます。
送受信されたパケットのオプションを表示する場合は、次のように指定します --パケットトレース.
NmapでIPオプションを使用する方法の詳細と例については、を参照してください。
http://seclists.org/nmap-dev/2006/q3/52.
--ttl 値 (IP存続時間フィールドを設定します)。
送信されたパケットのIPv4存続時間フィールドを指定された値に設定します。
--randomize-hosts (ターゲットホストの順序をランダム化します)。
Nmapに、最大16384ホストの各グループをスキャンする前にシャッフルするように指示します。 これはできます
スキャンをさまざまなネットワーク監視システムにわかりにくくします。
遅いタイミングオプションと組み合わせてください。 より大きなグループサイズにランダム化する場合は、
増加する PING_GROUP_SZ。 nmap.hで。 そして再コンパイルします。 別の解決策は
リストスキャンでターゲットIPリストを生成します(-sL -n -の上 ファイル名)、でランダム化
Perlスクリプトを作成し、リスト全体をNmapに提供します。 -iL..
--spoof-mac マック 住所、 プレフィックス、 or ベンダー 名 (なりすましMACアドレス)。
送信するすべての生のイーサネットフレームに指定されたMACアドレスを使用するようにNmapに要求します。
このオプションは、 --送信-eth。 Nmapが実際にイーサネットレベルを送信することを確認します
パケット。 与えられたMACはいくつかのフォーマットを取ることができます。 単に数字の0の場合、Nmap
セッションに完全にランダムなMACアドレスを選択します。 指定された文字列が
偶数のXNUMX進数(オプションでコロンで区切られたペアを含む)の場合、Nmapは
それらをMACとして使用します。 提供される12進数がXNUMX桁未満の場合、Nmapは
ランダムな値を持つXNUMXバイトの残り。 引数がゼロまたはXNUMX進数でない場合
文字列、Nmapはnmap-mac-prefixesを調べて、
指定された文字列(大文字と小文字は区別されません)。 一致するものが見つかった場合、NmapはベンダーのOUIを使用します
(XNUMXバイトのプレフィックス)。 残りのXNUMXバイトをランダムに入力します。 有効
--spoof-mac 引数の例は、Apple、0、01:02:03:04:05:06、deadbeefcafe、0020F2、
およびCisco。 このオプションは、SYNスキャンやOS検出などの生のパケットスキャンにのみ影響します。
バージョン検出やNmapスクリプティングなどのコネクション型機能ではありません
エンジン。
-プロキシ カンマ区切り リスト of 代理 URLは (のチェーンを介してTCP接続を中継します
プロキシ)。
Nmapに、提供されたチェーンを介して最終ターゲットとのTCP接続を確立するように要求します。
4つ以上のHTTPまたはSOCKSXNUMXプロキシ。 プロキシは、スキャンの真のソースを隠すのに役立ちます。
特定のファイアウォール制限を回避しますが、スキャンパフォーマンスを妨げる可能性があります
レイテンシーの増加。 ユーザーは、Nmapタイムアウトおよびその他のスキャンパラメータを調整する必要がある場合があります
によると。 特に、より低い --max-並列処理 一部のプロキシが役立つ可能性があります
Nmapがデフォルトで開くのと同じ数の同時接続を処理することを拒否します。
このオプションは、プロキシのリストを引数として取り、次の形式のURLとして表されます。
proto:// host:port。 チェーン内のノードURLを区切るには、コンマを使用します。 認証はありません
まだサポートされています。 有効なプロトコルはHTTPとSOCKS4です。
警告:この機能はまだ開発中であり、制限があります。 です
nsockライブラリ内に実装されているため、ping、ポートスキャンには影響しません。
スキャンのOS検出フェーズ。 NSEとバージョンスキャンのみがこのオプションの恩恵を受けます
これまでのところ、他の機能があなたの本当の住所を開示する可能性があります。 SSL接続はまだです
また、プロキシ側のDNS解決もサポートされていません(ホスト名は常にNmapによって解決されます)。
--バドサム (偽のTCP / UDPチェックサムを使用してパケットを送信します)。
ターゲットに送信されたパケットに無効なTCP、UDP、またはSCTPチェックサムを使用するようにNmapに要求します
ホスト。 事実上すべてのホストIPスタックがこれらのパケットを適切にドロップするため、すべての応答が
受信したのは、ファイアウォールまたはIDSからのものである可能性があります。
チェックサム。 この手法の詳細については、を参照してください。 https://nmap.org/p60-12.html
--adler32 (SCTPチェックサムにはCRC32Cの代わりに非推奨のAdler32を使用してください)。
Nmapに、廃止されたAdler32アルゴリズムを使用してSCTPチェックサムを計算するように要求します。
If --adler32 指定されていない場合は、CRC-32C(Castagnoli)が使用されます。 RFC 2960[14]もともと
Adler32をSCTPのチェックサムアルゴリズムとして定義しました。 RFC 4960[7]後でSCTPを再定義しました
CRC-32Cを使用するためのチェックサム。 現在のSCTP実装では、CRC-32Cを使用する必要がありますが、
古いレガシーSCTP実装からの応答を引き出すには、それが望ましい場合があります
Adler32を使用します。
出力
セキュリティツールは、それが生成する出力と同じくらい有用です。 複雑なテストと
アルゴリズムは、整理されたわかりやすい形で提示されていない場合、ほとんど価値がありません。
ファッション。 Nmapが人や他のソフトウェアによって使用される方法の数を考えると、単一の
フォーマットは誰もが喜ぶことができます。 そのため、Nmapはインタラクティブモードを含むいくつかのフォーマットを提供します
人間が直接読み取るためのXMLと、ソフトウェアによる簡単な解析のためのXML。
さまざまな出力形式を提供することに加えて、Nmapは制御するためのオプションを提供します
出力の冗長性とデバッグメッセージ。 出力タイプはに送信される場合があります
標準出力または名前付きファイル。Nmapが追加またはクローバーできます。 出力ファイルは
中止されたスキャンを再開するためにも使用されます。
Nmapは、XNUMXつの異なる形式で出力を利用できるようにします。 デフォルトはインタラクティブと呼ばれます
出力、。 そしてそれは標準出力(stdout)に送られます。通常の出力もあります。
これは、実行時情報が少なく表示されることを除いて、インタラクティブに似ています。
スキャンが完了した後に分析されることが期待されるため、警告
インタラクティブに。
XML出力。 HTMLに変換できるため、最も重要な出力タイプのXNUMXつです。
Nmapグラフィカルユーザーインターフェイスなどのプログラムで簡単に解析したり、にインポートしたりできます
データベース。
残りのXNUMXつの出力タイプは、単純なgrepable出力です。 ほとんどが含まれています
単一回線上のターゲットホストの情報、およびsCRiPt KiDDi3utPUt。 次のようなユーザー向け
自分自身を考えてください| <-r4d。
インタラクティブ出力がデフォルトであり、関連するコマンドラインオプションはありませんが、
他のXNUMXつのフォーマットオプションは同じ構文を使用します。 彼らは一つの議論をします、それは
結果を保存するファイル名。複数の形式を指定できますが、それぞれ
形式はXNUMX回だけ指定できます。 たとえば、通常の出力を保存したい場合があります
プログラム分析のために同じスキャンのXMLを保存しながら、独自のレビューを行います。 あなたはするかもしれません
これとオプション -牛 myscan.xml -の上 myscan.nmap。 この章では単純なものを使用していますが
簡潔にするためにmyscan.xmlのような名前、よりわかりやすい名前をお勧めします。 The
選択した名前は個人的な好みの問題ですが、私は
スキャンの日付とスキャンを説明する単語またはXNUMXつは、
私がスキャンしている会社。
これらのオプションは結果をファイルに保存しますが、Nmapは引き続きインタラクティブな出力をstdoutに出力します
いつものように。 たとえば、コマンド nmap -牛 myscan.xml ターゲット XMLをmyscan.xmlに出力し、
標準出力を、次の場合に出力したのと同じインタラクティブな結果で埋めます -牛
まったく指定されていませんでした。 引数としてハイフン文字を渡すことでこれを変更できます
フォーマットタイプのXNUMXつに。 これにより、Nmapはインタラクティブ出力を非アクティブ化し、代わりに
結果を、標準の出力ストリームに指定した形式で印刷します。 したがって、コマンド
nmap -牛 - ターゲット XML出力のみをstdoutに送信します。重大なエラーは依然として発生する可能性があります
通常のエラーストリーム、stderrに出力されます。
一部のNmap引数とは異なり、ログファイルオプションフラグ間のスペース( -牛)と
ファイル名またはハイフンは必須です。 フラグを省略して、次のような引数を指定した場合 -oG-
or -oXscan.xml、Nmapの下位互換性機能により、
通常の 形式でアーカイブしたプロジェクトを保存します. それぞれG-およびXscan.xmlという名前の出力ファイル。
これらの引数はすべてサポートします ストラフタイム-お気に入り。 ファイル名の変換。 %H、%M、%S、
%m、%d、%y、および%Yは、すべてまったく同じです。 ストラフタイム。 %Tは%H%M%S、%Rと同じです
は%H%Mと同じであり、%Dは%m%d%yと同じです。 %の後に他の文字が続く
その文字を生成するだけです(%%はパーセント記号を示します)。 そう -牛 'scan-%T-%D.xml' 意志
scan-144840-121307.xmlの形式の名前のXMLファイルを使用します。
Nmapには、スキャンの詳細度を制御し、出力ファイルに追加するオプションもあります。
それらを壊すよりも。 これらのオプションはすべて以下に説明されています。
Nmapの 出力 フォーマット
-の上 ファイルスペック (通常の出力)。
通常の出力が指定されたファイル名に送信されるように要求します。 上で説明したように、
これは、インタラクティブ出力とは少し異なります。
-牛 ファイルスペック (XML出力)。
XML出力が指定されたファイル名に送信されるように要求します。 Nmapにはドキュメントが含まれています
XMLパーサーがNmapXML出力を検証できるようにする型定義(DTD)。 それが
主にプログラムでの使用を目的としていますが、人間がNmapXMLを解釈するのにも役立ちます
出力。 DTDはフォーマットの法的要素を定義し、多くの場合、
彼らが引き受けることができる属性と価値。 最新バージョンはいつでも
https://svn.nmap.org/nmap/docs/nmap.dtd.
XMLは、ソフトウェアで簡単に解析できる安定した形式を提供します。 無料のXMLパーサーは
C / C ++、Perl、Python、Javaを含むすべての主要なコンピューター言語で利用できます。
人々は、Nmap出力を処理するために、これらの言語のほとんどのバインディングを作成しました。
具体的には実行します。 例は次のとおりです Nmap :: Scanner[15]。 と Nmap :: Parser[16]。 の
PerlCPAN。 重要なアプリケーションがNmapとインターフェイスするほとんどすべての場合、
XMLが推奨される形式です。
XML出力は、結果を次のようにフォーマットするために使用できるXSLスタイルシートを参照します。
HTML。 これを使用する最も簡単な方法は、WebブラウザにXML出力をロードすることです。
FirefoxやIEなど。 デフォルトでは、これはNmapを実行したマシンでのみ機能します
(または同様に構成されたもの)ハードコードされたnmap.xslファイルシステムパスが原因です。 つかいます
--webxml or -スタイルシート HTMLとしてレンダリングするポータブルXMLファイルを作成するためのオプション
Webに接続されたマシン。
-OS ファイルスペック (ScRipT KIdd | 3 oUTpuT)。
スクリプトキディの出力は、後処理されることを除けば、インタラクティブな出力に似ています。
一貫性があるため、以前にNmapを見下したl33tHaXXorZに適しています
大文字と小文字の区別とスペル。 ユーモア障害のある人は、このオプションが
おそらく「彼らを助けた」と私を怒らせる前に、スクリプトキディをからかっています。
-oG ファイルスペック (grepable出力)。
この出力形式は非推奨であるため、最後に説明します。 XML出力形式は次のとおりです。
はるかに強力で、経験豊富なユーザーにとってもほぼ同じくらい便利です。 XMLは
数十の優れたパーサーが利用可能な標準であり、grepable出力は
私自身の単純なハック。 XMLは拡張可能であり、新しいNmap機能をそのままサポートします
リリースされましたが、私はしばしばこれらの機能をgrepable出力から省略しなければなりません。
それらを置く場所。
それにもかかわらず、grepable出力は依然として非常に人気があります。 それはリストする単純なフォーマットです
各ホストはXNUMX行で、標準のUnixで簡単に検索および解析できます
grep、awk、cut、sed、diff、Perlなどのツール。 普段は一回限りで使っています
コマンドラインで実行されるテスト。 SSHポートが開いている、または開いているすべてのホストを検索する
Solarisを実行している場合、ホストを識別するために単純なgrepのみを使用し、awkまたは
目的のフィールドを印刷するには、cutコマンドを使用します。
再現可能な出力はコメント(ポンド(#)で始まる行)で構成されます。 とターゲット
行。 ターゲット行には、タブで区切られたXNUMXつのラベル付きフィールドの組み合わせが含まれます
コロンが続きます。 フィールドは、ホスト、ポート、プロトコル、無視された状態、OS、
Seqインデックス、IP ID、およびステータス。
これらのフィールドの中で最も重要なのは、一般的にポートです。これにより、それぞれの詳細が示されます。
興味深いポート。 これは、ポートエントリのコンマ区切りのリストです。 各ポートエントリ
XNUMXつの興味深いポートを表し、XNUMXつのスラッシュ(/)で区切られた形式を取ります
サブフィールド。 これらのサブフィールドは、ポート番号、状態、プロトコル、所有者、サービス、SunRPCです。
情報、およびバージョン情報。
XML出力と同様に、このマニュアルページではフォーマット全体を文書化することはできません。 A
Nmap grepable出力形式の詳細については、次のWebサイトを参照してください。
https://nmap.org/book/output-formats-grepable-output.html.
-oA ベース名 (すべての形式に出力)。
便宜上、指定することができます -oA ベース名 スキャン結果を通常のXMLで保存するには、
一度にgrepableフォーマット。 それらはに保存されます ベース名.nmap、 ベース名.xml、および
ベース名それぞれ.gnmap。 ほとんどのプログラムと同様に、ファイル名の前にプレフィックスを付けることができます
などのディレクトリパス 〜/ nmaplogs / foocorp / Unixの場合はc:\ hacking \ sco、Windowsの場合はc:\ hacking \ sco。
冗長性 と デバッギング オプション
-v (詳細レベルを上げる)。
詳細レベルを上げ、Nmapがスキャンに関するより多くの情報を出力するようにします
進行中。 開いているポートが見つかったときに表示され、完了時間の見積もりは次のとおりです。
Nmapがスキャンに数分以上かかると判断した場合に提供されます。 XNUMX回使用するか
さらに冗長性を高めるには: -vv、または冗長レベルを直接指定します。たとえば、
-v3..
ほとんどの変更はインタラクティブな出力にのみ影響し、一部は通常の出力とスクリプトにも影響します
キディ出力。 他の出力タイプはマシンによって処理されることを意図しているため、Nmap
人間を疲れさせることなく、これらの形式でデフォルトでかなりの詳細を与えることができます
ユーザー。 ただし、出力サイズを縮小できる他のモードにはいくつかの変更があります
実質的にいくつかの詳細を省略することによって。 たとえば、grepableのコメント行
スキャンされたすべてのポートのリストを提供する出力は、冗長モードでのみ出力されます
かなり長くなる可能性があるからです。
-d (デバッグレベルを上げます)。
詳細モードでも十分なデータが得られない場合は、デバッグを利用できます
もっとたくさんであなたを氾濫させるために! 冗長性オプションと同様に(-v)、デバッグが有効になっています
コマンドラインフラグ付き(-d)そしてそれを指定することでデバッグレベルを上げることができます
複数回、。 のように -dd、またはレベルを直接設定することによって。 例えば、 -d9 セット
レベルXNUMX。 これは最高の効果的なレベルであり、何千ものラインを生成します
ポートとターゲットが非常に少ない非常に単純なスキャンを実行しない限り。
デバッグ出力は、Nmapでバグが疑われる場合、または単に
Nmapが何をしているのか、そしてその理由について混乱しています。 この機能は主に
開発者、デバッグ行は必ずしも自明ではありません。 あなたは次のようなものを得るかもしれません:
タイムアウト値:srtt:-1 rttvar:-1から:1000000 delta 14987 ==> srtt:14987 rttvar:
14987から:100000。行がわからない場合、唯一の手段は無視することです
それを、ソースコードで調べて、または開発リストから助けを求めてください
(nmap-dev)..一部の行は自明ですが、メッセージは次のようにわかりにくくなります。
デバッグレベルが上がります。
- 理由 (ホストとポートの状態の理由)。
各ポートが特定の状態に設定されている理由と、各ホストが稼働している理由を示します
またはダウン。 このオプションは、XNUMXつまたは複数のポートを決定したパケットのタイプを表示します
州。 たとえば、閉じたポートからのRSTパケット、または生きているポートからのエコー応答
亭主。 Nmapが提供できる情報は、スキャンまたはpingのタイプによって決まります。 ザ
SYNスキャンとSYNping(-NS と -PS)は非常に詳細ですが、TCP接続スキャン(-sT)
の実装によって制限されます 接続する システムコール。 この機能は
デバッグオプションによって自動的に有効になります(-d)。 結果はXMLログに保存されます
このオプションが指定されていない場合でもファイル。
--統計-すべて 時間 (定期的なタイミング統計を出力します)。
の各間隔の後に定期的にタイミングステータスメッセージを出力します 時間。 時間は
「タイミングとパフォーマンス」というセクションで説明されている種類の仕様。 それで
たとえば、 --統計-すべて 10s 10秒ごとにステータスの更新を取得します。 更新
インタラクティブ出力(画面)とXML出力に出力されます。
--パケットトレース (送受信されたパケットとデータをトレースします)。
Nmapに、送受信されたすべてのパケットの要約を出力させます。 これはよく使われます
デバッグ用ですが、新しいユーザーが正確に何を理解するための貴重な方法でもあります
Nmapは隠れてやっています。 何千行も印刷されないようにするには、
スキャンするポートの数を制限します。 - p20-30。 あなただけが気にするなら
バージョン検出サブシステムの進行状況、使用 -バージョン-トレース 代わりは。 あなただけなら
スクリプトのトレースに注意し、指定します --スクリプトトレース --パケットトレース、あなたはすべてを手に入れます
上記。
- 開いた (開いている(または開いている可能性のある)ポートのみを表示します)。
実際に接続できるポート(開いているポート)だけを気にし、気にしない場合もあります
閉じたポート、フィルターされたポート、および閉じたポートとフィルターされたポートで結果が乱雑になりたい。 出力
カスタマイズは通常、スキャン後にgrep、awk、Perlなどのツールを使用して行われます。
しかし、この機能は、圧倒的なリクエストのために追加されました。 特定 - 開いた 見るだけ
少なくともXNUMXつの開いている、開いている|フィルターされた、またはフィルターされていないポートを持ち、のポートのみを表示するホスト
それらの州。 これらのXNUMXつの状態は、通常どおりに扱われます。つまり、
open | filteredとunfilteredは、次の場合にカウントに凝縮される可能性があります。
それらの圧倒的な数。
--iflist (インターフェイスとルートを一覧表示します)。
Nmapによって検出されたインターフェイスリストとシステムルートを出力します。 これは
ルーティングの問題やデバイスの特性の誤りのデバッグ(PPPを処理するNmapなど)
イーサネットとしての接続)。
その他 出力 オプション
-追加-出力 (clobber出力ファイルではなくに追加します)。
次のような出力形式フラグにファイル名を指定する場合 -牛 or -の上、そのファイルは
デフォルトで上書きされます。 ファイルの既存のコンテンツを保持したい場合は
新しい結果を追加し、 -追加-出力 オプション。 すべての出力ファイル名
そのNmapで指定された実行は、クロバリングされるのではなく、に追加されます。 これ
XMLではうまく機能しません(-牛)結果のファイルは通常解析されないため、データをスキャンします
手で修正するまで適切に。
- 履歴書 ファイル名 (中止されたスキャンを再開します)。
一部の大規模なNmapの実行には、数日程度の非常に長い時間がかかります。 そのようなスキャンはしません
常に完了まで実行します。 制限により、作業中にNmapを実行できない場合があります
時間、ネットワークがダウンする可能性があり、Nmapが実行されているマシンが苦しむ可能性があります
計画的または計画外の再起動、またはNmap自体がクラッシュする可能性があります。 実行中の管理者
Nmapは、ctrl-Cを押すことにより、他の理由でもキャンセルできます。 再起動
最初からスキャン全体が望ましくない場合があります。 幸いなことに、通常の場合(-の上)または
grepable(-oG)ログが保持された場合、ユーザーはNmapにスキャンを再開するように要求できます。
実行が停止したときに作業していたターゲット。 単に指定する - 履歴書 オプション
通常/grepable出力ファイルを引数として渡します。 他の議論はありません
Nmapが出力ファイルを解析して、前に指定したものと同じものを使用するため、許可されます。
Nmapを次のように呼び出すだけです nmap - 履歴書 ログファイル名。 Nmapは新しい結果をに追加します
前の実行で指定されたデータファイル。 再開はXMLをサポートしていません
XNUMXつの実行をXNUMXつの有効なXMLファイルに結合すると、出力形式は次のようになります。
難しい
-スタイルシート path or URL (XML出力を変換するようにXSLスタイルシートを設定します)。
NmapにはXSLが付属しています。 スタイルシート。 nmap.xslという名前。 XMLを表示または翻訳するため
HTMLへの出力..XML出力には、を指すxml-stylesheetディレクティブが含まれています
Nmapによって最初にインストールされたnmap.xml。 XSLTを介してXMLファイルを実行します
などのプロセッサ xsltproc[17]。 HTMLファイルを作成します。 XMLを直接開く
最近のブラウザでは場所が制限されているため、ブラウザ内のファイルは適切に機能しなくなりました。
スタイルシートはからロードできます。 別のスタイルシートを使用する場合は、それを指定します
の引数として -スタイルシート。 フルパス名またはURLを渡す必要があります。 XNUMXつの一般的な
呼び出しは -スタイルシート https://nmap.org/svn/docs/nmap.xsl。 これはXSLTに通知します
Nmap.Orgから最新バージョンのスタイルシートをロードするプロセッサ。 The --webxml
オプションは、入力と暗記を減らして同じことを行います。 からXSLをロードする
Nmap.Orgを使用すると、Nmapを持たないマシンで結果を簡単に表示できます(したがって、
nmap.xsl)がインストールされています。 そのため、URLの方が便利なことがよくありますが、ローカルファイルシステム
nmap.xslの場所は、プライバシー上の理由からデフォルトで使用されます。
--webxml (Nmap.Orgからスタイルシートをロードします)。
これは便利なオプションであり、 -スタイルシート
https://nmap.org/svn/docs/nmap.xsl.
--スタイルシートなし (XMLからXSLスタイルシート宣言を省略します)。
NmapがXSLスタイルシートをそのXMLに関連付けないようにするには、このオプションを指定します
出力。 xml-stylesheetディレクティブは省略されています。
雑則 OPTIONS
このセクションでは、実際には適合しないいくつかの重要な(そしてそれほど重要ではない)オプションについて説明します
どこか他の。
-6 (IPv6スキャンを有効にします)。
Nmapは、最も人気のある機能をIPv6でサポートしています。 pingスキャン、ポートスキャン、
バージョン検出、およびNmapスクリプトエンジンはすべてIPv6をサポートします。 コマンド構文
を追加することを除いて、通常と同じです -6 オプション。 もちろん、あなたは使用する必要があります
ホスト名ではなくアドレスを指定する場合のIPv6構文。 住所は見えるかもしれません
3ffe:7501:4819:2000:210:f3ff:fe03:14d0のように、ホスト名をお勧めします。 出力
いつもと同じように見えますが、「対象ポート」行のIPv6アドレスは
唯一のIPv6プレゼント。
IPv6は世界を席巻しているわけではありませんが、一部のIPvXNUMXで重要な用途があります。
(通常はアジアの)国とほとんどの最新のオペレーティングシステムがそれをサポートしています。 Nmapを使用するには
IPv6では、スキャンのソースとターゲットの両方をIPv6用に構成する必要があります。 もしも
あなたのISP(それらのほとんどのように)はあなたにIPv6アドレスを割り当てません、無料のトンネル
ブローカーは広く利用可能であり、Nmapで正常に動作します。 無料のIPv6トンネルを使用しています
ブローカ。 でのサービス http://www.tunnelbroker.net。 他のトンネルブローカーは 記載されている at
Wikipedia[18]。 6to4トンネルは、もうXNUMXつの人気のある無料のアプローチです。
Windowsでは、rawソケットIPv6スキャンはイーサネットデバイスでのみサポートされます(サポートされていません)
トンネル)、およびWindowsVistaでのみ。 以降。 使用 -非特権。 のオプション
他の状況。
-A (アグレッシブスキャンオプション)。
このオプションは、追加の高度で積極的なオプションを有効にします。 現在、これにより可能になります
OS検出(-O)、バージョンスキャン(-sV)、スクリプトスキャン(-sC)およびtraceroute
(--traceroute..将来的にはさらに多くの機能が追加される可能性があります。 ポイントは、
大量のスキャンオプションを覚えておく必要のない包括的なスキャンオプションのセット
フラグ。 ただし、デフォルトセットを使用したスクリプトスキャンは煩わしいと見なされるため、
使用しないでください -A 許可なくターゲットネットワークに対して。 このオプションのみ
タイミングオプションではなく、機能を有効にします(など -T4、XNUMX)または冗長オプション(-v) それ
あなたも望むかもしれません。 OSなどの特権(rootアクセスなど)を必要とするオプション
検出とtracerouteは、これらの特権が使用可能な場合にのみ有効になります。
--datadir ディレクトリ名 (カスタムNmapデータファイルの場所を指定します)。
Nmapは、実行時にnmap-service-probesという名前のファイルでいくつかの特別なデータを取得します。
nmap-services、nmap-protocols、nmap-rpc、nmap-mac-prefixes、およびnmap-os-db。 の場合
これらのファイルの場所が指定されています( --servicedb or
--versiondb オプション)、その場所はそのファイルに使用されます。 その後、Nmapは検索します
で指定されたディレクトリ内のこれらのファイル --datadir オプション(ある場合)。 すべてのファイル
そこに見つからない、によって指定されたディレクトリで検索されます NMAPDIR.
環境変数。 次は 〜/.nmap。 実際の効果的なUIDの場合。 またはWindowsでは、
ホーム\ AppData \ Roaming \ nmap(ここで ホーム のようなユーザーのホームディレクトリです
C:\ Users \ user)。 この後に、nmap実行可能ファイルの場所が続きます。
../share/nmapが追加された場所。 次に、次のようなコンパイルされた場所
/ usr / local / share/nmapまたは/usr/ share/nmap。
--servicedb サービス file (カスタムサービスファイルを指定してください)。
nmap-servicesデータファイルではなく、指定されたサービスファイルを使用するようにNmapに要求します
Nmapに付属しています。 このオプションを使用すると、高速スキャンも発生します(-F)使用する。 見る
の説明 --datadir Nmapのデータファイルの詳細については。
--versiondb サービス プローブ file (カスタムサービスプローブファイルを指定します)。
nmap-service-probesではなく指定されたサービスプローブファイルを使用するようにNmapに要求します
Nmapに付属のデータファイル。 の説明を参照してください --datadir 詳しく知る
Nmapのデータファイル。
--送信-eth (生のイーサネット送信を使用)。
Nmapに、上位ではなく生のイーサネット(データリンク)層でパケットを送信するように要求します
IP(ネットワーク)層。 デフォルトでは、Nmapは一般的に最適なものを選択します
それが実行されているプラットフォーム。 Rawソケット(IPレイヤー)。 一般的に最も効率的です
Unixマシン、Windowsの操作にはイーサネットフレームが必要です。
Microsoftはrawソケットのサポートを無効にしました。 Nmapは、Unixで未加工のIPパケットを使用しますが
他に選択肢がない場合(非イーサネット接続など)のこのオプション。
--send-ip (生のIPレベルで送信)。
下位レベルのイーサネットを送信するのではなく、生のIPソケットを介してパケットを送信するようにNmapに要求します
フレーム。 それは補完です --送信-eth 前に説明したオプション。
-特権 (ユーザーに完全な特権があると想定します)。
Nmapに、rawソケット送信を実行するのに十分な特権があると単純に想定するように指示します。
パケットスニッフィング、および通常はroot権限を必要とする同様の操作。 Unixの場合
システム。 デフォルトでは、そのような操作が要求された場合、Nmapは終了しますが ゲットイッド ではありません
ゼロ。 -特権 Linuxカーネル機能および同様のシステムで役立ちます
非特権ユーザーがrawパケットスキャンを実行できるように構成できます。 必ず
特権を必要とするオプションのフラグの前にこのオプションフラグを指定します(SYN
スキャン、OS検出など)。 The NMAP_PRIVILEGED。 環境変数は、
同等の代替手段 -特権.
-非特権 (ユーザーにrawソケット特権がないと仮定します)。
このオプションは反対です -特権。 Nmapにユーザーを次のように扱うように指示します
ネットワークrawソケットとスニッフィング特権が不足しています。 これはテストに役立ちます、
デバッグ、またはオペレーティングシステムの生のネットワーク機能が何らかの理由である場合
壊れた。 The NMAP_UNPRIVILEGED。 環境変数は同等のものとして設定できます
に代わるもの -非特権.
--メモリの解放 (終了する前にメモリを解放してください)。
このオプションは、メモリリークのデバッグにのみ役立ちます。 Nmapを解放します
実際のメモリリークを見つけやすくするために、終了する直前に割り当てられたメモリ。
通常、OSはプロセスの終了時にこれを行うため、Nmapはこれをスキップします。
-V; - バージョン (バージョン番号を印刷)。
Nmapのバージョン番号を出力して終了します。
-h; - 助けて (ヘルプの概要ページを印刷)。
最も一般的なコマンドフラグを含む短いヘルプ画面を印刷します。 なしでNmapを実行する
どの引数も同じことをします。
ランタイム インタラクション
Nmapの実行中、すべてのキー押下がキャプチャされます。 これにより、対話することができます
プログラムを中止して再起動せずにプログラムを使用します。 特定の特殊キーが変更されます
オプション、その他のキーはスキャンについて通知するステータスメッセージを出力します。
慣習はそれです 小文字 手紙 増加する 印刷量、および 大文字
手紙 減少 印刷。 'を押すこともできます?'助けを求めて。
v / V
詳細レベルを増減します
d / D
デバッグレベルを増減します
p / P
パケットトレースをオン/オフにします
?
ランタイムインタラクションヘルプ画面を印刷する
他に何か
次のようなステータスメッセージを出力します。
統計:0:00:07経過; 20台のホストが完了し(1台が稼働中)、1台がサービススキャンを受けています
サービススキャンのタイミング:約33.33%完了。 ETC:20:57(残り0:00:12)
例
単純で日常的なものからもう少し複雑なものまで、Nmapの使用例をいくつか示します。
と秘教。 いくつかの実際のIPアドレスとドメイン名は物事をより良くするために使用されます
コンクリート。 代わりに、次のアドレス/名前に置き換える必要があります 自分の ネットワーク.
他のネットワークのポートスキャンは違法である、または違法であるはずだとは思いませんが、一部のネットワークは
管理者は、ネットワークの一方的なスキャンを高く評価せず、不満を言う可能性があります。
最初に許可を取得することが最善のアプローチです。
テストの目的で、ホストscanme.nmap.orgをスキャンする権限があります。これは
許可には、Nmapを介したスキャンのみが含まれ、エクスプロイトやサービス拒否のテストは含まれません。
攻撃。 帯域幅を節約するために、XNUMX回を超えるスキャンを開始しないでください。
XNUMX日あたりのそのホスト。 この無料のスキャンターゲットサービスが悪用されると、削除されます
Nmapは、指定されたホスト名/ IPの解決に失敗したことを報告します:scanme.nmap.org。 これらは
ただし、権限はホストscanme2.nmap.org、scanme3.nmap.orgなどにも適用されます。
それらのホストは現在存在しません。
nmap -v scanme.nmap.org.
このオプションは、マシンscanme.nmap.orgで予約されているすべてのTCPポートをスキャンします。 The -v オプション
詳細モードを有効にします。
nmap -NS -O scanme.nmap.org/24.
上の256個のIPから起動している各マシンに対してステルスSYNスキャンを起動します。
Scanmeが存在するクラスCサイズのネットワーク。 また、何が動作しているかを判断しようとします
システムは、稼働中の各ホストで実行されています。 これにはroot権限が必要です
SYNスキャンとOS検出のため。
nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127.
可能な255個のそれぞれの前半でホスト列挙とTCPスキャンを起動します
198.116クラスBアドレス空間のXNUMXビットサブネット。 これは、システムが実行されているかどうかをテストします
標準ポートのSSH、DNS、POP3、IMAP、またはポート4564のすべて。
これらのポートは開いていることが検出され、バージョン検出を使用してアプリケーションが何であるかを判別します
実行している。
nmap -v -iR 100000 -Pn -p 80.
Nmapに100,000のホストをランダムに選択し、それらをスキャンしてWebサーバー(ポート80)を探すように依頼します。 亭主
列挙は無効になります -Pn 最初にいくつかのプローブを送信して、
とにかく各ターゲットホストのXNUMXつのポートのみをプローブしている場合、ホストが稼働していることは無駄です。
nmap -Pn -p80 -牛 logs / pb-port80scan.xml -oG logs / pb-port80scan.gnmap 216.163.128.20/20.
これにより、4096個のIPがスキャンされて(pingを実行せずに)任意のWebサーバーが検出され、出力がに保存されます。
grepableおよびXML形式。
NMAP BOOK
このリファレンスガイドでは、すべての重要なNmapオプションについて詳しく説明していますが、完全に説明することはできません。
これらの機能を適用して、実際のタスクをすばやく解決する方法。 そのために、Nmapをリリースしました
ネットワークスキャン:ネットワークの検出とセキュリティに関する公式のNmapプロジェクトガイド
走査。 トピックには、ファイアウォールと侵入検知システムの破壊、最適化が含まれます
Nmapのパフォーマンス、およびNmapスクリプティングエンジンを使用した一般的なネットワークタスクの自動化。
ネットワークの取得などの一般的なNmapタスクのヒントと手順が提供されます
インベントリ、侵入テスト、不正なワイヤレスアクセスポイントの検出、および潰し
ネットワークワームの発生。 例と図は、有線での実際の通信を示しています。 もっと
本の半分以上がオンラインで無料で入手できます。 見る https://nmap.org/book 詳細については、
情報を表示します。
onworks.netサービスを使用してnmapをオンラインで使用する