《網絡攻防技術(第2版)》 —2.3.3 系統類型掃描
2.3.3 系統類型掃描

除了目標主機開放的端口外,攻擊者可能還想清楚地判斷目標的操作系統類型和版本、應用程序的版本等。這樣做有兩個目的:首先,絕大多數安全漏洞都是針對特定系統和版本的,判斷出目標的系統類型和版本信息有助于更加準確地進行漏洞利用;其次,了解目標的系統類型和版本信息也會給攻擊者實施社會工程提供更多信息,使其詭計更加容易得逞。社會工程中最重要的一點就是得到攻擊目標相關人員的信任,攻擊者掌握的信息越多,就越容易做到這一點。
判斷目標主機的系統類型和版本信息有一整套成熟的方法。可以說,除非安全人員或是主機使用者刻意并且有效地對主機進行偽裝,否則攻擊者想知道這些信息并不是什么難事。
1. 利用端口掃描的結果
操作系統往往提供一些自身特有的功能,而這些功能又很可能打開一些特定的端口。比如,Windows打開137、139、445等端口,Linux系統打開512、513、514、2049端口。因此,根據端口掃描的結果,攻擊者就可以對目標主機的操作系統做出大致的判斷。至于具體的系統版本信息,則需要配合其他一些信息加以確定,比如下面將要介紹的Banner和協議棧指紋。
各種應用程序通常也工作在特定的端口,比如QQ在8000端口進行監聽,SQL Server工作在1521端口,Oracle工作在2030端口,Web代理服務器在8080端口提供服務等。因
此,通過端口掃描的結果,也可以大致確定目標系統中運行的服務類型。
2. 利用Banner
所謂Banner(旗標)是指服務程序接收到客戶端的正常連接后所給出的歡迎信息。事實上,很多服務程序都有這樣的旗標信息。當連接到一個FTP服務器時,FTP服務程序會在連接成功后返回旗標。當連接到一個Web服務器時,Web服務程序也會返回旗標。舉例來說,當我們連接到微軟IIS 5.0所提供的FTP服務時,通常會得到如下信息:
220 *** Microsoft FTP service (version 5.0)
再如,RhinoSoft公司開發的運行在Windows平臺下的FTP服務程序Serv-U的旗標如下:
Serv-U FTP Server v3.0 for WinSock ready...
公司開發的商業軟件如此,自由軟件也不能免俗。ProFTPD是一個在UNIX平臺或類UNIX平臺(如Linux、FreeBSD等)上的免費FTP服務器程序,它有類似如下所示的旗標:
ProFTPD 1.2.0pre4 Server (ProFTPD)
利用這樣的旗標,攻擊者可以輕易地判斷出服務程序的類型和版本,并進一步判斷出目標的操作系統平臺。或者,在旗標中就包含了對所運行操作系統的描述。其他的服務,比如HTTP(Hypertext Transfer Protocol,超文本傳輸協議)、Telnet也有類似的現象。圖2-6展示了某大學FTP服務器的旗標信息。
3. TCP/IP協議棧指紋
使用TCP/IP協議棧指紋進行操作系統識別是判斷目標操作系統最為準確的一種方式。所謂的TCP/IP協議棧指紋,是指不同的操作系統在實現TCP/IP協議棧時,由于各種原因而導致的細節上的差異。
圖2-6 某大學FTP服務器的旗標信息
不同的操作系統在實現TCP/IP協議棧的時候,并不是完全按照RFC定義的標準來實現的。比如前面曾經提到過的TCP FIN掃描,在收到TCP FIN數據包時,不同的操作系統會有不同的處理方式。甚至在RFC中也沒有對所有的問題給予精確的定義。多數UNIX操作系統在收到FIN包時,關閉的端口會以RST包響應,開放的端口則什么也不做。各種版本的Windows則不論端口是否打開,對于帶有FIN標志的數據包,都會回復一個帶有RST標志的數據包。對于端口掃描來說,這是不利的一面,因為這會導致結果未必正確。但對于操作系統判斷來說,這倒是一個非常有意思的現象。事實上,也正是對這種現象的深入研究,才出現了更新穎、更準確的識別目標主機操作系統的方法—TCP/IP協議棧指紋法。
如果把TCP/IP協議棧上的某個實現差異叫作TCP/IP協議棧的一個指紋特征的話,那么,目前所發掘出來并可能用來進行操作系統識別的指紋特征已經有很多。根據這些特征所處的數據包中的位置不同,可以把它們分為“TCP指紋”和“IP、ICMP指紋”。
(1)TCP指紋
①FIN探測:給一個開放的端口發送FIN包,有些操作系統有回應,有些則沒有回應。
②BOGUS(偽造)標記位探測:對于非正常數據包的反應,比如,發送一個包含未定義TCP標記的數據包,不同的操作系統的反應是不一樣的。
③SYN洪泛測試:如果發送太多的偽造SYN包,一些操作系統會停止建立新的連接,許多操作系統只能處理8個包。
④TCP ISN 取樣:尋找初始序列號之間的規律,不同操作系統的ISN遞增規律是不一樣的。
⑤TCP 初始化“窗口”:不同的操作系統所使用的窗口值不同。
⑥ACK值:在正常情況下,ACK值一般是確定的,但回復FIN|URG|PSH數據包時,不同的系統會有不同的反應,有些系統會發送回確認的TCP分組的序列號,有些會發回序列號加1。
⑥TCP選項(RFC793和更新的RFC1323):選項是可選的,當操作系統支持這種選項時,它會在回復包中設置,根據目標操作系統所支持的選項類型,可以判斷其操作系統類型。
(2)IP、ICMP指紋
①ICMP錯誤信息查詢:如Destination Unreachable的發送頻率,發送一批UDP包給高端關閉的端口,然后計算返回的不可達錯誤消息數目,不同系統返回數據包的頻率不同。
②ICMP信息引用: ICMP回復數據包攜帶請求包開頭若干字節的數據,不同的系統返回的數據包所攜帶的字節數不同。通常情況下,攜帶的數據為請求包IP頭加上8字節的數據,但是個別系統送回的數據更多一些。
③ 服務類型(ToS)和TTL:比如ICMP回應消息中,ToS域的值對某些系統是特定的。
④ 碎片處理:在分片重疊的情況下,不同系統的處理方式會有所不同,有些系統用后到的新數據覆蓋先到的舊數據,有些系統反之。
⑤DF標記位(Don’t Fragment Bit):某些操作系統會設置IP頭的DF位來改善性能。
關于這些協議棧指紋技術的具體細節可以參考Nmap自帶的技術文檔。需要注意的是,由于操作系統自身不斷更新補丁,文檔中所描述的協議棧指紋可能不再有效,并且隨著技術的不斷發展,更多的協議棧指紋會被發現。圖2-7展示了Nmap的系統類型探測結果。
圖2-7 Nmap系統類型探測結果
為了更好地隱藏攻擊者的位置和掃描行為,可以采用以下措施加強掃描的隱蔽性。
1)包特征的隨機化:包特征包括IP頭中的TTL字段,TCP頭中的源端口、目的端口等字段。在正常的通信中,某主機收到的數據包一般是雜亂無章的,為了將掃描行為偽裝成正常通信,可以將這些包特征隨機化。
2)慢速掃描:許多入侵檢測系統會統計某個IP地址在一段時間內的連接次數。當其頻率超出設定的范圍時,NIDS(Network Intrusion Detection System,網絡入侵檢測系統)就會告警。為了躲避這類檢測,謹慎的攻擊者會用很慢的速度來掃描對方主機。
3)分片掃描:將掃描數據包進行IP分片可以有效通過包過濾防火墻,并且不留下日志記錄。
4)源地址欺騙:攻擊者為了使自己的真實IP地址不被發現,在進行掃描時偽造大量含有虛假源IP地址的數據包同時發給掃描目標。因此,目標主機無法從這么多IP地址中判斷真正的攻擊者IP地址。
5)使用跳板主機:攻擊者通過已經獲取控制權的主機對目標主機進行掃描,可以有效隱蔽自己的真實IP地址。
6)分布式掃描:也稱合作掃描,即一組攻擊者共同對一臺目標主機或某個網絡進行掃描。他們之間可以進行掃描分工,例如,每個人掃描某幾個端口和某幾臺主機,這樣每個攻擊者發起的掃描數較小,因此難以被發現。
通用安全
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。