nmap使用指南(終極版)
原創(chuàng)2017-09-09hl0rey信安之路
一惠豺、目標指定
1.CIDR標志位 192.168.1.0/24
2.指定范圍 192.168.1.1-255 192.168.1-255.1(任意位置)3.IPv6地址只能用規(guī)范的IPv6地址或主機名指定橱乱。 CIDR 和八位字節(jié)范圍不支持IPv6,因為它們對于IPv6幾乎沒什么用鳍怨。
-iL <文件名>
主機名或者ip地址列表列表中的項可以是Nmap在 命令行上接受的任何格式(IP地址歼疮,主機名,CIDR暇仲,IPv6夺蛇,或者八位字節(jié)范圍)疚漆。 每一項必須以一個或多個空格,制表符或換行符分開。 如果您希望Nmap從標準輸入而不是實際文件讀取列表娶聘, 您可以用一個連字符(-)作為文件名闻镶。
-iR <數(shù)量>
隨機選擇一定數(shù)量的目標
--exclude <主機名/地址>
不包含的主機
--excludefile <文件名>
不包含的主機的列表
二、主機發(fā)現(xiàn)
1.如果沒有給出主機發(fā)現(xiàn)的選項丸升,Nmap 就發(fā)送一個TCP ACK報文到80端口和一個ICMP回聲請求到每臺目標機器铆农。2.一個例外是ARP掃描用于局域網(wǎng)上的任何目標機器。對于非特權(quán)UNIX shell用戶狡耻,使用connect()系統(tǒng)調(diào)用會發(fā)送一個SYN報文而不是ACK 這些默認行為和使用-PA -PE選項的效果相同墩剖。3.另外要注意的是即使您指定了其它 -P*選項,ARP發(fā)現(xiàn)(-PR)對于局域網(wǎng)上的 目標而言是默認行為夷狰,因為它總是更快更有效岭皂。
-sL(列表掃描)
列出給出目標的具體內(nèi)容,默認會對地址進行反向解析沼头,顯示主機名爷绘。
-sn(不進行端口掃描)
與-sn一起完成的默認主機發(fā)現(xiàn)包括一個ICMP響應(yīng)請求、TCP SYN到端口443进倍、TCP ACK到端口80揉阎,以及一個ICMP的時間戳請求。
在以前的Nmap中背捌,-sn被稱為-sP。-sP(Ping掃描)選項在默認情況下洞斯,發(fā)送一個ICMP回聲請求和一個TCP報文到80端口毡庆。如果非特權(quán)用戶執(zhí)行,就發(fā)送一個SYN報文 (用connect()系統(tǒng)調(diào)用)到目標機的80端口烙如。 當特權(quán)用戶掃描局域網(wǎng)上的目標機時么抗,會發(fā)送ARP請求(-PR), 亚铁,除非使用了--send-ip選項蝇刀。 -sP選項可以和除-P0)之外的任何發(fā)現(xiàn)探測類型-P* 選項結(jié)合使用以達到更大的靈活性。 一旦使用了任何探測類型和端口選項徘溢,默認的探測(ACK和回應(yīng)請求)就被覆蓋了吞琐。
-Pn(無ping)
跳過主機發(fā)現(xiàn)階段,把每個都IP當成存活主機然爆。
-P0 <協(xié)議號列表>(IP 協(xié)議 ping)
一個較新的主機發(fā)現(xiàn)選項是IP協(xié)議ping站粟,它將IP數(shù)據(jù)包發(fā)送到IP報頭中指定的協(xié)議號。協(xié)議列表的格式與前面討論的TCP曾雕、UDP和SCTP主機發(fā)現(xiàn)選項的端口列表相同奴烙。如果沒有指定協(xié)議,默認的是為ICMP(協(xié)議1)、IGMP(協(xié)議2)和ipin-IP(協(xié)議4)發(fā)送多個IP數(shù)據(jù)包切诀。默認的協(xié)議可以在編譯時通過更改nmap.h中的默認proat探測端口規(guī)范來配置揩环。注意,對于ICMP幅虑、IGMP丰滑、TCP(協(xié)議6)、UDP(協(xié)議17)和SCTP(協(xié)議132)翘单,數(shù)據(jù)包是用適當?shù)膮f(xié)議標頭發(fā)送的吨枉,而其他協(xié)議被發(fā)送時,除了IP報頭之外沒有附加的數(shù)據(jù)(除非有任何數(shù)據(jù)——數(shù)據(jù)字符串哄芜,或者——數(shù)據(jù)長度選項被指定)貌亭。
-PS<端口列表>(TCP SYN Ping)
1.該選項發(fā)送一個設(shè)置了SYN標志位的空TCP報文,默認端口為80认臊。不同的端口可以作為選項制定(如 -PS22圃庭,23,25失晴,80剧腻,113,1050涂屁,3500)2.SYN標志位告訴對方您正試圖建立一個連接书在。 通常目標端口是關(guān)閉的,一個RST (復位) 包會發(fā)回來拆又。 如果碰巧端口是開放的儒旬,目標會進行TCP三步握手的第二步惰许,回應(yīng) 一個SYN/ACK TCP報文究孕。3.無論RST還是SYN/ACK響應(yīng)都告訴Nmap該主機正在運行。然后運行Nmap的機器則會扼殺這個正在建立的連接荡含, 發(fā)送一個RST而非ACK報文竖般,ST報文是運行Nmap的機器而不是Nmap本身響應(yīng)的甚垦,因為它對收到 的SYN/ACK感到很意外。
-PA<端口列表>(TCP ACK Ping)
1.ACK報文表示確認一個建立連接的嘗試涣雕,但該連接尚未完全建立艰亮。 所以遠程主機應(yīng)該總是回應(yīng)一個RST報文, 因為它們并沒有發(fā)出過連接請求到運行Nmap的機器挣郭,如果它們正在運行的話垃杖。2.如果非特權(quán)用戶嘗試該功能, 或者指定的是IPv6目標丈屹,前面說過的connect()方法將被使用调俘。 這個方法并不完美伶棒,因為它實際上發(fā)送的是SYN報文,而不是ACK報文彩库。3.他的默認端口和修改方法跟-PS一致4.SYN探測更有可能用于這樣的系統(tǒng)肤无,由于沒頭沒腦的ACK報文 通常會被識別成偽造的而丟棄。解決這個兩難的方法是通過即指定 -PS又指定-PA來即發(fā)送SYN又發(fā)送ACK骇钦。
-PU <端口列表>(UDP Ping)
1.發(fā)送一個空的(除非指定了--data-length UDP報文到給定的端口宛渐。端口列表的格式和前面討論過的-PS和-PA選項還是一樣。 如果不指定端口眯搭,默認是31338窥翩。修改方法和-PA -PS一致2.如果目標機器的端口是關(guān)閉的,UDP探測應(yīng)該馬上得到一個ICMP端口無法到達的回應(yīng)報文鳞仙。 這對于Nmap意味著該機器正在運行寇蚊。 許多其它類型的ICMP錯誤,像主機/網(wǎng)絡(luò)無法到達或者TTL超時則表示down掉的或者不可到達的主機棍好。 沒有回應(yīng)也被這樣解釋仗岸。如果到達一個開放的端口,大部分服務(wù)僅僅忽略這個 空報文而不做任何回應(yīng)借笙。這就是為什么默認探測端口是31338這樣一個 極不可能被使用的端口扒怖。少數(shù)服務(wù)如chargen會響應(yīng)一個空的UDP報文, 從而向Nmap表明該機器正在運行业稼。
-PR(ARP Ping)
如果Nmap發(fā)現(xiàn)目標主機就在它所在的局域網(wǎng)上盗痒,它會進行ARP掃描。 即使指定了不同的ping類型(如 -PI或者 -PS) 低散,Nmap也會對任何相同局域網(wǎng)上的目標機使用ARP积糯。 如果您真的不想要ARP掃描,指定 --send-ip谦纱。對于IPv6(-6選項),-PR使用ICMPv6的鄰居發(fā)現(xiàn)而不是ARP君编。在RFC 4861中定義的鄰居發(fā)現(xiàn)可以看作是IPv6等效的跨嘉。
--disable-arp-ping (No ARP or ND Ping)
不使用ARP發(fā)現(xiàn)和ICMPv6鄰居發(fā)現(xiàn)
-PY <端口列表> (SCTP INIT Ping)
1.一個SCTP INIT數(shù)據(jù)包,默認端口是80,如果要改變端口可以用如下形式: -PY22:-PY22,80,179,5060吃嘿。注意PY和端口列表之間沒有空格祠乃。2.SCTP INIT數(shù)據(jù)包表示本機想跟目標主機關(guān)聯(lián)。一般情況下兑燥,目標主機的端口是關(guān)閉的亮瓷,就會返回一個SCTP 數(shù)據(jù)包。如果目標主機端口是開放的降瞳,它就會回復一個SCTP INIT-ACK數(shù)據(jù)包嘱支。如果運行nmap的本機支持SCTP協(xié)議棧的話蚓胸,本機會給目標主機回復一個SCTP ABORT數(shù)據(jù)包,而不是SCTP COOKIE-ECHO數(shù)據(jù)包除师,這個數(shù)據(jù)包是由系統(tǒng)內(nèi)核發(fā)送的沛膳,因為他沒有去向目標主機發(fā)起關(guān)聯(lián)請求。3.本技術(shù)用于主機發(fā)現(xiàn)汛聚,所以不必關(guān)心端口是否開放锹安,只要收到回復就可認為主機是存活的。4.在linux系統(tǒng)中倚舀,特權(quán)用戶發(fā)送和接收raw SCTP數(shù)據(jù)包叹哭,非特權(quán)用戶不支持這個掃描技術(shù)。
-PE; -PP; -PM(ICMP Ping Types)
-PE是ICMP echo請求時間戳和地址掩碼查詢可以分別用-PP和-PM選項發(fā)送痕貌。 時間戳響應(yīng)(ICMP代碼14)或者地址掩碼響應(yīng)(代碼18)表示主機在運行风罩。
-n ? 不域名解析
-R ? 所有IP做反向域名解析
--system-dns ? ?使用本機的dns服務(wù)器
--dns-servers(使用指定的dns服務(wù)器)
如果指定dns服務(wù)器無法使用,則會轉(zhuǎn)向使用本機配置的dns服務(wù)器
三芯侥、端口狀態(tài)
open(開放的)
應(yīng)用程序正在該端口接收TCP 連接或者UDP報文泊交。
closed(關(guān)閉的)
關(guān)閉的端口對于Nmap也是可訪問的(它接受Nmap的探測報文并作出響應(yīng)), 但沒有應(yīng)用程序在其上監(jiān)聽柱查。
filtered(被過濾的)
由于包過濾阻止探測報文到達端口廓俭, Nmap無法確定該端口是否開放。
unfiltered(未被過濾的)
未被過濾狀態(tài)意味著端口可訪問唉工,但Nmap不能確定它是開放還是關(guān)閉研乒。
open|filtered(開放或者被過濾的)
當無法確定端口是開放還是被過濾的,Nmap就把該端口劃分成 這種狀態(tài)淋硝。開放的端口不響應(yīng)就是一個例子雹熬。
closed|filtered(關(guān)閉或者被過濾的)
該狀態(tài)用于Nmap不能確定端口是關(guān)閉的還是被過濾的。 它只可能出現(xiàn)在IPID Idle掃描中
四谣膳、端口掃描技術(shù)
-sS(TCP SYN掃描)
半開放掃描竿报,不打開一個完整的TCP鏈接它發(fā)送一個SYN報文,然后等待響應(yīng)继谚。 SYN/ACK表示端口在監(jiān)聽 (開放)烈菌,而 RST (復位)表示沒有監(jiān)聽者。如果數(shù)次重發(fā)后仍沒響應(yīng)花履, 該端口就被標記為被過濾芽世。如果收到ICMP不可到達錯誤 (類型3,代碼1诡壁,2济瓢,3,9妹卿,10旺矾,或者13)蔑鹦,該端口也被標記為被過濾。
-sT(TCP connect()掃描)
Nmap通過創(chuàng)建connect() 系統(tǒng)調(diào)用要求操作系統(tǒng)和目標機以及端口建立連接宠漩,而不像其它掃描類型直接發(fā)送原始報文举反。 這是和Web瀏覽器,P2P客戶端以及大多數(shù)其它網(wǎng)絡(luò)應(yīng)用程序用以建立連接一樣的 高層系統(tǒng)調(diào)用扒吁。當Nmap連接火鼻,然后不發(fā)送數(shù)據(jù)又關(guān)閉連接, 許多普通UNIX系統(tǒng)上的服務(wù)會在syslog留下記錄雕崩,有時候是一條加密的錯誤消息魁索。
-sU(UDP 掃描)
1.UDP掃描用-sU選項激活。它可以和TCP掃描如 SYN掃描 (-sS)結(jié)合使用來同時檢查兩種協(xié)議盼铁。2.UDP掃描發(fā)送空的(沒有數(shù)據(jù))UDP報頭到每個目標端口粗蔚。 如果返回ICMP端口不可到達錯誤(類型3,代碼3)饶火, 該端口是closed(關(guān)閉的)鹏控。 其它ICMP不可到達錯誤(類型3, 代碼1肤寝,2当辐,9,10鲤看,或者13)表明該端口是filtered(被過濾的)缘揪。 偶爾地,某服務(wù)會響應(yīng)一個UDP報文义桂,證明該端口是open(開放的)找筝。 如果幾次重試后還沒有響應(yīng),該端口就被認為是 open|filtered(開放|被過濾的)慷吊。 這意味著該端口可能是開放的袖裕,也可能包過濾器正在封鎖通信。 可以用版本掃描(-sV)幫助區(qū)分真正的開放端口和被過濾的端口溉瓶。
-sY(SCTP INIT scan)
SCTP INIT掃描類似TCP SYN掃描急鳄,他也是打開一個半開的連接,而不是建立一個完整的SCTP關(guān)聯(lián)嚷闭。如果目標端口回復一個INIT-ACK數(shù)據(jù)包,則說明端口是開放的赖临,如果回復一個ABORT數(shù)據(jù)包胞锰,端口是關(guān)閉的,如果沒有回復兢榨,端口會被標記標記為被過濾嗅榕,當然如果收到了ICMP不可達的消息(type 3, code 0, 1, 2, 3, 9, 10, or 13)也會被標記為被過濾顺饮。
-sN; -sF; -sX (TCP Null,F(xiàn)IN凌那,Xmas掃描)
1.如果掃描系統(tǒng)遵循該RFC兼雄,當端口關(guān)閉時,任何不包含SYN帽蝶,RST赦肋,或者ACK位的報文會導致 一個RST返回,而當端口開放時励稳,應(yīng)該沒有任何響應(yīng)佃乘。只要不包含SYN,RST驹尼,或者ACK趣避, 任何其它三種(FIN,PSH新翎,and URG)的組合都行程帕。Nmap有三種掃描類型利用這一點:Null掃描 (-sN)
不設(shè)置任何標志位(tcp標志頭是0)
FIN掃描 (-sF)
只設(shè)置TCP FIN標志位。
Xmas掃描 (-sX)
設(shè)置FIN地啰,PSH愁拭,和URG標志位,就像點亮圣誕樹上所有的燈一樣髓绽。
2.除了探測報文的標志位不同敛苇,這三種掃描在行為上完全一致。 如果收到一個RST報文顺呕,該端口被認為是 closed(關(guān)閉的)枫攀,而沒有響應(yīng)則意味著 端口是open|filtered(開放或者被過濾的)。 如果收到ICMP不可到達錯誤(類型 3株茶,代號 1来涨,2,3启盛,9蹦掐,10,或者13)僵闯,該端口就被標記為 被過濾的卧抗。
-sA (TCP ACK掃描)
1.這種掃描與目前為止討論的其它掃描的不同之處在于 它不能確定open(開放的)或者 open|filtered(開放或者過濾的))端口。 它用于發(fā)現(xiàn)防火墻規(guī)則鳖粟,確定它們是有狀態(tài)的還是無狀態(tài)的社裆,哪些端口是被過濾的。2.ACK掃描探測報文只設(shè)置ACK標志位(除非您使用 --scanflags)向图。當掃描未被過濾的系統(tǒng)時泳秀, open(開放的)和closed(關(guān)閉的) 端口 都會返回RST報文标沪。Nmap把它們標記為 unfiltered(未被過濾的),意思是 ACK報文不能到達嗜傅,但至于它們是open(開放的)或者 closed(關(guān)閉的) 無法確定金句。不響應(yīng)的端口 或者發(fā)送特定的ICMP錯誤消息(類型3,代號1吕嘀,2违寞,3,9币他,10坞靶, 或者13)的端口,標記為 filtered(被過濾的)蝴悉。
-sW(TCP窗口掃描)
在某些系統(tǒng)上彰阴,開放端口用正數(shù)表示窗口大小(甚至對于RST報文) 而關(guān)閉端口的窗口大小為0。因此拍冠,當收到RST時尿这,窗口掃描不總是把端口標記為 unfiltered, 而是根據(jù)TCP窗口值是正數(shù)還是0庆杜,分別把端口標記為open或者 closed
-sM(TCP Maimon掃描)
探測報文是FIN/ACK射众。 根據(jù)RFC 793 (TCP),無論端口開放或者關(guān)閉晃财,都應(yīng)該對這樣的探測響應(yīng)RST報文叨橱。 然而,Uriel注意到如果端口開放断盛,許多基于BSD的系統(tǒng)只是丟棄該探測報文罗洗。
--scanflags (定制的TCP掃描)
--scanflags選項可以是一個數(shù)字標記值如9 (PSH和FIN), 但使用字符名更容易些钢猛。 只要是URG伙菜, ACK,PSH命迈, RST贩绕,SYN,and FIN的任何組合就行壶愤。例如淑倾,--scanflags URGACKPSHRSTSYNFIN設(shè)置了所有標志位,但是這對掃描沒有太大用處征椒。 標志位的順序不重要娇哆。
-sZ(SCTP COOKIE ECHO掃描)
如果目標端口開放,則會丟棄之前沒有發(fā)起關(guān)聯(lián)請求的SCTP COOKIE ECHO數(shù)據(jù)包,如果端口是關(guān)閉的則會返回一個SCTP ABORT數(shù)據(jù)包迂尝。所以這個掃描技術(shù),無法分辨過濾和開放剪芥,只能分辨出關(guān)閉的端口垄开。
--sI <僵尸主機地址:端口>(idlescan)
1.這種高級的掃描方法允許對目標進行真正的TCP端口盲掃描 (意味著沒有報文從您的真實IP地址發(fā)送到目標)。相反税肪,side-channel攻擊 利用zombie主機上已知的IP分段ID序列生成算法來窺探目標上開放端口的信息溉躲。2.如果您由于IPID改變希望探測zombie上的特定端口, 您可以在zombie 主機后加上一個冒號和端口號益兄。 否則Nmap會使用默認端口(80)锻梳。
-sO(IP協(xié)議掃描)
IP 協(xié)議掃描可以讓您確定目標機支持哪些IP協(xié)議 (TCP,ICMP净捅,IGMP疑枯,等等)。從技術(shù)上說蛔六,這不是端口掃描 荆永,既然它遍歷的是IP協(xié)議號而不是TCP或者UDP端口號。 但是它仍使用 -p選項選擇要掃描的協(xié)議號国章, 用正常的端口表格式報告結(jié)果具钥,甚至用和真正的端口掃描一樣 的掃描引擎。因此它和端口掃描非常接近液兽,也被放在這里討論骂删。
-b(FTP彈跳掃描)
1.FTP協(xié)議的一個有趣特征(RFC 959) 是支持所謂代理ftp連接。2.它允許用戶連接到一臺FTP服務(wù)器四啰,然后要求文件送到一臺第三方服務(wù)器宁玫。 這個特性在很多層次上被濫用,所以許多服務(wù)器已經(jīng)停止支持它了拟逮。其中一種就是導致FTP服務(wù)器對其它主機端口掃描撬统。 只要請求FTP服務(wù)器輪流發(fā)送一個文件到目標主機上的所感興趣的端口。 錯誤消息會描述端口是開放還是關(guān)閉的敦迄。3.這是繞過防火墻的好方法恋追,因為FTP服務(wù)器常常被置于可以訪問比Web主機更多其它內(nèi)部主機的位置。4.Nmap用-b選項支持ftp彈跳掃描罚屋。參數(shù)格式是:@:苦囱。是某個脆弱的FTP服務(wù)器的名字或者IP地址。 您也許可以省略:脾猛, 如果服務(wù)器上開放了匿名用戶(user:anonymous password:-wwwuser@)撕彤。 端口號(以及前面的冒號) 也可以省略,如果使用默認的FTP端口(21)。
五羹铅、端口掃描設(shè)置
默認情況下蚀狰,Nmap用指定的協(xié)議對端口1到1024以及nmap-services 文件中列出的更高的端口在掃描。
-p <端口號职员,端口列表>
1.制定掃描某個或某些端口用逗號分隔麻蹋,或者用鏈接符號表示范圍也可。2.對于-sO IP協(xié)議掃描焊切,該選項用來指定協(xié)議號(0-255)扮授。
--exclede-ports <端口列表>(排除的端口)
指定排除的端口,如果是指定排除的協(xié)議號的話专肪,他的值在0-255之間
-F(快速掃描)
在nmap的nmap-services 文件中(對于-sO刹勃,是協(xié)議文件)指定您想要掃描的端口。 這比掃描所有65535個端口快得多嚎尤。 因為該列表包含如此多的TCP端口(1200多)荔仁,這和默認的TCP掃描 scan (大約1600個端口)速度差別不是很大。如果用--datadir選項指定小的nmap-services文件 芽死,差別會很大咕晋。
-r(順序掃描端口)
默認情況下,Nmap按隨機順序掃描端口 (除了出于效率的考慮收奔,常用的端口前移)掌呜。可以指定-r來順序端口掃描坪哄。
--port-ratio
掃描nmap-services中給出的目標的一定比例质蕉,這個值在1.0-0.0之間。
--top-ports
掃描nmap-services中的前多少個端口
六.服務(wù)和版本掃描
-sV(版本掃描)
掃描服務(wù)版本翩肌,也可以用-A同時進行操作系統(tǒng)探測和版本掃描模暗。
--allports(版本掃描時,不排除任何端口)
1.默認情況下念祭,Nmap版本探測會跳過9100 TCP端口兑宇,因為一些打印機簡單地打印送到該端口的 任何數(shù)據(jù),這回導致數(shù)十頁HTTP get請求粱坤,二進制 SSL會話請求等等被打印出來隶糕。2.這一行為可以通過修改或刪除nmap-service-probes 中的Exclude指示符改變
--version-intensity <強度>(版本掃描強度)
強度在1到9之間,一般來說站玄,強度越大枚驻,服務(wù)越有可能被正確識別
--version-light
相當于 --version-intensity 2
--vension-all
相當于 --version-intensity 9
--version-trace
打印出正在進行的版本掃描的詳細信息
七、操作系統(tǒng)探測
-O (啟用操作系統(tǒng)檢測)
也可以使用-A來同時啟用操作系統(tǒng)檢測和版本掃描株旷。
--osscan-limit
只對至少知曉一個端口開放或者關(guān)閉的主機進行操作系統(tǒng)探測
--osscan-guess;--fuzzy
無法確定操作系統(tǒng)類型的時候再登,默認進行推測。但是使用這兩項,會讓猜測更加準確锉矢。
--max-os-tries(操作系統(tǒng)識別重試次數(shù))
默認重試五次梯嗽,
八、掃描性能設(shè)置
--min-hostgroup; --max-hostgroup(調(diào)整并行掃描組的大小)
1.Nmap具有并行掃描多主機端口或版本的能力沽损,Nmap將多個目標IP地址 空間分成組慷荔,然后在同一時間對一個組進行掃描。通常缠俺,大的組更有效。缺點是只有當整個組掃描結(jié)束后才會提供主機的掃描結(jié)果贷岸。如果組的大小定義 為50壹士,則只有當前50個主機掃描結(jié)束后才能得到報告(詳細模式中的補充信息 除外)。2.默認方式下偿警,Nmap采取折衷的方法躏救。開始掃描時的組較小, 最小為5螟蒸,這樣便于盡快產(chǎn)生結(jié)果盒使;隨后增長組的大小,最大為1024七嫌。確切的 大小依賴于所給定的選項少办。為保證效率,針對UDP或少量端口的TCP掃描诵原,Nmap 使用大的組英妓。--max-hostgroup選項用于說明使用最大的組,Nmap不 會超出這個大小绍赛。--min-hostgroup選項說明最小的組蔓纠,Nmap 會保持組大于這個值。如果在指定的接口上沒有足夠的目標主機來滿足所指定的最小值吗蚌,Nmap可能會采用比所指定的值小的組腿倚。這兩個參數(shù)雖然很少使用, 但都用于保持組的大小在一個指定的范圍之內(nèi)蚯妇。3.這些選項的主要用途是說明一個最小組的大小敷燎,使得整個掃描更加快速。通常選擇256來掃描C類網(wǎng)段箩言。對于端口數(shù)較多的掃描懈叹,超出該值沒有意義。對于 端口數(shù)較少的掃描分扎,2048或更大的組大小是有幫助的澄成。
--min-parallelism; --max-parallelism(調(diào)整探測報文的并行度)
這些選項控制用于主機組的探測報文數(shù)量,可用于端口掃描和主機發(fā)現(xiàn)。默認狀態(tài)下墨状,Nmap基于網(wǎng)絡(luò)性能計算一個理想的并行度卫漫,這個值經(jīng)常改變。如果報文被丟棄肾砂, Nmap降低速度列赎,探測報文數(shù)量減少。隨著網(wǎng)絡(luò)性能的改善镐确,理想的探測報文數(shù)量會緩慢增加包吝。這些選項確定這個變量的大小范圍。默認狀態(tài)下源葫,當網(wǎng)絡(luò)不可靠時诗越,理想的并行度值 可能為1,在好的條件下息堂,可能會增長至幾百嚷狞。最常見的應(yīng)用是--min-parallelism值大于1,以加快 性能不佳的主機或網(wǎng)絡(luò)的掃描荣堰。這個選項具有風險床未,如果過高則影響準確度,同時也會降低Nmap基于網(wǎng)絡(luò)條件動態(tài)控制并行度的能力振坚。這個值設(shè)為10較為合適薇搁, 這個值的調(diào)整往往作為最后的手段。
--max-parallelism選項通常設(shè)為1渡八,以防止Nmap在同一時間 向主機發(fā)送多個探測報文只酥,和選擇--scan-delay同時使用非常有用。
--min-rtt-timeout呀狼, --max-rtt-timeout裂允, --initial-rtt-timeout(調(diào)整探測報文超時)
Nmap使用一個運行超時值來確定等待探測報文響應(yīng)的時間,隨后會放棄或重新 發(fā)送探測報文哥艇。Nmap基于上一個探測報文的響應(yīng)時間來計算超時值绝编,如果網(wǎng)絡(luò)延遲比較顯著 和不定,這個超時值會增加幾秒貌踏。初始值的比較保守(高)十饥,而當Nmap掃描無響應(yīng) 的主機時,這個保守值會保持一段時間祖乳。這些選項以毫秒為單位逗堵,采用小的--max-rtt-timeout值,使 --initial-rtt-timeout值大于默認值可以明顯減少掃描時間眷昆,特別 是對不能ping通的掃描(-P0)以及具有嚴格過濾的網(wǎng)絡(luò)蜒秤。如果使用太 小的值汁咏,使得很多探測報文超時從而重新發(fā)送,而此時可能響應(yīng)消息正在發(fā)送作媚,這使得整個掃描的時 間會增加攘滩。如果所有的主機都在本地網(wǎng)絡(luò),對于--max-rtt-timeout值來 說纸泡,100毫秒比較合適漂问。如果存在路由,首先使用ICMP ping工具ping主機女揭,或使用其 它報文工具如hpings蚤假,可以更好地穿透防火墻。查看大約10個包的最大往返時間吧兔,然后將 --initial-rtt-timeout設(shè)成這個時間的2倍磷仰,--max-rtt-timeout 可設(shè)成這個時間值的3倍或4倍。通常掩驱,不管ping的時間是多少,最大的rtt值不得小于100ms冬竟, 不能超過1000ms欧穴。--min-rtt-timeout這個選項很少使用,當網(wǎng)絡(luò)不可靠時泵殴, Nmap的默認值也顯得過于強烈涮帘,這時這個選項可起作用。當網(wǎng)絡(luò)看起來不可靠時笑诅,Nmap僅將 超時時間降至最小值调缨,這個情況是不正常的,需要向nmap-dev郵件列表報告bug吆你。
--host-timeout(放棄低速目標主機)
由于性能較差或不可靠的網(wǎng)絡(luò)硬件或軟件弦叶、帶寬限制、嚴格的防火墻等原因妇多, 一些主機需要很長的時間掃描伤哺。這些極少數(shù)的主機掃描往往占 據(jù)了大部分的掃描時間。因此者祖,最好的辦法是減少時間消耗并且忽略這些主機立莉,使用 --host-timeout選項來說明等待的時間(毫秒)。通常使用1800000 來保證Nmap不會在單個主機上使用超過半小時的時間七问。需要注意的是蜓耻,Nmap在這半小時中可以 同時掃描其它主機,因此并不是完全放棄掃描械巡。超時的主機被忽略刹淌,因此也沒有針對該主機的 端口表饶氏、操作系統(tǒng)檢測或版本檢測結(jié)果的輸出。
--scan-delay; --max-scan-delay(調(diào)整探測報文的時間間隔)
這個選項用于Nmap控制針對一個主機發(fā)送探測報文的等待時間(毫秒)芦鳍,在帶寬 控制的情況下這個選項非常有效嚷往。Solaris主機在響應(yīng)UDP掃描探測報文報文時,每秒 只發(fā)送一個ICMP消息柠衅,因此Nmap發(fā)送的很多數(shù)探測報文是浪費的皮仁。--scan-delay 設(shè)為1000,使Nmap低速運行菲宴。Nmap嘗試檢測帶寬控制并相應(yīng)地調(diào)整掃描的延遲贷祈,但 并不影響明確說明何種速度工作最佳。--scan-delay的另一個用途是躲閉基于閾值的入侵檢測和預(yù)防 系統(tǒng)(IDS/IPS)喝峦。
-T(設(shè)置時間模板)
上述優(yōu)化時間控制選項的功能很強大也很有效势誊,但有些用戶會被迷惑。此外谣蠢, 往往選擇合適參數(shù)的時間超過了所需優(yōu)化的掃描時間粟耻。因此,Nmap提供了一些簡單的 方法眉踱,使用6個時間模板挤忙,使用時采用-T選項及數(shù)字(0 - 5) 或名稱。模板名稱有paranoid (0)谈喳、sneaky (1)册烈、polite (2)、normal(3)婿禽、 aggressive (4)和insane (5)赏僧。前兩種模式用于IDS躲避,Polite模式降低了掃描 速度以使用更少的帶寬和目標主機資源扭倾。默認模式為Normal淀零,因此-T3 實際上是未做任何優(yōu)化。Aggressive模式假設(shè)用戶具有合適及可靠的網(wǎng)絡(luò)從而加速 掃描膛壹。Insane模式假設(shè)用戶具有特別快的網(wǎng)絡(luò)或者愿意為獲得速度而犧牲準確性窑滞。用戶可以根據(jù)自己的需要選擇不同的模板,由Nmap負責選擇實際的時間值恢筝。 模板也會針對其它的優(yōu)化控制選項進行速度微調(diào)哀卫。例如,-T4 針對TCP端口禁止動態(tài)掃描延遲超過10ms撬槽,-T5對應(yīng)的值為5ms此改。 模板可以和優(yōu)化調(diào)整控制選項組合使用萍膛,但模板必須首先指定觉增,否則模板的標準值 會覆蓋用戶指定的值。建議在掃描可靠的網(wǎng)絡(luò)時使用 -T4,即使 在自己要增加優(yōu)化控制選項時也使用(在命令行的開始)侧甫,從而從這些額外的較小的優(yōu)化 中獲益桐玻。如果用于有足夠的帶寬或以太網(wǎng)連接号杏,仍然建議使用-T4選項瓤摧。 有些用戶喜歡-T5選項,但這個過于強烈纵苛。有時用戶考慮到避免使主機 崩潰或者希望更禮貌一些會采用-T2選項剿涮。他們并沒意識到-T Polite選項是如何的慢,這種模式的掃描比默認方式實際上要多花10倍的時間攻人。默認時間 選項(-T3)很少有主機崩潰和帶寬問題取试,比較適合于謹慎的用戶。不進行 版本檢測比進行時間調(diào)整能更有效地解決這些問題怀吻。雖然-T0和-T1選項可能有助于避免IDS告警瞬浓,但在進行上千個主機或端口掃描時,會顯著增加時間蓬坡。對于這種長時間的掃描猿棉,寧可設(shè)定確切的時間值,而不要去依賴封裝的-T0和-T1選項屑咳。T0選項的主要影響是對于連續(xù)掃描萨赁,在一個時間只能掃描一個端口, 每個探測報文的發(fā)送間隔為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精置。
--max-retries <次數(shù)>
沒有響應(yīng)后的重試次數(shù)
--script-timeout(設(shè)置腳本超時時間)
預(yù)防腳本的bug導致影響效率
--min-rate; --max-rate(發(fā)包速度控制)
最少每秒發(fā)多少计寇,最多每秒發(fā)多少。如果0.1的話就是10秒一個包的意思
--defeat-rst-ratelimit
忽略系統(tǒng)reset包的速率限制
--defeat-icmp-ratelimit
忽略系統(tǒng)ICMP錯誤消息速率限制
--nsock-engine epoll|kqueue|poll|select
選擇系統(tǒng)IO模型脂倦,nmap -V可以查看支持哪些
九番宁、防火墻繞過/IDS躲避
-f (報文分段); --mtu (使用指定的MTU)
1.-f選項要求掃描時(包挺ping掃描)使用小的IP包分段。其思路是將TCP頭分段在幾個包中赖阻,使得包過濾器蝶押、IDS以及其它工具的檢測更加困難。必須小心使用這個選項火欧,有些系統(tǒng)在處理這些小包時存在問題棋电,例如舊的網(wǎng)絡(luò)嗅探器Sniffit在接收到第一個分段時會立刻出現(xiàn)分段錯誤茎截。該選項使用一次,Nmap在IP頭后將包分成8個字節(jié)或更小赶盔。因此企锌,一個20字節(jié)的TCP頭會被分成3個包,其中2個包分別有TCP頭的8個字節(jié)于未,另1個包有TCP頭的剩下4個字節(jié)撕攒。當然,每個包都有一個IP頭沉眶。再次使用-f可使用 16字節(jié)的分段(減少分段數(shù)量)打却。2.使用--mtu選項可 以自定義偏移的大小,使用時不需要-f谎倔,偏移量必須是8的倍數(shù)柳击。包過濾器和防火墻對所有的IP分段排隊,如Linux核心中的 CONFIG-IP-ALWAYS-DEFRAG配置項片习,分段包不會直接使用捌肴。一些網(wǎng)絡(luò)無法 承受這樣所帶來的性能沖擊,會將這個配置禁止藕咏。其它禁止的原因有分段 包會通過不同的路由進入網(wǎng)絡(luò)状知。一些源系統(tǒng)在內(nèi)核中對發(fā)送的報文進行分段,使用iptables連接跟蹤模塊的Linux就是一個例子孽查。當使用類似Ethereal的嗅探器時饥悴,掃描必須保證發(fā)送的報文要分段。如果主機操作系統(tǒng)會產(chǎn)生問題盲再,嘗試使用--send-eth選項以避開IP層而直接發(fā)送原始的以太網(wǎng)幀西设。
-D <肉雞1,肉雞2答朋,...>(結(jié)合肉雞干擾進行掃描)首先必須讓目標主機認為是肉雞在掃描它贷揽,IDS雖然能夠捕捉到掃描的IP,但是并知道哪個是真實的攻擊者梦碗,使用逗號來分隔每個肉雞禽绪,如果使用了ME選項,nmap將不會使用本機地址洪规,否則nmap將會把本機地址放在一個隨機位置印屁。注意,太多的欺騙包甚至可能造成DDoS的效果斩例,而且很多多IPS會過濾欺騙包
-S(源地址欺騙)
偽造掃描請求源地址雄人。在某些情況下,Nmap可能無法確定你的源地址(如果這樣柠衍,Nmap會給出 提示)牺勾。此時,使用-S選項并說明所需發(fā)送包的接口IP地址回还。-e選項常在這種情況下使用运提,也可采用-P0選項癣丧。
-e(指定使用的網(wǎng)絡(luò)接口)
告訴nmap使用哪個網(wǎng)絡(luò)接口收發(fā)報文
--source-port; -g(源端口欺騙)
只需要提供一個端口號,Nmap就可以從這些 端口發(fā)送數(shù)據(jù)。為使特定的操作系統(tǒng)正常工作莽鸿,Nmap必須使用不同的端口號兔沃。 DNS請求會忽略--source-port選項,這是因為Nmap依靠系 統(tǒng)庫來處理窍侧。大部分TCP掃描,包括SYN掃描,可以完全支持這些選項咧织,UDP掃 描同樣如此习绢。
--date
可以用這樣的格式指定值 --data 0xdeadbeef --data \xCA\xFE\x09如果指定0x00ff 這個的數(shù)字毯炮,將不會做字節(jié)序轉(zhuǎn)換大刊。確保你的字節(jié)序为迈,對方可以接受
--data-string
例如,--data-string "Scan conducted by Security Ops, extension 7192" or --data-string "Ph34r my l33t skills"
--data-length(發(fā)送報文時 附加隨機數(shù)據(jù))
這個選項告訴Nmap在發(fā)送的報文上 附加指定數(shù)量的隨機字節(jié)缺菌。操作系統(tǒng)檢測(-O)包不受影響葫辐。
--ip-options; --ip-options(Send packets with specified ip options)
指定IP頭
--proxies
設(shè)置代理伴郁,支持http代理和socks4代理
--badsum(讓nmap使用一個偽造的不合法的checksum)
這樣的數(shù)據(jù)包一般都會丟棄剂陡,如果收到任何回復狐胎,這個回復一定來自防火墻
--adler32(使用棄用的Adler32來代替CRC32C做SCTP的checksum)
這是為了從舊版的SCTP協(xié)議設(shè)備獲得響應(yīng)
--ttl(設(shè)置IP time-to-live域)
設(shè)置IPv4報文的time-to-live域為指定的值鸭栖。
--randomize-hosts (對目標主機的順序隨機排列)
告訴Nmap在掃描主機前對每個組中的主機隨機排列,最多可達 8096個主機握巢。
--spoof-mac(MAC地址哄騙)
要求Nmap在發(fā)送原以太網(wǎng)幀時使用指定的MAC地址晕鹊,這個選項隱含了 --send-eth選項,以保證Nmap真正發(fā)送以太網(wǎng)包。MAC地址有幾 種格式溅话。如果簡單地使用字符串“0”晓锻,Nmap選擇一個完全隨機的MAC 地址。如果給定的字符品是一個16進制偶數(shù)(使用:分隔)飞几,Nmap將使用這個MAC地址带射。 如果是小于12的16進制數(shù)字,Nmap會隨機填充剩下的6個字節(jié)循狰。如果參數(shù)不是0或16進 制字符串窟社,Nmap將通過nmap-mac-prefixes查找 廠商的名稱(大小寫區(qū)分),如果找到匹配绪钥,Nmap將使用廠商的OUI(3字節(jié)前綴)灿里,然后 隨機填充剩余的3個節(jié)字。正確的--spoof-mac參數(shù)有程腹, Apple匣吊, 0,01:02:03:04:05:06寸潦, deadbeefcafe色鸳,0020F2, 和Cisco见转。
十命雀、輸出
-oN(標準輸出)
將結(jié)果輸入制定文件
-oX(XML輸出)
將XML輸出寫入指定文件
-oS(ScRipT KIdd|3 oUTpuT)
腳本小子輸出類似于交互工具輸出,這是一個事后處理斩箫,適合于 'l33t HaXXorZ吏砂, 由于原來全都是大寫的Nmap輸出。
-oG(Grep輸出)
這種方式最后介紹乘客,因為不建議使用狐血。XML輸格式很強大,便于有經(jīng)驗 的用戶使用易核。XML是一種標準匈织,由許多解析器構(gòu)成,而Grep輸屆更簡化牡直。XML是可擴展的缀匕,以支持新發(fā)布的Nmap特點。使用Grep輸出的目的是忽略這些 特點井氢,因為沒有足夠的空間弦追。然而岳链,Grep輸出仍然很常使用花竞。它是一種簡單格式,每行一個主機,可以 通過UNIX工具(如grep约急、awk零远、cut、sed厌蔽、diff)和Perl方便地查找和分解牵辣。常可 用于在命令行上進行一次性測式奴饮。查找ssh端口打開或運行Sloaris的主機纬向,只需要一個簡單的grep主機說明,使用通道并通過awk或cut命令打印所需的域戴卜。Grep輸出可以包含注釋(每行由#號開始)逾条。每行由6個標記的域組成,由制表符及 冒號分隔投剥。這些域有主機师脂,端口, 協(xié)議江锨,忽略狀態(tài)吃警,操作系統(tǒng),序列號啄育, IPID和狀態(tài)酌心。這些域中最重要的是Ports,它提供了所關(guān)注的端口的細節(jié)挑豌,端口項由逗號分隔谒府。每個端口項代表一個所關(guān)注的端口,每個子域由/分隔浮毯。這些子域有:端口號完疫, 狀態(tài),協(xié)議债蓝, 擁有者壳鹤,服務(wù), SunRPCinfo和版本信息饰迹。對于XML輸出芳誓,本手冊無法列舉所有的格式,有關(guān)Nmap Grep輸出的更詳細信息可 查閱http://www.unspecific.com/nmap-oG-output啊鸭。
-oA(輸出至所有格式)
為使用方便锹淌,利用-oA選項 可將掃描結(jié)果以標準格式、XML格式和Grep格式一次性輸出赠制。分別存放在.nmap赂摆,.xml和.gnmap文件中。也可以在文件名前 指定目錄名,如在UNIX中烟号,使用~/nmaplogs/foocorp/绊谭, 在Window中,使用c:\hacking\sco on Windows汪拥。
-v(提高輸出信息的詳細程度)
-d [level](設(shè)置調(diào)試級別)
--packet-trace(跟蹤發(fā)出的報文)
-iflist(列舉端口和路由)
--append-out(在輸出文件住追加)
但對于XML(-oX)掃描輸出 文件無效达传,無法正常解析,需要手工修改迫筑。
--resume(繼續(xù)中斷的掃描)
如果標準掃描 (-oN)或Grep掃描(-oG)日志 被保留宪赶,用戶可以要求Nmap恢復終止的掃描,只需要簡單地使用選項 --resume并說明標準/Grep掃描輸出文件脯燃,不允許 使用其它參數(shù)逊朽,Nmap會解析輸出文件并使用原來的格式輸出。使用方式 如nmap --resume曲伊。Nmap將把新地結(jié)果添加到文件中叽讳,這種方式不支持XML輸出格式,原因是將兩次運行結(jié)果合并至一個XML文件比較困難坟募。
--stylesheet(設(shè)置XSL樣式表岛蚤,轉(zhuǎn)換XML輸出)
--webxml
--stylesheethttps://nmap.org/svn/docs/nmap.xsl的簡寫。
--no-stylesheet (忽略XML聲明的XSL樣式表)
--open
只顯示開放或者可能開放的端口
--stats-every(周期性的輸出統(tǒng)計數(shù)據(jù))
--stats-every 10s 每10秒輸出一次懈糯,涤妒,這個輸出會被輸出到標準輸出,和XML文件
--reason(打印主機和端口狀態(tài)的原因)
十一赚哗、其他選項
-6(啟用IPv6掃描)
-A(強力掃描模式)
個選項啟用了操作系統(tǒng)檢測(-O) 和版本掃描(-sV)她紫,以后會增加更多的功能。 目的是啟用一個全面的掃描選項集合屿储,不需要用戶記憶大量的 選項贿讹。這個選項僅僅啟用功能,不包含用于可能所需要的 時間選項(如-T4)或細節(jié)選項(-v)够掠。
--datadir <文件夾名稱> (說明nmap用戶數(shù)據(jù)文件的位置)
Nmap在運行時從文件中獲得特殊的數(shù)據(jù)民褂,這些文件有 nmap-service-probes, nmap-services疯潭, nmap-protocols赊堪, nmap-rpc, nmap-mac-prefixes和 nmap-os-fingerprints竖哩。Nmap首先 在--datadir選項說明的目錄中查找這些文件哭廉。 未找到的文件,將在BMAPDIR環(huán)境變量說明的目錄中查找相叁。 接下來是用于真正和有效UID的~/.nmap 或Nmap可執(zhí)行代碼的位置(僅Win32)遵绰;然后是是編譯位置辽幌, 如/usr/local/share/nmap 或/usr/share/nmap。 Nmap查找的最后一個位置是當前目錄街立。
--send-ip (在原IP層發(fā)送)
要求Nmap通過原IP套接字發(fā)送報文舶衬,而不是低層的以 太網(wǎng)幀埠通。這是--send-eth選項的補充赎离。
--send-eth
使用raw ethernet包來發(fā)包
--privileged (假定用戶具有全部權(quán)限)
告訴Nmap假定其具有足夠的權(quán)限進行源套接字包發(fā)送、 報文捕獲和類似UNIX系統(tǒng)中根用戶操作的權(quán)限端辱。默認狀態(tài)下梁剔, 如果由getuid()請求的類似操作不為0,Nmap將退出舞蔽。 --privileged在具有Linux內(nèi)核性能的類似 系統(tǒng)中使用非常有效荣病,這些系統(tǒng)配置允許非特權(quán)用戶可以進行 原報文掃描。需要明確的是渗柿,在其它選項之前使用這些需要權(quán) 限的選項(SYN掃描个盆、操作系統(tǒng)檢測等)。Nmap-PRIVILEGED變量 設(shè)置等價于--privileged選項朵栖。
--unprivileged(假定用戶沒有特權(quán))
--interactive (在交互模式中啟動)
在交互模式中啟動Nmap颊亮,提供交互式的Nmap提示,便于 進行多個掃描(同步或后臺方式)陨溅。對于從多用戶系統(tǒng)中掃描 的用戶非常有效终惑,這些用戶常需要測試他們的安全性,但不希望 系統(tǒng)中的其它用戶知道他們掃描哪些系統(tǒng)门扇。使用--interactive 激活這種方式雹有,然后輸入h可 獲得幫助信息。由于需要對正確的shell程序和整個功能非常熟悉臼寄, 這個選項很少使用霸奕。這個選項包含了一個!操作符,用于執(zhí)行shell命令吉拳, 這是不安裝Nmap setuid root的多個原因之一铅祸。
--release-memory (退出后namp自己釋放內(nèi)存)
--servicedb
nmap-service文件的路徑
--versiondb
nmap-service-probes文件路徑
-V;--version (查看版本)
-h;--help(簡要的使用介紹)
十二、NSE腳本引擎
https://nmap.org/nsedoc/具體腳本的使用手冊
--script <腳本名>
腳本名字前面加 + 會讓腳本強制執(zhí)行指定名字的時候可以使用shell風格的通配符"*"合武。
nmap --script "http-*"
加載所有的名字以http-開頭的腳本临梗,必須用引號包起來,讓通配符不受shell影響稼跳。
nmap --script "not intrusive"
加載所有非入侵類型的腳本
nmap --script "default or safe"
在功能上等同于nmap --script "default,safe"加載了所有默認類或者安全類盟庞,或者是兩者都包含的。
nmap --script "default and safe"
加載在同屬于兩者的腳本
nmap --script "(default or safe or intrusive) and not http-*"
加載屬于默認類或者安全類或者入侵類的但是名字開頭不是http-的腳本
--script-args=,={=},={,}
指定腳本參數(shù)汤善,里面不能有‘{’, ‘}’, ‘=’, or ‘,’什猖,如果要用就用\轉(zhuǎn)義
--script-args-file
從一個文件獲取腳本參數(shù)
--script-trace
打印出腳本執(zhí)行的具體信息
--script-updatedb
更新腳本庫
微信掃一掃
關(guān)注該公眾號