OS的识别方法有多种,最简单的就是用TTL值去识别。不同类型的OS默认的起始TTL值是不同的,比如,windows的默认是128-65,然后每经过一个路由,TTL值减一。Linux/Unix的值是64,但有些特殊的Unix会是255
python脚本识别
#!/usr/bin/python
from 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")
nmap识别OS
NMAP的-O参数可以进行OS的识别
nmap -O 192.168.0.1
基于网络监听的工作原理,Windows和Linux发送出来的包是有很大区别的。被动式的扫描可以部署在网络进出口的地方,目的是让所经过的流量通过我的流量分析器。在Kali中存在工具p0f,他会监听凡是通过本地网卡的流量。p0f不但会探测OS类型,同时也会对目标上面所运行的应用程序进行探测。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。