- 1.TTL起始值
通过TTL值可以识别出操作系统 - Windows:128(65-128)
- Linux/Unix:64(1-64)
- 一些Unix: 255
- 1.1 脚本实现
#!/usr/bin/python
from scapy.all import *
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 1.1.1.1"
print "Example will preform ttl analysis to attempt to determine whether th 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 reponse was returned"
elif int(ans[IP].ttl) <= 64:
print "Host is Unix/Linux"
else:
print "Host is windows"
执行结果显示:
- 2.nmap识别
nmap -o 192.168.50.183 //基于特征识别操作系统
- 3.xprobe2识别
专门用于探测目标系统的操作系统版本,但是结果并不是十分准确。
xprobe2 192.168.50.183
- 4.被动操作系统识别
- IDS
- 抓包分析
- 被动扫描
- 5.p0f
直接运行p0f
,然后产生数据包后,会通过网口接收和发送的数据进行分析
- 6.SNMP分析
- community strings (默认为public[可读]、private[可写])
- 信息查询或重新配置
- 6.1环境
windows xp开启snmp服务,运行“appwiz.cpl” ,点击添加/删除window组件,选择“管理和监视工具”,WMI SNMP提供程序/简单网络管理协议打钩。
在安装中需要导入iso镜像文件
- 6.2 snmpwalk
snmpwalk 192.168.50.185 -c public -v 2c //-c表示community -v表示v2c版本
snmpwalk -c public -v 2c 1.1.1.1 1.3.6.1.4.1.77.1.2.25 //对指定的OID进行查询
- 6.3 snmp-check
snmpcheck显示界面相比snmpwalk更加友好,而不是只显示OID
snmp-check -c public -v 2c 192.168.50.185
snmp-check 192168.50.185 -w //检测是否具有可写权限
- 6.3 onesixtyone
onesixtyone的信息不是很准确,并且信息也比较有限
onesixtyone 1.1.1.1 public
onesixtyone -c dict.txt -i hosts -o my.log -w 100