在對目標進行滲透測試的時候,要盡量地檢測出目標系統執行的各種服務,因為對入侵者而言,發現這些執行在目標上的服務就可以利用這些軟體上的漏洞入侵目標;對於網路安全的維護者來說,也可以提前發現系統的漏洞,進一步預防這些入侵行為。
很多掃描工具都採用了一種非常簡單的方式,因為通常常見的服務都會執行在指定的通訊埠上,例如:HTTP服務總會執行在80通訊埠上,因為這些通訊埠都是公開的通訊埠,所以只需要知道目標上哪個通訊埠是開放的,就可以猜測出目標上執行著什麼服務。這種方式往往有兩個缺點,首先很多人會將服務執行在其他通訊埠上,例如將本來執行在23號通訊埠上的Talent執行在22號通訊埠,這樣會誤以為這是一個SSH服務。再者,這種方法獲得的資訊有限,即使知道目標80通訊埠上執行著HTTP服務,但完全不知道是什麼軟體提供這樣的服務,所以也找不出這個軟體的漏洞。
還有一些掃描工具採用了抓取軟體banner的方法,因為很多軟體都會在連接之後提供一個表明本身資訊的banner,所以我們也可以撰寫一個程式來抓取這個banner,從中獲得一些目標的資訊。
最後一個方法是Nmap掃描工具所使用的方法,就是在目標開放的通訊埠上發送探針資料封包,然後根據傳回的資料封包與資料庫中的紀錄進行比對。Nmap中包含了一個Nmap-service-probe函數庫,這個函數庫中包含世界上大部分常見軟體的資訊。
撰寫一個利用抓取軟體banner的方式
首先先在文件編輯器撰寫一個專門抓取通訊埠以及其banner的程式:
接著在root中使用Python開啟這份文件檔,就會跳出一行叫我們輸入IP位址:
這邊我輸入的IP位址是0.0.0.0,掃描後的結果如下:
這邊可以看到22號通訊埠和其他通訊埠是不一樣的,代表22號通訊埠是開啟的,那串文字就是banner,意思分別代表這個通訊埠的協議是使用SSH 2.0的版本,軟體的版本資訊則是OpenSSH 9.7p1,最後的Debian-7則是操作的系統。
使用Nmap進行服務掃描
如果使用Nmap掃描的話,就不需要寫一長串的程式保存了,安裝好Nmap後就可以直接根據我們要的IP位址以及所要的通訊埠進行掃描,這邊我的IP位址依樣使用0.0.0.0,通訊埠的話我選擇掃描1-1000號通訊埠:
這邊掃描出來的結果代表這1000個通訊埠中有998個是沒有回應的,有可能是因為防火牆阻擋掉了或是主機沒有開放這些通訊埠。而22號通訊埠與80號通訊埠則是開啟的狀態,資訊如下:
22號通訊埠
80號通訊埠
今天的服務掃描就大概到這邊,明天會詳細了解作業系統是如何掃描的。