端口掃描在百度百科上的定義是:
端口掃描是指某些別有用心的人發(fā)送一組端口掃描消息,試圖以此侵入某臺計(jì)算機(jī),并了解其提供的計(jì)算機(jī)網(wǎng)絡(luò)服務(wù)類型(這些網(wǎng)絡(luò)服務(wù)均與端口號相關(guān)),但是端口掃描不但可以為黑客所利用,同時端口掃描還是網(wǎng)絡(luò)安全工作者的必備的利器,通過對端口的掃描,了解網(wǎng)站中出現(xiàn)的漏洞以及端口的開放情況,對網(wǎng)站安全方面有著不可或缺的貢獻(xiàn),是你學(xué)習(xí)網(wǎng)絡(luò)安全的第一門課程的首選
目前在市面上主要的端口掃描工具是X_Scan、SuperScan、nmap,其中在這里主推的是nmap,因?yàn)閚map具有以下的這一些優(yōu)點(diǎn):
1、多種多樣的參數(shù),豐富的腳本庫,滿足用戶的個人定制需求,其中腳本庫還提供了很多強(qiáng)大的功能任你選擇
2、強(qiáng)大的可移植性,基本上能在所有的主流系統(tǒng)上運(yùn)行,而且代碼是開源的
3、詳細(xì)的文檔說明,和強(qiáng)大的社區(qū)團(tuán)隊(duì)進(jìn)行支持,方面新人上手
Nmap是一款開源免費(fèi)的網(wǎng)絡(luò)發(fā)現(xiàn)(Network Discovery)和安全審計(jì)(Security Auditing)工具,但是nmap也是有一些缺點(diǎn)的,比如說上手較難,但是難上手是相對的,與其他達(dá)到這種功能性的軟件產(chǎn)品相比,還是比較容易上手的,但是這也不妨礙nmap成為世界千萬安全專家列為必備的工具之一,在其中的一些影視作品中《黑客帝國2》、《特警判官》中都有亮相。
nmap的安裝:可以直接yum install nmap
Nmap包含四項(xiàng)基本功能:
主機(jī)發(fā)現(xiàn)(Host Discovery)
端口掃描(Port Scanning)
版本偵測(Version Detection)
操作系統(tǒng)偵測(Operating System Detection)
下面就從主機(jī)發(fā)現(xiàn)一步一步進(jìn)行探討
主機(jī)發(fā)現(xiàn)顧名思義就是發(fā)現(xiàn)所要掃描的主機(jī)是否是正在運(yùn)行的狀態(tài),接下來就來一個簡單例子
例子要求:獲取http://nmap.org 的主機(jī)是否開啟
輸入命令:nmap -F -sT -v nmap.org
-F:掃描100個最有可能開放的端口 -v 獲取掃描的信息 -sT:采用的是TCP掃描 不寫也是可以的,默認(rèn)采用的就是TCP掃描
運(yùn)行如下:
由圖中的1,我們可以發(fā)現(xiàn)對URL進(jìn)行解析花了16.5秒,這個地方花費(fèi)的時間是可以進(jìn)行優(yōu)化的,優(yōu)化的方法會稍后介紹
圖中的2,是總共的運(yùn)行時間
圖中的3是說明有96個端口被屏蔽了,也就是說明了網(wǎng)站的防火墻是開啟的,因?yàn)闆]有開啟防火墻是不會對端口進(jìn)行屏蔽的,
補(bǔ)充說明:
端口端口一般是有下面這幾種狀態(tài)的
Open 端口開啟,數(shù)據(jù)有到達(dá)主機(jī),有程序在端口上監(jiān)控
Closed 端口關(guān)閉,數(shù)據(jù)有到達(dá)主機(jī),沒有程序在端口上監(jiān)控
Filtered 數(shù)據(jù)沒有到達(dá)主機(jī),返回的結(jié)果為空,數(shù)據(jù)被防火墻或者是IDS過濾
UnFiltered 數(shù)據(jù)有到達(dá)主機(jī),但是不能識別端口的當(dāng)前狀態(tài)
Open|Filtered 端口沒有返回值,主要發(fā)生在UDP、IP、FIN、NULL和Xmas掃描中
Closed|Filtered 只發(fā)生在IP ID idle掃描
圖中的4是本次返回的關(guān)鍵信息,其中我們要主要關(guān)注的是端口號,端口狀態(tài),端口上的服務(wù)
那你可能就會要問為什么要關(guān)注這些端口呢?那這個問題就要轉(zhuǎn)到探討為什么要進(jìn)行掃描?
掃描對于黑客和安全人員來說,主要的流程是這樣的
上面的圖中的IP寫錯了,應(yīng)該改為FTP
從這個圖中我們不難發(fā)現(xiàn),我們主要關(guān)注的區(qū)域就是這些內(nèi)容
接下來就來討論下面上面提出來的問題?怎樣對URL解析的時間進(jìn)行優(yōu)化,在Nmap重提供了不進(jìn)行解析的參數(shù)(-n),這樣就不會對域名進(jìn)行解析了
其中關(guān)于域名解析的相關(guān)參數(shù)還有:
-R 為所有的目標(biāo)主機(jī)進(jìn)行解析
--system-dns 使用系統(tǒng)域名解析器進(jìn)行解析,這個解析起來會比較慢
--dns-server 服務(wù)器選擇DNS解析
說到-R注釋的意思你會有所體會,其實(shí)nmap的掃描解析不止是對一個目標(biāo)主機(jī)進(jìn)行解析,還可以對一定范圍內(nèi)的目標(biāo)主機(jī)群進(jìn)行解析
例如:查找45.33.49.119-120的主機(jī)的狀態(tài)以及端口狀態(tài)
分析:
1、雖然查找的主機(jī)的數(shù)量不多,但是這樣查找起來也是很浪費(fèi)時間的, 所有我們可以通過使用快速查找的方法來節(jié)約時間
快速查找端口方法的原理如下:
默認(rèn)的情況下,我們的查找是查找最有可能開放的1000端口,但是使用快速端口查找(參數(shù) -F )會查找最有可能開放的100個端口,這樣也就節(jié)約了10倍的時間
2、這里我們需要獲取端口的狀態(tài),所以就不能使用參數(shù)(-sn),這個參數(shù)是可以跳過端口掃描,直接進(jìn)行主機(jī)發(fā)現(xiàn)的
輸入命令:nmap -F -sT -v -n 45.33.49.119-120 45.33.49.119:nmap.org的IP地址
PS:1、-sn參數(shù)只能掃描的主機(jī),不能掃描端口,另一個參數(shù)也要特別注意的是(-PE)通過ICMP echo判定主機(jī)是否存活
運(yùn)行情況如下:
圖片中的1處指的是,采用sT的掃描方法,這種掃描方法準(zhǔn)確,速度快,但是這樣的掃描容易被防火墻和IDS發(fā)現(xiàn)并記錄,所以這種方法,實(shí)際中并不多用
由圖中的3處我們可以知道在不進(jìn)行解析的情況下掃描用時為26.92秒,比解析的時候用的時間節(jié)約了不少
圖中的4說明了掃描了2個主機(jī),然后只有一個主機(jī)為開啟
提示:
在nmap運(yùn)行的時候,如果我們可以像其他編程一樣打“斷點(diǎn)”,直接按鍵盤的d鍵就行了,如果想知道運(yùn)行的進(jìn)度可以按下X鍵
好了,示例也講完了,下面我們就來分析一下掃描的各種方法:
1、TCP掃描(-sT)
這是一種最為普通的掃描方法,這種掃描方法的特點(diǎn)是:掃描的速度快,準(zhǔn)確性高,對操作者沒有權(quán)限上的要求,但是容易被防火墻和IDS(防入侵系統(tǒng))發(fā)現(xiàn)
運(yùn)行的原理:通過建立TCP的三次握手連接來進(jìn)行信息的傳遞
① Client端發(fā)送SYN;
② Server端返回SYN/ACK,表明端口開放;
③ Client端返回ACK,表明連接已建立;
④ Client端主動斷開連接。
2、SYN掃描(-sS)
這是一種秘密的掃描方式之一,因?yàn)樵赟YN掃描中Client端和Server端沒有形成3次握手,所以沒有建立一個正常的TCP連接,因此不被防火墻和日志所記錄,一般不會再目標(biāo)主機(jī)上留下任何的痕跡,但是這種掃描是需要root權(quán)限(對于windows用戶來說,是沒有root權(quán)限這個概念的,root權(quán)限是linux的最高權(quán)限,對應(yīng)windows的管理員權(quán)限)
運(yùn)行的原理圖如下:
3、NULL掃描
NULL掃描是一種反向的掃描方法,通過發(fā)送一個沒有任何標(biāo)志位的數(shù)據(jù)包給服務(wù)器,然后等待服務(wù)器的返回內(nèi)容。這種掃描的方法比前面提及的掃描方法要隱蔽很多,但是這種方法的準(zhǔn)確度也是較低的, 主要的用途是用來判斷操作系統(tǒng)是否為windows,因?yàn)閣indows不遵守RFC 793標(biāo)準(zhǔn),不論端口是開啟還是關(guān)閉的都返回RST包
但是雖然NULL具有這樣的一些用處,但是本人卻認(rèn)為不宜使用NULL
1、NULL方法的精確度不高,端口的狀態(tài)返回的不是很準(zhǔn)確
2、要獲取目標(biāo)主機(jī)的運(yùn)行系統(tǒng),可以使用參數(shù)(-O),來獲取對于一些操作系統(tǒng)無法準(zhǔn)確判斷的,可以加上參數(shù)(-osscan-guess)
3、NULL掃描易被過濾
4、FIN掃描
FIN掃描的原理與NULL掃描的原理基本上是一樣的在這里就不重復(fù)了
5、ACK掃描
ACK掃描的原理是發(fā)送一個ACK包給目標(biāo)主機(jī),不論目標(biāo)主機(jī)的端口是否開啟,都會返回相應(yīng)的RST包,通過判斷RST包中的TTL來判斷端口是否開啟
運(yùn)行原理圖:
TTL值小于64端口開啟,大于64端口關(guān)閉
大致上主要的掃描方法就是這些,除了我們可以按照這樣些參數(shù)去執(zhí)行掃描外,還可以自己定義一個TCP掃描包
6、自定義TCP掃描包的參數(shù)為(--scanflags)
例如:定制一個包含ACK掃描和SYN掃描的安裝包
命令:nmap --scanflags ACKSYN nmap.org
好了,接下來還有各種掃描方法的端口列表參數(shù)
-PS 端口列表用,隔開[tcp80 syn 掃描]
-PA 端口列表用,隔開[ack掃描](PS+PA測試狀態(tài)包過濾防火墻【非狀態(tài)的PA可以過】)【默認(rèn)掃描端口1-1024】
-PU 端口列表用,隔開[udp高端口掃描 穿越只過濾tcp的防火墻]
其他的常見命令
輸出命令
-oN 文件名 輸出普通文件
-oX 文件名 輸出xml文件
錯誤調(diào)試:
--log-errors 輸出錯誤日志
--packet-trace 獲取從當(dāng)前主機(jī)到目標(biāo)主機(jī)的所有節(jié)點(diǎn)
時間優(yōu)化(0-5)
時間優(yōu)化的參數(shù)是(-T0~5),最快的掃描速度為-T5,最慢的掃描速度為-T0,實(shí)現(xiàn)的原理:通過設(shè)置各個端口的掃描周期,從而來控制整個掃描的時間,比如說T0各個端口的掃描周期大約為5分鐘,而T5各個端口的掃描周期為5ms,但是過快的掃描也是有缺點(diǎn)的,掃描的周期過快,會很容易被防火墻和IDS發(fā)現(xiàn)并記錄,因?yàn)榉阑饓Υ蠖鄶?shù)會將端口周期過段識別為掃描從而屏蔽掉,如果不對其進(jìn)行設(shè)置的話,默認(rèn)值為T4
--min-hostgroup/--max-hostgroup size 設(shè)置組的大小
--min-parallelism/--max-parellelism time指定時間內(nèi)的探針數(shù)
在上節(jié)中還講漏了一個知識點(diǎn)獲取指定端口的參數(shù)(-p),這個參數(shù)的意義在于對于我們有時候只想監(jiān)控某個特定的端口的狀態(tài),這個參數(shù)是即為有用的,可以節(jié)約了不少的時間
例如:監(jiān)控nmap.org的80端口的狀態(tài)
命令:nmap -p 80 nmap.org
接下來就進(jìn)行這一節(jié)的主要內(nèi)容,如果上節(jié)沒有了解清楚的同學(xué),建議返回上節(jié)理解清楚再開始這一節(jié)
這一節(jié)我們就來講講怎樣規(guī)避被防火墻或IDS發(fā)現(xiàn)的風(fēng)險以及操作的步驟
上節(jié)中我們假設(shè)的是在一個網(wǎng)絡(luò)安全較為薄弱的情況下就可以正常進(jìn)行的,但是正常的網(wǎng)站或者個人都是對安全有一定的防范的,網(wǎng)站中基本上都會存在安全狗、防火墻等規(guī)避風(fēng)險的措施,個人電腦也會安裝各種安全軟件,所以對于做掃描工作的人來說,我們不知道通過掃描獲取相關(guān)的信息,同時也要保護(hù)好自己的隱私,比如IP等信息,防止被防火墻或者是網(wǎng)絡(luò)日志所記錄下來
在講這節(jié)之前我們來了解一下什么事防火墻?
防火墻是通過在客戶端與服務(wù)器端之間搭建一個監(jiān)控(運(yùn)行的原理有點(diǎn)像Fiddler),通過對特定開放的端口進(jìn)行屏蔽掉,從而達(dá)到網(wǎng)絡(luò)安全的作用,防火墻在其功能上也會有一些其他的功能,這個要看防火墻的實(shí)際情況
規(guī)避的基本思路是:
1、通過偽造訪問的IP地址
2、通過對發(fā)送信息進(jìn)行處理
3、將風(fēng)險進(jìn)行嫁接
4、其他的技術(shù)
偽造IP地址
偽造IP地址有很多種方法,可以通過下面的這幾種方法是我認(rèn)為比較常見的希望大家能喜歡
一、誘餌掃描(-D)
誘餌掃描的工作原理是:通過偽造大量的IP與自己真實(shí)的IP一起訪問網(wǎng)站,從而混淆管理員的判斷,其中問你們使用ME來代表自己的真實(shí)地址
例子:虛構(gòu)一個IP為203.88.163.34與自己的真實(shí)地址去掃描nmap.org
命令:nmap -F -D 203.88.163.34,ME nmap.org
運(yùn)行的結(jié)果如下:
但是在使用偽造的IP的同時,我們要注意要對偽造的IP進(jìn)行主機(jī)發(fā)現(xiàn),來判斷主機(jī)是否存在,是否開啟,因?yàn)橛行┓阑饓Σ呗允怯羞@樣規(guī)定的:如果訪問的IP主機(jī)是關(guān)閉或者是為空的話,就講所有的返回內(nèi)容過濾掉。試想一下,如果主機(jī)關(guān)閉或者是不存在,那么怎么可能會發(fā)送掃描的命令給目標(biāo)主機(jī)呢?
要找到開啟的目標(biāo)主機(jī)理論上是沒有什么要求的,但是為了節(jié)約時間,我建議是直接使用某個網(wǎng)站的IP地址,這樣有一下的幾個好處
1、IP地址容易獲得,一般的網(wǎng)站是通過ping參數(shù)就可以直接獲取該網(wǎng)站的IP地址,除了一些不讓進(jìn)行Ping操作的網(wǎng)站除外
2、容易保證IP的正常開啟,因?yàn)檎l家的網(wǎng)站會經(jīng)常關(guān)閉服務(wù)器,服務(wù)器一般是總是開啟的
二、源地址欺騙(-S)
源地址欺騙的原理是:通過將自己的IP偽裝成為其他的IP去掃描目標(biāo)主機(jī)從而騙過目標(biāo)主機(jī)的追蹤
假設(shè)要偽裝成為1.1.1.1:參數(shù)-S 1.1.1.1 使用1.1.1.1進(jìn)行掃描,讓防火墻誤以為是來自1.1.1.1的掃描行為
在使用的時候要注意與-e進(jìn)行使用,因?yàn)槌酥贫ㄒ獋窝b成為的對象IP外,還要指定返回的IP地址
三、時間優(yōu)化(-T)
通過時間優(yōu)化也提高通過防火墻和IDS的通過率
發(fā)送信息處理
指定使用分片(-f)
分片的工作原理是:將可疑的探測包進(jìn)行分片處理(例如將TCP包拆分成多個IP包發(fā)送過去),某些簡單的防火墻為了加快處理速度可能不會進(jìn)行重組檢查,以此避開其檢查。
將風(fēng)險責(zé)任進(jìn)行嫁接
空閑掃描(-sI):
這里有一篇比較全面的文章http://www.2cto.com/Article/201505/396631.html 再次就不多做介紹
其他的相關(guān)技術(shù):
有MAC偽造技術(shù)等
防火墻/IDS躲避和哄騙
-f; --mtu value 指定使用分片、指定數(shù)據(jù)包的MTU.
-D decoy1,decoy2,ME 使用誘餌隱蔽掃描
-S IP-ADDRESS 源地址欺騙
-e interface 使用指定的接口
-g/ --source-port PROTNUM 使用指定源端口
--proxies url1,[url2],... 使用HTTP或者SOCKS4的代理
--data-length NUM 填充隨機(jī)數(shù)據(jù)讓數(shù)據(jù)包長度達(dá)到NUM
--ip-options OPTIONS 使用指定的IP選項(xiàng)來發(fā)送數(shù)據(jù)包
--ttl VALUE 設(shè)置IP time-to-live域
--spoof-mac ADDR/PREFIX/VEBDOR MAC地址偽裝
--badsum 使用錯誤的checksum來發(fā)送數(shù)據(jù)包
其他的相關(guān)參數(shù)可以參考:
http://www.2cto.com/Article/201203/125686.html 到時候需要再進(jìn)行查找
相關(guān)資料:
http://www.tuicool.com/articles/ZBvmYrN
http://www.2cto.com/Article/201203/125686.html