Nmapは、ホスト、サービスのネットワークをスキャンし、セキュリティ評価と監査を実行できるオープンソースのネットワークマッパーです。この便利なコマンドには多くのオプションと機能が付属していますが、使用方法についての専門知識が必要です。このチュートリアルでは、ホスト内の脆弱な可能性のあるポイント、サブネット全体、オペレーティングシステムとサービスのバージョン検出、サービスの一覧表示、インターフェイス、ルート、Macの識別などを特定するのに役立つコマンドの例をいくつか紹介します。
では、ここに行きます。
一部のLinuxフレーバーにはnmapが付属していない場合があります インストールされているので、 yumを使用してインストールできます またはapt-get 使用しているオペレーティングシステムによって異なります。
#yum install nmap
または
#apt-get install nmap
単一のホストのスキャンから始めましょう:
単一のIPアドレスをスキャンしています(ルートなし)
$ nmap 14.0.0.6
サンプル出力:
ホストが稼働しています(遅延0.00035秒)。表示されていません:999個の閉じたポートPORT STATE SERVICE22 / tcp open sshNmap完了:1つのIPアドレス(1つのホストが起動)が1.50秒でスキャンされました
複数のIPアドレスをスキャンする(ルートなし)
$ nmap 14.0.0.6 14.0.0.5
区切り文字としてコンマを使用して複数のIPアドレスをスキャンする
$ nmap 14.0.0.6.5
上記のコマンドは、14.0.0.5および14.0.0.6のIPアドレスをスキャンします
スキャン範囲のIPアドレス(ルートなし)
$ nmap 14.0.0.1-5
上記のコマンドは、14.0.0.1から14.0.0.5までのIPアドレスをスキャンします
ワイルドカード(ルートなし)を使用してIPアドレスをスキャンする
$nmap14.0.0。*
サブネット内のすべてのIPアドレスをスキャンする
$ nmap 14.0.0.0/24
ドメイン名を使用してホストをスキャンする
$ nmap www.example.com
テキストファイルから読み取るスキャンホスト
$ cat host-list.txt 14.0.0.1 www.example.com 14.0.0.2
$ nmap -iL host-list.txt
特定のIPアドレスを除くサブネットをスキャンする
$ nmap 14.0.0.0/24 --exclude 14.0.0.1
IPアドレスのリストを除くサブネットをスキャンする
$ nmap 14.0.0.0/24 --exclude 14.0.0.1,2
ファイルからIPアドレスのリストを除外してサブネットをスキャンします
$ cat Exclusive-ips.txt14.0.0.1,2,3,4,5
$ nmap 14.0.0.0/24 --excludefile Exclusive-ips.txt
サブネット内のすべてのIPのホスト名を識別します(ルートなし)
$ nmap -sL 14.0.0.0/24
PINGスイープを実行する
pingスイープは通常、ネットワーク内で稼働しているホストを見つけるために使用されます。ネットワーク内の多数のホストをスキャンする場合は、pingスイープを使用できます。
#nmap -sP 14.0.0.6
特定のIPアドレスまたはホスト(ルートなし)の単一のポートをスキャンします
$ nmap -p 22 14.0.0.6
出力例:
ホストが稼働しています(待ち時間0.00066秒)。PORTSTATE SERVICE22 / tcp open sshNmap done:1つのIPアドレス(1つのホストが稼働中)が0.47秒でスキャンされました
さまざまなポートをスキャンします(ルートなし)
$ nmap -p 15-23 14.0.0.6
出力例:
PORT STATE SERVICE15/tcpクローズドnetstat16/tcpクローズドunknown17/tcpクローズドqotd18/tcpクローズドunknown19/tcpクローズドチャージn20/tcpクローズドftp-data21/tcpクローズドftp22/tcpオープンssh23/tcpクローズドtelnet
ポートの高速スキャンを実行します(最も一般的な100個のポート)(ルートなし)
$ nmap -F 14.0.0.6
上位の$ポート数をスキャンします(ルートなし)
$ nmap --top-ports 10 14.0.0.6
$ nmap --top-ports 2 14.0.0.6
すべてのポートをスキャンします(ルートなし)
$ nmap -p- 14.0.0.6
上記のコマンドは、特定のIPアドレスのすべての65535ポートをスキャンします。
リモートホスト(ルートなし)のOSおよびサービス情報の検出
$ nmap -A 14.0.0.6
出力例:
2016-07-1106:34にNmap7.01(https://nmap.org)を開始します。UTCホストが稼働しています(遅延は0.00029秒)。表示されていません:999個の閉じたポートPORT STATE SERVICE VERSION 22 / tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu1(Ubuntu Linux;プロトコル2.0) :::::::::::::::::::
サービス検出(ルートなし)
$ nmap -sV 14.0.0.6
積極的なサービス検出(ルートなし)
Nmapコマンドは、オペレーティングシステムとサービス情報を検出するためにさまざまな方法に依存しています。積極的なサービス検出は、サービスが一般的でないポートで実行されている場合に役立ちます(たとえば、SSHはポート22でリッスンすることが期待されますが、リモートホストは別のポートでサービスを実行している可能性があります)。積極的なサービス検出は、通常のサービス検出よりも遅くなります。これは、後のサービス検出がサービスバナーから情報を取得するためです。
$ nmap -sV --version-intensity 5 14.0.0.6
出力例:
ホストが稼働しています(レイテンシは0.00044秒)。表示されていません:999個の閉じたポートPORT STATE SERVICE VERSION22 / tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu1(Ubuntu Linux;プロトコル2.0)サービス情報:OS:Linux; CPE:cpe:/ o:linux:linux_kernelServiceの検出が実行されました。 https://nmap.org/submit/で誤った結果を報告してください
オペレーティングシステムの検出(ルート)
上記のサービス検出の例は、オペレーティングシステム情報を明らかにします。以下のコマンドを使用して、オペレーティングシステムとそのバージョンを推測することもできます。
注:OSの検出にはroot権限が必要です。
$ nmap -O 14.0.0.6TCP / IPフィンガープリント(OSスキャン用)にはroot権限が必要です。終了!
#nmap -O 14.0.0.6
#nmap -O --osscan-guess 14.0.0.62016-07-1108:39にNmap7.01(https://nmap.org)を開始PortsPORT STATE SERVICE22 / tcp open sshAggressive OSの推測:Linux 3.1(93%)、Linux 3.2(93%)、AXIS 210Aまたは211ネットワークカメラ(Linux 2.6.17)(92%)、Android 5.0.2(92%)、 Android 5.1(92%)、Linux 3.0(92%)、Linux 3.11(92%)、Linux 3.12(92%)、Linux 3.12-3.19(92%)、Linux 3.13(92%)
#nmap -v -O --osscan-guess 14.0.0.6
ホストがファイアウォール(ルート)によって保護されているかどうかを検出します
リモートホストでファイアウォールが無効になっている場合、 nmap 以下に示すように、すべてのポートをスキャンし、フィルタリングされていないことを示します。
#nmap -sA 14.0.0.6ホストが稼働しています(レイテンシは0.00042秒)。 henry2.cloudsecurity.in(14.0.0.6)でスキャンされた1000個のポートはすべてフィルタリングされていません
リモートホストでファイアウォールが有効になっている場合、 nmap ポートがフィルタリングされていると言う:
#nmap -sA 14.0.0.6 henry2.cloudsecurity.in(14.0.0.6)のNmapスキャンレポートホストが稼働しています(0.00045sの遅延)。 henry2.cloudsecurity.in(14.0.0.6)でスキャンされた1000個のポートすべてがフィルタリングされます
NSEスクリプトを使用したスキャン
約400以上のNSEがあります( Nmap S Eをクリプティング ngine) nmapで使用できるスクリプト 各スクリプトには優れたドキュメントが付属しています。マシンにインストールされているスクリプトのリストを特定するには、次のコマンドを実行します。
#locate nse|grepスクリプト:::::::::::::::::::::/usr/share/nmap/scripts/ssl-enum-ciphers.nse/ usr / share /nmap/scripts/ssl-google-cert-catalog.nse /usr/share/nmap/scripts/ssl-heartbleed.nse /usr/share/nmap/scripts/ssl-known-key.nse / usr / share / nmap /scripts/ssl-poodle.nse /usr/share/nmap/scripts/sslv2.nse /usr/share/nmap/scripts/sstp-discover.nse /usr/share/nmap/scripts/stun-info.nse / usr /share/nmap/scripts/stun-version.nse /usr/share/nmap/scripts/stuxnet-detect.nse /usr/share/nmap/scripts/supermicro-ipmi-conf.nse / usr / share / nmap / scripts /svn-brute.nse /usr/share/nmap/scripts/targets-asn.nse /usr/share/nmap/scripts/targets-ipv6-map4to6.nse /usr/share/nmap/scripts/targets-ipv6-multicast -echo.nse /usr/share/nmap/scripts/targets-ipv6-multicast-invalid-dst.nse /usr/share/nmap/scripts/targets-ipv6-multicast-mld.nse / usr / share / nmap / scripts /targets-ipv6-multicast-slaac.nse /usr/share/nmap/scripts/targets-ipv6-wordlist.nse /usr/share/nmap/scripts/targets-sniffer.nse / usr / share / nmap / scripts / tar get-traceroute.nse /usr/share/nmap/scripts/targets-xml.nse :::::::::::::
特定のドメイン(ルートなし)のサブドメインを識別するDNSブルートフォース
nmapを使用すると、特定のホストのサブドメインのリストを識別できます。ホストのサブドメインを特定すると、セキュリティ評価の実行中に新しいターゲットを明らかにすることができます。そのためには、 dns-brute.nse スクリプトを使用する必要があります。
$ nmap -p 80 -script dns-brute.nse example.com
サンプル出力:
PORT STATE SERVICE80 / tcp open httpHostスクリプトの結果:| dns-brute:| DNSブルートフォースホスト名:| www.example.com-93.184.216.34 | _ www.example.com-2606:2800:220:1:248:1893:25c8:1946
特定のホスト(ルートなし)上の仮想ホストを特定する
指定されたドメイン名は、Webサーバーの仮想ホスト機能を使用して複数のWebサイトをホストする場合があります。 hostmap-bfk.nseを使用して仮想ホストを識別できます スクリプト。
$ nmap -p 80 -script hostmap-bfk.nse nmap.orgホストスクリプトの結果:| hostmap-bfk:|ホスト:| mail.nmap.org | 45.33.49.119 | 119.49.33.45.in-addr.arpa | ack.nmap.org | sectools.org | svn.nmap.org | insecure.com | mail.seclists.org | seclists.org | mirror.sectools.org | www.insecure.org | nmap.org | insecure.org | www.nmap.org | _ www.insecure.com
特定のホストの地理的な場所を特定する
#nmap --traceroute -script traceroute-geolocation.nse -p 80 example.com
サンプル出力:
::::::::::::::::ホストスクリプトの結果:| traceroute-ジオロケーション:| HOP RTTアドレスジオロケーション| 1 0.44 14.0.0.1 23113中国(広東省)| 2 0.88 10.180.141.1-、 - | 3 1.58 144.16.192.34 20,77インド()| 4 1.87 14.139.1.30 20,77インド()| 5 1.61 10.118.248.45 - 、 - | 6 11.62 10.161.18.5-、 - | 7 ... | 8 13.32 10.255.221.34 - 、 - | 9 14.71 115.249.209.6 18,72インド(麻雀\ XC4 \ x81r \ XC4 \ x81shtra)| 10 ... | 11 ... | 12 ... | 13 293.92 xe-3-0-6.0.cjr01.sin001.flagtel.com(62.216.129.201)イギリス5 14 293.77 ge-2-0-0.0.pjr01.hkg005.flagtel.com.25.95.85.in-addr.arpa(85.9 15 168.70 so-1-0-0.0.pjr01.wad001.flagtel.com(85.95.25.193)5イギリス16 168.13 so-2-2-0.0.pjr01.wad001.flagtel.com(85.95.25.37)5イギリス17 293.97 so-2-1-0.0.pjr01.lax002.flagtel.com(85.95.25.17)5イギリス18 275.17 any2ix.coresite.com(206.223.143.232)38、-97米国()| _ 19 295.32 93.184.216.34 42、-70米国(マサチューセッツ州):::::::::::::::::::::::::::::::::
たとえば、HTTP関連のスクリプトのリストを特定します。
#locate nse | grep http /usr/share/nmap/nselib/http.lua /usr/share/nmap/nselib/httpspider.lua / usr / share / nmap / nselib /data/http-default-accounts-fingerprints.lua /usr/share/nmap/nselib/data/http-devframework-fingerprints.lua /usr/share/nmap/nselib/data/http-fingerprints.lua / usr / share /nmap/nselib/data/http-folders.txt /usr/share/nmap/nselib/data/http-sql-errors.lst /usr/share/nmap/nselib/data/http-web-files-extensions.lst /usr/share/nmap/scripts/http-adobe-coldfusion-apsa1301.nse /usr/share/nmap/scripts/http-affiliate-id.nse /usr/share/nmap/scripts/http-apache-negotiation.nse /usr/share/nmap/scripts/http-auth-finder.nse /usr/share/nmap/scripts/http-auth.nse /usr/share/nmap/scripts/http-avaya-ipoffice-users.nse / usr /share/nmap/scripts/http-awstatstotals-exec.nse /usr/share/nmap/scripts/http-axis2-dir-traversal.nse /usr/share/nmap/scripts/http-backup-finder.nse / usr /share/nmap/scripts/http-barracuda-dir-traversal.nse /usr/share/nmap/scripts/http-brute.nse / usr / share / nmap / scripts / http-cakephp-version.nse /usr/share/nmap/scripts/http-chrono.nse /usr/share/nmap/scripts/http-cisco-anyconnect.nse / usr / share / nmap / scripts / http-coldfusion-subzero.nse /usr/share/nmap/scripts/http-comments-displayer.nse /usr/share/nmap/scripts/http-config-backup.nse / usr / share / nmap / scripts / http-cors.nse/usr/share/nmap/scripts/http-cross-domain-policy.nse/usr/share/nmap/scripts/http-csrf.nse/usr/share/nmap/scripts/http-date。 nse /usr/share/nmap/scripts/http-default-accounts.nse /usr/share/nmap/scripts/http-devframework.nse /usr/share/nmap/scripts/http-dlink-backdoor.nse / usr / share / nmap / scripts / http-dombased-xss.nse /usr/share/nmap/scripts/http-domino-enum-passwords.nse /usr/share/nmap/scripts/http-drupal-enum-users.nse / usr / share / nmap / scripts / http-drupal-enum.nse /usr/share/nmap/scripts/http-enum.nse /usr/share/nmap/scripts/http-errors.nse / usr / share / nmap / scripts / http-exif-spider.nse /usr/share/nmap/scripts/http-favicon.nse /usr/share/nmap/scripts/http-feed.nse / usr / share / nmap / scripts / http-fetch.nse /usr/share/nmap/scripts/http-fileupload-exploiter.nse /usr/share/nmap/scripts/http-form-brute.nse / usr / share / nmap / scripts / http-form-fuzzer.nse /usr/share/nmap/scripts/http-frontpage-login.nse /usr/share/nmap/scripts/http-generator.nse / usr / share / nmap / scripts / http- git.nse /usr/share/nmap/scripts/http-gitweb-projects-enum.nse :::::::::::::::::::::
上記の出力から、スクリプト名をコピーして –scriptで使用できます。 オプション。
HTTPサービス情報を取得する(ルートなし)
Webページのタイトル、HTTPヘッダー、Webアプリケーションのさまざまな既知のパスの検索など、HTTPサービス情報を取得するためのスクリプトは多数あります…
$ nmap --script =http-title 14.0.0.5 ホストが稼働しています(待ち時間0.0000070秒)。表示されていません:998個の閉じたポートPORT STATE SERVICE22 / tcp open ssh80 / tcp open http | _http-title:Apache2 Ubuntuデフォルトページ:動作します
HTTPヘッダー情報を取得します(ルートなし)
$ nmap -script =http-headers 14.0.0.5PORT STATE SERVICE22 / tcp open ssh80 / tcp open http | http-headers:|日付:2016年7月11日月曜日07:08:05 GMT |サーバー:Apache / 2.4.18(Ubuntu)|最終更新日:2016年7月11日月曜日07:04:49 GMT | ETag: "2c39-53756c49f4280" | Accept-Ranges:バイト|コンテンツの長さ:11321 |変更:Accept-Encoding |接続:閉じる|コンテンツタイプ:text / html || _(リクエストタイプ:HEAD)
HTTP Webアプリケーションの既知のパスを特定します(ルートなし)
$ nmap -script =http-enum 14.0.0.580 / tcp open http | http-enum: | _ / server-status /:潜在的に興味深いフォルダ
Heartbleed SSLの脆弱性を検出する(ルートなし)
SSLの脆弱性が悲惨なことを聞いたことがあるかもしれません。以下に示すように、Nmapコマンドを使用してこの脆弱性を検出できます。
nmap -sV -p 443 -script =ssl-heartbleed 14.0.0.0/24
ドメイン名のwhoisを特定する(ルートなし)
$ nmap -sV --script =whois-domain.nse www.example.com
出力例:
ホストスクリプトの結果:| whois-domain:|| whois.iana.orgで見つかったドメイン名レコード| %IANAWHOISサーバー| %IANAの詳細については、http://www.iana.org|にアクセスしてください。 %このクエリは1つのオブジェクトを返しました||ドメイン:EXAMPLE.COM ||組織:Internet Assigned Numbers Authority ||作成:1992-01-01 |出典:IANA | _
TCP SynおよびUDPスキャン(ルート)
#nmap -sS -sU -PN 14.0.0.6
上記のコマンドは、2000の一般的なTCPおよびUDPポートをスキャンします。 – PN オプションリクエストnmap pingスキャンをスキップし、ホストが稼働していると想定します。このオプションは、リモートマシンでファイアウォールが有効になっていて、すべてのICMPパケットをドロップする場合に役立ちます。
TCP接続スキャン(ルートなし)
$ nmap -sT 14.0.0.6
上記のコマンドは、TCP SYNパケットを送信する代わりに、1000個の共通ポートへのTCP接続を確立するようにOSに要求します。
IPv6アドレスをスキャンします(ルートなし)
上記のコマンド例はすべてIPv4アドレスをスキャンしていましたが、IPv6アドレスもスキャンできます。そのためには、オプション「 -6」を使用する必要があります ‘の後にIPv6アドレスが続きます。
$ nmap -6 2001:db8:000:3eff:fe52:77
ホストのインターフェースとルートを一覧表示します(ルートなし)
$ nmap --iflistStarting Nmap 7.01(https://nmap.org)at 2016-07-11 09:53 UTC ********************* ***インターフェース************************DEV(SHORT)IP/MASKタイプUPMTUMAClo(lo)127.0.0.1/8ループバック65536lo (lo)::1/128ループバックアップ65536ens3(ens3)14.0.0.5/24イーサネットアップ1450 FA:16:3E:C0:14:5Fens3(ens3)fe80 ::f 1450 FA:16:3E:C0:14:5F ************************** ROUTES *********** *************** DST / MASK DEV METRIC GATEWAY169.254.169.254 / 32 ens3 0 14.0.0.114.0.0.0/24 ens 0:0 10. 0.0 14. :1/128 lo 0fe80 ::f816:3eff:fec0:145f / 128 lo 0fe80 ::/ 64 ens3 256ff00 ::/ 8 3Nmap出力をテキストファイルに保存
$ nmap -oN nmap_text.txt 14.0.0.6Nmap出力をXMLとして保存
$ nmap -oX nmap_xml.xml 14.0.0.6出力をgrep用の形式で保存
$ nmap -oG nmap_grep.txt 14.0.0.6Nmap出力をすべての形式で保存
$ nmap -oA allformats_file 14.0.0.6GUIを使用したNmap
Zenmapをダウンロード(または)apt-get/yumを使用してインストール
$ sudo apt-get install zenmap
Linux