当前位置: 首页 > news >正文

信息收集之 操作系统识别

「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「专栏简介」:此文章已录入专栏《网络安全快速入门》

为什么要识别操作系统?
不同的操作系统,同一种操作系统的不同版本,默认开放的服务以及公开的漏洞都是不一样的。

操作系统识别

  • 一、手动识别
    • 1. 改变大小写
    • 2. TTL
  • 二、工具识别
    • 1. Nmap
    • 2. p0f

一、手动识别

通过改变路径大小写和Ping命令,可以粗略的区分操作系统。

1. 改变大小写

Windows系统不区分大小写,Linux系统区分大小写。

根据这个特点,在地址栏中改变路径的大小写,如果页面不受影响,就是Windows系统;如果页面变成找不到,就是Linux系统。

1)比如这个网站:

在这里插入图片描述
将地址栏中的路径由小写改为大写,页面不受影响,说明网站不区分大小写,是Windows系统。

在这里插入图片描述

2)再看下面这个网站:

在这里插入图片描述

将地址栏中的路径由大写改为小写,页面变成了404,说明网站区分大小写,是Linux系统。

在这里插入图片描述

2. TTL

TTL(Time To Live)是IPv4请求包的一个字段,用来表示IP数据包在网络中可以转发的最大跳数(最大255)。
其中Windows系统的默认TTL是128,Linux系统的默认TTL是64,我们可以通过TTL来判断目标的操作系统。

1)直接ping目标网站,如果TTL在65~128之间,说明是Windows系统.
下面是我ping的本网段的Windows系统,由于没有出网络,ttl没有减少,是128。

在这里插入图片描述
2)如果TTL在1~64之间,说明是Linux系统。
下面是我ping的本网段的Linux系统,由于没有出网络,ttl没有减少,是64。

在这里插入图片描述
TTL只能粗略的判断操作系统,但不能判断出操作系统的版本。
由于TTL的默认值可以被修改,所以根据TTL值判断的操作系统类型只能作为一个参考。

二、工具识别

1. Nmap

Nmap(Network Mapper)是一个网路探测和嗅探工具,根据特征行为指纹匹配特征库,来判断操作系统及版本;
-O参数可以扫描目标网站的操作系统。

语法:nmap -O IP

1)我们去网上找个网站测试一下,从下图中的扫描结果中可以发现,目标网站是Linux系统,版本大概是2.4或者2.6之间。

在这里插入图片描述
值得一提的是,我们用 ping 命令再来测试这个网站的操作系统,根据TTL(128)判断是Windows系统,如下图:

在这里插入图片描述
很明显,目标主机修改了TTL的默认值,这也说明,根据TTL判断操作系统很容易被欺骗。

2)我们再拿自己的虚拟机来测试一下,从下图中可以发现,nmap扫描的结果是win XP、win 7 或 win2012:

在这里插入图片描述
实际上我的虚拟机是 win 10:

在这里插入图片描述
由此可见,Nmap的扫描结果并不是100%正确,但参考性相对来说高一些。

2. p0f

p0f是一款被动指纹识别工具,抓取经过的流量,根据数据包判断操作系统。

在命令行输入 p0f 后回车,进入被动检测状态,然后使用浏览器访问目标网站。

如下图所示,os 这一栏展示 p0f 识别出的操作系统。

在这里插入图片描述
p0f 工具也不能保证100%的准确率,大部分识别工具的结果,都只能提供一定的参考价值。

相关文章:

  • 程序设计——图书管理系统(附源代码)
  • 纯C实现的贪吃蛇(无EaxyX,详解)
  • 布局管理器案例集锦
  • STL 源码阅读笔记-类型萃取(Traits)
  • 【MySQL 第三天数据库表 增删改查】
  • 【白板推导系列笔记】降维-样本均值样本方差矩阵
  • nonebot2聊天机器人插件10:迁移至nonebot2.0.0b5
  • 高速度结构设计
  • Java(六)——常用类 --- 大数运算
  • 【对比Java学Kotlin】协程-异步流
  • 基于Vue+SSM+SpringCloudAlibaba的英雄管理系统
  • 基于注意力机制的循环神经网络对 金融时间序列的应用 学习记录
  • 女篮亚军,为啥男篮那么水?
  • 发动机曲轴及曲柄连杆机构受力有限元分析
  • 进程概念(Linux)
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • Git同步原始仓库到Fork仓库中
  • Javascript 原型链
  • Java多态
  • Java反射-动态类加载和重新加载
  • js中forEach回调同异步问题
  • Koa2 之文件上传下载
  • LintCode 31. partitionArray 数组划分
  • Redis学习笔记 - pipline(流水线、管道)
  • vue-router 实现分析
  • Xmanager 远程桌面 CentOS 7
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 警报:线上事故之CountDownLatch的威力
  • 面试遇到的一些题
  • 目录与文件属性:编写ls
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 小程序测试方案初探
  • 学习笔记:对象,原型和继承(1)
  • FaaS 的简单实践
  • ​configparser --- 配置文件解析器​
  • ​插件化DPI在商用WIFI中的价值
  • #《AI中文版》V3 第 1 章 概述
  • #define、const、typedef的差别
  • #mysql 8.0 踩坑日记
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (python)数据结构---字典
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (二十三)Flask之高频面试点
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (七)Knockout 创建自定义绑定
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (转) Face-Resources
  • (转)大道至简,职场上做人做事做管理