nmap
Gordon Lyon (Fyodor) | |
1997 | |
7.94
/ 2023 | |
リポジトリ | |
プログラミング | C、C++、Python、Lua |
クロスプラットフォーム | |
サポート |
|
コンピュータセキュリティ、ネットワーク | |
ライセンス | GNU General Public License |
nmap |
nmapはGordon Lyonによって
概要
[nmapはGordon Lyonによって
セキュリティ
このようなツールがセキュリティ
歴史
[nmapの
その
FreeBSD/i386 (wikipedian.local)
login:
といった
このように
これら、nmapの
機能
[TCPスキャン機能
[- TCP connect()スキャン
- TCPのconnect()システムコールを
用 いたスキャン手法 である。実際 に対象 ポートへの接続 を試 み、接続 成功 ならopenと判断 するもの。最大 の利点 は、rawパケットを送出 する必要 がないため、rawパケットを送出 するために必要 な環境 、つまりUnix系 OSであればroot権限 、Windowsであればadministrator権限 やWinPCAPを必要 としないことである[注 1]。欠点 は、実際 に対象 ポートへの接続 を試 みるため、対象 ホストで動作 するサービスプログラムに接続 確立 を示 すログが残 る可能 性 があることや、後述 のTCP SYNスキャンに比 べてパケット制御 の自由 度 が低 いためにスキャン効率 が低 くなることなどが挙 げられる。 - TCP SYNスキャン
- TCPにおける3ウェイ・ハンドシェイクの
最後 のFINパケットを送出 しない(代 わりにRSTを送出 する)手法 である。対象 ポートへの接続 を試 みるものの、最後 のパケットを送出 しない、つまりコネクション確立 を途中 で止 めてしまうことから、half-openスキャンとも呼 ばれる。前述 のTCP connect()スキャンに比 べて、対象 ホストで動作 するサービスプログラムに接続 確立 を示 すを示 すログが残 らない点 (もちろん、OS自身 を守 るタイプのパケットフィルタ型 ファイアウォール、例 えばipfirewallやiptablesなどには捕捉 される可能 性 がある)、connect()システムコールを用 いずrawパケットを用 いる関係 でスキャン効率 が改善 される点 などが優位 点 となる。また、TCP connect()スキャン以外 の他 のスキャンと比較 して、open、closed、filteredの3種 を区別 可能 な唯一 のスキャン手法 でもある。 - SYNに
対 してSYN/ACKが返 ってくればopen、RSTが返 ってくればclosed、タイムアウトやICMP到達 不能 エラー応答 があればfilteredと判断 することになる。 - TCP FINスキャン、TCP Nullスキャン、TCP Xmasスキャン
- TCP FINスキャンとは、FINだけを
立 てたパケットを送出 し、その挙動 を確認 する手法 である。前述 の、接続 を確立 する、あるいは接続 確立 を途中 で止 めるといった方法 とは全 く異 なり、接続 未 確立 状態 で送 られてくることのないFINパケットをいきなり投 げ、その挙動 を確認 するという手法 である。そのため、対象 ホストで動作 するサービスプログラムで接続 確立 を示 すログが残 る可能 性 はない。このスキャン手法 は、nmapが掲載 されるより前 のPhrack 49号 [12]に掲載 されたもので、当時 の侵入 検知 システムでは検出 できるものが少 なかったことから、TCPステルススキャンとも呼 ばれていた。nmapは初期 版 からTCP FINスキャンに対応 していた。 - TCPの
仕様 であるRFC 793には、FINだけを立 てたパケットを受 けると、openポートであればrejectし、closedポートであればRSTを返 す旨 が記 されている。これに準拠 したシステム、それはTCP FINスキャンを発見 したUriel Maimonが「bad net code in the BSD code」と表現 している通 り、BSDをベースとするシステムの多 くでは、RSTが返 ってくればclosed、応答 がなければopenもしくはfilteredと判断 可能 である。ICMP到達 不能 エラー応答 があればfilteredと判断 可能 である。加 えて、ほとんどがclosedで、ごく一部 がopenもしくはfilteredということであれば、そのごく一部 はopenである可能 性 が高 いとも判断 可能 である。この手法 と同 じ原理 を用 いたものとして、Nullスキャン(FINの代 わりに、フラグを全 く立 てないパケットを用 いる)やXmasスキャン(FINの代 わりにFIN/PSH/URGの3つのビットを立 てたパケットを用 いる)が後 のバージョンで対応 されるが、その本質 はTCP FINスキャンと同 じである。 - この
手法 の欠点 は、応答 がない場合 にopenとfilteredを区別 できないことである。また、RFC 793に準拠 しないためにこの手法 が使 えないシステムが少 なからず存在 する(代表 的 にはWindowsなど)という欠点 もある。 - TCP SYNスキャンやTCP FINスキャン
時 のIPフラグメント指定 - タイニーIPフラグメント
攻撃 と呼 ばれる[13]手法 である。本来 IPフラグメントとは、一 度 に送 りきれない大 きなサイズのデータを分割 して送 るために設 けられている機能 であり、分割 によるオーバーヘッドを最小限 とするため、通常 は分割 不要 な最大 サイズを選択 することになる。しかし、分割 サイズの最小 値 については厳 しい制限 はなく、最小 フラグメント値 である8オクテット(パケットサイズは、IPヘッダの最大 サイズである60オクテットを加算 して68オクテット)までであれば小 さく分割 することが可能 である。TCPヘッダを8オクテット+残 りという形 で2つのフラグメントに分割 すると、SYNやFINなどのフラグは第 2フラグメントに含 まれることとなる。そして、TCP SYNスキャンやTCP FINスキャンなどにおいて、第 1セグメントにフラグが含 まれない可能 性 があることを想定 していないファイアウォールを回避 できてしまう可能 性 があるというものである。このようなことを想定 してこの機能 は設 けられた。 作者 は当時 、この機能 を用 いる際 には注意 しなければいけないと述 べていた。というのも、nmapがPhrackに投稿 された当時 は、第 1セグメントにフラグが含 まれていないパケットを適切 に処理 できずに異常 終了 するようなシステム(パケットアナライザ)が存在 したためである。- FTPバウンススキャン
- このスキャン
手法 は、FTPプロトコル仕様 に含 まれている、FTPプロクシアクセスをスキャンに流用 するというものである。FTPプロトコルには、他 のFTPサーバーに対 するプロクシとして動作 する機能 が仕様 に含 まれている[14]。サーバーがFTPプロクシ機能 をサポートし、その機能 が有効 となっている場合 、FTPサーバーにログイン(anonymousでも構 わない)することができれば、そのサーバーを経由 して他 のサーバーにFTP接続 することが可能 となる。 昨今 ではFTPプロクシ機能 が有効 になっているサーバーは少 ないが、nmapが登場 した頃 は有効 になっているサーバーは多 かった。そして、同 じ組織 が持 つFTPサーバと他 のサーバの間 には厳重 なファイアウォールが設 けられることは少 なかった。このような事情 から、有効 となっているFTPサーバーにログイン(anonymousでも構 わない)することができれば、そのFTPサーバーを経由 して同 じセグメント内 に属 する他 のサーバーに対 してポート指定 でプロクシログインを試 みることで、中間 ルータ上 のファイアウォールを迂回 して、ポートのopen/closedを判定 できる可能 性 があるというものである。- TCP ACKスキャン
初期 版 に含 まれていないスキャン手法 の一 つで、openとclosedを区別 しないという特徴 を持 つスキャン手法 である。ACKのみが立 っているパケットを送出 し、それに対 する挙動 でファイアウォールの挙動 を確認 するというものである。- ACKパケットに
対 してRSTが返 されればopenもしくはclosed、タイムアウトやICMP到達 不能 エラーであればfilteredと判別 可能 である。 - TCPウィンドウスキャン
初期 版 に含 まれていないスキャン手法 の一 つで、一部 のOSに見 られる、openポートの返信 パケットとclosedポートの返信 パケットとの間 でウィンドウサイズが異 なるという実装 に基 づいて、openとclosedを判定 するというものである。- TCP Maimonスキャン
初期 版 に含 まれているスキャン手法 の一 つで、FIN/ACKパケットに対 する挙動 を確認 するというものである。RFC 793に準拠 したシステムでは、FIN/ACKパケットに対 してRSTを返 すこととなっているが、一部 のOS(BSDベースのシステムの多 く)ではopenポートの場合 にRST返答 が行 われないということに基 づいてopenとclosedを区別 する。- なお、Maimonという
名前 は、このスキャン手法 を発見 し、Phrack 49号 [12]で発表 したUriel Maimonに由来 する。 - カスタムTCPスキャン
- これまでに
挙 げられている、TCPフラグをセットする手法 のスキャンはあくまでお仕着 せのものであるが、nmapではこれらのフラグ類 を個別 に指定 して送 る機能 が後期 のバージョンで実装 された。
UDPスキャン機能
[- UDP write() / UDP recvfrom()スキャン
- write()システムコールを
用 いてUDP送信 、recvfrom()システムコールを用 いてUDP受信 を行 う手法 である。通常 、UDP送信 を行 う際 はsendto()システムコールを用 いるのが一般 的 であるが、NetcatなどのUDPを取 り扱 う他 のツール同様 、nmapでもwrite()システムコールを用 いている。 今日 では、IP通信 の大半 はTCPであり、UDPは使用 比率 上 はかなりTCPに劣 る。DNS、SNMP、DHCPなどのようにUDPを使用 するプロトコルがないわけではないが、一部 のセキュリティ専門 家 (監査 や攻撃 の立場 にある人 )はこれらに気 を配 る必要 がないとすら述 べているほどである。しかし、それは間違 いであると、nmap作者 は語 っている[15]。例 えばrpcbindが用 いる(公式 文書 などで解説 されていない)高 い番号 のポート番号 などは、興味深 いものであるとnmap作者 は例示 している[9]。- UDPはコネクションレスなプロトコルであるがために、TCPにくらべると
判定 が難 しいものとなる。openポートからの応答 は(相手 のサービスに対 して適切 なリクエストを行 っていないという理由 から)大抵 の場合 期待 できず、filteredポートは当然 ながら破棄 されるため、これらの場合 にはタイムアウトまで待 たされることとなる。closedポートはICMP port unreachableなどを受信 することで判別 可能 であるが、これらの応答 パケットは送信 レートや一定 時間 辺 りの送信 可能 パケット数 が制限 されていることが多 い[注 2]ため、複数 のUDPポートをスキャンする際 には、これらの理由 からスキャンに時間 がかかることになる。
ICMPスキャン機能
[- ICMP echoスキャン
- nmapはポートスキャナではなくセキュリティスキャナであるため、ICMP echoスキャン
機能 、つまりはpingによる死活 確認 機能 も当然 ながら初期 版 から備 えている。対象 サーバーが複数 に渡 る場合 、並列 でスキャンすることも可能 である。 - デフォルトでは、
他 のスキャン機能 を用 いる際 、ICMP echoスキャンも事前 に行 われ、生存 が確認 できているサーバーのみがスキャン対象 となる。しかし、pingに応答 しないようにフィルタリングされたサーバーも存在 し、そのような場合 には事前 の生存 確認 に失敗 することとなる。nmapではそのような場合 のために、事前 の生存 確認 を行 わない機能 、対象 サーバーをテキストファイルで指定 する機能 が後期 のバージョンに搭載 された。
SCTPスキャン機能
[スキャン速度 の自動 調整
[nmapのスキャンの
TCP/IP stack fingerprinting機能
[nmapが
この
Nmap Scripting Engine
[nmapには、Luaスクリプト
脚注
[注釈
[出典
[- ^ “Nmap Change Log” (2023
年 5月 19日 ). 2023年 6月 4日 閲覧 。 - ^ ハッカージャパンの2009
年 9月 号 や11月 号 で「最強 のポートスキャナー」「ポートスキャナーの定番 ツール」などと評 されている。 - ^ ハッカージャパンの2009
年 11月 号 では「nmapの達人 」と題 して巻頭 特集 が組 まれるほどである。 - ^ “Nmap again wins LinuxQuestions.Org Network Security Application of the Year”. 2010
年 6月 12日 閲覧 。 - ^ “Matrixの
一 場面 ”. 2010年 6月 12日 閲覧 。 -一 通 りのopenポートを調査 した後 、SSHポートが開 いていることを再 確認 、SSH1 CRC32に関 する脆弱 性 を用 いたエクスプロイトであるsshnukeを用 いて侵入 する場面 - ^ “Movies featuring the Nmap Security Scanner”. 2010
年 6月 12日 閲覧 。 - ^ “Securityfocus news : Matrix Sequel Has Hacker Cred”. 2010
年 6月 14日 閲覧 。 - ^ “
映画 の中 で使用 されているnmapを集 めた画像 類 ”. 2015年 9月 23日 閲覧 。 - ^ a b “Phrack Issue 51 Article 11 - The Art of Port Scanning”. 2010
年 6月 12日 閲覧 。 - ^ a b “Phrack Issue 54 Article 9 - Remote OS detection via TCP/IP Stack FingerPrinting”. 2010
年 6月 12日 閲覧 。 - ^ “Nmap Changelog”. 2010
年 6月 12日 閲覧 。 - ^ a b “Phrack Issue 49 Article 15 - Port Scanning without the SYN flag”. 2010
年 6月 12日 閲覧 。 - ^ RFC 1858(
日本語 訳 ) - ^ RFC 959
- ^ “nmap
付属 文書 : Port Scanning Techniques”. 2010年 6月 12日 閲覧 。 - ^ “nmap
付属 文書 : Timing and Performance”. 2010年 6月 12日 閲覧 。
関連 項目
[外部 リンク
[公式 サイト- Issue 51 Article 11 - The Art of Port Scanning - nmapの
初期 公開 版 - Matrix nmap - YouTube