Linux-nmap

 

nmap簡介

nmap網絡探測端口掃描和安全審覈工具(跨平臺工具)
https://nmap.org/
https://nmap.org/man/zh/
Nmap (「Network Mapper(網絡映射器)」) 是一款開放源代碼的 網絡探測和安全審覈的工具。它的設計目標是快速地掃描大型網絡,固然用它掃描單個 主機也沒有問題。html

  • Nmap以新穎的方式使用原始IP報文來發現網絡上有哪些主機,
  • 那些 主機提供什麼服務(應用程序名和版本),
  • 那些服務運行在什麼操做系統(包括版本信息),
  • 它們使用什麼類型的報文過濾器/防火牆,
  • 以及一堆其它功能。

雖然Nmap一般用於安全審覈, 許多系統管理員和網絡管理員也用它來作一些平常的工做,好比查看整個網絡的信息, 管理服務升級計劃,以及監視主機和服務的運行。

Nmap輸出的是掃描目標的列表,以及每一個目標的補充信息,至因而哪些信息則依賴於所使用的選項。 「所感興趣的端口表格」是其中的關鍵。那張表列出端口號,協議,服務名稱和狀態。
許多傳統的端口掃描器只列出全部端口是開放仍是關閉的, Nmap的信息粒度比它們要細得多。 它把端口分紅六個狀態: open(開放的), closed(關閉的),filtered(被過濾的), unfiltered(未被過濾的), open|filtered(開放或者被過濾的),或者 closed|filtered(關閉或者被過濾的)。
> open(開放的) 意味着目標機器上的應用程序正在該端口監聽鏈接/報文。
應用程序正在該端口接收TCP 鏈接或者UDP報文。發現這一點經常是端口掃描 的主要目標。安全意識強的人們知道每一個開放的端口 都是攻擊的入口。攻擊者或者入侵測試者想要發現開放的端口。 而管理員則試圖關閉它們或者用防火牆保護它們以避免妨礙了合法用戶。 非安全掃描可能對開放的端口也感興趣,由於它們顯示了網絡上那些服務可供使用。
> closed(關閉的) 端口沒有應用程序在它上面監聽,可是他們隨時可能開放。
關閉的端口對於Nmap也是可訪問的(它接受Nmap的探測報文並做出響應), 但沒有應用程序在其上監聽。 它們能夠顯示該IP地址上(主機發現,或者ping掃描)的主機正在運行up 也對部分操做系統探測有所幫助。 由於關閉的關口是可訪問的,也許過會兒值得再掃描一下,可能一些又開放了。 系統管理員可能會考慮用防火牆封鎖這樣的端口。 那樣他們就會被顯示爲被過濾的狀態,下面討論。
> filtered(被過濾的)
因爲包過濾阻止探測報文到達端口, Nmap沒法肯定該端口是否開放。過濾可能來自專業的防火牆設備,路由器規則 或者主機上的軟件防火牆。這樣的端口讓攻擊者感受很挫折,由於它們幾乎不提供 任何信息。有時候它們響應ICMP錯誤消息如類型3代碼13 (沒法到達目標: 通訊被管理員禁止),但更廣泛的是過濾器只是丟棄探測幀, 不作任何響應。 這迫使Nmap重試若干次以訪萬一探測包是因爲網絡阻塞丟棄的。 這使得掃描速度明顯變慢。
> unfiltered(未被過濾的)
未被過濾狀態意味着端口可訪問,但Nmap不能肯定它是開放仍是關閉。 只有用於映射防火牆規則集的ACK掃描纔會把端口分類到這種狀態。 用其它類型的掃描如窗口掃描,SYN掃描,或者FIN掃描來掃描未被過濾的端口能夠幫助肯定 端口是否開放。
> open|filtered(開放或者被過濾的)
當沒法肯定端口是開放仍是被過濾的,Nmap就把該端口劃分紅 這種狀態。開放的端口不響應就是一個例子。沒有響應也可能意味着報文過濾器丟棄 了探測報文或者它引起的任何響應。所以Nmap沒法肯定該端口是開放的仍是被過濾的。 UDP,IP協議, FIN,Null,和Xmas掃描可能把端口納入此類。
> closed|filtered(關閉或者被過濾的)
該狀態用於Nmap不能肯定端口是關閉的仍是被過濾的。 它只可能出如今IPID Idle掃描中。

當要求進行版本探測時,端口表也能夠包含軟件的版本信息。
當要求進行IP協議掃描時 (-sO),Nmap提供關於所支持的IP協議而不是正在監聽的端口的信息。
雖然Nmap努力產生正確的結果,但請記住全部結果都是基於目標機器(或者它們前面的防火牆)返回的報文的。這些主機也許是不值得信任的,它們可能響應以迷惑或誤導Nmap的報文。更廣泛的是非RFC兼容的主機以不正確的方式響應Nmap探測。FIN,Null和Xmas掃描 特別容易遇到這個問題。這些是特定掃描類型的問題,所以咱們在個別掃描類型裏討論它們。web

nmap幫助

$ nmap -h
== TARGET SPECIFICATION 目標說明
可用: 主機名, Ipv4, IPv6, CIDR, 八位字節範圍, etc.
Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
-iL <inputfilename>: Input from list of hosts/networks //從<文件>列表中讀取目標
-iR <num hosts>: Choose random targets //隨機選擇目標
--exclude <host1[,host2][,host3],...>: Exclude hosts/networks //排除主機/網絡
--excludefile <exclude_file>: Exclude list from file //排除<文件>中的列表
== HOST DISCOVERY 主機發現
-sL: List Scan - simply list targets to scan //列表掃描,僅列出網絡上的主機,不發送任何報文。
-sn: Ping Scan - disable port scan //ping,不掃描端口。
-Pn: Treat all hosts as online -- skip host discovery
-PS/PA/PU/PY[portlist]: TCP SYN/ACK, UDP or SCTP discovery to given ports
-PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes
-PO[protocol list]: IP Protocol Ping
-n/-R: Never do DNS resolution/Always resolve [default: sometimes] //不用域名解析
--dns-servers <serv1[,serv2],...>: Specify custom DNS servers
--system-dns: Use OS's DNS resolver //使用系統域名解析器
--traceroute: Trace hop path to each host
== SCAN TECHNIQUEShttps://nmap.org/man/zh/man-port-scanning-techniques.html
-sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
-sU: UDP Scan
-sN/sF/sX: TCP Null, FIN, and Xmas scans
--scanflags <flags>: Customize TCP scan flags //定製的TCP掃描
-sI <zombie host[:probeport]>: Idle scan //https://nmap.org/book/idlescan.html
-sY/sZ: SCTP INIT/COOKIE-ECHO scans
-sO: IP protocol scan //IP協議掃描
-b <FTP relay host>: FTP bounce scan //FTP彈跳掃描
== PORT SPECIFICATION AND SCAN ORDER //端口說明和掃描順序
-p <port ranges>: Only scan specified ports //只掃描指定端口
Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
--exclude-ports <port ranges>: Exclude the specified ports from scanning
-F: Fast mode - Scan fewer ports than the default scan //快速掃描:nmap-services約1200個
-r: Scan ports consecutively - don't randomize //不要按隨機順序掃描端口
--top-ports <number>: Scan <number> most common ports
--port-ratio <ratio>: Scan ports more common than <ratio>
== SERVICE/VERSION DETECTION 服務和版本探測
nmap-service-probes 數據庫包含查詢不一樣服務的探測報文 和解析識別響應的匹配表達式。
-sV: Probe open ports to determine service/version info //版本探測(-A的一部分)
--version-intensity <level>: Set from 0 (light) to 9 (try all probes) //設置版本掃描強度,默認7
--version-light: Limit to most likely probes (intensity 2) //輕量級模式
--version-all: Try every single probe (intensity 9) //嘗試每一個探測
--version-trace: Show detailed version scan activity (for debugging) //跟蹤版本掃描活動,--packet-trace的子集
== SCRIPT SCAN
-sC: equivalent to --script=default
--script=<Lua scripts>: <Lua scripts> is a comma separated list of directories, script-files or script-categories
--script-args=<n1=v1,[n2=v2,...]>: provide arguments to scripts
--script-args-file=filename: provide NSE script args in a file
--script-trace: Show all data sent and received
--script-updatedb: Update the script database.
--script-help=<Lua scripts>: Show help about scripts.
<Lua scripts> is a comma-separated list of script-files or script-categories.
== OS DETECTION 操做系統探測
-O: Enable OS detection //啓用操做系統檢測(-A的一部分)
--osscan-limit: Limit OS detection to promising targets //針對指定的目標進行操做系統檢測
--osscan-guess: Guess OS more aggressively //推測操做系統檢測結果
== TIMING AND PERFORMANCE 時間和性能
改善掃描時間的技術有:忽略非關鍵的檢測。優化時間參數也會帶來實質性的變化,這些參數以下。
Options which take <time> are in seconds, or append 'ms' (milliseconds),
's' (seconds), 'm' (minutes), or 'h' (hours) to the value (e.g. 30m).
-T<0-5>: Set timing template (higher is faster) //設置時間模板,T4 能夠加快執行速度
  paranoid (0)sneaky (1)polite (2)normal(3)aggressive (4)insane (5)數據庫

  • -T0: paranoid (0)模式用於IDS躲避,在一個時間只能掃描一個端口, 每一個探測報文的發送間隔爲5分鐘。
  • -T1: sneaky (1) 模式用於IDS躲避,T1T2選項比較相似, 探測報文間隔分別爲15秒和0.4秒。
  • -T2: Polite (2) 模式下降了掃描 速度以使用更少的帶寬和目標主機資源。
  • -T3: Normal (3) (默認模式),所以-T3 其實是未作任何優化。包含了並行掃描。
  • -T4: Aggressive (4) 模式假設用戶具備合適及可靠的網絡從而加速 掃描。最大TCP掃描延遲爲10ms
  • -T5: Insane (5) 模式假設用戶具備特別快的網絡或者願意爲得到速度而犧牲準確性。最大延遲爲5ms

  T4選項與 --max-rtt-timeout 1250 --initial-rtt-timeout 500 等價,
  T5等價於 --max-rtt-timeout 300 --min-rtt-timeout 50 --initial-rtt-timeout 250 --host-timeout 900000
--min-hostgroup/max-hostgroup <size>: Parallel host scan group sizes //調整並行掃描組大小
--min-parallelism/max-parallelism <numprobes>: Probe parallelization //調整探測報文的並行度
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>: Specifies probe round trip time.
--max-retries <tries>: Caps number of port scan probe retransmissions.
--host-timeout <time>: Give up on target after this long //放棄低速目標主機
--scan-delay/--max-scan-delay <time>: Adjust delay between probes //調整探測報文的時間間隔
--min-rate <number>: Send packets no slower than <number> per second
--max-rate <number>: Send packets no faster than <number> per second
== FIREWALL/IDS EVASION AND SPOOFING 防火牆/IDS躲避和哄騙
-f; --mtu <val>: fragment packets (optionally w/given MTU) //報文分段,--mtu,使用指定MTU
-D <decoy1,decoy2[,ME],...>: Cloak a scan with decoys //使用誘餌隱蔽掃描
-S <IP_Address>: Spoof source address //源地址哄騙
-e <iface>: Use specified interface //使用指定的接口
-g/--source-port <portnum>: Use given port number
--proxies <url1,[url2],...>: Relay connections through HTTP/SOCKS4 proxies
--data <hex string>: Append a custom payload to sent packets
--data-string <string>: Append a custom ASCII string to sent packets
--data-length <num>: Append random data to sent packets //發送報文時,附加隨機數據
--ip-options <options>: Send packets with specified ip options
--ttl <val>: Set IP time-to-live field //設置IP time-to-live域
--spoof-mac <mac address/prefix/vendor name>: Spoof your MAC address //MAC地址哄騙
--badsum: Send packets with a bogus TCP/UDP/SCTP checksum
== OUTPUT 輸出
-oN/-oX/-oS/-oG <file>: Output scan in normal, XML, s|<rIpt kIddi3, and Grepable format, respectively, to the given filename. //oN,標準輸出; oX,XML輸出; oS,腳本輸出; oG,Grep輸出
-oA <basename>: Output in the three major formats at once //標準.nmap, .xml, .gnamp文件中
-v: Increase verbosity level (use -vv or more for greater effect) //更詳細信息,
-d: Increase debugging level (use -dd or more for greater effect) //提升或設置調試級別
--reason: Display the reason a port is in a particular state
--open: Only show open (or possibly open) ports
--packet-trace: Show all packets sent and received //跟蹤發送和接收的報文
--iflist: Print host interfaces and routes (for debugging) //列舉接口和路由
--append-output: Append to rather than clobber specified output files //在輸出文件中添加
--resume <filename>: Resume an aborted scan //繼續中斷的掃描
--stylesheet <path/URL>: XSL stylesheet to transform XML output to HTML //設置XSL樣式
--webxml: Reference stylesheet from Nmap.Org for more portable XML
--no-stylesheet: Prevent associating of XSL stylesheet w/XML output //忽略XML聲明的XSL樣式
== MISC 雜項
-6: Enable IPv6 scanning //啓用IPv6掃描
-A: Enable OS detection, version detection, script scanning, and traceroute //激烈掃描模式選項
--datadir <dirname>: Specify custom Nmap data file location //說明用戶Nmap數據文件位置
--send-eth/--send-ip: Send using raw ethernet frames or IP packets //使用原以太網幀發送或IP包
--privileged: Assume that the user is fully privileged //假定用戶具備所有權限
--unprivileged: Assume the user lacks raw socket privileges
-V: Print version number
-h: Print this help summary page.
== EXAMPLES
nmap -v -A scanme.nmap.org:
nmap -v -sn 192.168.0.0/16 10.0.0.0/8:
nmap -v -iR 10000 -Pn -p 80:
SEE THE MAN PAGE: nmap.org/book/man.html
注:這裏紅色字體是下面實例中用到的選項,也是經常使用選項 安全

nmap實例

原文:https://nmap.org/man/zh/man-examples.html
下面給出一些實例,簡單的、複雜的到深奧的。爲更具體,一 些例子使用了實際的IP地址和域名。在這些位置,可使用你本身網絡 的地址/域名替換。注意,掃描其它網絡不必定合法,一些網絡管理員不肯看到 未申請過的掃描,會產生報怨。所以,先得到容許是最好的辦法。

若是是爲了測試,scanme.nmap.org 容許被掃描。但僅容許使用Nmap掃描並禁止測試漏洞或進行DoS攻擊。爲 保證帶寬,對該主機的掃描天天不要超過12次。若是這個免費掃描服務被 濫用,系統將崩潰並且Nmap將報告解析 指定的主機名/IP地址失敗:scanme.nmap.org。這些免 費掃描要求也適用於scanme2.nmap.org、 scanme3.nmap.org等等,雖然這些 主機目前還不存在。

nmap -v scanme.nmap.org
這個選項掃描主機scanme.nmap.org中 全部的保留TCP端口。選項-v啓用細節模式。

nmap -sS -O scanme.nmap.org/24
進行祕密SYN掃描,對象爲主機Saznme所在的「C類」網段 的255臺主機。同時嘗試肯定每臺工做主機的操做系統類型。由於進行SYN掃描 和操做系統檢測,這個掃描須要有根權限。

nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127
進行主機列舉和TCP掃描,對象爲B類188.116網段中255個8位子網。這 個測試用於肯定系統是否運行了sshd、DNS、imapd或4564端口。若是這些端口 打開,將使用版本檢測來肯定哪一種應用在運行。

nmap -v -iR 100000 -P0 -p 80
隨機選擇100000臺主機掃描是否運行Web服務器(80端口)。由起始階段 發送探測報文來肯定主機是否工做很是浪費時間,並且只需探測主機的一個端口,因 此使用-P0禁止對主機列表。

nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20
掃描4096個IP地址,查找Web服務器(不ping),將結果以Grep和XML格式保存。

host -l company.com | cut -d -f 4 | nmap -v -iL -
進行DNS區域傳輸,以發現company.com中的主機,而後將IP地址提供給 Nmap。上述命令用於GNU/Linux -- 其它系統進行區域傳輸時有不一樣的命令。服務器

Windows版本提供的幾個默認配置

命令 配置 說明
nmap -sn Ping scan 只ping, 不掃描端口
nmap -sn --traceroute Quick traceroute 只ping, 不掃描端口, 但跟蹤路由
nmap -T4 -F Quick scan 快速掃描, 約1200端口
nmap Regular scan 標準掃描, 約1600端口
nmap -sV -T4 -O -F --version-light Quick scan plus 輕量級, 快速, 版本+OS探測
nmap -T4 -A -v -Pn Intense scan, no ping 標準端口掃描, 版本+OS探測, 詳細顯示, 跳過主機發現
nmap -T4 -A -v Intense scan 標準端口掃描, 版本+OS探測, 詳細顯示
nmap -sS -sU -T4 -A -v Intense scan plus UDP 標準TCP+UDP掃描, 版本+OS探測, 詳細顯示
nmap -p 1-65535 -T4 -A -v Intense scan, all TCP ports 全部TCP掃描, 版本+OS探測, 詳細顯示

Slow comprehensive scan: nmap -sS -sU -T4 -A -v -PE -PP -PS80,443 -PA3389 -PU40125 -PY -g 53 --script "default or (discovery and safe)"
注:不難看出,這幾個配置大體從上往下,掃描項目增長,耗時也會增長。


網絡

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息