今天要來說作業系統偵測的方式,除了之前提到可以使用TTL來大致判斷作業系統的類型,NMAP也有參數可以用,而最具特色就是使用TCP/IP stack fingerprinting進行遠端作業系統識別,NMAP會送出一系列的 TCP 和 UDP 封包到目標主機,而且檢驗回傳(response)的每一個bit。在一連串的測試結果回傳後,NMAP會把這些資料拿去 nmap-os-db 的資料庫比對,他的資料庫中有超過2600種以上類型的作業系統資料,NMAP若在資料庫中找到相符資訊,就會顯示出來。每一個fingerprint都包含了一些作業系統的文字描述,並可以用來分類供應商名稱,例如Sun或Microsoft、作業系統名稱 Solaris或Microsoft Windows、版本,例如10或2016,及設備類型,例如route、switch等,最常見的包含Common Platform Enumeration (CPE) representation例如: cpe:/o:linux:linux_kernel:2.6.
作業系統偵測會採用其他蒐集資料的方式,例如TCP Sequence Predictability Classification,這個測量標準取決於TCP的連線有多難建立。另外一個作業系統探測的方式,就是透過目標主機的開機的時間,這個使用了TCP的時間戳記來判斷機器上次是何時重新啟動。雖然這種方式有可能因為計數器沒有歸零而不準確,但仍舊是判斷的標準之一。
nmap –O [目標IP]
以下以Windows 2012 為目標進行測試,結果如下方截圖 – 顯示可能為 Windows 7、8.1或2012的作業系統,而 Windows 上面開啟的 WireShark也可以看到不同的封包送過來
掃描 RedHat 的結果
掃描防火牆的作業系統,發現結果出現他會用「猜的」並配上百分比給我們,其實結果非常準確。
取得作業系統版本後,下一步就是想辦法找到該作業系統的漏洞進行滲透測試囉!
明天我們將介紹 searchsploit 這個工具~