主頁 >  其他 > Nmap滲透測驗使用方法

Nmap滲透測驗使用方法

2020-10-17 10:35:37 其他

 

Nmap滲透測驗使用方法

 

目標選擇2

埠選擇2

作業系統和服務檢測2

Nmap輸出格式2

用NSE腳本深入挖掘2

HTTP服務資訊3

檢測SSL漏洞問題的主機3

設備掃描3

按VNC掃描5

按SMB掃描5

按Mssql掃描6

按Mysql掃描6

按Oracle掃描6

資訊收集掃描7

其他腳本7

技巧8

埠狀態9

Nmap文字描述9

 

 

Nmap官網 https://nmap.org/book/toc.html

https://nmap.org/man/zh/

 

 

 

 

 

目標選擇

掃描單個IP

nmap 192.168.1.1

掃描主機

nmap www.linuxplus.loca

掃描一系列IP

nmap 192.168.1.1-20

掃描子網

nmap 192.168.1.0/24

從文本檔案獲得掃描目標

nmap -iL list-of-ips.txt

無ping掃描:常用于防火墻禁止ping的情況

nmap -P0 172.20.62.150

埠選擇

掃描單個埠

nmap -p 22 192.168.1.1

掃描一系列埠

nmap -p 1-100 192.168.1.1

掃描100個最常見的埠(快速)

nmap -F 192.168.1.1

掃描所有65535埠

nmap -p- 192.168.1.1

作業系統和服務檢測

檢測作業系統和服務

nmap -A 192.168.1.1

標準服務檢測

nmap -sV 192.168.1.1

激進的服務檢測

nmap -sV --version-intensity 5 192.168.1.1

輕量Banner抓取檢測

nmap -sV --version-intensity 0 192.168.1.1

Nmap輸出格式

將默認輸出保存到檔案

nmap -oN outputfile.txt 192.168.1.1

將結果保存為XML

nmap -oX outputfile.xml 192.168.1.1

為方便grep來保存格式

nmap -oG outputfile.txt 192.168.1.1

保存所有格式

nmap -oA outputfile 192.168.1.1

用NSE腳本深入挖掘

使用默認安全腳本掃描

nmap -sV -sC 192.168.1.1

獲取腳本的幫助

nmap --script-help=ssl-heartbleed

使用特定的NSE腳本進行掃描

nmap -sV -p 443 –script=ssl-heartbleed.nse 192.168.1.1

用一組腳本進行掃描

nmap -sV --script=smb* 192.168.1.1

HTTP服務資訊

從HTTP服務收集頁面標題

nmap --script=http-title 192.168.1.0/24

獲取Web服務的HTTP頭

nmap --script=http-headers 192.168.1.0/24

從已知路徑查找網路應用程式

nmap --script=http-enum 192.168.1.0/24

 

檢測SSL漏洞問題的主機

Heartbleed測驗

nmap -sV -p 443 --script=ssl-heartbleed 192.168.1.0/24

 

設備掃描

獲取ip

host 網址

host 域名

dig 域名

是否存活

ping ip

nmap -sP --script discovery ip

掃描在線主機

nmap -sP 202.193.64.*

探測IP協議

nmap -PO ip

獲取系統概況

nmap -A ip   (暴力形式,很容易被發現)

探測是否有【】防火墻

nmap -PN ip

探測防火墻規則

nmap -sA ip

TCP Window掃描

nmap -sw ip

禁止反向域名決議

nmap -n -sL 172.24.171.1/24

FIN掃描

nmap -sF ip

(FIN掃描方式用于識別埠是否關閉,收到RST回復說明該埠關閉,否則說明是open或filtered狀態)

TCP掃描

nmap -sT -p 1-65535 -Pn ip

nmap -sT -p 1-65535 -Pn 192.168.1.1-254

nmap -sL 192.168.1.0/24

ARP Ping掃描

nmap -PR 172.20.62.150

SYN掃描

nmap -sS -p- Pn ip

TCP SYN Ping掃描

nmap -PS -v www.xxx.com

UDP掃描

nmap -sU ip(UDP掃描費時,所以去掉-p-,默認掃描)

Xmas掃描

nmap -sX -p1-65535 -Pn 192.168.1.1

Null掃描

nmap -sN -p 1-65535 -Pn ip

掃描所選埠 - 忽略發現

nmap -Pn -F 192.168.1.1

繞開鑒權

nmap --script=auth 192.168.56.*

探測作業系統

nmap -O ip

探測軟體版本

nmap -V ip

nmap -sTV -p- -Pn ip

設定掃描強度強度在0~9之間,默認強度為7

nmap -sV –version-intensity 1 www.xxx.com

輕量級掃描

nmap -sV –version-light www.xxx.com

重量級掃描

nmap -sV –version-all www.xxx.com

版本探測

nmap -sV -A www.xxx.com

對指定的目標進行系統探測

Nmap -osscan-limit www.xxx.com

推測系統識別

Nmap -osscan-guess/–fuzzy www.xxx.com

獲取詳細版本資訊

nmap -sV –version-trace www.xxx.com

全埠版本探測

nmap -allports -A www.xxx.com

RPC掃描

Nmap -sR www.xxx.com

調整并行掃描組的大小(默認為5-1024)最小的組

nmap –min-hostgroup 30 172.20.62.1/24

調整并行掃描組的大小(默認為5-1024)最大的組

nmap –max-hostgroup 50 172.20.62.1/24

探查局域網內更多服務

nmap -n --script=broadcast ip

碎片化

nmap -f ip

nmap --mtu 16 ip

誘餌

nmap –D RND:10 TARGET

nmap –D decoy1,decoy2,decoy3 target

MAC地址欺騙

nmap -sT -PN –spoof-mac aa:bb:cc:dd:ee:ff target

nmap -spoof-mac Scisio ip

-spoof-mac 可以根據廠商名字偽造不同mac地址

發送間隔時間控制

nmap -scan_delay 5ms ip

發送錯誤校驗

nmap --badsum target

Http方法

nmap -p80,443 --script http-methods scanme.nmap.org

發現檔案

nmap -sV --script http-enum ip

判斷是否使用默認埠

nmap -sV -script=smtp-strangeport ip

利用第三方資料庫

nmap --script external ip

獲得PHP版本資訊

nmap -sV -script=http-php-version ip

如果想對一個基于WordPress的web站點進行滲透測驗,可以使用這個腳本

nmap -sV -script=http-php-version ip

1.http-wordpress-plugins,2.http-wordpress-enum,3.http-wordpress-brute

用戶發現IP地址黑名單

nmap -sn ip --script dns-blacklist

簡單暴力猜解

nmap --script=brute 192.168.56.*

檢查是否存在漏洞

nmap --script=vuln 192.168.56.*

路由跟蹤

nmap --traceroute -sP 172.20.62.150

SCTP INIT Ping掃描

nmap -PY -v 172.20.62.150

按VNC掃描

檢查vnc bypass

nmap  --script=realvnc-auth-bypass 192.168.137.4

檢查vnc認證方式

nmap  --script=vnc-auth  192.168.137.4

獲取vnc資訊

nmap  --script=vnc-info  192.168.137.4

 

按SMB掃描

smb破解

nmap  --script=smb-brute.nse 192.168.137.4

smb字典破解

nmap --script=smb-brute.nse --script-args=userdb=/var/passwd,passdb=/var/passwd 192.168.137.4

smb已知幾個嚴重漏

nmap  --script=smb-check-vulns.nse --script-args=unsafe=1 192.168.137.4

查看共享目錄

nmap -p 445  --script smb-ls --script-args ‘share=e$,path=\,smbuser=test,smbpass=test’ 192.168.137.4

查詢主機一些敏感資訊

nmap -p 445 -n –script=smb-psexec --script-args= smbuser=test,smbpass=test 192.168.137.4

查看會話

nmap -n -p445 --script=smb-enum-sessions.nse --script-args=smbuser=test,smbpass=test 192.168.137.4

系統資訊

nmap -n -p445 --script=smb-os-discovery.nse --script-args=smbuser=test,smbpass=test 192.168.137.4

 

按Mssql掃描

猜解mssql用戶名和密碼

nmap -p1433 --script=ms-sql-brute --script-args=userdb=/var/passwd,passdb=/var/passwd 192.168.137.4

xp_cmdshell 執行命令

nmap -p 1433 --script ms-sql-xp-cmdshell --script-args mssql.username=sa,mssql.password=sa,ms-sql-xp-cmdshell.cmd="net user" 192.168.137.4

dumphash值

nmap -p 1433 --script ms-sql-dump-hashes.nse --script-args mssql.username=sa,mssql.password=sa  192.168.137.4

 

按Mysql掃描

掃描root空口令

nmap -p3306 --script=mysql-empty-password.nse 192.168.137.4

列出所有mysql用戶

nmap -p3306 --script=mysql-users.nse --script-args=mysqluser=root 192.168.137.4

支持同一應用的所有腳本掃描

nmap --script=mysql-* 192.168.137.4

按Oracle掃描

oracle sid掃描

nmap --script=oracle-sid-brute -p 1521-1560 192.168.137.5

oracle弱口令破解

nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=ORCL,userdb=/var/passwd,passdb=/var/passwd 192.168.137.5

資訊收集掃描

ip資訊搜集

nmap –script ip-geolocation-* www.xxx.com

獲得IP地址的資訊

nmap --script=asn-query,whois,ip-geolocation-maxmind 192.168.1.0/24

whois查詢

nmap –script whois www.xxx.com

ip反查

nmap -sn –script hostmap-ip2hosts www.xxx.com

資訊搜集

nmap –script dns-brute www.xxx.com

列舉dns服務器的主機名

nmap –script dns-brute –script-args dns-brute.domain=baidu.com

檢索系統資訊

nmap -p 445 172.20.62.150 –script membase-http-info

后臺列印機服務漏洞

nmap –script smb-security-mode.nse -p 445 xxx.xxx.xxx.xxx

smb漏洞掃描

nmap –script smb-check-vulns.nse -p 445 172.20.62.150//未驗證命令

通過snmp列舉windows服務

nmap -sU -p 161 –script=snmp-win32-services 172.20.62.137

通過snmp列舉windows賬戶

nmap -sU -p 161 –script=snmp-win32-users 172.20.62.137

http資訊搜集

對http版本進行探測

nmap -sV -p 80 www.xxx.com

http頭資訊探測

nmap -p 80 –script=http-headers www.xxx.com

http目錄結構探測

nmap -p 80 –script=http-sitemap-generator www.xxx.com

列舉ssl密鑰ssl-enum-ciphers

SSL(Secure Sockets Layer,安全套接層

TLS(Transport Layer Security,傳輸層安全)

nmap -p 443 –script=ssl-enum-ciphers www.baidu.com

服務器支持的密鑰演算法SSH服務密鑰資訊探測

nmap -p 22 –script ssh-hostkey –script-args ssh_hostkey=full 127.0.0.1

其他腳本

發現網關

Nmap --script=broadcast-netbios-master-browser 192.168.137.4

 telnet破解

nmap -sV --script=telnet-brute 192.168.137.4

dos攻擊

nmap --script http-slowloris --max-parallelism 400 192.168.137.4

破解rsync

nmap -p 873 --script rsync-brute --script-args 'rsync-brute.module=www' 192.168.137.4

informix資料庫破解

nmap --script informix-brute -p 9088 192.168.137.4

pgsql破解

nmap -p 5432 --script pgsql-brute 192.168.137.4

snmp破解

nmap -sU --script snmp-brute 192.168.137.4

檢查http方法

nmap --script=http-methods.nse 192.168.137.4

查看本地路由與介面

nmap -iflist

指定網口與ip地址

nmap -e eth0 ip

產生隨機ip地址

nmap -iR 1200000 -sL -n | grep “not scanned” | awk ‘{print $2}’ | sort -n | uniq >! tp; head -25000000 tp >! tcp-allports-1M-IPs; rm tp

掃描思科路由器

nmap -p1-25,80,512-515,2001,4001,6001,9001 10.20.0.1/16

思科路由器會在上述埠中運行了常見的服務,列舉出上述埠開放的主機,可以定位到路由器設備可能的IP地址及埠狀態,

掃描路由器TFTP

nmap –sU –p69 –nvv target

大多數的路由器都支持TFTP協議(簡單檔案傳輸協議),該協議常用于備份和恢復路由器的組態檔,運行在UDP 69埠上,使用上述命令可以探測出路由器是否開放TFTP,

掃描路由器作業系統

nmap -O -F -n 192.168.1.1

與通用PC掃描方式類似,使用-O選項掃描路由器的作業系統,-F用于快速掃描最可能開放的100個埠,并根據埠掃描結果進一步做OS的指紋分析,

顯示網路上共有多少臺 Linux 及 Win 設備

nmap -F -O 192.168.1.1-255 | grep "Running: " > /tmp/os; echo "$(cat /tmp/os | grep Linux | wc -l) Linux device(s)"; echo "$(cat /tmp/os | grep Windows | wc -l) Window(s) devices"

技巧

發送以太網資料包

nmap --send-eth 172.20.62.150

網路層發送

nmap --send-ip 172.20.62.150

假定擁有所有權

nmap --privileged 172.20.62.150

設定除錯級別

nmap -d 1 172.20.62.150

級別范圍1-9,9為最高級,產生的資料最多

跟蹤發送接受的報文:(-p指定埠范圍,減少產生的報文):

nmap --packet-trace -p 20-30 172.20.62.150

列舉介面和路由:(多用于除錯路由)

nmap -iflist 172.20.62.150

指定網路介面:指定從en0發送資料:

nmap -e en0 172.20.62.150

探測防火墻

nmap --script=firewalk --traceroute 172.20.62.150

埠狀態

開放

* Open

關閉

* Closed

可能被過濾,可能網路阻塞

Filtered

可以訪問,但未知埠處于開放還是關閉狀態

Unfiltered

能確定埠事開放被過濾

Open|Filtered

不能確定埠事關倍訓說被過濾

Closed|Filtered:

Nmap文字描述

1、目標說明

-iL <inputfilename> (從串列中輸入)

從 <inputfilename>中讀取目標說明,在命令列輸入 一堆主機名顯得很笨拙,然而經常需要這樣, 例如,您的DHCP服務器可能匯出10,000個當前租約的串列,而您希望對它們進行 掃描,如果您不是使用未授權的靜態IP來定位主機,或許您想要掃描所有IP地址, 只要生成要掃描的主機的串列,用-iL 把檔案名作為選項傳給Nmap,串列中的項可以是Nmap在 命令列上接受的任何格式(IP地址,主機名,CIDR,IPv6,或者八位位元組范圍), 每一項必須以一個或多個空格,制表符或換行符分開, 如果您希望Nmap從標準輸入而不是實際檔案讀取串列, 您可以用一個連字符(-)作為檔案名,

 

-iR <hostnum> (隨機選擇目標)

對于互聯網范圍內的調查和研究, 您也許想隨機地選擇目標, <hostnum> 選項告訴 Nmap生成多少個IP,不合需要的IP如特定的私有,組播或者未分配的地址自動 略過,選項 0 意味著永無休止的掃描,記住,一些網管對于未授權的掃描可能會很感冒并加以抱怨, 使用該選項的后果自負! 如果在某個雨天的下午,您覺得實在無聊, 試試這個命令nmap -sS -PS80 -iR 0 -p 80隨機地找一些網站瀏覽,

 

--exclude <host1[,host2][,host3],...> (排除主機/網路)

如果在您指定的掃描范圍有一些主機或網路不是您的目標, 那就用該選項加上以逗號分隔的串列排除它們,該串列用正常的Nmap語法, 因此它可以包括主機名,CIDR,八位位元組范圍等等, 當您希望掃描的網路包含執行關鍵任務的服務器,已知的對埠掃描反應強烈的 系統或者被其它人看管的子網時,這也許有用,

 

--excludefile <excludefile> (排除檔案中的串列)

這和--exclude 選項的功能一樣,只是所排除的目標是用以 換行符,空格,或者制表符分隔的 <excludefile>提供的,而不是在命令列上輸入的,

  1. 主機發現

-sL (串列掃描)

串列掃描是主機發現的退化形式,它僅僅列出指定網路上的每臺主機, 不發送任何報文到目標主機,默認情況下,Nmap仍然對主機進行反向域名決議以獲取 它們的名字,簡單的主機名能給出的有用資訊常常令人驚訝,例如, fw.chi.playboy.com是花花公子芝加哥辦公室的 防火墻,Nmap最后還會報告IP地址的總數,串列掃描可以很好的確保您擁有正確的目標IP, 如果主機的域名出乎您的意料,那么就值得進一步檢查以防錯誤地掃描其它組織的網路,

 

既然只是列印目標主機的串列,像其它一些高級功能如埠掃描,作業系統探測或者Ping掃描 的選項就沒有了,如果您希望關閉ping掃描而仍然執行這樣的高級功能,請繼續閱讀關于 -P0選項的介紹,

 

-sP (Ping掃描)

該選項告訴Nmap僅僅 進行ping掃描 (主機發現),然后列印出對掃描做出回應的那些主機, 沒有進一步的測驗 (如埠掃描或者作業系統探測), 這比串列掃描更積極,常常用于 和串列掃描相同的目的,它可以得到些許目標網路的資訊而不被特別注意到, 對于攻擊者來說,了解多少主機正在運行比串列掃描提供的一列IP和主機名往往更有價值,

 

系統管理員往往也很喜歡這個選項, 它可以很方便地得出 網路上有多少機器正在運行或者監視服務器是否正常運行,常常有人稱它為 地毯式ping,它比ping廣播地址更可靠,因為許多主機對廣播請求不回應,

 

-sP選項在默認情況下, 發送一個ICMP回聲請求和一個TCP報文到80埠,如果非特權用戶執行,就發送一個SYN報文 (用connect()系統呼叫)到目標機的80埠, 當特權用戶掃描局域網上的目標機時,會發送ARP請求(-PR), ,除非使用了--send-ip選項, -sP選項可以和除-P0)之外的任何發現探測型別-P* 選項結合使用以達到更大的靈活性, 一旦使用了任何探測型別和埠選項,默認的探測(ACK和回應請求)就被覆寫了, 當防守嚴密的防火墻位于運行Nmap的源主機和目標網路之間時, 推薦使用那些高級選項,否則,當防火墻捕獲并丟棄探測包或者回應包時,一些主機就不能被探測到,

 

-P0 (無ping)

該選項完全跳過Nmap發現階段, 通常Nmap在進行高強度的掃描時用它確定正在運行的機器, 默認情況下,Nmap只對正在運行的主機進行高強度的探測如 埠掃描,版本探測,或者作業系統探測,用-P0禁止 主機發現會使Nmap對每一個指定的目標IP地址 進行所要求的掃描,所以如果在命令列指定一個B類目標地址空間(/16), 所有 65,536 個IP地址都會被掃描, -P0的第二個字符是數字0而不是字母O, 和串列掃描一樣,跳過正常的主機發現,但不是列印一個目標串列, 而是繼續執行所要求的功能,就好像每個IP都是活動的,

 

-PS [portlist] (TCP SYN Ping)

該選項發送一個設定了SYN標志位的空TCP報文, 默認目的埠為80 (可以通過改變nmap.h) 檔案中的DEFAULT-TCP-PROBE-PORT值進行配置,但不同的埠也可以作為選項指定, 甚至可以指定一個以逗號分隔的埠串列(如 -PS22,23,25,80,113,1050,35000), 在這種情況下,每個埠會被并發地掃描,

 

SYN標志位告訴對方您正試圖建立一個連接, 通常目標埠是關閉的,一個RST (復位) 包會發回來, 如果碰巧埠是開放的,目標會進行TCP三步握手的第二步,回應 一個SYN/ACK TCP報文,然后運行Nmap的機器則會扼殺這個正在建立的連接, 發送一個RST而非ACK報文,否則,一個完全的連接將會建立, RST報文是運行Nmap的機器而不是Nmap本身回應的,因為它對收到 的SYN/ACK感到很意外,

 

Nmap并不關心埠開放還是關閉, 無論RST還是SYN/ACK回應都告訴Nmap該主機正在運行,

 

在UNIX機器上,通常只有特權用戶 root 能否發送和接收 原始的TCP報文,因此作為一個變通的方法,對于非特權用戶, Nmap會為每個目標主機進行系統呼叫connect(),它也會發送一個SYN 報文來嘗試建立連接,如果connect()迅速回傳成功或者一個ECONNREFUSED 失敗,下面的TCP堆疊一定已經收到了一個SYN/ACK或者RST,該主機將被 標志位為在運行, 如果連接超時了,該主機就標志位為down掉了,這種方法也用于IPv6 連接,因為Nmap目前還不支持原始的IPv6報文,

 

-PA [portlist] (TCP ACK Ping)

TCP ACK ping和剛才討論的SYN ping相當類似, 也許您已經猜到了,區別就是設定TCP的ACK標志位而不是SYN標志位, ACK報文表示確認一個建立連接的嘗試,但該連接尚未完全建立, 所以遠程主機應該總是回應一個RST報文, 因為它們并沒有發出過連接請求到運行Nmap的機器,如果它們正在運行的話,

 

-PA選項使用和SYN探測相同的默認埠(80),也可以 用相同的格式指定目標埠串列,如果非特權用戶嘗試該功能, 或者指定的是IPv6目標,前面說過的connect()方法將被使用, 這個方法并不完美,因為它實際上發送的是SYN報文,而不是ACK報文,

 

提供SYN和ACK兩種ping探測的原因是使通過防火墻的機會盡可能大, 許多管理員會配置他們的路由器或者其它簡單的防火墻來封鎖SYN報文,除非 連接目標是那些公開的服務器像公司網站或者郵件服務器, 這可以阻止其它進入組織的連接,同時也允許用戶訪問互聯網, 這種無狀態的方法幾乎不占用防火墻/路由器的資源,因而被硬體和軟體過濾器 廣泛支持,Linux Netfilter/iptables 防火墻軟體提供方便的 --syn選項來實作這種無狀態的方法, 當這樣的無狀態防火墻規則存在時,發送到關閉目標埠的SYN ping探測 (-PS) 很可能被封鎖,這種情況下,ACK探測格外有閃光點,因為它正好利用了 這樣的規則,

 

另外一種常用的防火墻用有狀態的規則來封鎖非預期的報文, 這一特性已開始只存在于高端防火墻,但是這些年類它越來越普遍了, Linux Netfilter/iptables 通過 --state選項支持這一特性,它根據連接狀態把報文 進行分類,SYN探測更有可能用于這樣的系統,由于沒頭沒腦的ACK報文 通常會被識別成偽造的而丟棄,解決這個兩難的方法是通過即指定 -PS又指定-PA來即發送SYN又發送ACK,

 

-PU [portlist] (UDP Ping)

還有一個主機發現的選項是UDP ping,它發送一個空的(除非指定了--data-length UDP報文到給定的埠,埠串列的格式和前面討論過的-PS和-PA選項還是一樣, 如果不指定埠,默認是31338,該默認值可以通過在編譯時改變nmap.h檔案中的 DEFAULT-UDP-PROBE-PORT值進行配置,默認使用這樣一個奇怪的埠是因為對開放埠 進行這種掃描一般都不受歡迎,

 

如果目標機器的埠是關閉的,UDP探測應該馬上得到一個ICMP埠無法到達的回應報文, 這對于Nmap意味著該機器正在運行, 許多其它型別的ICMP錯誤,像主機/網路無法到達或者TTL超時則表示down掉的或者不可到達的主機, 沒有回應也被這樣解釋,如果到達一個開放的埠,大部分服務僅僅忽略這個 空報文而不做任何回應,這就是為什么默認探測埠是31338這樣一個 極不可能被使用的埠,少數服務如chargen會回應一個空的UDP報文, 從而向Nmap表明該機器正在運行,

 

該掃描型別的主要優勢是它可以穿越只過濾TCP的防火墻和過濾器, 例如,我曾經有過一個Linksys BEFW11S4無線寬帶路由器,默認情況下, 該設備對外的網卡過濾所有TCP埠,但UDP探測仍然會引發一個埠不可到達 的訊息,從而暴露了它自己,

 

-PE; -PP; -PM (ICMP Ping Types)

除了前面討論的這些不常見的TCP和UDP主機發現型別, Nmap也能發送世人皆知的ping 程式所發送的報文,Nmap發送一個ICMP type 8 (回聲請求)報文到目標IP地址, 期待從運行的主機得到一個type 0 (回聲回應)報文, 對于網路探索者而言,不幸的是,許多主機和 防火墻現在封鎖這些報文,而不是按期望的那樣回應, 參見RFC 1122,因此,僅僅ICMP掃描對于互聯網上的目標通常是不夠的, 但對于系統管理員監視一個內部網路,它們可能是實際有效的途徑, 使用-PE選項打開該回聲請求功能,

 

雖然回聲請求是標準的ICMP ping查詢, Nmap并不止于此,ICMP標準 (RFC 792)還規范了時間戳請求,資訊請求 request,和地址掩碼請求,它們的代碼分別是13,15和17, 雖然這些查詢的表面目的是獲取資訊如地址掩碼和當前時間, 它們也可以很容易地用于主機發現, 很簡單,回應的系統就是在運行的系統,Nmap目前沒有實作資訊請求報文, 因為它們還沒有被廣泛支持,RFC 1122 堅持 “主機不應該實作這些訊息”, 時間戳和地址掩碼查詢可以分別用-PP和-PM選項發送, 時間戳回應(ICMP代碼14)或者地址掩碼回應(代碼18)表示主機在運行, 當管理員特別封鎖了回聲請求報文而忘了其它ICMP查詢可能用于 相同目的時,這兩個查詢可能很有價值,

 

-PR (ARP Ping)

最常見的Nmap使用場景之一是掃描一個以太局域網, 在大部分局域網上,特別是那些使用基于 RFC1918私有地址范圍的網路,在一個給定的時間絕大部分 IP地址都是不使用的, 當Nmap試圖發送一個原始IP報文如ICMP回聲請求時, 作業系統必須確定對應于目標IP的硬體 地址(ARP),這樣它才能把以太幀送往正確的地址, 這一般比較慢而且會有些問題,因為作業系統設計者認為一般不會在短時間內 對沒有運行的機器作幾百萬次的ARP請求,

 

當進行ARP掃描時,Nmap用它優化的演算法管理ARP請求, 當它收到回應時, Nmap甚至不需要擔心基于IP的ping報文,既然它已經知道該主機正在運行了, 這使得ARP掃描比基于IP的掃描更快更可靠, 所以默認情況下,如果Nmap發現目標主機就在它所在的局域網上,它會進行ARP掃描, 即使指定了不同的ping型別(如 -PI或者 -PS) ,Nmap也會對任何相同局域網上的目標機使用ARP, 如果您真的不想要ARP掃描,指定 --send-ip,

 

-n (不用域名決議)

告訴Nmap 永不對它發現的活動IP地址進行反向域名決議, 既然DNS一般比較慢,這可以讓事情更快些,

 

-R (為所有目標決議域名)

告訴Nmap 永遠 對目標IP地址作反向域名決議, 一般只有當發現機器正在運行時才進行這項操作,

 

--system-dns (使用系統域名決議器)

默認情況下,Nmap通過直接發送查詢到您的主機上配置的域名服務器 來決議域名,為了提高性能,許多請求 (一般幾十個 ) 并發執行,如果您希望使用系統自帶的決議器,就指定該選項 (通過getnameinfo()呼叫一次決議一個IP),除非Nmap的DNS代碼有bug--如果是這樣,請聯系我們, 一般不使用該選項,因為它慢多了,系統決議器總是用于IPv6掃描,

  1. 埠掃描基礎

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掃描中,

  1. 埠掃描技術

 

-sS (TCP SYN掃描)

SYN掃描作為默認的也是最受歡迎的掃描選項,是有充分理由的, 它執行得很快,在一個沒有入侵防火墻的快速網路上,每秒鐘可以掃描數千個 埠, SYN掃描相對來說不張揚,不易被注意到,因為它從來不完成TCP連接, 它也不像Fin/Null/Xmas,Maimon和Idle掃描依賴于特定平臺,而可以應對任何兼容的 TCP協議堆疊, 它還可以明確可靠地區分open(開放的), closed(關閉的),和filtered(被過濾的) 狀態

 

它常常被稱為半開放掃描, 因為它不打開一個完全的TCP連接,它發送一個SYN報文, 就像您真的要打開一個連接,然后等待回應, SYN/ACK表示埠在監聽 (開放),而 RST (復位)表示沒有監聽者,如果數次重發后仍沒回應, 該埠就被標記為被過濾,如果收到ICMP不可到達錯誤 (型別3,代碼1,2,3,9,10,或者13),該埠也被標記為被過濾,

 

-sT (TCP connect()掃描)

當SYN掃描不能用時,CP Connect()掃描就是默認的TCP掃描, 當用戶沒有權限發送原始報文或者掃描IPv6網路時,就是這種情況, Instead of writing raw packets as most other scan types do,Nmap通過創建connect() 系統呼叫要求作業系統和目標機以及埠建立連接,而不像其它掃描型別直接發送原始報文, 這是和Web瀏覽器,P2P客戶端以及大多數其它網路應用程式用以建立連接一樣的 高層系統呼叫,它是叫做Berkeley Sockets API編程介面的一部分,Nmap用 該API獲得每個連接嘗試的狀態資訊,而不是讀取回應的原始報文,

 

當SYN掃描可用時,它通常是更好的選擇,因為Nmap對高層的 connect()呼叫比對原始報文控制更少, 所以前者效率較低, 該系統呼叫完全連接到開放的目標埠而不是像SYN掃描進行 半開放的復位,這不僅花更長時間,需要更多報文得到同樣資訊,目標機也更可能 記錄下連接,IDS(入侵檢測系統)可以捕獲兩者,但大部分機器沒有這樣的警報系統, 當Nmap連接,然后不發送資料又關閉連接, 許多普通UNIX系統上的服務會在syslog留下記錄,有時候是一條加密的錯誤訊息, 此時,有些真正可憐的服務會崩潰,雖然這不常發生,如果管理員在日志里看到來自同一系統的 一堆連接嘗試,她應該知道她的系統被掃描了,

 

-sU (UDP掃描)

雖然互聯網上很多流行的服務運行在TCP 協議上,UDP服務也不少, DNS,SNMP,和DHCP (注冊的埠是53,161/162,和67/68)是最常見的三個, 因為UDP掃描一般較慢,比TCP更困難,一些安全審核人員忽略這些埠, 這是一個錯誤,因為可探測的UDP服務相當普遍,攻擊者當然不會忽略整個協議, 所幸,Nmap可以幫助記錄并報告UDP埠,

 

UDP掃描用-sU選項激活,它可以和TCP掃描如 SYN掃描 (-sS)結合使用來同時檢查兩種協議,

 

UDP掃描發送空的(沒有資料)UDP報頭到每個目標埠, 如果回傳ICMP埠不可到達錯誤(型別3,代碼3), 該埠是closed(關閉的), 其它ICMP不可到達錯誤(型別3, 代碼1,2,9,10,或者13)表明該埠是filtered(被過濾的), 偶爾地,某服務會回應一個UDP報文,證明該埠是open(開放的), 如果幾次重試后還沒有回應,該埠就被認為是 open|filtered(開放|被過濾的), 這意味著該埠可能是開放的,也可能包過濾器正在封鎖通信, 可以用版本掃描(-sV)幫助區分真正的開放埠和被過濾的埠,

 

UDP掃描的巨大挑戰是怎樣使它更快速, 開放的和被過濾的埠很少回應,讓Nmap超時然后再探測,以防探測幀或者 回應丟失,關閉的埠常常是更大的問題, 它們一般發回一個ICMP埠無法到達錯誤,但是不像關閉的TCP埠回應SYN或者Connect 掃描所發送的RST報文,許多主機在默認情況下限制ICMP埠不可到達訊息, Linux和Solaris對此特別嚴格,例如, Linux 2.4.20內核限制一秒鐘只發送一條目標不可到達訊息 (見net/ipv4/icmp,c),

 

Nmap探測速率限制并相應地減慢來避免用那些目標機會丟棄的無用報文來阻塞 網路,不幸的是,Linux式的一秒鐘一個報文的限制使65,536個埠的掃描要花 18小時以上,加速UDP掃描的方法包括并發掃描更多的主機,先只對主要埠進行快速 掃描,從防火墻后面掃描,使用--host-timeout跳過慢速的 主機,

 

-sN; -sF; -sX (TCP Null,FIN,and Xmas掃描)

這三種掃描型別 (甚至用下一節描述的 --scanflags 選項的更多型別) 在TCP RFC 中發掘了一個微妙的方法來區分open(開放的)和 closed(關閉的)埠,第65頁說“如果 [目標]埠狀態是關閉的.... 進入的不含RST的報文導致一個RST回應,” 接下來的一頁 討論不設定SYN,RST,或者ACK位的報文發送到開放埠: “理論上,這不應該發生,如果您確實收到了,丟棄該報文,回傳, ”

 

如果掃描系統遵循該RFC,當埠關閉時,任何不包含SYN,RST,或者ACK位的報文會導致 一個RST回傳,而當埠開放時,應該沒有任何回應,只要不包含SYN,RST,或者ACK, 任何其它三種(FIN,PSH,and URG)的組合都行,Nmap有三種掃描型別利用這一點:

 

Null掃描 (-sN)

不設定任何標志位(tcp標志頭是0)

 

FIN掃描 (-sF)

只設定TCP FIN標志位,

 

Xmas掃描 (-sX)

設定FIN,PSH,和URG標志位,就像點亮圣誕樹上所有的燈一樣,

 

除了探測報文的標志位不同,這三種掃描在行為上完全一致, 如果收到一個RST報文,該埠被認為是 closed(關閉的),而沒有回應則意味著 埠是open|filtered(開放或者被過濾的), 如果收到ICMP不可到達錯誤(型別 3,代號 1,2,3,9,10,或者13),該埠就被標記為 被過濾的,

 

這些掃描的關鍵優勢是它們能躲過一些無狀態防火墻和報文過濾路由器, 另一個優勢是這些掃描型別甚至比SYN掃描還要隱秘一些,但是別依賴它 -- 多數 現代的IDS產品可以發現它們,一個很大的不足是并非所有系統都嚴格遵循RFC 793, 許多系統不管埠開放還是關閉,都回應RST, 這導致所有埠都標記為closed(關閉的), 這樣的作業系統主要有Microsoft Windows,許多Cisco設備,BSDI,以及IBM OS/400, 但是這種掃描對多數UNIX系統都能作業,這些掃描的另一個不足是 它們不能辨別open(開放的)埠和一些特定的 filtered(被過濾的)埠,從而回傳 open|filtered(開放或者被過濾的),

 

-sA (TCP ACK掃描)

這種掃描與目前為止討論的其它掃描的不同之處在于 它不能確定open(開放的)或者 open|filtered(開放或者過濾的))埠, 它用于發現防火墻規則,確定它們是有狀態的還是無狀態的,哪些埠是被過濾的,

 

ACK掃描探測報文只設定ACK標志位(除非您使用 --scanflags),當掃描未被過濾的系統時, open(開放的)和closed(關閉的) 埠 都會回傳RST報文,Nmap把它們標記為 unfiltered(未被過濾的),意思是 ACK報文不能到達,但至于它們是open(開放的)或者 closed(關閉的) 無法確定,不回應的埠 或者發送特定的ICMP錯誤訊息(型別3,代號1,2,3,9,10, 或者13)的埠,標記為 filtered(被過濾的),

 

-sW (TCP視窗掃描)

除了利用特定系統的實作細節來區分開放埠和關閉埠,當收到RST時不總是列印unfiltered, 視窗掃描和ACK掃描完全一樣, 它通過檢查回傳的RST報文的TCP視窗域做到這一點, 在某些系統上,開放埠用正數表示視窗大小(甚至對于RST報文) 而關閉埠的視窗大小為0,因此,當收到RST時,視窗掃描不總是把埠標記為 unfiltered, 而是根據TCP視窗值是正數還是0,分別把埠標記為open或者 closed

 

該掃描依賴于互聯網上少數系統的實作細節, 因此您不能永遠相信它,不支持它的系統會通常回傳所有埠closed, 當然,一臺機器沒有開放埠也是有可能的, 如果大部分被掃描的埠是 closed,而一些常見的埠 (如 22, 25,53) 是 filtered,該系統就非常可疑了, 偶爾地,系統甚至會顯示恰恰相反的行為, 如果您的掃描顯示1000個開放的埠和3個關閉的或者被過濾的埠, 那么那3個很可能也是開放的埠,

 

-sM (TCP Maimon掃描)

Maimon掃描是用它的發現者Uriel Maimon命名的,他在 Phrack Magazine issue #49 (November 1996)中描述了這一技術, Nmap在兩期后加入了這一技術, 這項技術和Null,FIN,以及Xmas掃描完全一樣,除了探測報文是FIN/ACK, 根據RFC 793 (TCP),無論埠開放或者關閉,都應該對這樣的探測回應RST報文, 然而,Uriel注意到如果埠開放,許多基于BSD的系統只是丟棄該探測報文,

 

--scanflags (定制的TCP掃描)

真正的Nmap高級用戶不需要被這些現成的掃描型別束縛, --scanflags選項允許您通過指定任意TCP標志位來設計您自己的掃描, 讓您的創造力流動,躲開那些僅靠本手冊添加規則的入侵檢測系統!

 

--scanflags選項可以是一個數字標記值如9 (PSH和FIN), 但使用字符名更容易些, 只要是URG, ACK,PSH, RST,SYN,and FIN的任何組合就行,例如,--scanflags URGACKPSHRSTSYNFIN設定了所有標志位,但是這對掃描沒有太大用處, 標志位的順序不重要,

 

除了設定需要的標志位,您也可以設定 TCP掃描型別(如-sA或者-sF), 那個基本型別告訴Nmap怎樣解釋回應,例如, SYN掃描認為沒有回應意味著 filtered埠,而FIN掃描則認為是 open|filtered, 除了使用您指定的TCP標記位,Nmap會和基本掃描型別一樣作業, 如果您不指定基本型別,就使用SYN掃描,

 

-sI <zombie host[:probeport]> (Idlescan)

這種高級的掃描方法允許對目標進行真正的TCP埠盲掃描 (意味著沒有報文從您的真實IP地址發送到目標),相反,side-channel攻擊 利用zombie主機上已知的IP分段ID序列生成演算法來窺探目標上開放埠的資訊, IDS系統將顯示掃描來自您指定的zombie機(必須運行并且符合一定的標準), 這種奇妙的掃描型別太復雜了,不能在此完全描述,所以我寫一篇非正式的論文, 發布在https://nmap.org/book/idlescan.html,

 

除了極端隱蔽(由于它不從真實IP地址發送任何報文), 該掃描型別可以建立機器間的基于IP的信任關系, 埠串列從zombie 主機的角度,顯示開放的埠, 因此您可以嘗試用您認為(通過路由器/包過濾規則)可能被信任的 zombies掃描目標,

 

如果您由于IPID改變希望探測zombie上的特定埠, 您可以在zombie 主機后加上一個冒號和埠號, 否則Nmap會使用默認埠(80),

 

-sO (IP協議掃描)

IP 協議掃描可以讓您確定目標機支持哪些IP協議 (TCP,ICMP,IGMP,等等),從技術上說,這不是埠掃描 ,既然它遍歷的是IP協議號而不是TCP或者UDP埠號, 但是它仍使用 -p選項選擇要掃描的協議號, 用正常的埠表格式報告結果,甚至用和真正的埠掃描一樣 的掃描引擎,因此它和埠掃描非常接近,也被放在這里討論,

 

除了本身很有用,協議掃描還顯示了開源軟體的力量, 盡管基本想法非常簡單,我過去從沒想過增加這一功能也沒收到任何對它的請求, 在2000年夏天,Gerhard Rieger孕育了這個想法,寫了一個很棒的補丁程式,發送到nmap-hackers郵件串列, 我把那個補丁加入了Nmap,第二天發布了新版本, 幾乎沒有商業軟體會有用戶有足夠的熱情設計并貢獻他們的改進,

 

協議掃描以和UDP掃描類似的方式作業,它不是在UDP報文的埠域上回圈, 而是在IP協議域的8位上回圈,發送IP報文頭, 報文頭通常是空的,不包含資料,甚至不包含所申明的協議的正確報文頭 TCP,UDP,和ICMP是三個例外,它們三個會使用正常的協議頭,因為否則某些系 統拒絕發送,而且Nmap有函式創建它們,協議掃描不是注意ICMP埠不可到達訊息, 而是ICMP 協議不可到達訊息,如果Nmap從目標主機收到 任何協議的任何回應,Nmap就把那個協議標記為open, ICMP協議不可到達 錯誤(型別 3,代號 2) 導致協議被標記為 closed,其它ICMP不可到達協議(型別 3,代號 1,3,9,10,或者13) 導致協議被標記為 filtered (雖然同時他們證明ICMP是 open ),如果重試之后仍沒有收到回應, 該協議就被標記為open|filtered

 

-b <ftp relay host> (FTP彈跳掃描)

FTP協議的一個有趣特征(RFC 959) 是支持所謂代理ftp連接,它允許用戶連接到一臺FTP服務器,然后要求檔案送到一臺第三方服務器, 這個特性在很多層次上被濫用,所以許多服務器已經停止支持它了,其中一種就是導致FTP服務器對其它主機埠掃描, 只要請求FTP服務器輪流發送一個檔案到目標主機上的所感興趣的埠, 錯誤訊息會描述埠是開放還是關閉的, 這是繞過防火墻的好方法,因為FTP服務器常常被置于可以訪問比Web主機更多其它內部主機的位置, Nmap用-b選項支持ftp彈跳掃描,引數格式是 <username>:<password>@<server>:<port>, <Server> 是某個脆弱的FTP服務器的名字或者IP地址, 您也許可以省略<username>:<password>, 如果服務器上開放了匿名用戶(user:anonymous password:-wwwuser@), 埠號(以及前面的冒號) 也可以省略,如果<server>使用默認的FTP埠(21),

 

當Nmap1997年發布時,這個弱點被廣泛利用,但現在大部分已經被fix了, 脆弱的服務器仍然存在,所以如果其它都失敗了,這也值得一試, 如果您的目標是繞過防火墻,掃描目標網路上的開放的21埠(或者 甚至任何ftp服務,如果您用版本探測掃描所有埠), 然后對每個嘗試彈跳掃描,Nmap會告訴您該主機脆弱與否, 如果您只是試著玩Nmap,您不必(事實上,不應該)限制您自己, 在您隨機地在互聯網上尋找脆弱的FTP服務器時,考慮一下系統管理員不太喜歡您這樣濫用他們的服務器,

  1. 掃描順序

-p <port ranges> (只掃描指定的埠)

該選項指明您想掃描的埠,覆寫默認值, 單個埠和用連字符表示的埠范圍(如 1-1023)都可以, 范圍的開始以及/或者結束值可以被省略, 分別導致Nmap使用1和65535,所以您可以指定 -p-從埠1掃描到65535, 如果您特別指定,也可以掃描埠0, 對于IP協議掃描(-sO),該選項指定您希望掃描的協議號 (0-255),

 

當既掃描TCP埠又掃描UDP埠時,您可以通過在埠號前加上T: 或者U:指定協議, 協議限定符一直有效您直到指定另一個, 例如,引數 -p U:53,111,137,T:21-25,80,139,8080 將掃描UDP 埠53,111,和137,同時掃描列出的TCP埠,注意,要既掃描 UDP又掃描TCP,您必須指定 -sU ,以及至少一個TCP掃描型別(如 -sS,-sF,或者 -sT),如果沒有給定協議限定符, 埠號會被加到所有協議串列,

 

-F (快速 (有限的埠) 掃描)

在nmap的nmap-services 檔案中(對于-sO,是協議檔案)指定您想要掃描的埠, 這比掃描所有65535個埠快得多, 因為該串列包含如此多的TCP埠(1200多),這和默認的TCP掃描 scan (大約1600個埠)速度差別不是很大,如果您用--datadir選項指定您自己的 小小的nmap-services檔案 ,差別會很驚人,

 

-r (不要按隨機順序掃描埠)

默認情況下,Nmap按隨機順序掃描埠 (除了出于效率的考慮,常用的埠前移),這種隨機化通常都是受歡迎的, 但您也可以指定-r來順序埠掃描,

  1. 服務和版本探索

-sV (版本探測)

打開版本探測, 您也可以用-A同時打開作業系統探測和版本探測,

 

--allports (不為版本探測排除任何埠)

默認情況下,Nmap版本探測會跳過9100 TCP埠,因為一些列印機簡單地列印送到該埠的 任何資料,這回導致數十頁HTTP get請求,二進制 SSL會話請求等等被列印出來,這一行為可以通過修改或洗掉nmap-service-probes 中的Exclude指示符改變, 您也可以不理會任何Exclude指示符,指定--allports掃描所有埠

 

--version-intensity <intensity> (設定 版本掃描強度)

當進行版本掃描(-sV)時,nmap發送一系列探測報文 ,每個報文都被賦予一個1到9之間的值, 被賦予較低值的探測報文對大范圍的常見服務有效,而被賦予較高值的報文 一般沒什么用,強度水平說明了應該使用哪些探測報文,數值越高, 服務越有可能被正確識別, 然而,高強度掃描花更多時間,強度值必須在0和9之間, 默認是7,當探測報文通過nmap-service-probes ports指示符 注冊到目標埠時,無論什么強度水平,探測報文都會被嘗試,這保證了DNS 探測將永遠在任何開放的53埠嘗試, SSL探測將在443埠嘗試,等等,

 

--version-light (打開輕量級模式)

這是 --version-intensity 2的方便的別名,輕量級模式使 版本掃描快許多,但它識別服務的可能性也略微小一點,

 

--version-all (嘗試每個探測)

--version-intensity 9的別名, 保證對每個埠嘗試每個探測報文,

 

--version-trace (跟蹤版本掃描活動)

這導致Nmap列印出詳細的關于正在進行的掃描的除錯資訊, 它是您用--packet-trace所得到的資訊的子集,

 

-sR (RPC掃描)

這種方法和許多埠掃描方法聯合使用, 它對所有被發現開放的TCP/UDP埠執行SunRPC程式NULL命令,來試圖 確定它們是否RPC埠,如果是, 是什么程式和版本號,因此您可以有效地獲得和rpcinfo -p一樣的資訊, 即使目標的埠映射在防火墻后面(或者被TCP包裝器保護),Decoys目前不能和RPC scan一起作業, 這作為版本掃描(-sV)的一部分自動打開, 由于版本探測包括它并且全面得多,-sR很少被需要,

  1. 作業系統探測

-O (啟用作業系統檢測)

也可以使用-A來同時啟用作業系統檢測和版本檢測,

 

--osscan-limit (針對指定的目標進行作業系統檢測)

如果發現一個打開和關閉的TCP埠時,作業系統檢測會更有效, 采用這個選項,Nmap只對滿足這個條件的主機進行作業系統檢測,這樣可以 節約時間,特別在使用-P0掃描多個主機時,這個選項僅在使用 -O或-A 進行作業系統檢測時起作用,

 

--osscan-guess; --fuzzy (推測作業系統檢測結果)

當Nmap無法確定所檢測的作業系統時,會盡可能地提供最相近的匹配,Nmap默認 進行這種匹配,使用上述任一個選項使得Nmap的推測更加有效,

  1. 時間和性能

--min-hostgroup <milliseconds>; --max-hostgroup <milliseconds> (調整并行掃描組的大小)

Nmap具有并行掃描多主機埠或版本的能力,Nmap將多個目標IP地址 空間分成組,然后在同一時間對一個組進行掃描,通常,大的組更有效,缺 點是只有當整個組掃描結束后才會提供主機的掃描結果,如果組的大小定義 為50,則只有當前50個主機掃描結束后才能得到報告(詳細模式中的補充資訊 除外),

 

默認方式下,Nmap采取折衷的方法,開始掃描時的組較小, 最小為5,這樣便于盡快產生結果;隨后增長組的大小,最大為1024,確切的 大小依賴于所給定的選項,為保證效率,針對UDP或少量埠的TCP掃描,Nmap 使用大的組,

 

--max-hostgroup選項用于說明使用最大的組,Nmap不 會超出這個大小,--min-hostgroup選項說明最小的組,Nmap 會保持組大于這個值,如果在指定的介面上沒有足夠的目標主機來滿足所 指定的最小值,Nmap可能會采用比所指定的值小的組,這兩個引數雖然很少使用, 但都用于保持組的大小在一個指定的范圍之內,

 

這些選項的主要用途是說明一個最小組的大小,使得整個掃描更加快速,通常 選擇256來掃描C類網段,對于埠數較多的掃描,超出該值沒有意義,對于 埠數較少的掃描,2048或更大的組大小是有幫助的,

 

--min-parallelism <milliseconds>; --max-parallelism <milliseconds> (調整探測報文的并行度)

這些選項控制用于主機組的探測報文數量,可用于埠掃描和主機發現,默認狀態下, Nmap基于網路性能計算一個理想的并行度,這個值經常改變,如果報文被丟棄, Nmap降低速度,探測報文數量減少,隨著網路性能的改善,理想的探測報文數量會緩慢增加, 這些選項確定這個變數的大小范圍,默認狀態下,當網路不可靠時,理想的并行度值 可能為1,在好的條件下,可能會增長至幾百,

 

最常見的應用是--min-parallelism值大于1,以加快 性能不佳的主機或網路的掃描,這個選項具有風險,如果過高則影響準確度,同時 也會降低Nmap基于網路條件動態控制并行度的能力,這個值設為10較為合適, 這個值的調整往往作為最后的手段,

 

--max-parallelism選項通常設為1,以防止Nmap在同一時間 向主機發送多個探測報文,和選擇--scan-delay同時使用非常有用,雖然 這個選項本身的用途已經很好,

 

--min-rtt-timeout <milliseconds>, --max-rtt-timeout <milliseconds>, --initial-rtt-timeout <milliseconds> (調整探測報文超時)

Nmap使用一個運行超時值來確定等待探測報文回應的時間,隨后會放棄或重新 發送探測報文,Nmap基于上一個探測報文的回應時間來計算超時值,如果網路延遲比較顯著 和不定,這個超時值會增加幾秒,初始值的比較保守(高),而當Nmap掃描無回應 的主機時,這個保守值會保持一段時間,

 

這些選項以毫秒為單位,采用小的--max-rtt-timeout值,使 --initial-rtt-timeout值大于默認值可以明顯減少掃描時間,特別 是對不能ping通的掃描(-P0)以及具有嚴格過濾的網路,如果使用太 小的值,使得很多探測報文超時從而重新發送,而此時可能回應訊息正在發送,這使得整個掃描的時 間會增加,

 

如果所有的主機都在本地網路,對于--max-rtt-timeout值來 說,100毫秒比較合適,如果存在路由,首先使用ICMP ping工具ping主機,或使用其 它報文工具如hpings,可以更好地穿透防火墻,查看大約10個包的最大往返時間,然后將 --initial-rtt-timeout設成這個時間的2倍,--max-rtt-timeout 可設成這個時間值的3倍或4倍,通常,不管ping的時間是多少,最大的rtt值不得小于100ms, 不能超過1000ms,

 

--min-rtt-timeout這個選項很少使用,當網路不可靠時, Nmap的默認值也顯得過于強烈,這時這個選項可起作用,當網路看起來不可靠時,Nmap僅將 超時時間降至最小值,這個情況是不正常的,需要向nmap-dev郵件串列報告bug,

 

--host-timeout <milliseconds> (放棄低速目標主機)

由于性能較差或不可靠的網路硬體或軟體、帶寬限制、嚴格的防火墻等原因, 一些主機需要很長的時間掃描,這些極少數的主機掃描往往占 據了大部分的掃描時間,因此,最好的辦法是減少時間消耗并且忽略這些主機,使用 --host-timeout選項來說明等待的時間(毫秒),通常使用1800000 來保證Nmap不會在單個主機上使用超過半小時的時間,需要注意的是,Nmap在這半小時中可以 同時掃描其它主機,因此并不是完全放棄掃描,超時的主機被忽略,因此也沒有針對該主機的 埠表、作業系統檢測或版本檢測結果的輸出,

 

--scan-delay <milliseconds>; --max-scan-delay <milliseconds> (調整探測報文的時間間隔)

這個選項用于Nmap控制針對一個主機發送探測報文的等待時間(毫秒),在帶寬 控制的情況下這個選項非常有效,Solaris主機在回應UDP掃描探測報文報文時,每秒 只發送一個ICMP訊息,因此Nmap發送的很多數探測報文是浪費的,--scan-delay 設為1000,使Nmap低速運行,Nmap嘗試檢測帶寬控制并相應地調整掃描的延遲,但 并不影響明確說明何種速度作業最佳,

 

--scan-delay的另一個用途是躲倍訓于閾值的入侵檢測和預防 系統(IDS/IPS),

 

-T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane> (設定時間模板)

上述優化時間控制選項的功能很強大也很有效,但有些用戶會被迷惑,此外, 往往選擇合適引數的時間超過了所需優化的掃描時間,因此,Nmap提供了一些簡單的 方法,使用6個時間模板,使用時采用-T選項及數字(0 - 5) 或名稱,模板名稱有paranoid (0)、sneaky (1)、polite (2)、normal(3)、 aggressive (4)和insane (5),前兩種模式用于IDS躲避,Polite模式降低了掃描 速度以使用更少的帶寬和目標主機資源,默認模式為Normal,因此-T3 實際上是未做任何優化,Aggressive模式假設用戶具有合適及可靠的網路從而加速 掃描,Insane模式假設用戶具有特別快的網路或者愿意為獲得速度而犧牲準確性,

 

用戶可以根據自己的需要選擇不同的模板,由Nmap負責選擇實際的時間值, 模板也會針對其它的優化控制選項進行速度微調,例如,-T4 針對TCP埠禁止動態掃描延遲超過10ms,-T5對應的值為5ms, 模板可以和優化調整控制選項組合使用,但模板必須首先指定,否則模板的標準值 會覆寫用戶指定的值,建議在掃描可靠的網路時使用 -T4,即使 在自己要增加優化控制選項時也使用(在命令列的開始),從而從這些額外的較小的優化 中獲益,

 

如果用于有足夠的帶寬或以太網連接,仍然建議使用-T4選項, 有些用戶喜歡-T5選項,但這個過于強烈,有時用戶考慮到避免使主機 崩潰或者希望更禮貌一些會采用-T2選項,他們并沒意識到-T Polite選項是如何的慢,這種模式的掃描比默認方式實際上要多花10倍的時間,默認時間 選項(-T3)很少有主機崩潰和帶寬問題,比較適合于謹慎的用戶,不進行 版本檢測比進行時間調整能更有效地解決這些問題,

 

雖然-T0和-T1選項可能有助于避免IDS告警,但 在進行上千個主機或埠掃描時,會顯著增加時間,對于這種長時間的掃描,寧可設定確切的時間 值,而不要去依賴封裝的-T0和-T1選項,

 

T0選項的主要影響是對于連續掃描,在一個時間只能掃描一個埠, 每個探測報文的發送間隔為5分鐘,T1和T2選項比較類似, 探測報文間隔分別為15秒和0.4秒,T3是Nmap的默認選項,包含了并行掃描, T4選項與 --max-rtt-timeout 1250 --initial-rtt-timeout 500 等價,最大TCP掃描延遲為10ms,T5等價于 --max-rtt-timeout 300 --min-rtt-timeout 50 --initial-rtt-timeout 250 --host-timeout 900000,最大TCP掃描延遲為5ms,

  1. 防火墻/IDS躲避和哄騙

-f (報文分段); --mtu (使用指定的MTU)

-f選項要求掃描時(包挺ping掃描)使用 小的IP包分段,其思路是將TCP頭分段在幾個包中,使得包過濾器、 IDS以及其它工具的檢測更加困難,必須小心使用這個選項,有些系 統在處理這些小包時存在問題,例如舊的網路嗅探器Sniffit在接收 到第一個分段時會立刻出現分段錯誤,該選項使用一次,Nmap在IP 頭后將包分成8個位元組或更小,因此,一個20位元組的TCP頭會被分成3個 包,其中2個包分別有TCP頭的8個位元組,另1個包有TCP頭的剩下4個字 節,當然,每個包都有一個IP頭,再次使用-f可使用 16位元組的分段(減少分段數量),使用--mtu選項可 以自定義偏移的大小,使用時不需要-f,偏移量必須 是8的倍數,包過濾器和防火墻對所有的IP分段排隊,如Linux核心中的 CONFIG-IP-ALWAYS-DEFRAG配置項,分段包不會直接使用,一些網路無法 承受這樣所帶來的性能沖擊,會將這個配置禁止,其它禁止的原因有分段 包會通過不同的路由進入網路,一些源系統在內核中對發送的報文進行 分段,使用iptables連接跟蹤模塊的Linux就是一個例子,當使用類似Ethereal 的嗅探器時,掃描必須保證發送的報文要分段,如果主機作業系統會產 生問題,嘗試使用--send-eth選項以避開IP層而直接 發送原始的以太網幀,

 

-D <decoy1 [,decoy2][,ME],...> (使用誘餌隱蔽掃描)

為使誘餌掃描起作用,需要使遠程主機認為是誘餌在掃描目標網路, IDS可能會報個某個IP的5-10個埠掃描,但并不知道哪個IP在掃描以及 哪些不是誘餌,但這種方式可以通過路由跟蹤、回應丟棄以及其它主動 機制在解決,這是一種常用的隱藏自身IP地址的有效技術,

 

使用逗號分隔每個誘餌主機,也可用自己的真實IP作為誘餌,這時可使用 ME選項說明,如果在第6個位置或 更后的位置使用ME選項,一些常用 埠掃描檢測器(如Solar Designer's excellent scanlogd)就不會報告 這個真實IP,如果不使用ME選項,Nmap 將真實IP放在一個隨機的位置

 

注意,作為誘餌的主機須在作業狀態,否則會導致目標主機的SYN洪水攻擊, 如果在網路中只有一個主機在作業,那就很容易確定哪個主機在掃描,也可 使用IP地址代替主機名(被誘騙的網路就不可能在名字服務器日志中發現),

 

誘餌可用在初始的ping掃描(ICMP、SYN、ACK等)階段或真正的埠掃描 階段,誘餌也可以用于遠程作業系統檢測(-O),在進行版 本檢測或TCP連接掃描時,誘餌無效,

 

使用過多的誘餌沒有任何價值,反而導致掃描變慢并且結果不準確, 此外,一些ISP會過濾哄騙的報文,但很多對欺騙IP包沒有任何限制,

 

-S <IP_Address> (源地址哄騙)

在某些情況下,Nmap可能無法確定你的源地址(如果這樣,Nmap會給出 提示),此時,使用-S選項并說明所需發送包的介面IP地址,

 

這個標志的另一個用處是哄騙性的掃描,使得目標認為是另 一個地址在進行掃描,可以想象某一個競爭對手在不斷掃描某個公司! -e選項常在這種情況下使用,也可采用-P0選項,

 

-e <interface> (使用指定的介面)

告訴Nmap使用哪個介面發送和接收報文,Nmap可以進行自動檢測, 如果檢測不出會給出提示,

 

--source-port <portnumber>; -g <portnumber> (源埠哄騙)

僅依賴于源埠號就信任資料流是一種常見的錯誤配置,這個問題非常 好理解,例如一個管理員部署了一個新的防火墻,但招來了很多用戶的不滿,因為 他們的應用停止作業了,可能是由于外部的UDP DNS服務器回應無法進入網路,而導致 DNS的崩潰,FTP是另一個常見的例子,在FTP傳輸時,遠程服務器嘗試和內部用 建立連接以傳輸資料,

 

對這些問題有安全解決方案,通常是應用級代理或協議分析防火墻模塊, 但也存在一些不安全的方案,注意到DNS回應來自于53埠,FTP連接 來自于20埠,很多管理員會掉入一個陷阱,即允許來自于這些埠的資料進入 網路,他們認為這些埠里不會有值得注意的攻擊和漏洞利用,此外,管理員 或許認為這是一個短期的措施,直至他們采取更安全的方案,但他們忽視了安全的 升級,

 

不僅僅是作業量過多的網路管理員掉入這種陷阱,很多產品本身也會有這類 不安全的隱患,甚至是微軟的產品,Windows 2000和Windows XP中包含的IPsec過濾 器也包含了一些隱含規則,允許所有來自88埠(Kerberos)的TCP和UDP資料流,另 一個常見的例子是Zone Alarm個人防火墻到2.1.25版本仍然允許源埠53(DNS)或 67(DHCP)的UDP包進入,

 

Nmap提供了-g和--source-port選項(它們是 等價的),用于利用上述弱點,只需要提供一個埠號,Nmap就可以從這些 埠發送資料,為使特定的作業系統正常作業,Nmap必須使用不同的埠號, DNS請求會忽略--source-port選項,這是因為Nmap依靠系 統庫來處理,大部分TCP掃描,包括SYN掃描,可以完全支持這些選項,UDP掃 描同樣如此,

 

--data-length <number> (發送報文時 附加隨機資料)

正常情況下,Nmap發送最少的報文,只含一個包頭,因此TCP包通常 是40位元組,ICMP ECHO請求只有28位元組,這個選項告訴Nmap在發送的報文上 附加指定數量的隨機位元組,作業系統檢測(-O)包不受影響, 但大部分ping和埠掃描包受影響,這會使處理變慢,但對掃描的影響較小,

 

--ttl <value> (設定IP time-to-live域)

設定IPv4報文的time-to-live域為指定的值,

 

--randomize-hosts (對目標主機的順序隨機排列)

告訴Nmap在掃描主機前對每個組中的主機隨機排列,最多可達 8096個主機,這會使得掃描針對不同的網路監控系統來說變得不是很 明顯,特別是配合值較小的時間選項時更有效,如果需要對一個較大 的組進行隨機排列,需要增大nmap.h檔案中 PING-GROUP-SZ的值,并重新編譯,另一種方法是使用串列掃描 (-sL -n -oN <filename>),產生目標IP的串列, 使用Perl腳本進行隨機化,然后使用-iL提供給Nmap,

 

--spoof-mac <mac address,prefix,or vendor name> (MAC地址哄騙)

要求Nmap在發送原以太網幀時使用指定的MAC地址,這個選項隱含了 --send-eth選項,以保證Nmap真正發送以太網包,MAC地址有幾 種格式,如果簡單地使用字串“0”,Nmap選擇一個完全隨機的MAC 地址,如果給定的字符品是一個16進制偶數(使用:分隔),Nmap將使用這個MAC地址, 如果是小于12的16進制數字,Nmap會隨機填充剩下的6個位元組,如果引數不是0或16進 制字串,Nmap將通過nmap-mac-prefixes查找 廠商的名稱(大小寫區分),如果找到匹配,Nmap將使用廠商的OUI(3位元組前綴),然后 隨機填充剩余的3個節字,正確的--spoof-mac引數有, Apple, 0,01:02:03:04:05:06, deadbeefcafe,0020F2, 和Cisco.

  1. 輸出

-oN <filespec> (標準輸出)

要求將標準輸出直接寫入指定 的檔案,如上所述,這個格式與互動式輸出 略有不同,

 

-oX <filespec> (XML輸出)

要求XML輸出直接寫入指定 的檔案,Nmap包含了一個檔案型別定義(DTD),使XML決議器有效地 進行XML輸出,這主要是為了程式應用,同時也可以協助人工解釋 Nmap的XML輸出,DTD定義了合法的格式元素,列舉可使用的屬性和 值,最新的版本可在 http://www.insecure.org/nmap/data/nmap.dtd獲取,

 

XML提供了可供軟體決議的穩定格式輸出,主要的計算機 語言都提供了免費的XML決議器,如C/C++,Perl,Python和Java, 針對這些語言有一些捆綁代碼用于處理Nmap的輸出和特定的執行程式, 例如perl CPAN中的Nmap::Scanner 和Nmap::Parser, 對幾乎所有與Nmap有介面的主要應用來說,XML是首選的格式,

 

XML輸出參考了一個XSL樣式表,用于格式化輸出結果,類似于 HTML,最方便的方法是將XML輸出加載到一個Web瀏覽器,如Firefox 或IE,由于nmap.xsl檔案的絕對 路徑,因此通常只能在運行了Nmap的機器上作業(或類似配置的機器), 類似于任何支持Web機器的HTML檔案,--stylesheet 選項可用于建立可移植的XML檔案,

 

-oS <filespec> (ScRipT KIdd|3 oUTpuT)

腳本小子輸出類似于互動工具輸出,這是一個事后處理,適合于 'l33t HaXXorZ, 由于原來全都是大寫的Nmap輸出,這個選項和腳本小子開了玩笑,看上去似乎是為了 “幫助他們”,

 

-oG <filespec> (Grep輸出)

這種方式最后介紹,因為不建議使用,XML輸格式很強大,便于有經驗 的用戶使用,XML是一種標準,由許多決議器構成,而Grep輸屆更簡化,XML 是可擴展的,以支持新發布的Nmap特點,使用Grep輸出的目的是忽略這些 特點,因為沒有足夠的空間,

 

然面,Grep輸出仍然很常使用,它是一種簡單格式,每行一個主機,可以 通過UNIX工具(如grep、awk、cut、sed、diff)和Perl方便地查找和分解,常可 用于在命令列上進行一次性測式,查找ssh埠打開或運行Sloaris的主機,只需 要一個簡單的grep主機說明,使用通道并通過awk或cut命令列印所需的域,

 

Grep輸出可以包含注釋(每行由#號開始),每行由6個標記的域組成,由制表符及 冒號分隔,這些域有主機,埠, 協議,忽略狀態, 作業系統,序列號, IPID和狀態,

 

這些域中最重要的是Ports,它提供 了所關注的埠的細節,埠項由逗號分隔,每個埠項代表一個所關注的埠, 每個子域由/分隔,這些子域有:埠號, 狀態,協議, 擁有者,服務, SunRPCinfo和版本資訊,

 

對于XML輸出,本手冊無法列舉所有的格式,有關Nmap Grep輸出的更詳細資訊可 查閱http://www.unspecific.com/nmap-oG-output,

 

-oA <basename> (輸出至所有格式)

為使用方便,利用-oA<basename>選項 可將掃描結果以標準格式、XML格式和Grep格式一次性輸出,分別存放在 <basename>.nmap,<basename>.xml和 <basename>.gnmap檔案中,也可以在檔案名前 指定目錄名,如在UNIX中,使用~/nmaplogs/foocorp/, 在Window中,使用c:\hacking\sco on Windows,

 

細節和除錯選項

 

-v (提高輸出資訊的詳細度)

通過提高詳細度,Nmap可以輸出掃描程序的更多資訊, 輸出發現的打開埠,若Nmap認為掃描需要更多時間會顯示估計 的結束時間,這個選項使用兩次,會提供更詳細的資訊,這個選 項使用兩次以上不起作用,

 

大部分的變化僅影響互動式輸出,也有一些影響標準和腳本 小子輸出,其它輸出型別由機器處理,此時Nmap默認提供詳細的信 息,不需要人工干預,然而,其它模式也會有一些變化,省略一些 細節可以減小輸出大小,例如,Grep輸出中的注釋行提供所有掃描 埠串列,但由于這些資訊過長,因此只能在細節模式中輸出,

 

-d [level] (提高或設定除錯級別)

當詳細模式也不能為用戶提供足夠的資料時,使用除錯可以得到更 多的資訊,使用細節選項(-v)時,可啟用命令列引數 (-d),多次使用可提高除錯級別,也可在-d 后面使用引數設定除錯級別,例如,-d9設定級別9,這是 最高的級別,將會產生上千行的輸出,除非只對很少的埠和目標進行簡單掃描,

 

如果Nmap因為Bug而掛起或者對Nmap的作業及原理有疑問,除錯輸出 非常有效,主要是開發人員用這個選項,除錯行不具備自我解釋的特點, 例如,Timeoutvals: srtt: -1 rttvar: -1 to: 1000000 delta 14987 ==> srtt: 14987 rttvar: 14987 to: 100000,如果對某行輸出不明白, 可以忽略、查看源代碼或向開發串列(nmap-dev)求助,有些輸出行會有自 我解釋的特點,但隨著除錯級別的升高,會越來越含糊,

 

--packet-trace (跟蹤發送和接收的報文)

要求Nmap列印發送和接收的每個報文的摘要,通常用于 除錯,有助于新用戶更好地理解Nmap的真正作業,為避免輸出過 多的行,可以限制掃描的埠數,如-p20-30, 如果只需進行版本檢測,使用--version-trace,

 

--iflist (列舉介面和路由)

輸出Nmap檢測到的介面串列和系統路由,用于除錯路由 問題或設備描述失誤(如Nmap把PPP連接當作以太網對待),

 

其它輸出選項

 

--append-output (在輸出檔案中添加)

當使用檔案作為輸出格式,如-oX或-oN, 默認該檔案被覆寫,如果希望檔案保留現有內容,將結果添加在現 有檔案后面,使用--append-output選項,所有指 定的輸出檔案都被添加,但對于XML(-oX)掃描輸出 檔案無效,無法正常決議,需要手工修改,

 

--resume <filename> (繼續中斷的掃描)

一些擴展的Nmap運行需要很長的時間 -- 以天計算,這類掃描 往往不會結束,可以進行一些限制,禁止Nmap在作業時間運行,導致 網路中斷、運行Nmap的主機計劃或非計劃地重啟、或者Nmap自己中斷, 運行Nmap的管理員可以因其它原因取消運行,按下ctrl-C 即可,從頭開始啟動掃描可能令人不快,幸運的是,如果標準掃描 (-oN)或Grep掃描(-oG)日志 被保留,用戶可以要求Nmap恢復終止的掃描,只需要簡單地使用選項 --resume并說明標準/Grep掃描輸出檔案,不允許 使用其它引數,Nmap會決議輸出檔案并使用原來的格式輸出,使用方式 如nmap --resume <logfilename>, Nmap將把新地結果添加到檔案中,這種方式不支持XML輸出格式,原因是 將兩次運行結果合并至一個XML檔案比較困難,

 

--stylesheet <path or URL> (設定XSL樣式表,轉換XML輸出)

Nmap提從了XSL樣式表nmap.xsl,用于查看 或轉換XML輸出至HTML,XML輸出包含了一個xml-stylesheet, 直接指向nmap.xml檔案, 該檔案由Nmap安裝(或位于Windows當前作業目錄),在Web瀏覽器 中打開Nmap的XML輸出時,將會在檔案系統中尋找nmap.xsl檔案, 并使用它輸出結果,如果希望使用不同的樣式表,將它作為 --stylesheet的引數,必段指明完整的路 徑或URL,常見的呼叫方式是--stylesheet http://www.insecure.org/nmap/data/nmap.xsl, 這告訴瀏覽器從Insecire.Org中加載最新的樣式表,這使得 沒安裝Nmap(和nmap.xsl) 的機器中可以方便地查看結果,因此,URL更方便使用,本地檔案系統 的nmap.xsl用于默認方式,

 

--no-stylesheet (忽略XML宣告的XSL樣式表)

使用該選項禁止Nmap的XML輸出關聯任何XSL樣式表, xml-stylesheet指示被忽略,

  1. 其它選項

-6 (啟用IPv6掃描)

從2002年起,Nmap提供對IPv6的一些主要特征的支持,ping掃描(TCP-only)、 連接掃描以及版本檢測都支持IPv6,除增加-6選項外, 其它命令語法相同,當然,必須使用IPv6地址來替換主機名,如 3ffe:7501:4819:2000:210:f3ff:fe03:14d0, 除“所關注的埠”行的地址部分為IPv6地址,

 

IPv6目前未在全球廣泛采用,目前在一些國家(亞洲)應用較多, 一些高級作業系統支持IPv6,使用Nmap的IPv6功能,掃描的源和目 的都需要配置IPv6,如果ISP(大部分)不分配IPv6地址,Nmap可以采用 免費的隧道代理,一種較好的選擇是BT Exact,位于https://tb.ipv6.btexact.com/, 此外,還有Hurricane Electric,位于http://ipv6tb.he.net/,6to4隧道是 另一種常用的免費方法,

 

-A (激烈掃描模式選項)

這個選項啟用額外的高級和高強度選項,目前還未確定代表 的內容,目前,這個選項啟用了作業系統檢測(-O) 和版本掃描(-sV),以后會增加更多的功能, 目的是啟用一個全面的掃描選項集合,不需要用戶記憶大量的 選項,這個選項僅僅啟用功能,不包含用于可能所需要的 時間選項(如-T4)或細節選項(-v),

 

--datadir <directoryname> (說明用戶Nmap資料檔案位置)

Nmap在運行時從檔案中獲得特殊的資料,這些檔案有 nmap-service-probes, nmap-services, nmap-protocols, nmap-rpc, nmap-mac-prefixes和 nmap-os-fingerprints,Nmap首先 在--datadir選項說明的目錄中查找這些檔案, 未找到的檔案,將在BMAPDIR環境變數說明的目錄中查找, 接下來是用于真正和有效UID的~/.nmap 或Nmap可執行代碼的位置(僅Win32);然后是是編譯位置, 如/usr/local/share/nmap 或/usr/share/nmap, Nmap查找的最后一個位置是當前目錄,

 

--send-eth (使用原以太網幀發送)

要求Nmap在以太網(資料鏈路)層而不是IP(網路層)發送 報文,默認方式下,Nmap選擇最適合其運行平臺的方式,原套接 字(IP層)是UNIX主機最有效的方式,而以太網幀最適合Windows操作 系統,因為Microsoft禁用了原套接字支持,在UNIX中,如果沒有其 它選擇(如無以太網連接),不管是否有該選項,Nmap都使用原IP包,

 

--send-ip (在原IP層發送)

要求Nmap通過原IP套接字發送報文,而不是低層的以 太網幀,這是--send-eth選項的補充,

 

--privileged (假定用戶具有全部權限)

告訴Nmap假定其具有足夠的權限進行源套接字包發送、 報文捕獲和類似UNIX系統中根用戶操作的權限,默認狀態下, 如果由getuid()請求的類似操作不為0,Nmap將退出, --privileged在具有Linux內核性能的類似 系統中使用非常有效,這些系統配置允許非特權用戶可以進行 原報文掃描,需要明確的是,在其它選項之前使用這些需要權 限的選項(SYN掃描、作業系統檢測等),Nmap-PRIVILEGED變數 設定等價于--privileged選項,

 

-V; --version (列印版本資訊)

列印Nmap版本號并退出,

 

-h; --help (列印幫助摘要面)

列印一個短的幫助螢屏,列出大部分常用的 命令選項,這個功能與不帶引數運行Nmap是相同的,

  1. 運行時的互動

v / V

增加 / 減少細節

 

d / D

提高 / 降低除錯級別

 

p / P

打開/ 養老報文跟蹤

 

其它

列印的資訊類似于:

 

Stats: 0:00:08 elapsed; 111 hosts completed (5 up), 5 undergoing Service Scan

 

Service scan Timing: About 28.00% done; ETC: 16:18 (0:00:15 remaining)

  1. 實體

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 -- 其它系統進行區域傳輸時有不同的命令,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/175724.html

標籤:其他

上一篇:SSH爆破應急回應

下一篇:常見的埠漏洞利用弱點

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more