操作系統識別-python、nmap


識別操作系統主要是用於操作系統漏洞的利用。不管是windows還是linux系統,在安裝完畢后都會默認啟動一些服務,開啟一些端口。

識別目標主機的系統最簡單的方法就是發送ping包,windows起始ttl值默認為128,linux和unix系統默認為64,還有一些特殊的unix系統的ttl值為255.下圖為ping局域網內的兩台主機,一台為win xp(192.168.0.104),一台為metasploitable2靶機(192.168.0.108):

可以明顯地看到,windows發送的pin回包ttl值是128,而linux發送的ttl值是64.

 1 #!/usr/bin/python
 2 from scapy.all import *
 3 
 4 if len(sys.argv) != 2:
 5     print "this script needs one arg!\nExample:./ttl_os.py 192.168.0.0 or ./ttl_os.py baidu.com"
 6     sys.exit()
 7 
 8 ip = sys.argv[1]
 9 r = sr1(IP(dst = ip) / ICMP(), timeout = 1, verbose = 0)
10 
11 if r == None:
12     print "no response!"
13 elif r[IP].ttl <= 64:
14     print "Linux or Unix!"
15 elif r[IP].ttl > 64 and r[IP].ttl <= 128:
16     print "Windows!"
17 else:
18     print "Unix!"
python代碼實現

ttl值可以通過軟件進行更改,所以僅僅通過ttl值進行的判斷並不總是准確的。而強大的nmap又提供了強大的參數-O,可以根據多種特征進行系統識別,執行nmap 192.168.0.108 -O命令,得到結果:

當然了,即使使用nmap這個強大的工具得到的結果也有可能不完全准確,小編使用nmap掃描win xp 家庭版得出的結果是win xp 專業版或者win2003.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM