Nmap Summary (ESP)

ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24

パラメータ

スキャンするIPアドレス

  • <ip>,<net/mask>: 直接IPを指定

  • -iL <ips_file>: IPリスト

  • -iR <number>: ランダムなIPの数、--exclude <Ips>--excludefile <file> で除外可能。

機器の発見

デフォルトでは、Nmapは次のフェーズを起動します: -PA80 -PS443 -PE -PP

  • -sL: 侵入しないで、名前を解決するためにDNSリクエストを行い、ターゲットをリストアップします。例えば、www.prueba.es/24のすべてのIPがターゲットであるかどうかを知るのに役立ちます。

  • -Pn: ピングなし。すべてがアクティブであることを知っている場合に便利です(そうでない場合、多くの時間を無駄にする可能性がありますが、このオプションはアクティブでないと言って誤った否定を生じます)、発見フェーズを防止します。

  • -sn : ポートスキャンなし。偵察フェーズを完了した後、ポートをスキャンしません。比較的ステルシーで、小規模なネットワークスキャンを許可します。特権を持っている場合、80にACK(-PA)、443にSYN(-PS)、エコーリクエストとタイムスタンプリクエストを送信し、特権を持っていない場合は常に接続を完了します。ターゲットがネットワークの場合、ARP(-PR)のみを使用します。他のオプションと併用する場合、他のオプションのパケットのみが破棄されます。

  • -PR: ARP ping。ネットワーク内のコンピュータを分析する際には、通常、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フラグを送信し、現在はすべてを閉じて返します。

  • -sA, sW: ACKおよびWindow、ファイアウォールを検出し、ポートがフィルタリングされているかどうかを知るために使用されます。-sWは、開いているものが異なるウィンドウ値で応答するため、開いている/閉じているを区別します: 開いている(RST ウィンドウが0以外)、閉じている(RST ウィンドウ = 0)、フィルタリングされている(ICMP到達不能または何もなし)。すべてのコンピュータがこの方法で動作するわけではないため、すべてが閉じている場合は動作していないこと、いくつかが開いている場合は正常に動作していること、多くが開いていて閉じているものが少ない場合は逆に動作していることを知ることができます。

  • -sI: アイドルスキャン。アクティブなファイアウォールがある場合や、特定の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: スキャンするポートを指定するために使用されます。65335を選択するには: -p- または -p all。 Nmapには、その人気に応じた内部分類があります。デフォルトでは、主要な1000を使用します。 -F (高速スキャン) では、主要な100を分析します。 --top-ports <numero> 指定された数の主要なポートを分析します(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 <numero> 強度を調整でき、低いほど最も可能性の高いソンドだけを送信しますが、すべてを送信しません。これにより、UDPのスキャン時間を大幅に短縮できます。

-O OSの検出

--osscan-limit ホストを適切にスキャンするには、少なくとも1つのポートが開いており、もう1つ --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、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>

秒間のパケット数を変更できます: --min-rate <number>; --max-rate <number>

多くのポートはフィルタリングされているか閉じられているため、応答に時間がかかる場合があります。開いているポートのみに興味がある場合は、次のオプションを使用して高速化できます: --defeat-rst-ratelimit

Nmapの攻撃の強度を定義するには: -T paranoid|sneaky|polite|normal|aggressive|insane

-T (0-1)

-T0 --> 1度に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はそのIPアドレスを使用します。完全にマスクするためには、自分の前に5つまたは6つのデコイを置くと良いでしょう。RND:<number>を使用してランダムなIPを生成できます。TCP接続のないバージョン検出とは互換性がありません。ネットワーク内にいる場合は、アクティブなIPを使用すると良いでしょう。そうしないと、あなたが唯一アクティブなことが非常に簡単に特定されます。

ランダムなIPを使用するには: nmap-D RND: 10 Ip_target

-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パケットを完全に構成するには**--ip-options**を使用します

送信および受信されるパケットのオプションを表示するには、--packet-traceを指定します。IPオプションを使用したNmapの詳細と例については、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 <プロキシURLのカンマ区切りリスト> プロキシを使用する場合、nmapが必要とするよりもプロキシが開いている接続が少ないことがあるため、並列処理を変更する必要があります: --max-parallelism

-sP ARPによるネットワーク内のホストの検出

多くの管理者は、特定のポート(たとえば20、53、67など)からのすべてのパケットを通過させるファイアウォールルールを作成します。nmapにこれらのポートからパケットを送信するよう指示できます: nmap --source-port 53 Ip

出力

-oN file 通常の出力

-oX file XML出力

-oS file スクリプトキディ出力

-oG file grepable出力

-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のスクリプトで、オフラインのデータベース(非常に重要な他のデータベースからダウンロードされる)で取得したサービスのバージョンを調べ、可能な脆弱性を返します

使用するデータベース:

  1. Securitytracker.csv | http://www.securitytracker.com

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 HOST_A_ESCANEAR

特定のデータベースを使用するには: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST_A_ESCANEAR

Nmapサービススキャンを16倍高速化

この投稿によると、/usr/share/nmap/nmap-service-probes内のすべてのtotalwaitms値を300に、tcpwrappedmsを200に変更することで、nmapサービス解析を高速化できます。

さらに、特に定義されていない**servicewaitmsを持たないプローブは、デフォルト値5000を使用します。したがって、各プローブに値を追加するか、service_scan.hでデフォルト値を変更してnmapをコンパイル**することができます。

/usr/share/nmap/nmap-service-probesファイルのtotalwaitmsおよびtcpwrappedmsの値を一切変更したくない場合は、nmap-service-probesファイル内のこれらの値が完全に無視されるように解析コードを編集できます。

ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)と!

HackTricksをサポートする他の方法:

Last updated