257 lines
22 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Nmapの概要 (ESP)
{{#include ../../banners/hacktricks-training.md}}
```
nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24
```
## パラメータ
### スキャンするIP
- **`<ip>,<net/mask>`:** IPを直接指定
- **`-iL <ips_file>`:** list_IPs
- **`-iR <number>`**: ランダムなIPの数、`--exclude <Ips>`または`--excludefile <file>`で除外可能。
### 機器発見
デフォルトでは、Nmapは次のような発見フェーズを開始します: `-PA80 -PS443 -PE -PP`
- **`-sL`**: 非侵襲的で、ターゲットをリストし、名前を解決するために**DNS**リクエストを行います。例えば、www.prueba.es/24のすべてのIPがターゲットであるかどうかを知るのに役立ちます。
- **`-Pn`**: **Pingなし**。すべてがアクティブであることがわかっている場合に便利です(そうでない場合、多くの時間を失う可能性がありますが、このオプションはアクティブでないと誤って判断することもあります)、発見フェーズを防ぎます。
- **`-sn`** : **ポートスキャンなし**。偵察フェーズが完了した後、ポートをスキャンしません。比較的ステルスで、小規模なネットワークスキャンを許可します。特権がある場合、80にACK-PA、443にSYN-PS、エコーリクエストとタイムスタンプリクエストを送信し、特権がない場合は常に接続を完了します。ターゲットがネットワークの場合、ARP-PRのみを使用します。他のオプションと一緒に使用した場合、他のオプションのパケットのみがドロップされます。
- **`-PR`**: **Ping ARP**。ネットワーク内のコンピュータを分析する際にデフォルトで使用され、pingを使用するよりも速いです。ARPパケットを使用したくない場合は、`--send-ip`を使用します。
- **`-PS <ports>`**: SYNパケットを送信し、SYN/ACKで応答すればオープンRSTで応答して接続を終了しない、RSTで応答すればクローズ、応答がなければ到達不能です。特権がない場合は、自動的に完全接続が使用されます。ポートが指定されていない場合、80に送信されます。
- **`-PA <ports>`**: 前のものと同様ですがACKを使用し、両方を組み合わせることでより良い結果が得られます。
- **`-PU <ports>`**: 目的は逆で、クローズされていると予想されるポートに送信されます。一部のファイアウォールはTCP接続のみをチェックします。クローズされている場合はポート到達不能で応答し、他のICMPで応答するか応答がない場合は到達不能と見なされます。
- **`-PE, -PP, -PM`** : ICMP PINGS: エコー応答、タイムスタンプ、アドレスマスク。ターゲットがアクティブかどうかを確認するために送信されます。
- **`-PY<ports>`**: デフォルトで80にSCTP INITプローブを送信し、INIT-ACKオープンまたはABORTクローズまたは何も返さないかICMP到達不能非アクティブで応答される可能性があります。
- **`-PO <protocols>`**: ヘッダーにプロトコルを指定し、デフォルトは1ICMP、2IGMP、4Encap IPです。ICMP、IGMP、TCP6、UDP17プロトコルの場合、プロトコルヘッダーが送信され、その他はIPヘッダーのみが送信されます。これは、ヘッダーの不正形成により、プロトコル到達不能または同じプロトコルの応答が返され、稼働しているかどうかを知るためです。
- **`-n`**: DNSなし
- **`-R`**: 常にDNS
### ポートスキャン技術
- **`-sS`**: 接続を完了しないため、痕跡を残さず、使用できる場合は非常に良いです。(特権あり)デフォルトで使用されます。
- **`-sT`**: 接続を完了するため、痕跡を残しますが、確実に使用できます。デフォルトでは特権なし。
- **`-sU`**: 遅い、UDP用。主に: DNS53、SNMP161,162、DHCP67および68-sU53,161,162,67,68オープン応答、クローズポート到達不能、フィルタリング他のICMP、オープン/フィルタリング(何もなし)。オープン/フィルタリングの場合、-sVはnmapがサポートするバージョンを検出するために多数のリクエストを送信し、真の状態を検出できます。時間が大幅に増加します。
- **`-sY`**: SCTPプロトコルが接続を確立できないため、ログは残りません。-PYのように機能します。
- **`-sN,-sX,-sF`:** Null、Fin、Xmas、いくつかのファイアウォールを突破し、情報を抽出できます。標準準拠のマシンは、SYN、RST、またはACKラグがないすべてのリクエストにRSTで応答するはずです: オープン/フィルタリング何もなし、クローズRST、フィルタリングICMP到達不能。Windows、Cisco、BSDI、OS/400では信頼性がありません。Unixでは信頼性があります。
- **`-sM`**: Maimonスキャン: FINおよびACKフラグを送信し、BSD用に使用され、現在はすべてをクローズとして返します。
- **`-sA, sW`**: ACKおよびウィンドウ、ファイアウォールを検出するために使用され、ポートがフィルタリングされているかどうかを知るために使用されます。-sWはオープン/クローズを区別します。オープンは異なるウィンドウ値で応答します: オープンウィンドウが0以外のRST、クローズRSTウィンドウ=0、フィルタリングICMP到達不能または何もなし。すべてのコンピュータがこのように機能するわけではないため、すべてがクローズされている場合は機能していないことになります。いくつかがオープンであれば正常に機能しており、多くがオープンで少数がクローズされている場合は逆に機能しています。
- **`-sI`:** Idleスキャン。アクティブなファイアウォールがあるが、特定のIPに対してフィルタリングしないことがわかっている場合または単に匿名性を求める場合、ゾンビスキャナーを使用できますすべてのポートに機能します。可能なゾンビを探すために、スクリプトipidseqまたはexploit auxiliary/scanner/ip/ipidseqを使用できます。このスキャナーはIPパケットのIPID番号に基づいています。
- **`--badsum`:** 不正な合計を送信し、コンピュータはパケットを破棄しますが、ファイアウォールは何かに応答する可能性があります。ファイアウォールを検出するために使用されます。
- **`-sZ`:** "奇妙な" SCTPスキャナー、クッキーエコーフラグメントを持つプローブを送信すると、オープンの場合は破棄され、クローズの場合はABORTで応答する必要があります。initを通過しないファイアウォールを通過できますが、フィルタリングとオープンを区別しません。
- **`-sO`:** プロトコルIPスキャン。時にはプロトコルさえも区別できない不正または空のヘッダーを送信します。ICMP到達不能プロトコルが到着すればクローズ、到達不能ポートが到着すればオープン、他のエラーが到着すればフィルタリング、何も到着しなければオープン|フィルタリングです。
- **`-b <server>`:** FTPhost--> 他のホストからスキャンするために使用され、別のマシンのftpに接続し、スキャンしたいポートにファイルを送信するように依頼します。応答に応じて、オープンかどうかがわかります。 \[\<user>:\<password>@]\<server>\[:\<port>] ほとんどのftpサーバーはこれを許可しなくなっているため、実用的な用途はほとんどありません。
### **フォーカス分析**
**-p:** スキャンするポートを指定するために使用されます。すべての65,335ポートを選択するには: **-p-** または **-p all**。Nmapは人気に基づいた内部分類を持っています。デフォルトでは、上位1000ポートを使用します。**-F**高速スキャンを使用すると、上位100ポートを分析します。**--top-ports <number>**を使用すると、その数の上位ポートを分析します1から65,335まで。ポートをランダムな順序でチェックします。これを防ぐには、**-r**を使用します。特定のポートを選択することもできます: 20-30,80,443,1024-後者は1024以降を探すことを意味します。プロトコルによってポートをグループ化することもできます: U:53,T:21-25,80,139,S:9。Nmapの人気ポート内で範囲を選択することもできます: -p [-1024]はnmap-servicesに含まれるポート1024までを分析します。**--port-ratio <ratio>**は、0から1の比率内で最も一般的なポートを分析します。
**-sV** バージョンスキャン、強度は0から9まで調整可能で、デフォルトは7です。
**--version-intensity <number>** 強度を調整し、低いほど最も可能性の高いプローブのみを発射しますが、すべてではありません。これにより、UDPスキャン時間を大幅に短縮できます。
**-O** OS検出
**--osscan-limit** 適切なホストスキャンには、少なくとも1つのオープンポートと1つのクローズポートが必要です。この条件が満たされていない場合、OS予測を試みません時間を節約します
**--osscan-guess** OS検出が完璧でない場合、これによりより努力します。
**スクリプト**
--script _<filename>_|_<category>_|_<directory>_|_<expression>_[,...]
デフォルトのスクリプトを使用するには、-sCまたは--script=defaultを使用します。
利用可能なタイプは: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, および vulnです。
- **Auth:** 利用可能なすべての認証スクリプトを実行します。
- **Default:** 基本的なデフォルトツールスクリプトを実行します。
- **Discovery:** ターゲットまたは被害者から情報を取得します。
- **External:** 外部リソースを使用するためのスクリプト。
- **Intrusive:** 被害者またはターゲットに対して侵入的と見なされるスクリプトを使用します。
- **Malware:** 悪意のあるコードやバックドアによって開かれた接続をチェックします。
- **Safe:** 非侵入的なスクリプトを実行します。
- **Vuln:** 最も知られている脆弱性を発見します。
- **All:** 利用可能なすべてのNSE拡張スクリプトを実行します。
スクリプトを検索するには:
**nmap --script-help="http-\*" -> http-で始まるもの**
**nmap --script-help="not intrusive" -> それ以外のすべて**
**nmap --script-help="default or safe" -> どちらか両方のもの**
**nmap --script-help="default and safe" --> 両方のもの**
**nmap --script-help="(default or safe or intrusive) and not http-\*"**
--script-args _<n1>_=_<v1>_,_<n2>_={_<n3>_=_<v3>_},_<n4>_={_<v4>_,_<v5>_}
--script-args-file _<filename>_
--script-help _<filename>_|_<category>_|_<directory>_|_<expression>_|all[,...]
--script-trace ---> スクリプトの進行状況に関する情報を提供します。
--script-updatedb
**スクリプトを使用するには、次のように入力します: nmap --script Script_Name target** --> スクリプトを使用すると、スクリプトとスキャナーの両方が実行されるため、スキャナーオプションも追加できます。**"safe=1"**を追加して、安全なもののみを実行できます。
**時間制御**
**Nmapは秒、分、ミリ秒で時間を変更できます:** --host-timeout引数900000ms、900、900s、15mはすべて同じことをします。
Nmapはスキャンするホストの総数をグループに分け、これらのグループをブロックで分析します。すべてが分析されるまで次のブロックに移動せずユーザーはブロックが分析されるまで更新を受け取りません、Nmapが大きなグループを使用する方が最適です。デフォルトではクラスCで256を使用します。
これは**--min-hostgroup** _**<numhosts>**_**;** **--max-hostgroup** _**<numhosts>**_で変更できます並列スキャングループサイズを調整
並列スキャナーの数を制御できますが、あまり推奨されませんNmapはネットワークの状態に基づいて自動制御を組み込んでいます: **--min-parallelism** _**<numprobes>**_**;** **--max-parallelism** _**<numprobes>**_
RTTタイムアウトの数値を変更できますが、通常は必要ありません: **--min-rtt-timeout** _**<time>**_**,** **--max-rtt-timeout** _**<time>**_**,** **--initial-rtt-timeout** _**<time>**_
試行回数を変更できます: **--max-retries** _**<numtries>**_
ホストのスキャン時間を変更できます: **--host-timeout** _**<time>**_
各テスト間の時間を変更して遅くすることができます: **--scan-delay** _**<time>**_**;** **--max-scan-delay** _**<time>**_
1秒あたりのパケット数を変更できます: **--min-rate** _**<number>**_**;** **--max-rate** _**<number>**_
多くのポートは、フィルタリングまたはクローズされているときに応答に時間がかかります。オープンなものにのみ興味がある場合は、次のようにして速くできます: **--defeat-rst-ratelimit**
Nmapの攻撃性を定義するには: -T paranoid|sneaky|polite|normal|aggressive|insane
-T (0-1)
-T0 --> 一度に1ポートのみをスキャンし、次のスキャンまで5分待ちます。
-T1およびT2 --> 非常に似ていますが、それぞれのテスト間に15秒と0.4秒待ちます。
-T3 --> デフォルトの動作で、並列スキャンを含みます。
-T4 --> --max-rtt-timeout 1250ms --min-rtt-timeout 100ms --initial-rtt-timeout 500ms --max-retries 6 --max-scan-delay 10ms
-T5 --> --max-rtt-timeout 300ms --min-rtt-timeout 50ms --initial-rtt-timeout 250ms --max-retries 2 --host-timeout 15m --max-scan-delay 5ms
**ファイアウォール/IDS**
ポートへのアクセスを許可せず、パケットを分析します。
**-f** パケットをフラグメント化します。デフォルトでは、ヘッダーの後に8バイトにフラグメント化されます。このサイズを指定するには..mtuを使用しますこの場合、-fは使用しないでください。オフセットは8の倍数でなければなりません。**バージョンスキャナーとスクリプトはフラグメンテーションをサポートしていません。**
**-D decoy1,decoy2,ME** Nmapはスキャナーを送信しますが、他のIPアドレスを起源として使用し、これにより隠れます。リストにMEを入れると、Nmapはそこにあなたを配置します。完全にマスクするには、5または6を前に置く方が良いです。ランダムIPはRND:<number>で生成できます。<number>のランダムIPを生成します。接続なしのTCPバージョン検出器では機能しません。ネットワーク内にいる場合は、アクティブなIPを使用することが重要です。そうでないと、あなたが唯一のアクティブなものであることが非常に簡単にわかります。
ランダムIPを使用するには: nmap -D RND:10 Target_IP
**-S IP** NmapがあなたのIPアドレスをキャッチしない場合にこれを指定します。また、他のターゲットがスキャンしていると思わせるためにも役立ちます。
**-e <interface>** インターフェースを選択するために使用します。
多くの管理者は、すべてが正しく機能するためにエントリポートを開いたままにしており、他の解決策を見つけるよりも簡単です。これらはDNSポートやFTPポートなどです。この脆弱性を見つけるために、Nmapは次のように組み込まれています: **--source-port** _**<portnumber>**_**;-g** _**<portnumber>**_ _同等です。_
**--data** _**<hex string>**_ 16進数テキストを送信するために使用します: --data 0xdeadbeefおよび--data \xCA\xFE\x09
**--data-string** _**<string>**_ 通常のテキストを送信するために使用します: --data-string "Security Opsによって実施されたスキャン、内線7192"
**--data-length** _**<number>**_ Nmapはヘッダーのみを送信します。これにより、追加のバイト数を追加できますランダムに生成されます
IPパケットを完全に構成するには、**--ip-options**を使用します。
送信および受信したパケットのオプションを表示するには、--packet-traceを指定します。NmapでのIPオプションの使用に関する詳細情報と例については、[http://seclists.org/nmap-dev/2006/q3/52](http://seclists.org/nmap-dev/2006/q3/52)を参照してください。
**--ttl** _**<value>**_
**--randomize-hosts** 攻撃を目立たなくするために使用します。
**--spoof-mac** _**<MAC address, prefix, or vendor name>**_ MACを変更するために使用します。例: Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2, および Cisco
**--proxies** _**<Comma-separated list of proxy URLs>**_ プロキシを使用するために使用します。時々、プロキシはNmapが望むほど多くのオープン接続を維持しないため、並列性を変更する必要があります: --max-parallelism
**-sP** ARPによってネットワーク内のホストを発見するために使用します。
多くの管理者は、特定のポートから来るすべてのパケットを通過させるファイアウォールルールを作成します20、53、67のように。Nmapにこれらのポートからパケットを送信させることができます: **nmap --source-port 53 IP**
**出力**
**-oN file** 通常の出力
**-oX file** XML出力
**-oS file** スクリプトキディの出力
**-oG file** Greppable出力
**-oA file** -oSを除くすべて
**-v level** 冗長性
**-d level** デバッグ
**--reason** ホストと状態の理由
**--stats-every time** その時間ごとに進行状況を知らせます。
**--packet-trace** どのパケットが出ているかを見るために、--version-traceや--script-traceのようなフィルタを指定できます。
**--open** オープン、オープン|フィルタリング、フィルタリングされていないものを表示します。
**--resume file** 概要を出力します。
**その他**
**-6** IPv6を許可します。
**-A** -O -sV -sC --tracerouteと同じです。
**実行時間**
Nmapが実行中の間、オプションを変更できます:
v / V 冗長性レベルを増加/減少させます。
d / D デバッグレベルを増加/減少させます。
p / P パケットトレースをオン/オフにします。
? 実行時のインタラクションヘルプ画面を表示します。
**Vulscan**
Nmapスクリプトは、オフラインデータベース他の非常に重要なものからダウンロードされたで取得したサービスのバージョンを調べ、可能な脆弱性を返します。
使用するDBは次のとおりです:
1. Scipvuldb.csv | [http://www.scip.ch/en/?vuldb](http://www.scip.ch/en/?vuldb)
2. Cve.csv | [http://cve.mitre.org](http://cve.mitre.org/)
3. Osvdb.csv | [http://www.osvdb.org](http://www.osvdb.org/)
4. Securityfocus.csv | [http://www.securityfocus.com/bid/](http://www.securityfocus.com/bid/)
5. Securitytracker.csv | [http://www.securitytracker.com](http://www.securitytracker.com/)
6. Xforce.csv | [http://xforce.iss.net](http://xforce.iss.net/)
7. Exploitdb.csv | [http://www.exploit-db.com](http://www.exploit-db.com/)
8. Openvas.csv | [http://www.openvas.org](http://www.openvas.org/)
Nmapフォルダーにダウンロードしてインストールするには:
wget http://www.computec.ch/projekte/vulscan/download/nmap_nse_vulscan-2.0.tar.gz && tar -czvf nmap_nse_vulscan-2.0.tar.gz vulscan/ && sudo cp -r vulscan/ /usr/share/nmap/scripts/
DBパッケージもダウンロードして/usr/share/nmap/scripts/vulscan/に追加する必要があります。
使用法:
すべてを使用するには: sudo nmap -sV --script=vulscan HOST_TO_SCAN
特定のDBを使用するには: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST_TO_SCAN
## Nmapサービススキャンをx16速くする
[**この投稿によると**](https://joshua.hu/nmap-speedup-service-scanning-16x)、すべての**`totalwaitms`**値を**`/usr/share/nmap/nmap-service-probes`**で**300**に、**`tcpwrappedms`**を**200**に変更することで、nmapサービス分析を速くできます。
さらに、特に定義された**`servicewaitms`**を持たないプローブは、デフォルト値**`5000`**を使用します。したがって、各プローブに値を追加するか、**[service_scan.h](https://github.com/nmap/nmap/blob/master/service_scan.h#L79)**でデフォルト値を変更するために**nmapをコンパイル**することができます。
`/usr/share/nmap/nmap-service-probes`ファイル内の**`totalwaitms`**および**`tcpwrappedms`**の値を変更したくない場合は、[解析コード](https://github.com/nmap/nmap/blob/master/service_scan.cc#L1358)を編集して、`nmap-service-probes`ファイル内のこれらの値を完全に無視させることができます。
{{#include ../../banners/hacktricks-training.md}}