24 KiB
Nmapの概要(ESP)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。
スキャンするIPアドレス
<ip>,<net/mask>
: 直接IPアドレスを指定します。-iL <ips_file>
: IPアドレスのリストを指定します。-iR <number>
: ランダムなIPアドレスの数を指定します。--exclude <Ips>
または--excludefile <file>
で除外するIPアドレスを指定できます。
機器の発見
デフォルトでは、Nmapは次のような発見フェーズを実行します: -PA80 -PS443 -PE -PP
-sL
: 侵入的ではなく、名前を解決するためにDNSリクエストを行い、ターゲットをリストアップします。たとえば、www.prueba.es/24のすべてのIPアドレスがターゲットであるかどうかを知るのに役立ちます。-Pn
: ピン応答を知っている場合に有用です(そうでない場合は多くの時間がかかる可能性がありますが、このオプションはターゲットがアクティブでないという誤った結果を示すこともあります)。発見フェーズを防ぎます。-sn
: ポートスキャンを行わずに、偵察フェーズを完了します。比較的ステルス性があり、小規模なネットワークスキャンが可能です。特権を持っている場合は、80に対してACK(-PA)を送信し、443に対してSYN(-PS)を送信し、エコーリクエストとタイムスタンプリクエストを送信します。特権を持っていない場合は、常に完全な接続が行われます。ターゲットがネットワークの場合、ARP(-PR)のみを使用します。他のオプションと組み合わせて使用する場合、他のオプションのパケットのみが破棄されます。-PR
: ARPピン応答。デフォルトでは、ネットワーク内のコンピュータを分析する際に使用され、ピン応答よりも高速です。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>
: プロトコルがヘッダーに指定されます。デフォルトでは1(ICMP)、2(IGMP)、4(Encap IP)です。ICMP、IGMP、TCP(6)、UDP(17)プロトコルの場合、プロトコルヘッダーが送信されます。それ以外の場合はIPヘッダーのみが送信されます。これは、ヘッダーの不正形成により、プロトコル到達不能または同じプロトコルの応答が返されるため、ターゲットがアップしているかどうかを知るために使用されます。-n
: DNSを使用しない-R
: 常にDNSを使用する
ポートスキャンの技術
-sS
: 接続を完了しないため、痕跡を残しません。使用できる場合は非常に良いです(特権が必要です)。デフォルトで使用されます。-sT
: 接続を完了するため、痕跡を残しますが、安全に使用できます。デフォルトでは特権がない場合に使用されます。-sU
: より遅いですが、UDPに対応しています。主に: DNS(53)、SNMP(161,162)、DHCP(67および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とWindowは、ファイアウォールを検出し、ポートがフィルタリングされているかどうかを知るために使用されます。-sWはオープン/クローズを区別します。オープンの場合、異なるウィンドウ値でRSTが応答されます。クローズの場合、RSTウィンドウ= 0が応答されます。フィルタリングされている場合、ICMP到達不能または何も応答されません。すべてのコンピュータがこの方法で動作するわけではないため、すべてクローズされている場合は動作していないことを示し、一部がオープンであれば正常に動作していることを示し、多くがオープンで一部がクローズされている場合は逆の動作をしていることを示します。-sI
: アイドルスキャン。アクティブなファイアウォールが存在する場合でも、特定のIPにフィルタリングされないことを知っている場合(また
センタリング分析
-p: スキャンするポートを指定します。65335を選択するには、-p-または-p allを使用します。 Nmapには、人気に応じて内部的に分類されたポートがあります。デフォルトでは、上位1000ポートを使用します。-F(高速スキャン)では、上位100ポートを分析します。--top-ports <number>は、指定した数の上位ポート(1から65335まで)を分析します。順番にポートをチェックするためには、-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
スクリプトを使用するには、単に次のように入力します:namp --script Script_Name target --> スクリプトを指定すると、スクリプトとスキャナーの両方が実行されるため、スキャナーのオプションも指定できます。安全なスクリプトのみを実行するには、**"safe=1"**を追加できます。
タイミングの制御
Nmapは、秒、分、ミリ秒単位で時間を変更できます:--host-timeout arguments 900000ms, 900, 900s, and 15m all do the same thing.
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>
パケットの数を変更することもできます:--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 --> デフォルトの -f パケットをフラグメント化するため、デフォルトではヘッダーの後に8バイトでフラグメント化されます。特定のサイズを指定するには、..mtuを使用します(これを使用すると、-fを使用しないでください)。オフセットは8の倍数である必要があります。バージョンスキャナとスクリプトはフラグメンテーションをサポートしていません
-D decoy1,decoy2,ME Nmapはスキャンを送信しますが、送信元のIPアドレスを他のものに変更することで、自分を隠すことができます。MEをリストに含めると、Nmapはその位置にあなたを配置します。完全にマスクするために、自分の前に5または6を置くことが最適です。RND:<number>を使用してランダムなIPアドレスを生成することもできます。<number>個のランダムなIPアドレスを生成します。TCP接続のバージョン検出では機能しません。ネットワーク内にいる場合、アクティブなIPアドレスを使用することが重要です。そうしないと、あなたが唯一のアクティブな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> ヘキサ文字列を送信するために使用します:--data 0xdeadbeef または --data \xCA\xFE\x09
--data-string <string> 通常のテキストを送信するために使用します:--data-string "Scan conducted by Security Ops, extension 7192"
--data-length <number> Nmapはヘッダーのみを送信しますが、これにより指定したバイト数が追加されます(ランダムに生成されます)
パケットを完全に設定するには、--ip-optionsを使用します
送信および受信したパケットのオプションを表示するには、--packet-traceを指定します。NmapでIPオプションを使用する詳細な情報と例については、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 grep可能な出力
-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のスクリプトで、オフラインのデータベース(重要なデータベースからダウンロード)で取得したサービスのバージョンをチェックし、可能な脆弱性を返します。
使用するデータベースは次のとおりです:
- Scipvuldb.csv | http://www.scip.ch/en/?vuldb
- Cve.csv | http://cve.mitre.org
- Osvdb.csv | http://www.osvdb.org
- Securityfocus.csv | http://www.securityfocus.com/bid/
- Securitytracker.csv | http://www.securitytracker.com
- Xforce.csv | http://xforce.iss.net
- Exploitdb.csv | http://www.exploit-db.com
- Openvas.csv | 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/
また、データベースのパッケージをダウンロードして/usr/share/nmap/scripts/vulscan/に追加する必要があります。
使用方法:
すべてを使用するには:sudo nmap -sV --script=vulscan TARGET_IP
特定のデータベースを使用するには:sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv TARGET_IP
Nmapサービススキャンを16倍高速化する方法
この投稿によれば、/usr/share/nmap/nmap-service-probes
内のすべてのtotalwaitms
の値を300に、tcpwrappedms
の値を200に変更することで、nmapサービス解析を高速化することができます。
さらに、特に定義されていない**servicewaitms
を持つプローブは、デフォルト値の5000
**を使用します。したがって、各プローブに値を追加するか、nmapをコンパイルしてservice_scan.h内のデフォルト値を変更することができます。
もしも、/usr/share/nmap/nmap-service-probes
ファイル内の**totalwaitms
とtcpwrappedms
**の値を一切変更したくない場合は、解析コードを編集して、nmap-service-probes
ファイル内のこれらの値を完全に無視するようにすることもできます。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを発見しましょう。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterで私をフォローしてください🐦@carlospolopm。
- ハッキングのトリックを共有するには、hacktricks repo と hacktricks-cloud repo にPRを提出してください。