Nmap Summary (ESP)
Last updated
Last updated
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
<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>
: ヘッダーにプロトコルを指定します。デフォルトは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およびウィンドウは、ファイアウォールを検出するために使用され、ポートがフィルタリングされているかどうかを知るために使用されます。-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: スキャンするポートを指定します。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サービスに含まれる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, and 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 スクリプト名 目標 --> スクリプトを入力すると、スクリプトとスキャナーの両方が実行されるため、スキャナーのオプションも指定できます。**“safe=1”**を追加して、安全なものだけを実行させることができます。
時間制御
Nmapは秒、分、ミリ秒で時間を変更できます: --host-timeout arguments 900000ms, 900, 900s, and 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を自分の前に置く方が良いです。RND:<number>を使用してランダムなIPを生成できます。<number>のランダムなIPを生成します。TCP接続なしのバージョン検出器では機能しません。ネットワーク内にいる場合は、アクティブなIPを使用することが重要です。そうでないと、あなたが唯一のアクティブであることが簡単にわかります。
ランダムなIPを使用するには: nmap-D RND: 10 目標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パケットを完全に設定するには、--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 スキャン対象ホスト
特定のデータベースを使用するには: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv スキャン対象ホスト
この投稿によると、すべての**totalwaitms
の値を300に、tcpwrappedms
を200**に変更することで、Nmapサービス分析を高速化できます。
さらに、特に定義された**servicewaitms
を持たないプローブは、デフォルト値5000
を使用します。したがって、各プローブに値を追加するか、service_scan.hでデフォルト値を変更するためにNmapをコンパイル**することができます。
/usr/share/nmap/nmap-service-probes
ファイル内の**totalwaitms
およびtcpwrappedms
**の値を変更したくない場合は、解析コードを編集して、nmap-service-probes
ファイル内のこれらの値を完全に無視させることができます。
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する: HackTricks Training GCP Red Team Expert (GRTE)