1.名稱
nmap-網絡探測和安全掃描工具
2.語法
nmap
3.描述
nmap是一個網絡探測和安全掃描程序,系統管理者和個人可以使用這個軟件掃描大型的網絡,獲取那臺主機正在運行以及提供什么服務等信息。nmap支持很多掃描技術,例如:UDP、TCP connect()、TCP SYN(半開掃描)、ftp代理(bounce攻擊)、反向標志、ICMP、FIN、ACK掃描、圣誕樹(Xmas Tree)、SYN掃描和null掃描。從掃描類型一節可以得到細節。nmap還提供了一些高級的特征,例如:通過TCP/IP協議棧特征探測操作系統類型,秘密掃描,動態延時和重傳計算,并行掃描,通過并行ping掃描探測關閉的主機,誘餌掃描,避開端口過濾檢測,直接RPC掃描(無須端口影射),碎片掃描,以及靈活的目標和端口設定。
為了提高nmap在non-root狀態下的性能,軟件的設計者付出了很大的努力。很不幸,一些內核界面(例如raw socket)需要在root狀態下使用。所以應該盡可能在root使用nmap。
nmap運行通常會得到被掃描主機端口的列表。nmap總會給出well known端口的服務名(如果可能)、端口號、狀態和協議等信息。每個端口的狀態有:open、filtered、unfiltered。open狀態意味著目標主機能夠在這個端口使用accept()系統調用接受連接。filtered狀態表示:防火墻、包過濾和其它的網絡安全軟件掩蓋了這個端口,禁止nmap探測其是否打開。unfiltered表示:這個端口關閉,并且沒有防火墻/包過濾軟件來隔離nmap的探測企圖。通常情況下,端口的狀態基本都是unfiltered狀態,只有在大多數被掃描的端口處于filtered狀態下,才會顯示處于unfiltered狀態的端口。
根據使用的功能選項,nmap也可以報告遠程主機的下列特征:使用的操作系統、TCP序列、運行綁定到每個端口上的應用程序的用戶名、DNS名、主機地址是否是欺騙地址、以及其它一些東西。
4.功能選項
功能選項可以組合使用。一些功能選項只能夠在某種掃描模式下使用。nmap會自動識別無效或者不支持的功能選項組合,并向用戶發出警告信息。
如果你是有經驗的用戶,可以略過結尾的示例一節。可以使用nmap -h快速列出功能選項的列表。
4.1 掃描類型
-sT
TCP connect()掃描:這是最基本的TCP掃描方式。connect()是一種系統調用,由操作系統提供,用來打開一個連接。如果目標端口有程序監聽,connect()就會成功返回,否則這個端口是不可達的。這項技術最大的優點是,你勿需root權限。任何UNIX用戶都可以自由使用這個系統調用。這種掃描很容易被檢測到,在目標主機的日志中會記錄大批的連接請求以及錯誤信息。
-sS
TCP同步掃描(TCP SYN):因為不必全部打開一個TCP連接,所以這項技術通常稱為半開掃描(half-open)。你可以發出一個TCP同步包(SYN),然后等待回應。如果對方返回SYN|ACK(響應)包就表示目標端口正在監聽;如果返回RST數據包,就表示目標端口沒有監聽程序;如果收到一個SYN|ACK包,源主機就會馬上發出一個RST(復位)數據包斷開和目標主機的連接,這實際上有我們的操作系統內核自動完成的。這項技術最大的好處是,很少有系統能夠把這記入系統日志。不過,你需要root權限來定制SYN數據包。
-sF -sF -sN
秘密FIN數據包掃描、圣誕樹(Xmas Tree)、空(Null)掃描模式:即使SYN掃描都無法確定的情況下使用。一些防火墻和包過濾軟件能夠對發送到被限制端口的SYN數據包進行監視,而且有些程序比如synlogger和courtney能夠檢測那些掃描。這些高級的掃描方式可以逃過這些干擾。
這些掃描方式的理論依據是:關閉的端口需要對你的探測包回應RST包,而打開的端口必需忽略有問題的包(參考RFC 793第64頁)。FIN掃描使用暴露的FIN數據包來探測,而圣誕樹掃描打開數據包的FIN、URG和PUSH標志。不幸的是,微軟決定完全忽略這個標準,另起爐灶。所以這種掃描方式對Windows95/NT無效。不過,從另外的角度講,可以使用這種方式來分別兩種不同的平臺。如果使用這種掃描方式可以發現打開的端口,你就可以確定目標注意運行的不是Windows系統。如果使用-sF、-sX或者-sN掃描顯示所有的端口都是關閉的,而使用SYN掃描顯示有打開的端口,你可以確定目標主機可能運行的是Windwos系統。現在這種方式沒有什么太大的用處,因為nmap有內嵌的操作系統檢測功能。還有其它幾個系統使用和windows同樣的處理方式,包括Cisco、BSDI、HP/UX、MYS、IRIX。在應該拋棄數據包時,以上這些系統都會從打開的端口發出復位數據包。
-sP
ping掃描:有時你只是想知道此時網絡上哪些主機正在運行。通過向你指定的網絡內的每個IP地址發送ICMP echo請求數據包,nmap就可以完成這項任務。如果主機正在運行就會作出響應。不幸的是,一些站點例如:microsoft.com阻塞ICMP echo請求數據包。然而,在默認的情況下nmap也能夠向80端口發送TCP ack包,如果你收到一個RST包,就表示主機正在運行。nmap使用的第三種技術是:發送一個SYN包,然后等待一個RST或者SYN/ACK包。對于非root用戶,nmap使用connect()方法。
在默認的情況下(root用戶),nmap并行使用ICMP和ACK技術。
注意,nmap在任何情況下都會進行ping掃描,只有目標主機處于運行狀態,才會進行后續的掃描。如果你只是想知道目標主機是否運行,而不想進行其它掃描,才會用到這個選項。
-sU
UDP掃描:如果你想知道在某臺主機上提供哪些UDP(用戶數據報協議,RFC768)服務,可以使用這種掃描方法。nmap首先向目標主機的每個端口發出一個0字節的UDP包,如果我們收到端口不可達的ICMP消息,端口就是關閉的,否則我們就假設它是打開的。
有些人可能會想UDP掃描是沒有什么意思的。但是,我經常會想到最近出現的solaris rpcbind缺陷。rpcbind隱藏在一個未公開的UDP端口上,這個端口號大于32770。所以即使端口111(portmap的眾所周知端口號)被防火墻阻塞有關系。但是你能發現大于30000的哪個端口上有程序正在監聽嗎?使用UDP掃描就能!cDc Back Orifice的后門程序就隱藏在Windows主機的一個可配置的UDP端口中。不考慮一些通常的安全缺陷,一些服務例如:snmp、tftp、NFS使用UDP協議。不幸的是,UDP掃描有時非常緩慢,因為大多數主機限制ICMP錯誤信息的比例(在RFC1812中的建議)。例如,在Linux內核中(在net/ipv4/icmp.h文件中)限制每4秒鐘只能出現80條目標豢紗锏 主站蜘蛛池模板: 延寿县| 百色市| 元朗区| 德阳市| 定远县| 汶上县| 搜索| 石城县| 彭州市| 永嘉县| 阜城县| 康马县| 科尔| 揭阳市| 佳木斯市| 沙河市| 遂川县| 公安县| 平和县| 耒阳市| 沙湾县| 沧源| 延吉市| 如皋市| 天峻县| 上高县| 通海县| 石河子市| 定日县| 辛集市| 广平县| 东城区| 布尔津县| 海兴县| 秭归县| 烟台市| 紫金县| 泽州县| 宕昌县| 大渡口区| 探索|