Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
Nmapのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
Nmap
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[Category:ネットワーク]] [[Category:セキュリティ]] [[de:Nmap]] [[en:Nmap]] [[ru:Nmap]] [https://nmap.org/ 公式ウェブサイト] より: :''Nmap (“Network Mapper”) は、ネットワーク調査およびセキュリティ監査を行うためのオープンソースのツールである。大規模ネットワークを高速でスキャンするように設計されているが、単一のホストに対してもまったく問題なく機能する。Nmap は生の (raw) IP パケットを用いて、ネットワーク上でどのようなホストか利用可能になっているか、これらのホストが提供しているサービス (アプリケーション名とバージョン) は何か、ホストが実行している OS (OS 名とバージョン) は何か、どのような種類のパケットフィルタ/ファイアウォールが使用されているかなど、その他数多くの特徴を斬新な方法で判別する。Nmap は、セキュリティ監査用に広く利用されているばかりでなく、ネットワーク・インベントリ (資産情報収集)、サービスのアップグレード予定管理、ホストやサービスのアップタイム (利用可能時間) の監視等の日常業務に Nmap を役立てているシステム管理者やネットワーク管理者も多い。'' {{Warning|自分の管理下にないシステムやホスト、ネットワークでネットワークスキャンを実行するのは不正アクセス禁止法違反の違法行為です。スキャンを実行する前に、スキャンの対象が自身のホストだけになっていることを二重点検したり ([[#リストスキャン]]を参照)、管理者の許可が取れていることを再確認してください。}} == インストール == {{Pkg|nmap}} パッケージを[[インストール]]してください。 Nmap パッケージには {{ic|zenmap}} という名前の GUI が付属していますが、この記事ではコマンドラインによる利用方法しか扱いません。 == 使用方法 == {{man|1|nmap}} を参照してください。 === 対象の指定 === {{Tip|Nmap が送受信する全てのパケットを出力するには、{{ic|--packet-trace}} オプションを使って下さい。}} スキャンする IP アドレスのリストを Nmap に指定する方法は複数存在します。一番簡単な方法はアドレスやドメイン名を単純にわたす方法です: $ nmap scanme.nmap.org $ nmap 74.207.244.221 ==== 複数の対象の指定 ==== [[wikipedia:CIDR|CIDR]] 表記を使用。例えば {{ic|10.1.1}} から始まる 256 のアドレス全てをスキャンするには: $ nmap 10.1.1.0/24 {{Note|上記のアドレス例の末尾の {{ic|0}} は意味がありません: {{ic|nmap 10.1.1.0/24}} でも {{ic|nmap 10.1.1.134/24}} でも意味は同じです。}} ダッシュを使用。例えば {{ic|10.1.50.1}}, {{ic|10.1.51.1}}, {{ic|10.1.52.1}} をスキャンするには: $ nmap 10.1.50-52.1 カンマを使用: $ nmap 10.1.50,51,52,57,59.1 上記の組み合わせ: $ nmap 10.1,2.50-52.1/30 10.1.1.1 10.1.1.2 === リストスキャン === 実際にスキャンを行う前に、指定したアドレスが問題ないか確認したいときはリストスキャンオプション ({{ic|-sL}}) が便利です: $ nmap -sL 10.1,2.50-52.1/30 10.1.1.1 10.1.1.2 リストスキャンは指定されたアドレスを出力します。対象にパケットは送信しません。 === デフォルトオプション === IP アドレスやドメイン名を一つだけ指定して他にオプションを使わない場合: $ nmap 74.207.244.221 Nmap は以下のことを行います: # IP アドレスはドメイン名に逆引きされ、ドメイン名が指定された場合は逆に IP アドレスを取得します ({{ic|-n}} を指定することで無効化できます)。 # TCP ACK:80 と ICMP を使って Ping スキャンを行います。{{ic|-PA -PE}} と同じです ({{ic|-PN}} を指定することで無効化できます)。 # 最も有名なトップ 1000 のポートをスキャンします。root で実行した場合、SYN ステルススキャンが使われます。ユーザーで実行した場合、Connect スキャンが使用されます。 == Ping スキャン == Ping スキャン (ホスト発見) は特定のコンピュータが動作しているかどうかを調べるために使われます。接続すらできないホストに無駄に時間を費やさないように、デフォルトで Nmap はポートスキャンの前に Ping スキャンを実行します。Nmap で Ping スキャンだけを行うには: $ nmap -sn 10.1.1.1/8 Nmap は指定された全てのアドレスに ping を送って、ping に応答したホストのリストを報告します。 ユーザー権限で実行されたか、あるいは root 権限で実行されたか、また、スキャンするサブネットが同一かそうでないかなどで、Nmap は別々の種類の ping パケットを使います: {| class="wikitable" ! ! 外部 IP ! ローカル IP |- ! ユーザー権限 | ポート 80 & 443 の TCP SYN | ポート 80 & 443 の TCP SYN と ARP |- ! Root 権限 | ポート 80 & 443 の TCP SYN と IGMP | ARP |} === Ping スキャンタイプ === {| class="wikitable" ! オプション || Ping スキャンタイプ |- | {{ic|-Pn}} || ping スキャンを完全に無効化 |- | {{ic|-PS}} || TCP '''S'''YN (デフォルトはポート 80) |- | {{ic|-PA}} || TCP '''A'''CK (デフォルトはポート 80) |- | {{ic|-PU}} || '''U'''DP |- | {{ic|-PY}} || SCTP INIT |- | {{ic|-PE}} || ICMP エコー ('''E'''cho) |- | {{ic|-PP}} || ICMP タイムスタンプ (timestam'''p''') |- | {{ic|-PM}} || ICMP アドレスマスク ('''m'''ask) |- | {{ic|-PO}} || 他 ('''O'''ther) の IP プロトコル |- | {{ic|-PR}} || [[Wikipedia:Address Resolution Protocol|ARP]] スキャン |} マシンのファイアウォールが厳重で、TCP 80 や 443 ポートあるいは IGMP リクエストがブロックされる場合は {{ic|-Pn}} が有用です。ただし他のマイナーなポートが開いている可能性はあります。 == ポートスキャン == ポートには主として3つの状態があります: * {{ic|open}} - listen しているプログラムが存在して、このポートに対するリクエストに反応している。 * {{ic|closed}} - このポートへのリクエストに対して "error: no program listening on this port" がホストから返される。 * {{ic|filtered}} - ホストが返事を全くしない。おそらく、パケットを "drop" して返答をしないように設定されたファイアウォールルールによって制限されています。 上記に加えて、Nmap はさらに3つの状態にポートを分類します。はっきりとは状態を確認できないが3つの状態のうち2つに絞れる場合に使われます: * {{ic|open<nowiki>|</nowiki>closed}} ({{ic|unfiltered}}) - ポートは開いている、あるいは閉じている * {{ic|closed<nowiki>|</nowiki>filtered}} - ポートは閉じている、あるいはフィルタリングされている * {{ic|open<nowiki>|</nowiki>filtered}} - ポートは開いている、あるいはフィルタリングされている デフォルトでは {{ic|/usr/share/nmap/nmap-services}} に記載されている最も人気のある 1000 のポートをスキャンします。一般的なポート番号を指定するには: $ nmap --top-ports 1000 10.1.1.1 特定のポート番号を指定するには、{{ic|-p}} を使います: $ nmap -p -25,135-137 10.1.1.1 [[#対象の指定]]と同じようにダッシュやカンマが使えます。さらに、ダッシュを使用するときに開始ポートや終末ポートを省くことで、特定のポートの前後のポートを全て指定することができます。例えば、65535 個の全てのポートをスキャンするには ([[#ポート番号 0 をスキャン|ポート番号 0]] は除外): $ nmap -p - === スキャンタイプ === {| class="wikitable" ! オプション || ポートスキャンタイプ |- | {{ic|-sP}} || [[#Ping スキャン|Ping スキャン]]のみ |- | {{ic|-sS}} || TCP SYN (ステルス) (root ではデフォルト) |- | {{ic|-sT}} || TCP connect (root ではデフォルト) |- | {{ic|-sA}} || TCP ACK |- | {{ic|-sF}} || TCP FIN |- | {{ic|-sX}} || TCP FIN, SYN, ACK |- | {{ic|-sW}} || TCP ウィンドウ |- | {{ic|-sM}} || TCP Maimon |- | {{ic|-sU}} || UDP スキャン |- | {{ic|-sI}} || Idle スキャン |- | {{ic|-b}} || FTP バウンススキャン |- | {{ic|-sO}} || 他の IP プロトコル |} == スキャン対策 == === iptables PSD モジュール === [https://sourceforge.net/p/xtables-addons/xtables-addons/ci/master/tree/extensions/xt_psd.c PSD] は [[iptables]] の拡張モジュールです。Linux ベースの商用ルーターでも使われています。 PSD モジュールにはパラメータが4つあります: * {{ic|--psd-weight-threshold ''threshold''}}, 規定値: {{ic|21}} : ポートスキャンとして判断する、同一ホストからの別々のポートへの TCP/UDP パケットの総量。 * {{ic|--psd-delay-threshold ''delay''}}, 規定値: {{ic|300}} (3秒) : ポートスキャンとして判断するときに使用する、同一ホストからの別々のポートへのパケットを記録する時間 (センチ秒)。 * {{ic|--psd-lo-ports-weight ''weight''}}, 規定値: {{ic|3}} : 特権ポート (<=1024) に送信されたパケットの重み付け。 * {{ic|--psd-hi-ports-weight ''weight''}}, 規定値: {{ic|1}} : 非特権ポート (>=1024) に送信されたパケットの重み付け。 PSD の原理は単純です。単一の IP からのリクエストが ''delay'' で指定した秒数以内に ''threshold'' よりも高くなった場合、その IP はポートスキャナとして判断されます。数式で表すと: ''lo_ports_weight'' * '''REQUESTS_LOW''' + ''hi_ports_weight'' * '''REQUESTS_HIGH''' >= ''threshold'' 上記の数式の変数の中身は以下のとおり: '''REQUESTS_LOW''' = ''delay'' 秒以内の特権ポート (0 から 10234) へのリクエストの数 '''REQUESTS_HI''' = ''delay'' 秒以内の非特権ポート (1024 から 65535) へのリクエストの数 例: * 規定値では、3秒以内に7つの特権ポートにパケットが送られると、ポートスキャンと判断されます。 * 規定値では、3秒以内に21の非特権ポートにパケットが送られると、ポートスキャンと判断されます。 * 規定値では、3秒以内に4つの特権ポートと9つの非特権ポートにパケットが送られると、ポートスキャンと判断されます ({{ic|1=4*3 + 9*1 >= 21}})。 === 探知の回避 === PSD を回避する一番簡単な方法は[[#スキャン速度の制限|ゆっくりスキャン]]することです。PSD が規定値なら、以下のパラメータで看破できます: $ nmap --scan-delay 3.1 192.168.56.1 PSD には他にも、{{ic|ack}} や {{ic|rst}} フラグが設定されていればリクエストをポートスキャンと検出しないという興味深い事実があります ([https://sourceforge.net/p/xtables-addons/xtables-addons/ci/master/tree/extensions/xt_psd.c xt_psd.c] の {{ic|is_portscan}} 関数を見て下さい)。 また、ホストをポートスキャンするときに HTTP(S) サービスが動作している場合、nmap はデフォルトのユーザーエージェントとして {{ic|Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)}} を使います。ユーザーエージェントはログに記録されるので、何をしているのか簡単にわかってしまいます。特に管理者やロボットなら造作もないでしょう。幸運にも、nmap では文字列を簡単に変えることができます: {{ic|1=-script-args http.useragent="''user agent you want''"}} と指定して下さい [http://www.kroosec.com/2012/02/making-nmap-scripting-engine-stealthier.html]。 == ヒントとテクニック == === スキャン速度の制限 === Nmap のスキャンは''高速''です。基本的には高速なことは良いことですが、場合によっては速すぎて困ることもあります。例えば、侵入を検知するルールを無効にしないでシステムのファイアウォールをテストしたい場合や、特定のポートやサービスを長期間にわたってテストしたい場合などが考えられます。以下のオプションで Nmap がパケットを送信する速度を指定できます。 最大でも 3.333 秒毎にパケットを送信するには: $ nmap --max-rate 0.3 192.168.56.1 もしくは、3.1 秒毎にパケットを送信するには: $ nmap --scan-delay 3.1 192.168.56.1 他の速度や並列化のオプションについては {{man|1|nmap}} を見て下さい。 === ファイルから入力して対象を指定 === とびとびのアドレスを大量にスキャンする必要があるということも考えられます。その場合アドレスをコマンドラインで指定するのは厄介です。これについて Nmap ではリストファイル ('''l'''ist file) からの入力 ('''i'''nput) をサポートしています ({{ic|-iL}}): {{hc|addresses.txt| 10.1.1.1 10.1.1.2 10.1.1-10.3 10.3.1.3 10.3.1.50 10.3.2.55 10.1.1.100 ... }} $ nmap -iL addresses.txt ファイル内のアドレスは空白で区切っておかなければなりません。 また、Nmap は標準入力からリストを読み込むことも可能です (多くのコマンドラインプログラムで {{ic|-}} は標準入力を意味します): $ echo "10.1.1.1 10.1.1.2 10.1.1-10.3" | nmap -iL - === スキャンの対象から除外 === $ nmap 10.1.1.1-10 --exclude 10.1.1.5,7 ファイルを使用して除外: $ nmap 10.1.1.1-10 --excludefile excludeaddr.txt === スプーフィング === 送信元 IP を偽装するには: $ nmap -S 192.168.56.35 -e vboxnet0 192.168.56.11 送信元 MAC アドレスを偽装するには: $ nmap --spoof-mac 01:02:03:04:05:06 192.168.56.11 送信元ポートを偽装するには: $ nmap --source-port 22 192.168.56.11 === スキャンの高速化 === デフォルトでは、Nmap は対象の DNS の解決と逆引きを行います。DNS の解決を行わない ('''n'''ever) ように Nmap を設定するには、{{ic|-n}} オプションを渡します: $ nmap -n 192.168.56.0/24 これでスキャンの速度が2倍になります。 === ポート番号 0 をスキャン === デフォルトではポート 0 はスキャンされません。たとえ {{ic|-p -}} と指定されてもです。ポート 0 をスキャンするには、明示的にポート 0 を指定する必要があります。例えば、全てのポートをスキャンするには: $ nmap -p 0-65535 RFC 標準ではポート 0 は利用できないことになっているのを覚えておいて下さい。しかしながら、ポートスキャナを掻い潜ろうとするマルウェアなどはポート 0 を使うことがあります。 === ファイル出力フォーマット === Nmap ではターミナルに出力するだけでなくファイルに出力することもできます: * {{ic|-oN ''filename''}} : ターミナルの出力と同じように通常出力。 * {{ic|-oX ''filename''}} : XML で出力。スキャンの詳細な情報が出力され、簡単にソフトウェアでパースできます。 * {{ic|-oG ''filename''}} : Grepable 出力。廃止予定。 * {{ic|-oA ''basefilename''}} : 上記の全ての組み合わせ。{{ic|''basefilename''.nmap}}, {{ic|''basefilename''.xml}}, {{ic|''basefilename''.gnmap}} というファイルが作成されます。 例えば、ターミナルに出力して、ファイルに出力して、XML ファイルに出力するには: $ nmap -oN output.txt -oX output.xml scanme.nmap.org == 参照 == * [[Wikipedia:ja:Nmap]] * [https://nmap.org/ 公式ウェブサイト] * [https://nmap.org/book/ Nmap Network Scanning book]
このページで使用されているテンプレート:
テンプレート:Hc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:Man
(
ソースを閲覧
)
テンプレート:Note
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
テンプレート:Tip
(
ソースを閲覧
)
テンプレート:TranslationStatus
(
ソースを閲覧
)
テンプレート:Warning
(
ソースを閲覧
)
Nmap
に戻る。
検索
検索
Nmapのソースを表示
話題を追加