更新時間
2022年09月06日16:20:10
- 完成nmap介紹,目標選擇,主機發現部分
2022年10月28日21:19:20
- 完成最基本的內容,埠掃描,版本和系統探測,安全其他等
- 打算的更新計劃:更多案例和圖片,匯出xml檔案轉為Excel分析(周末先休息一下吧)
nmap
nmap(Network Mapper)是免費、開源的網路發現和安全審計工具,通常我們用于收集網路中的比如主機和埠等資訊,從而為下一步的攻擊提供突破口,制定攻擊的計劃,也可為網路管理員使用,從而針對性修復可能暴露的安全漏洞,
具體的功能介紹可以登錄官網https://nmap.org,來獲取軟體包和官方教程,
- 當我們下載好nmap后在命令列中會多出這些命令:
- nmap,集成了:
- 主機發現(Host Discovery)
- 埠掃描(Port Scanning)
- 版本偵測(Version Detection)
- 作業系統偵測(Operating System Detection)
- zenmap,zenmap為nmap的影像化版本,
- ncat,可進行靈活的資料傳輸,重定向,
- ndiff,對比掃描結果的工具,
- nping,包生成和回應工具,

圖1.Windows查看nmap提供的可執行檔案
nmap命令
nmap發現的原理無非就是,發送資料包到目標主機,依據回應報文來識別已經開放的埠等資訊等,屬于主動攻擊,
- nmap的命令基本上可以分為有“三要素”,其中掃描的目標是必選的,掃描型別默認使用-sT,
-
nmap[<掃描型別>...] [<選項>] {<掃描目標說明>}
-
- 可以使用-h引數或者無引數,以輸出幫助資訊,
- 一下介紹的主機發現、埠掃描的方式都可以排列組合來使用,
下面的篇幅較長,如果是忘記了命令,可以只看這部分即可,我在這里翻譯了nmap -h原文,并做了小總結,時間寶貴,頭發也寶貴呢,
Nmap 7.93 (https://nmap.org) 用法:nmap [掃描型別] [選項] {要掃描的目標} 掃描的目標: 可以是 主機名、IP 地址、網路等,
#(可以使用逗號,指定不連續的ip段 減號-指定連續ip段 斜杠/指定掩碼 星號*代表全部) 例如:scanme.nmap.org、microsoft.com/24、192.168.0.1; 10.0.0-255.1-254 -iL <inputfilename>: 從檔案中讀取要掃描的主機串列 -iR <主機數量>: 選擇隨機目標 #0為無限生成 --exclude <host1[,host2][,host3],...>:要排除的 主機/網路 --excludefile <exclude_file>: 從檔案中選擇要排除的主機串列 主機發現: -sL: 串列掃描 - 列印主機的串列(對域名進行掃描時,可以得到IP串列 ) -sn: Ping 掃描,同時禁用埠掃描,用來檢查主機存活狀態, -Pn: 禁用 Ping 掃描,默認所有主機都是存活狀態 -PS/PA/PU/PY[埠串列]:對指定的埠通過 TCP SYN/ACK、UDP 或 SCTP 掃描來發現主機 -PE/PP/PM: 對指定的埠通過 ICMP、時間戳和網路掩碼請求發現和探測主機 -PO[協議串列]: IP 協議 Ping -n/-R: 不進行DNS決議/ 進行DNS決議 [默認] --dns-servers <serv1[,serv2],...>: 指定自定義 DNS 服務器 --system-dns: 使用作業系統的 DNS 決議器 --traceroute: 跟蹤每個主機的躍點路徑 掃描技術: -sS/sT/sA/sW/sM: TCP SYN / Connect() / ACK / Window / Maimon 掃描 -sU: UDP 掃描 -sN/sF/sX: TCP Null、FIN 和 Xmas 掃描 --scanflags <flags>: 自定義 TCP 掃描標志 -sI <僵尸主機[:僵尸埠]>: 空閑掃描 -sY/sZ: SCTP INIT/COOKIE-ECHO 掃描 -sO: IP 協議掃描 -b <FTP 中繼主機>: FTP 反彈掃描 指定掃描埠、掃描順序: -p <埠范圍>:只掃描指定的埠 例如:-p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9 --exclude-ports <埠范圍>: 從掃描中排除指定埠 -F: 快速模式, 掃描比默認掃描更少的埠 -r: 連續掃描埠,不要隨機化,即按順序掃描埠 --top-ports <number>: 掃描<number>個最常用的埠 --port-ratio <ratio>: 掃描比<ratio>更常見的埠 服務/版本檢測: -sV: 探測開放埠以確定服務/版本資訊 --version-intensity <level>:設定從 0(輕)到 9(嘗試所有探針) --version-light: 限制最可能的探測(強度 2) --version-all: 嘗試每一個探測(強度 9) --version-trace: 顯示詳細的版本掃描活動(用于除錯) 腳本掃描: -sC: 相當于--script=default --script=<Lua scripts>: 使用腳本進行掃描,多個腳本時用逗號分隔,支持通配符, --script-args=<n1=v1,[n2=v2,...]>: 為腳本提供引數 --script-args-file=filename: 從檔案中提供 NSE 腳本引數 --script-trace: 顯示所有發送和接收的資料 --script-updatedb: 更新腳本資料庫, --script-help=<Lua 腳本>: 顯示有關腳本的幫助, 作業系統檢測: -O: 啟用作業系統檢測 --osscan-limit: 將作業系統檢測限制為有希望的目標 --osscan-guess: 更積極地猜測作業系統 時間和性能: 默認是秒,也可以 “ms”(毫秒),'s'(秒)、'm'(分鐘)或 'h'(小時)到值(例如 30m), -T<0-5>: 設定時序模板(越高掃描速度越快,但是準確性降低) --min-hostgroup/max-hostgroup <size>: 并行主機掃描組大小 --min-parallelism/max-parallelism <numrobes>:探針并行化 --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <時間>: 指定探測往返時間, --max-retries <tries>: 限制埠掃描探測重傳的次數, --host-timeout <time>: 多長時間后放棄目標 --scan-delay/--max-scan-delay <time>:調整探針之間的延遲 --min-rate <number>: 每秒發送資料包不低于 <number> --max-rate <number>: 每秒發送資料包的速度不超過 <number> 防火墻/IDS 逃避和欺騙: -f; --mtu <val>: 分片資料包(可選地 w/給定的 MTU) -D <誘餌IP1,誘餌IP2[,本機IP],...>:使用誘餌隱藏掃描,即發送參雜著假ip的資料包檢測 -S <IP 地址>: 欺騙源地址,就是偽造源主機IP地址, -e <網路介面>: 指定從哪個網卡發送和接收資料包, -g/--source-port <portnum>: 使用給定的埠號,針對防火墻只允許的源埠 --proxies <url1,[url2],...>: 通過 HTTP/SOCKS4 代理中繼連接 --data <hex string>: 將自定義有效負載附加到發送的資料包 --data-string <string>: 將自定義 ASCII 字串附加到發送的資料包中 --data-length <num>: 將隨機資料附加到發送的資料包中, 改變發生資料包的默認的長度,防止被識別出來, --ip-options <options>: 發送帶有指定ip選項的資料包 --ttl <val>: 設定 IP 生存時間欄位 --spoof-mac <mac地址/前綴/供應商名稱>: 欺騙你的MAC地址 --badsum: 發送帶有虛假 TCP/UDP/SCTP 校驗和的資料包 輸出: -oN/-oX/-oS/-oG <file>: 掃描結果寫入到檔案, 正常,XML,s|<rIpt kIddi3,Grepable 格式, -oA <basename>: 一次輸出三種主要格式 -v: 增加詳細程度(使用 -vv 或更多以獲得更好的效果) -d: 增加除錯級別(使用 -dd 或更多以獲得更好的效果) --reason: 顯示埠處于特定狀態的原因 --open: 僅顯示打開(或可能打開)的埠 --packet-trace: 顯示所有發送和接收的資料包 --iflist: 列印主機介面和路由(用于除錯) --append-output: 附加到而不是破壞指定的輸出檔案 --resume <檔案名>: 恢復中止的掃描 --noninteractive: 通過鍵盤禁用運行時互動 --stylesheet <path/URL>:將 XML 輸出轉換為 HTML 的 XSL 樣式表 --webxml: 參考 Nmap.Org 的樣式表以獲得更便攜的 XML --no-stylesheet: 防止 XSL 樣式表與 XML 輸出相關聯 雜項: -6: 啟用 IPv6 掃描 -A: 也叫全面掃描,作業系統檢測、版本檢測、腳本掃描和跟蹤路由, --datadir <dirname>: 指定自定義 Nmap 資料檔案位置 --send-eth/--send-ip:使用原始以太網幀或 IP 資料包發送 --privileged: 假設用戶擁有完全特權 --unprivileged: 假設用戶缺乏原始套接字權限 -V:列印版本號 -h:列印此幫助摘要頁, 有關更多選項和示例,請參見手冊頁 (https://nmap.org/book/man.html)
掃描目標
/,-*符號
nmap命令中掃描的目標是不可省略的引數,可以使用/,-*符號來確認目標范圍,當然這三種都可以混合使用,
# 直接單臺主機ip,當然直接使用域名也可以,就是不怎么靈活而已 nmap 192.168.1.1 # 直接使用/掩碼,掃描網段內全部ip nmap 192.168.1.1/24 # 使用,指定物件,一般針對于不連續的網段 nmap 192.168.2.1,10,172,192,254 # 使用-選擇連續的范圍 nmap 192.168.3.1-255
# 使用*選擇本段全部,和0-255一樣
nmap 192.168.4.*
# ,/-*四者可以任意結合起來使用 nmap 192.168.1,2,3.* nmap 192.168.1-192,240.1/24
--exclude排除host
# 比如你指定了大范圍內的ip,但是某些ip你又想排除,后面可以無限寫 nmap 192.168.1.1/24 --exclude 192.168.1.1 192.168.1.100
-iL從檔案中匯入和--excludefile排除
有時候從dhcp服務器中匯出了在線的ip,可以使用檔案來批量的選擇掃描的目標,比如某公司禁止公司內部電腦開啟web服務等,使用檔案匯入的方法,可以跳過離線主機進行的掃描,
-iL <目標ip的檔案路徑>--excludefile <排除ip的檔案路徑>
檔案格式中ip之間可以使用換行(\n),同時也支持,/-語法,
-iR隨機掃描
-iR <隨機生成ip數量>-iR 0# 0代表無限次
以下是我使用nmap -iR 2后的抓包,可以看到ip是隨機的,默認的

圖2.默認掃描發送的報文
掃描型別可以省略,預設時使用-sT引數,即TCP連接掃描,預設情況下發送三個報文
- ICMP Echo Request
- TCP SYN 80和443
埠模式
nmap將埠分成六個狀態:
- open(開放)
- 有回顯
- closed(關閉)
- 無回顯,可能是關閉了,也可能是防火墻設定為drop(丟棄而不做回應),
- filtered(被過濾)
- 在掃描者和被掃描著之間,此埠可能在防火墻、設備上的服務器、交換機路由器acl等過濾了,回傳拒絕訪問,
- unfiltered(未被過濾)
- 可以訪問埠,但是無法確認埠是否開放,一般情況只在TCP ACK掃描中出現,
- open|filtered(開放或者被過濾)
- 當無法確定埠是開放還是被過濾的,可能是開放的埠不回應也可能回傳目標埠報文在中途被防火墻、acl過濾了或者網路丟包了
- closed|filtered(關倍訓者被過濾)
- 和上面open|filtered類似,不知道是關倍訓是被過濾了,
主機發現
針對于不同的設備和網路環境,不同的掃描方式會有著截然不同的效果,
- 大體上分為這幾種:
- ICMP發現主機
- sP,發送ICMP echo-Request報文
- TCP埠連接發現主機
- PS,發送SYN握手包
- PA,發送ACK確認包
- UDP埠連接發現主機
- PU
- DNS反向決議
- sL通過向DNS服務器反向決議(當然不要加上-n)
- ICMP發現主機
-sL(串列掃描)
其實這個引數不會對目標進行掃描操作,但因為nmap默認情況下是會對本機設定的所有DNS服務器反向決議其IP,即獲取hostname,所以使用起來可以起到獲取目標IP域名的效果,

圖3.sL掃描會向本機DNS依據IP反決議hostname
我的本機默認的DNS是192.168.24.8和223.5.5.5,話說對公網的DNS服務器反向決議內網的IP的hostname,是不是有點太搞笑了,
-dns-servers <DNS Server>指定DNS服務器-n不決議DNS,那就真的只是列出IP地址而已了- -R 強制決議DNS
┌──(kali?kali)-[~] └─$ nmap -sL 192.168.24.1/30 -dbs-servers 192.168.28.8 Starting Nmap 7.93 ( https://nmap.org ) at 2022-10-26 22:39 EDT Nmap scan report for 192.168.24.0 Nmap scan report for redmiAX6(192.168.1.1) Nmap scan report for xiaomi10s(192.168.24.2) Nmap scan report for 192.168.24.3Nmap done: 4 IP addresses (2 hosts up) scanned in 0.01 seconds
-sP(Ping掃描)
只使用Ping的方式判斷主機存活,就和使用ping命令判斷主機在線一樣,如果有icmp回顯那么nmap就認為其是存活的,
- 只發送icmp echo-request
- 有icmp echo-reply(icmp回顯)就在線

圖4.sP方式掃描
┌──(kali?kali)-[~] └─$ nmap -sP 192.168.24.1-100 Starting Nmap 7.93 ( https://nmap.org ) at 2022-10-26 23:14 EDT Nmap scan report for 192.168.24.1 Host is up (0.0034s latency). Nmap scan report for 192.168.24.4 Host is up (0.0021s latency). Nmap scan report for 192.168.24.6 Host is up (0.0026s latency). Nmap scan report for 192.168.24.9 Host is up (0.0027s latency). Nmap scan report for 192.168.24.10 Host is up (0.0033s latency). Nmap scan report for 192.168.24.15 Host is up (0.0025s latency). ...省略
-P0 (無ping)、-Pn
如果對方關閉了icmp回顯的功能,那么nmap會判斷本主機不在線,同時后續的埠掃描等也不會進行,會給掃描結果帶來干擾,
Windows下開關回顯:

圖5.Windows系統可在防火墻規則開關icmp回顯
Linux關倍訓顯:
#臨時關閉 echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all #永久 echo net.ipv4.icmp_echo_ignore_all=0 >> /etc/sysctl.conf sysctl -p

圖6.ping測驗下的icmp開關效果
所以為了排除干擾,可以加上-P0引數,這樣后續的埠掃描等操作也不會被干擾,請注意,P0雖然可以更徹底的掃描,但是代價是如果該地址本就真的不存在設備或者設備不在線,那么將花費大量的時間做無用功,
Windows主機上開啟smb檔案共享,確認開啟445埠,并且是關閉的icmp回顯,

圖7.使用netstat查看埠監聽情況
對于關閉icmp回顯的設備,加不加-P0引數對掃描的結果有很大的影響,

圖8.使用nmap 添加和不添加-P0的測驗
-PS[portlist] (TCP SYN Ping)
向目標主機的常用埠發送標志SYN=1的TCP握手報文,默認-PS不加引數時候會向常用的TCP埠發送SYN報文,并不需要建立TCP連接,只要有回應那么就說明主機在線的,在判斷主機存活時候隨便還探測了開放的TCP埠,
- 這個常用的TCP埠官方說默認的目標埠是80,但是實際上抓包發現其實都有很多,因為默認情況下自帶了對TCP1660個常用埠的掃描,

圖9.PS抓取報文的效果
#PS不帶引數 nmap -PS 192.168.5.1/24 #如果需要添加指定埠,比如你發現目標喜歡使用65522作為ssh埠,或者65000到65535這些都有可能,可以添加到掃描串列中,默認情況下預設的TCP埠也依舊會掃描 nmap -PS65522,65000-65535 192.168.5.1/24
-PA[portlist] (TCP ACK Ping)
-PA和PS其實是類似的,向目標主機的常用埠發送TCP報文,只不過這次是ACK=1的TCP確認報文,主要是用于通過一些有防火墻防火墻,因為防火墻會依據SYN報文來識別TCP連接,比較容易暴露自己,
一般情況ACK和SYN一起發送效果比較好,
nmap -PS -PA 192.168.5.1/24
-PU[portlist] (UDP Ping)
前面-PS和PA都是基于TCP掃描,PU使則是使用UDP掃描,如果網路中TCP的SYN和ACK都被防火墻隔離了,那就使用UDP,
nmap -PU 192.168.5.1/24
-PR (ARP Ping)
TCP和UDP這些都是基于IP掃描,如果只需要掃描局域網內(同網段,不跨越網關),可以使用ARP掃描,往往都不容易被察覺也比網路層掃描更可靠,當廣播詢問IP的對應MAC地址時候,當有回應那么就認為主機在線,
nmap -PR 192.168.5.1/24
-n (不用域名決議)
- nmap會對目標的IP地址進行反向域名決議,注意如果和-sL一起使用那就真的是只列出IP地址,
-R (為所有目標決議域名)
- 強制nmap對目標IP地址進行反向域名決議, 一般只有當發現機器正在運行時才進行這項操作,
埠掃描
-p <port ranges>指定目標埠
如果使用-p自定義范圍,
- -p和主機發現類似的用法,可以使用,-來選擇范圍,
nmap -sS -p 1-1024,3389,3306 192.168.5.1/24
- 也可以使用U:和T:來選擇UDP埠、TCP埠范圍,
nmap -sS -sU -p U:53,67,68,T:1-1024,3389,3306 192.168.5.1/24
-F和--top-ports快速掃描
默認是使用常見的1000個埠作為目標,如果覺得不夠快也可以使用-F將使用最常見的100個埠作為目標,使用--top-ports也可以規定前幾的埠為目標,-F相當于--top-ports 100的情況,
# 使用-F掃描最常用的100埠 nmap -F 192.168.5.1 # 使用--top-ports 自定義掃描最長用的埠,比如最常用的500個埠 nmap --top-ports 500 192.168.5.1
-r順序埠掃描
一個小引數,設定了可以按順序掃描埠,默認情況是先掃常用埠再掃用戶自定義的埠,其實意義不是那么大,
-sS (TCP SYN掃描)
此模式需要管理員(administrator或root)權限,
sS是最常用的掃描方式,不會建立完整的TCP連接,只發送SYN連接請求,所以速度很快,而且通常不會被掃描目標記錄,
- 發送SYN,回傳SYN/ACK->open開放
- 發送SYN,回傳RST->closed關閉
- 發送SYN,等待超時,發送SYN,等待超時->filtered被過濾
- 發送SYN,回傳ICMP不可達->filtered被過濾
nmap -sS -p 1-65535 192.168.5.1
-sT (TCP connect()掃描)
sT需要建立完整的TCP連接,即三次握手,所以判斷埠開放更可靠,但是很有可能會被記錄下連接的日志,
默認情況下不加引數都是使用此方法作為埠掃描,
nmap -sT 192.168.5.1
-sU (UDP掃描)
此模式需要管理員(administrator或root)權限,
對UDP埠進行掃描,使用-sT、-sS都不掃描UDP埠,所以如果有需要掃描UDP那就務必加上此,當然也可以結合TCP掃描來使用,
其原理為想目標埠發送UDP探測包,等待相應,回傳ICMP埠不可達(ICMP port unreachable)為埠關閉,等待超時則為埠被過濾
sudo nmap -sS -sU -p U:53,67,68,161,162,T:1-65535 192.168.5.1/24
-sN; -sF; -sX ;-sM (TCP Null掃描,TCP FIN掃描,Xmas掃描,TCP Maimon掃描)
此模式需要管理員(administrator或root)權限,
nmap發現TCP埠開放與否對不同標志位上TCP報文有不同回應,回復RST報文則認為開放,超時則認為關倍訓過濾,因為對于服務器來說這些TCP報文都是錯誤的,不保證所有埠的都可以正確的相應,但是這比SYN和整個TCP連接都要來得更隱蔽,(不過我都沒有用過啊)
-sN,TCP Null掃描,發送標志位都為0的TCP包,用于測驗防火墻,-sF,TCP FIN掃描,發送標志位FIN=1(關閉連接)的TCP包,埠掃描效果不是很好,但是很隱蔽,-sX,Xmas掃描,這個更過分了,直接把FIN,PSH和URG標志位都置1了,-sM,TCP Maimon掃描,發送標志位FIN,ACK的TCP報文,--scanflags(定制的TCP掃描),這些標志位你甚至可以自己定義,不過記得配合其他TCP掃描,-
sudo nmap -sA -F 127.0.0.1 --scanflags URGACKPSHRSTSYNFIN # 控制位可以任意順序,并且嘛之間不用空格,直接連著一起寫
-
-sA (TCP ACK掃描)
此模式需要管理員(administrator或root)權限,
ACK掃描,將TCP報文標志位ACK=1,可以用于檢測防火墻屏蔽了哪個埠,不過濾的主機埠反而啥也掃不出,
有空要補上圖,因為我手機上并沒有模擬出來效果啊,
-s0(IP協議掃描)
IP 協議掃描確定目標機支持哪些IP協議 (TCP,UDP,ICMP,IGMP等等),從技術上說,這不是埠掃描 ,既然它遍歷的是IP協議號,但是也可以使用-p來指定埠,只不過這個埠對應的是協議的號碼,

圖10.這里的數字不是代表埠,而是協議
-sI <zombie host[:probeport]> (空閑掃描)
僵尸主機也就是肉雞,利用side-channel攻擊,nmap對此埠進行掃描操作,從而更加隱蔽的進行掃描,若安全設備溯源也是溯源到肉雞的IP,
-sI <host>[:<port>]埠可以不寫,默認80- -sI 192.168.1.1:8888
sudo nmap -sI 192.168.2.8:8080 192.168.2.1/24 -Pn
-b <ftp relay host> (FTP彈跳掃描)
這個是利用FTP代理鏈接漏洞,允許用戶連接到一臺FTP服務器,然后要求檔案送到一臺第三方服務器,可以有效的隱藏自己,
這里引數格式是-
-b <username>:<password>@<server>:<port>
sudo nmap -sS ftp:123@192.168.1.1:21
版本探測和系統探測
不同服務也有不同版本,比如SNMP有v1、v2c、v3三種版本,SMB也有v1.0、v2.0、v3.0三種版本,不同的版本也有不同的特性,為此這些資訊也是很重要的內容,
-sV (版本探測)
- -sV 打開版本探測,在埠掃描的基礎上進行開放埠的服務分析,
- --allports (不為版本探測排除任何埠) 默認情況下會跳過tcp:9100,因為某些列印機簡單地列印送到該埠的任何資料,這回導致數十頁HTTP get請求,二進制 SSL會話請求等等被列印出來 --version-intensity <intensity> (設定 版本掃描強度) 強度范圍:0和9,默認是7,強度越高越精確,但是耗時更久,
- --version-light (輕量級模式) 相當于--version-intensity 2
- --version-all (嘗試每埠探測) 相當于--version-intensity 9
- --version-trace(顯示正在進行的掃描的除錯資訊)可以看到具體的日志,
-sR(RPC掃描)
- -sR 利用RPC協議來進行版本探測,不過現在使用sV就涵蓋了其中,少用,其實我也不太懂RPC,之前配置NFS時候遇到過RPC:111和113埠,
-O (啟用作業系統探測)
- -O 啟用作業系統探測,
- --osscan-limit (針對指定的目標進行作業系統檢測)
- 如果發現一個打開和關閉的TCP埠時,作業系統檢測會更有效, 采用這個選項,nmap只對滿足這個條件的主機進行作業系統檢測,這樣可以 節約時間,特別在使用-P0掃描多個主機時,
-
--osscan-guess; --fuzzy (推測作業系統檢測結果)
-
當Nmap無法確定所檢測的作業系統時,會盡可能地提供最相近的匹配,Nmap默認 進行這種匹配,使用上述任一個選項使得Nmap的推測更加有效,
-
- --osscan-limit (針對指定的目標進行作業系統檢測)
-A(作業系統探測和版本探測)
- -A 作業系統和版本探測都進行,和啟動-sV和-O一樣,sV和O的引數在這里也可以使用,
時間與性能、顯示
因為nmap通常對整個進行掃描,倘若網段范圍主機非常多,適當的添加引數調整引數會大大的節約時間,
-T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane> (設定時間模板)
只要記住這個就可以了,因為夠用了,其他時間選項其實更加細致的設定,T時間模板已經封裝好,
- -T<number> 范圍0-5,可以使用數字來代替paranoid (0)、sneaky (1)、polite (2)、normal(3)、 aggressive (4)和insane (5)
- -T3 即為默認
- -T0,T1,可以用于躲避IDS的探測,但是速度比較慢
- -T2 降低掃描速度
- -T4 加快掃描速度,也是一般情況也試用比較可靠有線網路
- -T5 最快的掃描速度,但是可能讓目標主機處理不過來從而導致掃描結果不準確,
--min-hostgroup <size>; --max-hostgroup <size> (調整并行掃描組的大小)
原來掃描結果需要最后才可以全部看到,但是可以設定組的大小,從而讓當前組掃完就可以的看結果,如果組的大小定義為50,掃描50個主機掃描完成后可以得到報告(詳細模式中的補充資訊 除外),
不過其實個人覺得-v或者-vv引數更有效果吧,
--scan-delay <milliseconds>; --max-scan-delay <milliseconds> (調整探測報文的時間間隔)
設定掃描包的發送間隔,單位ms,
--min-parallelism <numprobes>; --max-parallelism <numprobes> (調整探測報文的并行度)
--min-rtt-timeout <milliseconds>, --max-rtt-timeout <milliseconds>, --initial-rtt-timeout <milliseconds> (調整探測報文超時)
--host-timeout <milliseconds> (放棄低速目標主機)
跳過通信差的主機,設定多少ms延遲才跳過,比如樓下蹭網的鄰居,每一次掃描需要等待許久,非常消耗時間,干脆跳過,
防火墻/IDS躲避和哄騙
-D <decoy1 [,decoy2][,ME],...>(使用誘餌隱蔽掃描)
使用誘餌隱藏掃描,即發送參雜著假ip的資料包檢測,作為誘餌ip須在線,
使用逗號分隔每個誘餌主機,比如:
sudo nmap -sS -D 192.168.1.1,192.168.2.1,192.168.3.1,192.168.5.1 192.168.5.2-254
-S <IP_Address> (源地址哄騙)
- -S 偽造IP報文中原地址,若有多張網卡那么要指定發送和接收的網卡,
- -e <network interface>指定網卡 比如 -e eth0,在Windows上可以使用--iflist查看網卡,
--source-port <portnumber>; -g <portnumber> (源埠哄騙)
自定義源埠
--data-length <number> (發送報文時 附加隨機資料)
默認時候發送的IP報文都是沒有資料的空白報文,追加隨機的資料可以減小被懷疑的可能,但是性能消耗會增加,
-
--ttl <value> (設定IP time-to-live)
設定ttl,比如--ttl 255
--randomize-hosts (對目標主機的順序隨機排列)
--spoof-mac <mac address,prefix,or vendor name> (MAC地址哄騙)
這個比較有趣,可以輸入完整的mac地址,也可以輸入前面3Byte的mac,也可以輸入廠家的名字(使用自帶庫中的預設),
比如 ----spoof-mac 01:01:01:01:22:1a,a20123,Cisco
輸出
nmap可以將結果輸出為檔案,同時也可以配合--resume實作繼續之前未完成的任務,
-oA <basename> (輸出至所有格式)
輸出以下的全部,當然如果不需要也可以任意選擇需要的:
- -oN <filespec> (標準輸出) 標準輸出可以用于--resume斷點繼續,
- --append-output (在輸出檔案中添加)
- -oX <filespec> (XML輸出) 推薦使用此格式,因為XML使用場景很廣,可方便被編程語言呼叫,比如使用python的腳本導結果為excel表格等,
- -oG <filespec> (Grep輸出) 可以很方便的在grep、awk、cut、sed、diff等命令中展現,
-v (提高輸出資訊的詳細度)
- -vv 比起-v更詳細,但是終端列印訊息太多可能主要的資訊就不太好看得見了,
- -d [level] (提高或設定除錯級別) 這個一般情況是除錯用的
--packet-trace (跟蹤發送和接收的報文)
要求Nmap列印發送和接收的每個報文的摘要,也可以方便初學者理解nmap作業原理,
--iflist (列舉介面和路由)
用于分析路由,如果報文發送錯誤網卡可以使用-e來定義網卡介面,但是nmap中的命名是Linux那一套,在Windows要注意,

圖11.顯示網卡和路由
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/523167.html
標籤:其他
上一篇:Http和Https
下一篇:2022NISACTF--WEB
