Kali學習筆記13:操作系統識別
為什麽要掃描操作系統呢?
其實和上一篇博客:《服務掃描》類似,都是為了能夠發現漏洞
發現什麽漏洞?
不同的操作系統、相同操作系統不同版本,都存在著一些可以利用的漏洞
而且,不同的系統會默認開放不同的一些端口和服務
如果能夠知道操作系統和版本號,那麽就可以利用這些默認選項做一些“事情”
OS的識別技術多種多樣,有簡單的也有復雜的,最簡單的就是用TTL值去識別。
不同類型的OS默認的起始TTL值是不同的。
比如,windows的默認是128,然後每經過一個路由,TTL值減一。
Linux/Unix的值是64,但有些特殊的Unix會是255。
1.利用Python來識別:
#!/usr/bin/pythonfrom scapy.all import * import logging logging.getLogger("scapy.runtime").setLevel(logging.ERROR) import sys if len(sys.argv) != 2: print("Usage --/ttl_os.py [IP Address]") print("Example --/ttl_os.py 192.168.0.1") print("Example will preform ttl analysis to attempt to determine whether the system is windows or linux/unix") sys.exit() ip = sys.argv[1] ans = sr1(IP(dst=str(ip)) / ICMP(), timeout=1, verbose=0) if ans == None: print("NO response was returned") elif int(ans[IP].ttl) <= 64: print("Host is Linux/Unix") else: print("Host is Windows")
使用場景:
我主機IP:10.14.4.252
Kali機器:192.168.22.130
Metasploitable機器:192.168.22.129
使用腳本:
如果腳本是從windows移過來的:
vi xxx.py
:set fileformat=unix
:wq
chmod u+x xxx.py
./xxx.py
我還多掃描了一個本地的機器,得到的結果都很準確
不過呢,這只是利用TTL簡單判斷出操作系統
利用Nmap,不僅可以實現這裏的功能,甚至還可以得到版本:
-O:參數,識別操作系統
除了強大的工具,還有一些其他的:
xprobe2:直接輸入IP地址即可
這個掃描工具相對於Nmap,差距很大,結果不精確
上邊的工具都是主動識別操作系統的:主動向目標發送數據包,分析回包
而下邊這個工具是被動識別的:
基於網絡監聽的工作原理:Windows和Linux發送出來的包是有很大區別的。
被動式的掃描可以部署在網絡進出口的地方,目的是讓所經過的流量通過我的流量分析器。
同樣在Kali中也存在這般的工具p0f,他會監聽凡是通過本地網卡的流量。
開啟:p0f
這裏是開啟了監聽,如果什麽都不做,他也沒有反應
接下來我訪問某網站,看看變化:
隨意挑出一條信息來看看:
我49024端口向某IP發送了SYN包,這裏就得到了我Kali機的版本:3.11或者更高
總之,我推薦Nmap
Kali學習筆記13:操作系統識別